|
1.2 典型引脚结构 |
对于51系列单片机来说,不同的单片机型号,不同的封装具有不同的引脚结构。因此很难采用一种来涵盖所有的引脚结构,其时也没有这个必要。这里,我们选择了最常用、最经典的40Pin的8051单片机为例进行讲解,如图1-1所示。读者在以后的学习和工作中会发现,它囊括了所有的51系列单片机的基本特色,即所有的共性信息。下面我们将逐个讲解各个引脚的功能,给大家一个初步的印象。在介绍的过程中,我们还兼顾了其他一些型号的单片机的特点和区别。
图1-1 40引脚的8051单片机
电源引脚相当于整个单片机工作的动力源。8051单片机的工作电源一般为5V,某些型号的单片机可能会是3.3V,甚至更低。低的供电电压适用于电池供电的设备。在这里,电源引脚主要有如下两个。
●VCC(Pin40):正电源引脚。正电源接4.0~5.0V电压,正常工作电压为+5V。
●GND(Pin20):接地引脚。
注意: 某些型号的单片机可能包含多个VCC和GND引脚,这些引脚都需要连接,否则将影响使用。
时钟引脚相当于一个固定周期的时钟,用于为单片机提供工作时序的基准。8051单片机的时钟引脚包括如下两个。
●XTAL1(Pin19):时钟XTAL1脚,用做片内振荡电路的输入端。
●XTAL2(Pin18):时钟XTAL2脚,用做片内振荡电路的输出端或者外部时钟源的输入引脚。
时钟引脚的时钟信号供单片机内部的CPU运行时使用。8051的时钟引脚具有两种工作模式,片内时钟模式和片外时钟模式。
1.片内时钟模式
当单片机工作于片内时钟模式时,在XTAL1引脚和XTAL2引脚外接石英晶体和振荡电容,如图1-2所示。
图1-2 片内时钟模式
51系列单片机内部包含一个高增益的单级反相放大器,引脚XTAL1和XTAL2分别为片内反相放大器的输入端口和输出端口,其工作频率为0~33MHz,不同的型号具有不同的频率要求。振荡电容的值一般取10~30pf。在使用时,对于电容的选择有一定的要求。当外接晶体振荡器的时候,电容值一般选择C1=C2=30±10pF。当外接陶瓷振荡器的时候,电容值一般选择C1=C2=40±10pF。
此外,在实际电路布局的时候,应尽量保证外接的晶体振荡器和振荡电容尽可能靠近单片机的XTAL1和XTAL2引脚,这样可以减少寄生电容的影响,使振荡器能够稳定可靠地为单片机CPU提供时钟信号。实际上,很多初学者都很容易犯这个错误,从而导致振荡电路不起振,单片机也不工作。这个时候,用户可以通过监视XTAL1和XTAL2引脚是否有时钟信号来判断振荡电路是否正确工作。
2.片外时钟模式
当单片机工作于片外时钟模式时,只需从一个引脚输入一定频率的时钟信号即可。这个时钟信号由外部振荡器产生,可以为有源晶振或者其他的时钟芯片。
这里需要注意的是,对于不同工艺类型的单片机,外部时钟的输入引脚不同。
●对于普通的8051单片机,外部时钟信号由XTAL2引脚接入后直接送到单片机内部的时钟发生器,而引脚XTAL1则应直接接地,如图1-3所示。这里需要注意,由于XTAL2引脚的逻辑电平不是TTL信号,因此需要外接一个上拉电阻。
●对于CMOS型的单片机,和普通的8051不同的是其内部的时钟发生器的信号取自于反相放大器的输入端。因此,外部的时钟信号应该从单片机的XTAL1引脚输入,而XTAL2引脚则需要悬空,如图1-4所示。这里单片机有80C51、80C52、AT89S52等。
图1-3 8051的外部时钟接线模式
图1-4 CMOS型单片机的外部时钟接线模式
另外,外部时钟信号的频率应该根据不同单片机的工作频率要求而定。例如,8051单片机的输入频率应为0~12MHz,AT89S51单片机的输入频率则为0~33MHz。
并行I/O引脚是单片机强大扩展能力的直接体现。8051单片机提供了4组8位的并行I/O引脚,均支持双向数据传输。部分并行I/O引脚还提供了扩展功能。下面将详细介绍各组并行I/O引脚的结构和功能。
1.P0端口
P0端口即P0.0~P0.7,占据Pin39~Pin32共8个引脚。P0端口具有两个功能,既可以用做双向数据总线口,也可以分时复用输出低8位地址总线。
P0端口是由8个结构完全相同的引脚组成的,对于某一个引脚结构,如图1-5所示。P0端口的每个引脚包含一个输出锁存器、一个输出驱动电路、一个输出控制电路、电子模拟开关MUX和两个三态缓冲器。
图1-5 P0端口内部结构
当P0端口作为普通的I/O使用时,对应的控制信号为0。电子模拟开关MUX导通下面的线路,此时锁存器的 Q 端和输出端连接在一起。同时,与门输出为0,使上拉FET管截止。此时,P0端口的输出是漏极开路电路,因此为了保证正常工作,需要外接上拉电阻(5~10KΩ左右)。其工作情况如下:
●当P0端口用做输出时,如果程序中需要输出0,锁存器的输出端 Q 为高电平,致使下拉FET管导通,从而引脚输出0;如果程序中需要输出1,锁存器的 Q 为低电平,致使下拉FET管截止,由外接的上拉电阻将输出端变为高电平,从而引脚输出1。
●当P0端口用做输入时,应首先置各个锁存器为1(即输出FFH),才能保证获得正确的输入结果。即P0口不是一个真正的双向I/O端口,而是一个准双向端口。
当P0端口作为低8位地址/数据分时复用时,对应的控制信号为高电平1,电子模拟开关MUX导通上面的线路,输出端与地址/数据线经反相器输出相连,并于下拉FET导通。同时,与门开锁,输出地址/数据信号,既通过与门驱动上拉FET管,又通过反相器驱动下拉FET管。其工作情况如下:
●如果程序中需要输出信号1,上拉FET管处于导通状态,而1经过反相器后变为0,使下拉FET管截止,从而在输出引脚上输出高电平1;
●如果程序中需要输出信号0,上拉FET管处于截止状态,而0经过反相器后变为1,使下拉FET管导通,从而使输出引脚上输出低电平0。
当P0端口用做地址/数据分时复用时,单片机复位后自动置P0口为0FFH,这样下拉FET管截止。如果需要输出0,则上拉FET管也截止。这样,可以保证在高阻抗状态下获取正确的输入数据。因此,在此时P0端口是一个真正的双向I/O端口,能够驱动8个LSTTL负载。
2.P1端口
P1端口即P1.0~P1.7,占据Pin1~Pin8共8个引脚。P1端口一般用做通用I/O端口,是8位准并行的,具备4个TTL负载的驱动能力。P1端口可以用做位处理,即各位都可以单独输出或输入数据。
P1端口是由8个结构完全相同的引脚组成的,对于某一个引脚结构,如图1-6所示。P1端口的每个引脚包含上拉电阻、锁存器和控制电路。
图1-6 P1端口内部结构
由于P1端口为准双向的I/O端口,因此在读端口之前,应该首先向寄存器写入1,然后才能够获取正确的输入。单片机复位后,由于各位锁存器均置为1, Q 端输出为0,下拉FET管截止,因此,各位用做输出或输入都是正确的。
注意: 对于某些新型的单片机,P1端口还可能提供了第二功能,这需要根据不同的单片机来确定。
3.P2端口
P2端口即P2.0~P2.7,占据Pin21~Pin28共8个引脚。P2端口可以用做通用I/O端口,或者在扩展外部存储器时用做高8位地址线。
P2端口是由8个结构完全相同的引脚组成的,对于某一个引脚结构,如图1-7所示。P2端口的每个引脚包含上拉电阻、锁存器、电子模拟开关MUX和控制电路。
图1-7 P2端口内部结构
当P2用做普通并行I/O口时,电子模拟开关MUX在控制信号的作用下,接通锁存器的Q端和输出端,则可以进行通用I/O操作。此时,P2口是准双向I/O口。因此,在读端口之前,应该首先向寄存器写入1,然后才能够获取正确的输入。而在复位情况下,可以直接从引脚输入外部数据信息。P2端口具备驱动4个LSTTL负载。
在扩展外部存储器时,P2用做高8位地址。此时电子模拟开关MUX在控制信号的作用下,接通地址端和输出端,高8位地址信号便加到输出端口,从而实现8位地址的输出。
4.P3端口
P3端口即P3.0~P3.7,占据Pin10~Pin17共8个引脚。P3端口可以用做通用I/O端口,可进行位操作,同时还具有特定的第二功能。
P3端口是由8个结构完全相同的引脚组成的,对于某一个引脚结构,如图1-8所示。P3端口的每个引脚包含上拉电阻、锁存器、第二功能输入/输出和控制电路。
图1-8 P3口内部结构
P3端口当用做普通I/O端口时,是准双向端口,可以驱动4个LSTTL负载。同时P3端口可以进行位操作,即各位都可以单独输出或输入数据。
当P3端口用做第二变异功能使用时,可以实现串口通信、中断和定时信号输入等。P3端口各个引脚的第二功能,如表1-1所示。
表1-1 P3端口的第二功能
复位的概念就像计算机重新启动一样,一切都恢复到原始状态。单片机的复位引脚为RST(Pin9),单片机内部CPU的复位信号便从这里输入。单片机的复位是很重要的,复位操作可以完成单片机的初始化,也可使处于死机状态下的单片机重新开始运行。
1.单片机复位要求
单片机复位完全通过RST引脚来完成,其基本原理是在单片机的时钟振荡电路启动后,如果RST引脚外加两个机器周期(即24个时钟振荡脉冲)以上的高电平,单片机便实现了复位。这和我们的计算机工作原理相同,计算机也是按电源按钮达到一定时间后才起作用的。
在单片机复位期间,ALE引脚和 PSEN 引脚均输出高电平。当单片机的RST引脚从高电平跳变到低电平后,单片机退出复位状态,程序便从0000H地址单元开始执行。
在实际使用中,单片机复位通常由外部复位电路来实现。外部复位电路就是促使单片机进入复位状态的硬件结构。复位电路的设计应该严格满足单片机复位要求,否则将导致无法正常复位。一般来说,为了保证单片机能够可靠地复位,需要在RST引脚保持10ms以上的高电平。单片机的复位电路一般采用上电复位和手动加上电复位两种。内部具有看门狗结构的单片机还可以采用看门狗复位。
2.上电复位电路
上电复位电路是在电源接通的时候,促使单片机复位,然后程序从头开始执行。上电复位电路的基本原理仍然遵循单片机复位要求,其采用RC电路的充放电效应来实现,如图1-9所示。当硬件电路接通电源的时候,电源通过电容加在RST引脚一个短暂的高电平信号,随后,随着电容的充电,这个高电平信号逐渐降低,当下降到一定程度后,单片机退出复位状态。高电平持续的时间和RC电路的充放电时间有关,取决于电阻和电容的取值大小。
3.手动加上电复位电路
单纯的上电复位电路是有局限性的,有时单片机程序在运行时跑飞了,我们便需要手工实现单片机复位。因此在实际应用的电路中,一般采用既可以手动复位,又可以上电复位的电路。典型的手动加上电复位的电路,如图1-10所示。
图1-9 上电复位电路
图1-10 手动加上电复位电路
手动加上电复位电路其实比较简单,只是在上电复位电路的基础上增加了一个按键开关和电阻用于手动复位。其中,上电复位部分的原理也是RC电路的充放电效应,在系统上电的时候可以给RST引脚一个短暂的高电平信号进行复位。另外,当按下按键开关的时候,VCC通过一个电阻连接到RST引脚,给RST一个高电平,当按键松开的时候,RST引脚恢复为低电平,复位完成。由于人手的反应时间远大于单片机的复位要求,因此只要按下按钮便可以实现单片机复位。
当然,除了上面介绍的这两种复位电路外,还有其他方法实现单片机复位。例如看门狗WDT、专门的复位芯片等,这里不再一一介绍。
ALE/ PROG 引脚(Pin30)具有两种功能,可以作为地址锁存使能端和编程脉冲输入端。下面分别进行介绍。
●当作为地址锁存使能端时为ALE。当单片机访问外部程序存储器时,ALE(地址锁存)的负跳变将低8位地址打入锁存。而当访问外部数据存储器时,例如执行MOVX类指令,ALE引脚会跳过一个脉冲。当单片机在非访问内部程序存储器时,ALE引脚将有一个1/6振荡频率的正脉冲信号输出,该信号可以用于外部计数或电路其他部分的时钟信号。
●当作为编程脉冲输入端时为 PROG ,在进行程序下载时使用。
另外,我们可以在程序中配置ALE输出。当对特殊功能寄存器区的地址为8EH单元的D0位写“1”时,可以禁止ALE输出。此时,只有程序在执行MOVX或MOVC类指令时,ALE才被激活,仍输出锁存有效。当执行外部程序时,该设定禁止ALE位无效。
PSEN (Pin29)引脚是单片机访问外部程序存储器的读选通信号。当单片机访问外部程序存储器,读取指令码时, PSEN 引脚在每个机器周期产生两次有效信号,即该引脚输出两个负脉冲选通信号;在执行片内程序存储器读取指令码及读写外部数据时,不产生 PSEN 脉冲信号。
EA /VPP引脚(Pin31)具有两种功能,访问内部或外部程序存储器选择信号和提供编程电压。下面分别进行介绍。
●当单片机访问内部或者外部程序存储器时, EA 作为选择信号。如果 EA 保持为低电平,则单片机从外部程序存储器(0000H~FFFFH单元)开始执行;如果 EA 保持为高电平,则单片机先从片内0000H单元开始,执行内部程序存储器程序,如果外部还有扩展程序存储器,则在执行完内部程序存储器程序后,自动转向外部程序存储器执行程序。
●当需要对单片机编程时,该引脚用于输入编程允许电压。