2.2 AT89S51单片机的内部结构及引脚功能
AT89系列单片机的各种型号均是以8031为核心电路发展起来的,具有51系列单片机的基本结构与软件特征。Atmel公司新推出的可在系统编程(ISP)的MCS-51兼容单片机AT89S51/52将全面替代AT89C51/52单片机。其中AT89S51现已成为AT89系列单片机的主流产品,本书以AT89S51单片机为例介绍MCS-51系列单片机。
2.2.1 AT89S51单片机的基本结构
微课:51单片机内部结构
AT89S51的内部结构如图2-6所示,其基本组成部分包括如下几部分
· 适于控制应用的8位CPU。
· 一个片内振荡器及时钟电路,最高工作频率可达33MHz。
· 工作电压4.0~5.5V。
·4KB Flash程序存储器,支持在系统编程(ISP)1000次擦写周期。
·128B数据存储器。
· 可寻址64KB外部数据存储器空间及64KB程序存储器空间的控制电路。
·32根双向可按位寻址的I/O接口线。
·1个全双工串行口。
·2个16位定时/计数器。
图2-6 AT89S51的内部结构
·5个中断源,具有两个优先级。
· 三级程序加密。
· 低功耗支持Idle和Power-down模式,Power-down模式支持中断唤醒。
· 看门狗定时器。
· 双数据指针。
· 上电复位标志。
若程序存储器带有4KB Flash,即为51子系列;若RAM/Flash容量为256B/8KB,则为52子系列。
下面分别介绍AT89S51单片机内部各部分的主要功能。
1.微处理器
AT89S51单片机的微处理器(MPU)与一般的微型计算机类似,也是由运算器和控制器组成。运算器可以对半字节(4位)、单字节等数据进行算术、逻辑运算,并将结果送至状态寄存器。运算器中还包括一个专门用于位数据操作的布尔处理器。控制器包括程序计数器PC、指令寄存器、指令译码器、振荡器、时钟电路及控制电路等部件,它可以根据不同指令产生的操作时序控制单片机各部分工作。
2.存储器
单片机的存储器分两种:一种用于存放已编写好的程序及数据表格,称为程序存储器,常用ROM、EPROM、E2PROM等类型,AT89S51中采用的就是Flash E2PROM,其存储容量为4 KB。另一种用于存放输入与输出数据、中间运算结果,称为数据存储器,常用RAM类型,AT89S51中的数据存储器较小,存储容量仅128 B。若存储器空间不够用,可以外部扩展。
单片机存储器采用哈佛结构,它将程序存储器和数据存储器分开编址,各自有自己的寻址方式。
3.输入/输出接口
AT89S51的输入/输出(I/O)接口包括4个8位并行口及1个全双工的串行口。4个并行口既可作为I/O端口使用,又可作为外部扩展电路时的数据总线、地址总线及控制总线。内部的串行口是一个可编程的全双工串行通信接口,具有通用异步接收/发送器(UART)的全部功能,可以同时进行数据的接收和发送,还可以作为一个同步移位寄存器使用。
4.其他内部资源
AT89S51内部还有2个16位定时/计数器及中断系统。定时/计数器可以通过对系统时钟计数实现定时,也可用于对外部事件的脉冲进行计数。中断系统可以对5个中断源进行中断允许及优先级的控制。5个中断源中有2个为外部中断,由单片机的外围引脚、引入;3个为内部中断,分别由2个定时/计数器及串行口产生。
2.2.2 AT89S51单片机的引脚及封装
动画:51单片机引脚介绍
微课:单片机外围引脚
微课:单片机封装
AT89S51单片机的封装共分为DIP、PLCC及PQFP 3种形式,常用为DIP封装方式。其外形及引脚分配如图2-7所示。
图2-7 AT89S51外形及引脚分配图
AT89S51共40个引脚,大致可分为4类。
(1)电源引脚
VCC:电源端,+5V。
VSS:接地端(GND)。
(2)时钟电路引脚
XTAL1:外接晶振输入端。
XTAL2:外接晶振输出端。
(3)I/O引脚
P0.0~P0.7/AD0~AD7:一组8位漏极开路型双向I/O口,也是地址/数据总线复用口。作输入/输出口用时,必须外接上拉电阻,它可驱动8 个TTL 门电路。当访问片外存储器时,用作地址/数据分时复用口线。在Flash编程时,P0口接收指令,而在程序校验时,输出指令,校验时,要求外接上拉电阻。
P1.0~P1.7:一组内部带上拉电阻的 8 位准双向 I/O 口,可驱动 4 个 TTL 门电路。Flash编程和程序校验期间,P1接收低8位地址。P1.5~P1.7用于ISP编程控制。
P2.0~P2.7/A8~A15:一组内部带上拉电阻的8位准双向I/O口,可驱动4个TTL门电路。当访问片外存储器时,用作高8位地址总线。Flash编程和程序校验期间,P2亦接收高位地址及其他控制信号。
P3.0~P3.7:一组内部带上拉电阻的8位准双向I/O口。出于芯片引脚数的限制,P3端口每个引脚具有第二功能。
(4)控制线引脚
RST:复位端。当RST端出现持续两个机器周期以上的高电平时,可实现复位操作。/VPP:片外程序存储器选择端/Flash存储器编程电源。若要访问外部程序存储器则端必须保持低电平。VPP端用于Flash存储器编程时的编程允许电源+12V输入端。
ALE/:地址锁存允许端/编程脉冲输入端。当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存P0口分时送出的低8位地址(下降沿有效)。不访问外部存储器时,该端以时钟频率的1/6输出固定的正脉冲信号,可用作外部时钟。对内部Flash存储器编程期间,该引脚用于输入编程脉冲。:读片外程序存储器选通信号输出端。当AT89S51从外部程序存储器取指令时,该脚有效(上升沿)。每个机器周期均产生两次有效输出信号。
2.2.3 AT89S51单片机的I/O口
微课:IO端口控制
AT89S51单片机有4个8位并行I/O口,P0~P3,共32根口线。每个端口都包括:锁存器(即SFR中的P0~P3)、输出驱动器、两个三态缓冲器以及控制电路。
1.I/O口的特性
(1)P0口
P0口的位结构示意图如图2-8所示,其特点如下。
图2-8 P0口的位结构示意图
[1] 控制端高电平时,作为低8位地址和8位数据分时复用口,供扩展时使用。
[2] 控制端低电平时,作I/O口使用。场效应晶体管VT1截止,使VT2漏极开路,需外接上拉电阻。
[3] 当作输入口时,具有“读引脚”和“读锁存器”两种情况。前一种情况是数据由引脚输入,此时需先向锁存器写1,使场效应晶体管VT1和VT2都截止;后一种情况是读锁存器Q端的状态。
[4] 每位最多可带8个LSTTL负载。
(2)P1口
P1口的位结构示意图如图2-9所示,其特点如下。
[1] 只作为I/O端口使用,内部用上拉电阻代替了场效应晶体管VT1。
[2] 与P0口一样,也有读引脚和读端口两种情况,操作方法与P0口相似。
[3] 每位可带4个LSTTL电路。
(3)P2口
P2口的位结构示意图如图2-10所示,其特点如下。
图2-9 P1口的位结构示意图
图2-10 P2口的位结构示意图
[1] 控制端高电平时,作为高8位地址输出口。
[2] 控制端低电平时,作为I/O端口使用,使用方法与P0、P1口相同。
[3] 每位可带4个LSTTL负载。
(4)P3口
P3口位结构示意图如图2-11所示,其特点如下。
图2-11 P3口的位结构示意图
[1] 具有第二功能,如表2-1所示。
表2-1 P3口第二功能表
[2] 第二功能输出端为“1”时,与非门的输出由锁存器输出端Q决定,P3口作为通用输出口使用。
[3] 当P3口作为第二功能输出使用时,锁存器输出端Q应置“1”,与非门的输出由第二功能输出端决定。
[4] 当P3口作为读引脚或第二功能输入使用时,应将锁存器输出端Q及第二功能输出端均置“1”,使场效应晶体管VT2截止。
[5] 每位可带4个LSTTL负载。
2.I/O的应用
由AT89S51各端口的特性可知,P0口既可作为地址/数据总线口,又可作为通用I/O口。在作地址/数据总线口时,它是真正的双向口,可以直接驱动MOS输入,不需要加上拉电阻。当它作为通用I/O口时,必须外接上拉电阻才能驱动MOS输入。对P1、P2、P3口而言,内部已接有上拉电阻,因此不必外接任何电阻就可驱动MOS输入。
P0口和P1、P2、P3口作为通用I/O口时一样,在输入时分为“读锁存器”和“读引脚”两种操作,这两种操作是用不同的指令区分的。
当CPU在执行“读—修改—写”类指令时,如“ ANL P1,A” ,则采用读锁存器的操作方式。它将锁存器Q端的数据读入进行运算修改后,将结果送回到端口锁存器并输出到引脚。
CPU执行“ MOV”类指令时,则进行“读引脚”操作。在读引脚前必须先对锁存器写“1”,使场效应晶体管VT2截止,才能正确输入引脚上的信息。因此,把具有这种特性的端口称为准双向口。
例如:将P1口的状态输入累加器A中,必须执行两条指令。
MOV P1,#0FFH ; 将P1口的锁存器写 “1” MOV A,P1 ; 将P1口引脚状态读入A中
总的来说,由于单片机I/O口的电气特性决定了单片机端口的驱动能力有限,只能提供很小的驱动电流,所以带负载时应当在单片机的I/O口加上驱动芯片。