PIC16F887单片机引脚功能_上电复位_中文资料
PIC16F887微控制器是一款采用RSIC CPU技术设计的8位微控制器,有助于微控制器以更少的功耗提供最大的输出。它共有40个引脚,所有这些引脚均采用多种封装,以满足小型和现代电路的要求。该器件还提供44引脚QFN和TQFP封装。
PIC16F887为开发人员提供了所有现代协议,并且由于其多个引脚,可以同时遵循大多数协议而不影响其它协议。由于其多个A/D通道和内部时钟,PIC在工业和商业层面具有多种用途。
引脚配置
PIC16F887单片机有DIP、QFN、TQFP等三种封装,这些封装的引脚图如下所示,以下是40引脚DIP封装的引脚图。
下图显示了QFN和TQFP封装的引脚布局,具体如下所示:
GPIO引脚功能
1、数字输出
单片机中有多个输出引脚。所有引脚均来自五个寄存器(A、B、C、D和E)。它们与任何TTL/CMOS和ST设备兼容。所有GPIO引脚根据所应用的电源提供最大输出电压。所有输出引脚如下:
- PA0 – GPIO2
- PA1-GPIO3
- PA2 – GPIO4
- PA3-GPIO5
- PA4 – GPIO6
- PA5-GPIO7
- PA6 – GPIO14
- PA7-GPIO12
- PB0 – GPIO33
- PB1 – GPIO34
- PB2-GPIO35
- PB3 – GPIO36
- PB4 – GPIO37
- PB5-GPIO38
- PB6-GPIO39
- PB7 – GPIO40
- PC0 – GPIO15
- PC1 – GPIO16
- PC2 – GPIO17
- PC3 – GPIO18
- PC4 – GPIO23
- PC5 – GPIO24
- PC6 – GPIO25
- PC7 – GPIO26
- PD0 – GPIO19
- PD1 – GPIO20
- PD2 – GPIO21
- PD3 – GPIO22
- PD4 – GPIO27
- PD5 – GPIO28
- PD6 – GPIO29
- PD7 – GPIO30
- PE0 – GPIO8
- PE1 – GPIO9
- PE2 – GPIO10
单片机上有多个输入引脚,并且都带有输入上拉电阻。在PIC16F887中,输入引脚的数量比所有其它引脚都多,它们可用于在睡眠情况下唤醒微控制器。这些引脚可以在TTL/ST逻辑下运行,这使得它们与所有其它CMOS器件和外设兼容。下面列出了所有输入引脚:
- PA0 – GPIO2
- PA1-GPIO3
- PA2 – GPIO4
- PA3-GPIO5
- PA4 – GPIO6
- PA5-GPIO7
- PA6 – GPIO14
- PA7-GPIO12
- PB0 – GPIO33
- PB1 – GPIO34
- PB2-GPIO35
- PB3 – GPIO36
- PB4 – GPIO37
- PB5-GPIO38
- PB6-GPIO39
- PB7 – GPIO40
- PC0 – GPIO15
- PC1 – GPIO16
- PC2 – GPIO17
- PC3 – GPIO18
- PC4 – GPIO23
- PC5 – GPIO24
- PC6 – GPIO25
- PC7 – GPIO26
- PD0 – GPIO19
- PD1 – GPIO20
- PD2 – GPIO21
- PD3 – GPIO22
- PD4 – GPIO27
- PD5 – GPIO28
- PD6 – GPIO29
- PD7 – GPIO30
- PE0 – GPIO8
- PE1 – GPIO9
- PE2 – GPIO10
- PE3 – GPIO1
大多数现代应用/传感器都需要中断引脚才能完全运行。PIC16F887的引脚总数可能为40个,但只有1个外部中断引脚。该引脚可用于引起微控制器CPU的注意。首先,单片机应该对该引脚进行编程,因为默认情况下该引脚不会充当中断引脚。
- INT – GPIO33
串行通信端口
EUSART(异步):如今大多数模块和传感器越来越多地使用该协议。它只有两个通信引脚。一个引脚用于发送数据,另一个引脚用于接收数据。要使用该协议,两个设备只需要一些内部编程。PIC16F887中的这两个引脚如下:
- RX – GPIO26
- TX – GPIO25
EUSART(同步):同步方式大多是一种方式,它使用一个时钟和一个数据引脚。时钟脉冲和数据都由给定的指令控制。两个引脚如下:
- CK – GPIO25
- DT – GPIO26
SPI:大部分传感器采用SPI协议进行通信。在此通信中,多个设备可以使用相同的SPI引脚。它使用四个引脚,所有这些引脚如下:
- SDI – GPIO23
- SDO – GPIO24
- SCK – GPIO18
- SS – GPIO7
I2C:此通信方法仅使用两个引脚,但在此方法中,同时只有一个设备可以发送数据。PIC16F887有两个I2C协议引脚,其中一个引脚用于时钟脉冲,另一个引脚用于数据发送和接收。下面给出了这两个引脚:
- SDA – GPIO23
- SCL – GPIO18
ICSP:PIC16F887在GPIO内有一些ICSP引脚,可在需要时用于对微控制器进行编程。这些引脚的数量为三个,所有引脚如下:
- ICSPCLK – GPIO39
- ICSPDAT – GPIO40
- VPP – GPIO1
- PGM – GPIO36
模拟转数字通道
PIC16F887有14个通道可用于模数转换,所有这些通道仅使用一个10位ADC。PIC16F887的所有ADC通道如下:
- AN0 – GPIO2
- AN1 – GPIO3
- AN2 – GPIO4
- AN3-GPIO5
- AN4 – GPIO7
- AN5 – GPIO8
- AN6-GPIO9
- AN7 – GPIO10
- AN8-GPIO35
- AN9-GPIO36
- AN10 – GPIO34
- AN11 – GPIO37
- AN12 - GPIO33
- AN13 - GPIO38
定时器模块引脚
PIC16F887中有3个定时器(Timer0、Timer1、Timer2),其中两个是8位定时器,最后一个是16位定时器。所有这些定时器都可以使用外部和内部振荡器,但定时器1可以在某些GPIO引脚上使用第三个振荡器。定时器1和定时器0可以通过外部引脚计算外部脉冲,定时器1也有一个控制引脚作为门。所有引脚如下:
- T0CKI – GPIO6
- T1OSO/T1CKI – GPIO15
- T1OSI – GPIO16
- T1G' – GPIO38
微控制器比较器引脚
PIC16F887带有一个比较器,可作为模拟输入信号的输入和输出。他们的比较器使用两个信号的反相和非反相输入,然后将它们转换为比较值。比较的信号可以在微控制器内使用。PIC16F887中的所有引脚如下:
- C12IN0(-) – GPIO2
- C12IN1(-) – GPIO3
- CVREF/C2IN (+) – GPIO4
- C1IN (+) – GPIO5
- C1OUT – GPIO6
- C2OUT - GPIO7
- C12IN2(-) – GPIO36
- C12IN3(-) – GPIO34
脉宽调制通道
大多数设备需要PWM才能运行,PWM脉冲帮助设备根据给定脉冲改变速度和电压。所有PWM引脚如下:
- P1A – GPIO17
- P1B – GPIO28
- P1C – GPIO29
- P1D – GPIO30
捕捉/比较/PWM引脚
PIC16F887中有一个CCP模块,用于比较输入信号,然后与给定的指令信号进行比较。该模块不断比较,直到信号匹配,然后生成输出信号。该模块主要用作 PWM,但也用于生成事件基础信号。
- CCP1 – GPIO16
- CCP2 – GPIO17
电源引脚
ULPWU:该引脚可以在最低电压下触发,这就是它被称为超低功耗引脚的原因。该引脚用于以最低电压唤醒器件。
- ULPWU – GPIO2
VREF:每个ADC使用电源电压来转换数据,但在某些情况下,由于模拟传输设备电压,设备开始获取意外数据。为了解决这个问题,有模拟电压输入引脚。一个引脚使用同相输入,另一个引脚使用反相输入作为模拟输出生成设备的参考电压。下面给出了这两个引脚:
- VREF- – GPIO4
- VREF+ – GPIO5
复位:PIC16F887内部有一个复位引脚,需要时外部设备或按钮可以使用该引脚来复位设备。
电源:PIC16F887带有多个电源引脚,它有四个电源引脚,所有引脚都可以同时使用。电源引脚在内部连接。两个引脚用于接地,另外两个用于电源输入。接地在微控制器内是公共的,电源引脚彼此之间也是公共的。所有电源和接地引脚如下:
- VDD – 引脚11、引脚32
- VSS – 引脚12、引脚31
振荡器/时钟:振荡器是每个微控制器的基本要求,每个微控制器都需要时钟输入来运行。PIC16F887有一个8MHz的内部时钟,其频率可以通过编程改变。频率可从31KHz更改为8MHz。有一些用于振荡器的外部引脚,也可用于外部振荡器。外部振荡器最高只能达到20MHz。外部振荡器引脚也可用于接收内部时钟脉冲。所有振荡器引脚如下:
- OSC1/CLKIN – GPIO13
- OSC2/CLKOUT – GPIO14
主要特性
特点和规格 | |
---|---|
CPU架构 | 8位PIC |
内部振荡器 | 8兆赫 |
外部振荡器 | 20兆赫兹 |
工作电压范围 | (2V–5.5V) |
GPIO端口 | 36个I/O引脚 |
中断 | 1个 |
定时器 | 3个–(2个8位和1个16位定时器) |
比较器 | 2个 |
脉宽调制 | 2个CCP和2个PWM |
ICP | 1个 |
USART | 1通道 |
I2C | 1通道 |
SPI/MSSP | 1通道 |
ICSP/MSSP | 可用 |
超低功率WU | 可用 |
看门狗定时器 | 可用 |
自编程 | 可用 |
LAN | 无法使用 |
CAN | 无法使用 |
模数转换器 | 14通道 |
静态随机存储器 | 368b |
闪存(程序存储器) | 14KB |
EEPROM | 256字节 |
上电复位
当PIC16F887上电时,会进行上电复位(Power-On Reset,POR)。上电复位是一种特殊的复位方式,它在系统上电时自动发生,将微控制器的内部状态恢复到初始状态。这确保了在系统上电时,MCU能够从一个已知的状态开始执行程序。上电复位会导致以下操作:
-
MCU的程序计数器(Program Counter,PC)会被设置为复位向量地址。这是一个特定的地址,指向程序的起始位置,通常是0x0000地址处。
-
内部寄存器和标志位将被清零,将所有的寄存器设置为默认值。
-
特定的配置位(Configuration Bits)也会被设置为其默认值。配置位决定了MCU的一些基本配置,例如时钟源、电源模式、I/O端口的功能等。
上电复位确保了在系统上电时,MCU能够进入一个稳定的状态,并且程序可以从已知的起始点开始执行。这有助于避免在系统启动时出现未预期的行为和问题。需要注意的是,上电复位只在系统上电时发生一次。如果在运行过程中需要进行软件复位,可以通过特定的指令或操作来实现。
最小系统
PIC16F887是一个8位微控制器,通常不用于运行完整的操作系统,尤其是常见的桌面操作系统或移动操作系统(如Windows、Linux、Android等)。这是因为这些操作系统通常需要更高位数的处理器和更大的内存来运行。
然而,对于嵌入式系统和一些简单的控制应用,可以使用一个简化的、轻量级的操作系统或任务调度器。这些操作系统通常被称为“实时操作系统”(Real-Time Operating System,RTOS)或“嵌入式操作系统”。在PIC16F887上运行一个最小的RTOS可能涉及以下步骤:
-
硬件初始化:设置系统时钟、I/O口、ADC等外设,以及任何其他必要的硬件初始化。
-
创建任务:根据应用程序的需求,定义和创建不同的任务。这些任务可能是一些简单的功能,例如读取传感器数据、控制执行器、处理通信等。
-
任务调度:编写任务调度器代码,用于根据优先级和时间片轮转等策略切换任务的执行。
-
中断处理:如果需要,编写中断处理程序,用于处理外部事件,例如定时器中断、外部中断等。
-
系统主循环:在主循环中实现任务调度器的执行,以及可能的系统状态更新等。
由于PIC16F887资源有限(例如RAM、Flash存储器较小,仅有8位处理能力),因此在该微控制器上运行操作系统可能会受到一些限制。在设计和实现最小操作系统时,需要充分考虑这些限制,并确保操作系统的大小和复杂性适合该硬件平台。另外,对于一些简单的控制应用,可能并不需要完整的操作系统,而是直接在主循环中实现功能代码即可。这种简化的设计可能更适合资源受限的微控制器。
关于编程烧录
要开始编程,需要以下软件和硬件组件:
- 用汇编或C语言编写程序的编译器或IDE:输入第一个微控制器程序的主要部分是编译器或集成开发环境。用于PIC微控制器编程的三种最流行的编译器是MPLABX IDE、 Mikro C for PIC和PIC CCS编译器。编译器用于生成用户上传到微控制器的十六进制文件。
- 程序员或刻录机:编写完代码后,将获得一个要上传到微控制器的十六进制文件。我们使用编程器或刻录器将二进制文件上传到PIC16f866。Pickit3是代码烧录的最佳选择之一。
- 图片开发板:开发板是可选的,但它们使你的开发过程变得非常简单。因为他们提供板载外设,如GPIO连接器、传感器、ADC等。
替代方案
PIC16F877A、PIC16F886、PIC16F84A、PIC18F2550、PIC18F46K22。
功能框图
应用领域
- PIC16F887在大多数工业应用中用作控制器件。
- 该器件具有大部分独立的通信引脚,这使其成为该系列中最高效的微控制器之一。
- 由于汽车系统中有多个A/D通道,它是理想的微控制器。
总结
PIC16F887是Microchip Technology Corporation生产的一款8位Flash型微控制器(MCU),属于PIC16系列的成员。该芯片是广受欢迎的8位微控制器之一,具有丰富的功能和广泛的应用领域,简单概括为:
-
架构和处理能力:PIC16F887采用Harvard体系结构,拥有8位数据总线和14位指令宽度。它具有8位处理能力,意味着它可以一次处理8位的数据。虽然8位处理器相对于16位或32位处理器来说功能较为有限,但对于许多嵌入式应用来说已经足够。
-
存储器:集成了14KB的Flash程序存储器,用于存储用户的程序代码。此外,它还包含368字节的RAM(数据存储器),用于暂存运行时数据。
-
时钟:支持多种时钟源,包括内部RC振荡器、外部晶振或晶体谐振器。它还提供分频器和PLL(锁相环)功能,以获得不同的系统时钟频率。
-
通信接口:该芯片集成了USART(串行通信接口)、SPI(串行外设接口)和I2C(串行通信总线),可用于与其他设备进行数据交换和通信。
-
PWM:该芯片支持PWM(脉冲宽度调制)输出,用于控制电机、LED亮度等需要调节的应用。
-
ADC:拥有10位的模数转换器,可用于将模拟信号转换为数字信号,方便对模拟传感器数据进行采样和处理。
-
中断:PIC16F887支持多种中断源,可用于实时响应外部事件,提高系统的灵活性和实时性。
-
低功耗模式:该芯片具有多种低功耗模式,可有效延长电池寿命和降低功耗。
由于其丰富的功能和灵活性,PIC16F887广泛应用于低功耗的嵌入式系统、自动控制、传感器控制、家用电器、工业自动化、小型消费电子产品以及学术教育等领域。但需要注意的是,虽然PIC16F887是一款功能强大的8位微控制器,但它的处理能力相对有限。对于复杂的应用和高性能需求,可能需要选择更高位数的微控制器或其它处理器。