从零开始学51单片机C语言
上QQ阅读APP看书,第一时间看更新

1.1 单片机内部结构与引脚

1.1.1 单片机的内部结构组成

单片机虽然型号众多,但它们结构却基本相同,主要包括中央处理器(CPU)、存储器(程序存储器和数据存储器)、定时/计数器、并行接口、串行接口和中断系统等几大单元,图1-1所示的是51单片机内部结构框图。

图1-1 51单片机内部结构框图

可以看出,51单片机虽然只是一个芯片,但“麻雀虽小,五脏俱全”,作为计算机应该具有的基本部件在单片机内部几乎都包括,因此,51单片机实际上就是一个简单的微型计算机系统。

1. 中央处理器(CPU)

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操作。

2. 存储器

存储器分为程序存储器(ROM)和数据存储器(RAM)两种。前者存放调试好的固定程序和常数,它是只读的,掉电数据不会丢失;后者存放一些随时有可能变动的数据,它是可读可写的,掉电后数据会消失。

3. 定时/计数器

单片机除了具有运算功能外,还具有控制功能,所以离不开计数和定时。因此,在单片机中就设置有定时器兼计数器。

4. 并行输入/输出(I/O)口

51单片机一般共有4组8位I/O口(P0、P2、P1和P3),用于与外部进行数据并行传输。

5. 全双工串行口

51单片机内置一个全双工串行通信口,用于与其他设备间的串行数据传输。

6. 中断系统

51 单片机具备较完善的中断功能,一般包括外部中断、定时/计数器中断和串行中断,以满足不同的控制要求。

现在,我们已经知道了单片机的组成,实际上,单片机内部有一条将它们连接起来的“纽带”,即所谓的“内部总线”。而CPU、ROM、RAM、I/O口、中断系统等就分布在此“总线”的两旁,并和它连通。一切指令、数据都可经“内部总线”传输。

以上介绍的是51单片机的基本组成部分,各种型号的51单片机包括STC89C5X、AT89S5X等,都是在51单片机内核的基础上进行功能的增强和改装而成。

1.1.2 单片机的引脚

51单片机虽然型号众多,同一封装的51单片机其管脚配置基本一致。图1-2所示的是采用PDIP40(40脚双列直插式)封装的51单片机引脚配置图。

图1-2 51单片机引脚配置图

40个引脚中,正电源和地线2个,外置石英振荡器的时钟线2个,复位引脚1个,控制引脚3个,4组8位I/O口线32个。

1. 电源和接地引脚(2个)

GND(20脚):接地脚。

VCC(40脚):正电源脚,接+5V电源。

2. 外接晶体引脚(2个)

XTAL1(19脚):时钟XTAL1脚,片内振荡电路的输入端。

XTAL2(18脚):时钟XTAL2脚,片内振荡电路的输出端。

时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一时序脉冲的驱动下进行的。时钟电路就好比人的心脏,如果人的心跳停止了,生命就会停止;如果单片机的时钟电路停止工作,那么单片机也就停止运行了。

51单片机的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体和振荡电容;另外一种是外部时钟方式,即将外引脉冲信号从XTAL1引脚注入,而XTAL2引脚悬空。

3. 复位电路

RST(9脚):复位信号引脚。

当振荡器运行时,在此引脚上出现2个机器周期以上的高电平将使单片机复位。一般在此引脚与GND之间连接一个下拉电阻,与VCC引脚之间连接一个电容。单片机复位后,从程序存储器的0000H单元开始执行程序,并初始化一些专用寄存器为复位状态值。

4. 控制引脚(3个)

016-02(29脚):外部程序存储器的读选通信号。在读外部程序存储器时,016-03产生负脉冲,以实现对外部程序存储器的读操作。

ALE/016-04(30脚):地址锁存允许信号。当访问外部存储器时,ALE用来锁存P0扩展地址低8位的地址信号;在不访问外部存储器时,ALE端以固定频率(时钟振荡频率的l/6)输出,可用于外部定时或其他需要。另外,该脚还是一个复用脚,在编程期间,将用于输入编程脉冲。

017-01/VPP(31脚):内外程序存储器选择控制引脚。当017-02接高电平时,单片机先从内部程序存储器取指令,当程序长度超过内部Flash ROM的容量时,自动转向外部程序存储器;当017-03为低电位时,单片机则直接从外部程序存储器取指令。例如,AT89S51/52单片机内部有4KB/8KB的程序存储器,因此,一般将017-04接到+5V高电平,让单片机运行内部的程序。而对于内部无程序存储器的8031(现在已很难见到),017-05端必须接地。另外,017-06/VPP还是一个复用脚,在用通用编程器编程时,VPP脚需加上12V的编程电压。

5. 输入/输出引脚(32个)

(1)P0口P0.0~P0.7(39~32脚)

P0口是一个8位漏极开路的“双向I/O口”,需外接上拉电阻,每根I/O口线可以独立定义为输入或输出,输入时须先将其置“1”。P0口还具有第二功能,即作为地址/数据总线;当作数据总线用时,输入8位数据;而当作地址总线用时,则输出8位地址。

(2)P1口P1.0~P1.7(1~8脚)

P1口是一个带有内部上拉电阻的8位“准双向I/O口”,每根I/O口线可以独立定义为输入或输出,输入时须先将其置“1”。由于它的内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点与下面将要介绍的P2、P3口都一样,与上面介绍的P0口不同,请大家务必注意!

对于AT89S51/52单片机,P1口的部分引脚还具有第二功能,如表1-1所示。

表1-1 AT89S51/52单片机P1口部分引脚的第二功能

顺便说一下,STC89C51/C52与AT89S51/52有所不同,其P1.5、P1.6、P1.7脚没有第二功能,STC89C51/C52的ISP下载编程是通过串口进行的。

(3)P2口P2.0~P2.7(21~28脚)

P2口是一个带有内部上拉电阻的8位“准双向I/O口”,每根I/O口线可以独立定义为输入或输出,输入时须先将其置“1”。由于它的内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻。同时,P2口还具有第二功能,在访问外部存储器时,它送出地址的高8位,并与P0口输出的低地址一起构成16位的地址线,从而可以寻址64KB的存储器(程序存储器或数据存储器),P2口的第二功能很少使用,请大家不必过深研究。

(4)P3口P3.0~P3.7(10~17脚)

P3口是一个带有内部上拉电阻的8位“准双向I/O口”,每根I/O口线可以独立定义为输入或输出,输入时须先将其置“1”。由于它的内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻。同时,P3口还具有第二功能,第二功能如表1-2所示。这里要说明的是,当P3口的某些I/O口线作为第二功能使用时,不能再把它当作通用I/O口使用,但其他未使用的I/O口线可作为通用I/O口线。

P3口的第二功能应用十分广泛,我们会在后续章节中进行详细说明。

表1-2 P3口的第二功能