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单片机的时钟有两种方式,一种是片内时钟振荡方式,但需在XTAL1和XTAL2引脚外接石英晶体和振荡电容。另外一种是外部时钟方式,即将外引脉冲信号从XTAL1引脚输入,而XTAL2引脚悬空。

3.复位电路

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

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

4.控制引脚(3个)

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

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

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

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

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

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

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

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

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

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

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

表1-2 P3口的第二功能