第三章 单片机技术
第一节 单片机硬件结构
一、单片机的特点
将CPU、RAM、ROM、定时器/计数器以及输入/输出(I/O)接口电路等计算机主要部件集成在一块芯片上,配置这种芯片的微型计算机称为单片微型计算机(Single Chip Microcomputer),简称单片机。按CPU处理的数据长度,可分为8位、16位及32位单片机。
单片机在水电站中主要应用于数据采集、微机保护装置、智能交流电参数仪、温度巡检仪、微机测速装置等。单片机的特点如下:
(1)具有优异的性能价格比。高性能低价格是单片机最显著的一个特点。
(2)集成度高、体积小、可靠性高。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连续,大大提高了单片机的可靠性与抗干扰能力。另外,由于其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣工业环境下工作。
(3)控制功能强。单片机的指令系统中有极丰富的转移指令、I/O接口的逻辑操作以及位处理功能,可以满足工业控制的要求。
(4)低电压、低功耗。许多单片机可在2.2V的电压下运行,有的工作电压甚至在1.2V或0.9V下;功耗降至为毫安,一粒纽扣电池就可以长期使用。
二、单片机的硬件结构
20世纪80年代Intel公司推出MCS—51系列单片机以来,该系列的产品已经发展了几十种型号,8051是最早、最典型的产品。Intel公司对该系列单片机采用技术开放的策略,很多公司如Philips、Siemens、Motorola、Zilog、OKI、MATRA—MHS、Atmel、Dallas等相继推出了以8051为基核的各种单片机产品。
Intel公司的MCS—51、MCS—96系列产品为主流单片机。其中,MCS—51的典型产品有8031、8051、8751。8051内部有4KB ROM,8751内部有4KB EPROM,8031片内无ROM,除此之外,三者的内部结构及引脚完全相同。本章以8051单片机为例介绍单片机技术。MCS—51系列的8051单片机的典型结构框图如图3-1所示。
MCS—51系列单片机的基本组成是由CPU、存储器(包括RAM和ROM)、I/O接口、定时/计数器、中断控制功能等集成的一块芯片,片内(2)128B RAM数据存储器。
图 3-1 单片机的典型结构框图
(4)1个全双工的异步串行口。
(一)单片机的功能部件
各功能部件通过内部总线相互连接起来。其硬件资源如下:
(1)面向控制的8位CPU。
(3)32位双向输入/输出线。
(5)2个16位定时器/计数器。
(6)时钟发生器。
(7)可寻址64KB程序存储器和64KB外部数据存储器。
单片机的核心部件是一个8位的高性能的微处理器CPU,其主要功能是读入并分析每条指令,根据各指令的功能产生各种控制信号控制存储器、输入/输出端口的数据传送、算术运算、逻辑运算以及位操作处理等。简单地说,CPU就是分析指令后,告诉单片机各部件在规定的时间做规定的事。CPU从功能上可分为运算器和控制器两部分。
1.控制器
控制器的功能是对来自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,使各部分协调工作,完成指令所规定的功能。程序计数器PC是其重要的功能部件之一。
PC是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1的功能。当CPU要取指令时,PC的内容送地址总线上,从该地址的存储单元中取出指令后,PC内容则自动加1,指向下一条指令,为取下一条指令做准备,以保证程序按顺序执行。在执行转移、子程序调用指令和中断响应时PC的内容不再加1,而是由指令或中断响应过程自动给PC置入新的地址。单片机复位时,PC自动清零,即装入地址0000H,保证了单片机复位后,程序从0000H地址开始执行。
2.运算器
运算器由算术逻辑部件ALU、累加器Acc、寄存器B、暂存器、程序状态字寄存器PSW组成。其任务是完成算术和逻辑运算、位变量处理和数据传送等操作。
(1)累加器Acc。Acc是一个8位的寄存器,简称为A,通过暂存器与ALU相连。累加器A用于向ALU提供操作数和存放运算的结果。它是CPU工作中使用最频繁的寄存器,用来存一个操作数或中间结果。
(2)算术逻辑部件ALU。ALU是由加法器和其他逻辑电路等组成。单片机型号为8051的ALU功能极强,除用于对数据进行加、减、乘、除算术运算和与、或、异或、循环、求补等逻辑运算,还同时具有一般微机的ALU不具备的位处理功能。其运算结果的状态会影响PSW。
(3)程序状态字寄存器PSW。PSW是8位寄存器,用于存放程序运行中的各种状态信息,并可以进行位寻址。PSW各位的定义如下:
CY(PSW.7):进位标志。在进行加法或减法运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。在进行位操作时,CY又可以被认为是位累加器,其作用相当于CPU中的累加器A。
AC(PSW.6):辅助进位标志。在进行加法或减法运算时,低4位向高4位产生进位或借位时,AC将由硬件置“1”,否则清“0”。AC位可用于BCD码调整时的判断位。
F0(PSW.5):用户标志位。由用户置位或复位,可作为用户自行定义的一个状态标记。
RS1、RS0(PSW.4、PSW.3):工作寄存器组指针。用来选择CPU当前工作的寄存器组。
OV(PSW.2):溢出标志。在算术运算中产生溢出时,则由硬件将OV置“1”,否则清“0”。溢出是指运算结果超出了单片机所能表示的数据范围。例如有符号数字长为8位,最高位(D7)为符号位,用于表示正负号,数据有效位为7位,能表示-128至+127之间的数,若超出此范围即产生溢出。
例:0 1 0 1 0 1 0 0(+84)
上式中C6Y=1,C7Y=0,所以OV=C6YC7Y=10=1,结果为负数产生了正溢出。
在存储器MCS—51中,无符号数乘法指令MUL的执行结果也会影响溢出标志位。当置于累加器A和寄存器B中的两个乘数的积超过255(即0FFH)时,OV=1,否则为0。OV=1表示有溢出,溢出时积的高8位在B中,积的低8位在A中。因此,OV=0表示积没有超出255,B中无高位积,所以只要从A中取得乘积即可。OV=1时,从BA寄存器对中取得乘积。
除法指令DIV也会影响溢出标志位。当装在B中的除数为0(即B=0)时,OV=1,否则为0。
F1(PSW.1):用户标志位。其用法同F0,由用户定义。
P(PSW.0):奇偶标志位。该位始终跟踪累加器A内容的奇偶性。如果有奇数个“1”,则P置“1”,否则P清“0”。凡是改变累加器A中内容的指令均会影响P标志位。此标志位对串行口通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。
(4)寄存器B。寄存器B在乘、除运算时用来存放一个操作数,也用来存放运算后的一部分结果。在不进行乘、除运算时,可以作为通用寄存器使用。
3.存储器
MCS—51包括程序存储器ROM/EPROM和数据存储器RAM。它们相互独立,各有64K的寻址空间。
(1)程序存储器。在MCS—51中内部程序存储器(ROM/EPROM)和外部扩展程序存储器的地址是连续的,内部(4KB)为0000~0FFFH,外部(64KB)为1000~FFFFH。
(2)数据存储器。MCS—51内部RAM共有128个单元,地址为00H~7FH。MCS—51对内部RAM有丰富的位操作指令,编程非常方便。MCS—51可以扩展64KB的RAM或I/O口,即可满足一般应用系统的需要。
(3)特殊功能寄存器。MCS—51单片机共有21个特殊功能寄存器(SFR),用于专用寄存。例如A是累加器,其功能是进行算术运算。其他特殊功能寄存器有B、PSW、SP、DPTR、IP、IE、P0~P3、TMOD、TCON、TH0、TL0、TH1、TL1、SCON、SBUF、PCON。
4.并行口和串行口
(1)并行口。MCS—51内部有4个并行口P0、P1、P2、P3,每个口有8条I/O线,共32条线。具体详见引脚功能一节。
(2)串行口。单片机内部含有一个可编程全双工串行通信接口。其帧格式可为8位、10位或11位,且波特率可以程控设定。单片机的串行口由串行口控制寄存器SCON、发送电路和接收电路3部分组成。通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。
5.定时/计数器
MCS—51单片机内部有两个16位可编程定时/计数器T0和T1,分别由两个8位寄存器组成,高8位分别为TH0和TH1,低8位分别为TL0和TL1。T0和T1由特殊功能寄存器TMOD和TCON来控制。其中每个定时/计数器可以设置为定时器作定时用,或设置为计数器作计数用。也可以设定其他工作方式,CPU通过软件编程来进行这些设定。
(1)工作模式寄存器TMOD。TMOD寄存器用来设置T0 和T1工作模式、定时/计数方式及其他引脚信号对定时/计数器的影响等。其字节地址为89H,格式和意义如图3-2所示。其中,低4位用于设置T0,高4位用于设置T1。
图 3-2 TMOD各位定义
各位的功能为:
1)工作模式控制位M0和M1控制4种工作模式,见表3-1。
2)定时器/计数器工作方式选择位。,定时器/计数器设置为计数方式,计数器的输入信号分别来自外部引脚T0(P3.4),T1(P3.5);,定时器/计数器设置为定时方式,计数来自8051片内脉冲,即对机器周期计数。
表 3-1 M1 M0控制的4种工作方式
3)门控位GATE。GATE=0时,允许软件控制位TR0或TR1启动定时器;GATE=1时,定时器/计数器的工作受到外部引脚(P3.2)和(P3.3)的影响,仅当=1时,才能启动定时器/计数器1或0工作。
TMOD不能进行位寻址,只能用字节传送指令进行定义,低4位定义定时器0,高4位定义定时器1。复位时,TMOD所有位均清零。
(2)定时器控制寄存器TCON的高4位与定时器/计数器有关,分别用来控制定时器/计数器的启动、溢出。低4位与外部中断有关,其字节地址为88H,可以位寻址,各位定义见表3-2。
表 3-2 TCOM各位定义
6.中断系统
MCS—51的中断系统结构如图3-3所示。由中断请求标志位,中断允许寄存器IE、中断优先级寄存器IP及内部硬件查询电路组成。
图 3-3 MCS—51的中断系统结构
MCS—51单片机有5个中断源。其中,2个外部中断源(P3.2)和(P3.3);3个内部中断源包括T0和T1的溢出中断源及串行口发送/接收中断源(TX/RX)。这5个中断源可分为2个中断优先级,其中断请求信号的产生如下:
(1):外部中断0和外部中断1,中断请求信号分别由P3.2、P3.3引脚输入。请求信号的有效电平由IT0和IT1设置,一旦输入信号有效,则将TCON中的IE0或IE1标志位置1,可向CPU申请中断。
(2)T0和T1:定时器0和定时器1中断。当T0或T1计数器加1计数产生溢出时,则将TCON中的TF0或TF1标志位置1,向CPU申请中断。
(3)TX和RX:串行口的发送和接收中断。当串行口发送或接收完一帧数据时,将SCON中TI或RI标志位置1,向CPU申请中断。
当某个中断源的中断请求被CPU响应之后,CPU将自动把此中断源的中断入口地址输入程序计数器PC,MCS—51单片机各中断源的入口地址是固定的,见表3-3。
表 3-3 MCS—51单片机中断源的入口地址
(二)单片机的引脚功能
图 3-4 MCS—51系列单片机芯片引脚图
MCS—51系列单片机是40引脚双列直插式封装(DIP)的VLSI芯片,其引脚如图3-4所示。
下面分别说明40条引脚的功能。
(1)主电源引脚:VSS和VCC。
VSS(20脚):接地。
VCC(40脚):接主电源+5V,正常操作和对EPROM编程及验证时均接+5V电源。
(2)外接晶振引脚:XTAL1和XTAL2。
XTAL1(19脚)和XTAL2(18脚)是接外部晶振的两条引脚。采用外部振荡器时,XTAL1引脚接地,XTAL2引脚作为外部振荡信号的输入端。
(3)控制信号引脚:RST/VPD、ALE/。
1)RST/VPD(9脚)是单片机复位/备用电源引脚。在引脚上输入两个机器周期的高电平将使单片机复位。表3-4为复位后各寄存器的状态。
表 3-4 复位后各寄存器的状态
注 1.表中带有“*”号者是特殊功能寄存器。
2.“×”为任意值。
当芯片在使用中VCC电压突然下降或为0(称掉电或失电),此引脚可接上备用电源(即VPD接+5V备用电源)。这样能保护片内RAM中的信息不丢失,恢复供电后能继续正常运行。
2)(30脚)是地址锁存允许信号输出/编程脉冲输入引脚。当访问片外存储器时,ALE(地址锁存允许)的输出用于锁存低字节的地址信号。即使不访问外部存储器,ALE端仍以不变的频率周期性的出现正脉冲信号,此频率为振荡器频率的1/6。
对于EPROM型单片机(8751)片内EPROM编程期间,ALE引脚用于输入编程脉冲。
3)(29脚)是输出访问片外程序存储器的读选通信号。CPU在由片外程序存储器取指令(或常数)期间,每个机器周期两次有效。每当访问片外数据存储器时,这两次有效的信号将不会出现。端同样可以驱动8个LSTTL负载。
4)(31脚)是内部与外部存储器选择端/片内EPROM编程电压输入端。当端输入高电平时,CPU可访问片内程序存储器4KB的地址范围。4KB以上的地址,CPU将自动转向访问片外程序存储器;当端输入低电平时,则只能访问片外程序存储器。型号为8031的单片机无片内程序存储器,必须使用片外扩展程序存储器,所以端应接地。
对于EPROM型单片机(8751),在对EPROM编程期间,端接+12V的编程电压VPP。
(4)输入/输出引脚P0、P1、P2、P3端口。
P0.0~P0.7(39~32脚):在访问片外存储器时,P0端口分时作低8位地址线和8位双向数据总线用,故这些I/O线有地址/数据线之称,简写为AD0~AD7。
P1.0~P1.7(1~8脚):P1是一个带内部上拉电阻的8位双向I/O口,在EPROM编程时或在验证程序时,由它输入低8位地址。P1能驱动4个LSTTL负载。
P2.0~P2.7(21~28脚):P2也是双向I/O口。在访问外部存储器和对EPROM编程和程序验证时,由它输入高8位地址。P2能驱动4个LSTTL负载。
P3.0~P3.7(10~17脚):P3也是双向I/O口。在MCS—51中,这8个引脚还用于专用的第二功能,见表3-5。P3能驱动4个LSTTL负载。
表 3-5 P3端口各位的第二功能表