- 51单片机应用基础(C51版)
- 胡进德 丁如春 刘爱荣
- 6263字
- 2020-06-25 23:06:11
学习单元二 构建与测试单片机基本硬件电路
单片机正常工作的基本条件是:
(1)有电源电路:单片机像其他电子器件一样,需要电源才能工作。
(2)有时钟电路:单片机内部是时序逻辑电路,时钟电路为单片机提供时钟信号,保证单片机内部各部件同步工作。
(3)有复位电路:复位电路为单片机提供复位信号,使单片机接通电源后从程序存储器ROM的第一个存储单元(即0000 H单元)开始执行指令。
(4)有程序存储器(ROM)。ROM用来存放单片机运行所必须的程序和表格数据。
(5)有数据存储器(RAM)。RAM用来存放各类数据运算的中间结果和运算的最终结果。
(6)程序存储器选择电路。用来确定单片机是从内部ROM(俗称片内ROM)中0000H单元开始执行指令,还是从外部ROM(俗称片外ROM)中0000H单元开始执行指令。
(7)有程序:这是单片机作为人的“大脑”控制外部器件的“思想”基础。
上述前6项是单片机正常工作的硬件基础,即单片机正常工作时硬件电路必须满足的最基本的条件,由这6项所组成的硬件电路常称为单片机最小系统。构建单片机基本硬件电路,就是要构建单片机最小应用系统。由于单片机最小系统是单片机正常工作必须满足的最基本的前提条件,因而掌握单片机最小系统的搭建与测试方法显得非常重要,它是每个单片机初学者必须熟练掌握的基本功。现代新型51系列单片机中,单片机内部一般都集成了一定容量的ROM和RAM,如STC89C51RC单片机片内含有4kb(1 kb=1024字节)的Flash ROM和512字节的RAM,其他同系列的单片机片内含有更大容量的ROM和RAM(见附表4-1),因此通常没有必要在新型51系列单片机外部扩展ROM和RAM,在单片机外部扩展ROM和RAM主要是针对早期无ROM的单片机如8031、8032等(见表1-2)。目前,无ROM的单片机早已不再生产,因此,构建单片机最小应用系统时,重点针对前4项:电源电路、时钟电路、复位电路和程序存储器选择电路。
一、认识引脚功能
在进行硬件电路搭建之前,必须先弄清楚单片机的引脚功能和应用特性,以便正确连线。DIP封装的单片机如图2-1所示。
图2-1 DIP封装的51单片机外形和引脚名称
(a)DIP封装外形用引脚序号(b)引脚名称
图中各引脚功能如下:
(1)电源引脚Vcc和GND
Vcc(40脚):正电源脚,接+5V电源。
GND(20脚):负电源脚,接电源地。
通常在Vcc和GND引脚之间接0.1μF高频滤波电容。
(2)时钟电路引脚XTAL1和XTAL2
XTAL2(18脚):内部振荡电路反向放大器的输出端。采用内部振荡方式时,该引脚接外部晶振和微调电容的一端。采用外部振荡方式时,该引脚悬空。
XTALl(19脚):内部振荡电路反向放大器的输入端。采用内部振荡方式时,该引脚接外部晶振和微调电容的另一端。采用外部振荡方式时,外部振荡脉冲从该引脚输入。
(3)地址锁存允许ALE/
当单片机访问外部存储器时,该引脚的输出信号ALE用于锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。当单片机上电正常工作后,ALE端就周期性地输出正脉冲信号,ALE的输出频率为时钟振荡频率的1/6。
(4)外部程序存储器读选通信号
是读外部程序存储器的选通信号,低电平有效。当单片机访问片外扩展程序存储器时,该引脚输出读外部程序存储器的选通信号。
(5)允许访问外部程序存储器控制信号/Vpp
/Vpp是允许访问外部程序存储器控制脚,低电平有效。如果程序保存在片内ROM中,应该将该引脚接高电平;如果程序保存在片外ROM中,应该将它接地。
(6)复位信号输入端RST
该信号外接复位电路,高电平有效。在RST输入端保持至少2个机器周期的高电平后,就可以完成复位操作。
(7)输入/输出端口P0、P1、P2和P3
P0口:其引脚标识P0.0~P0.7,它是8位并行、双向数据端口,此时P0口可工作在I/O应用模式,用于控制外部器件或感受外部器件的状态。其标识AD0~AD7表示它又是低8位地址线,此时P0口工作在总线应用模式,用于在单片机外部扩展存储器,它是8位数据线和低8位地址线的复用端口。
P1口:其引脚标识P1.0~P1.7,它是8位并行、双向数据端口,只能工作在I/O应用模式。
P2口:其引脚标识P2.0~P2.7,它是8位并行、双向数据端口,此时P2口可工作在I/O应用模式。其标识AD8~AD15表示它又是高8位地址线,此时P2口工作在总线应用模式。
P3口:其引脚标识P3.0~P3.7,它是8位并行、双向数据端口,此时P3口可工作在I/O应用模式。其他标识表示P3口除了作为一般的I/O口使用之外,还具有其他特殊功能,我们称之为第二功能。P3口的第二功能见表2-1,这在后续的学习情境中将逐步深入介绍。
表2-1 P3口的第二种功能
二、构建电源电路
单片机的工作电源为+5V直流电源,将GND(20脚)接电源地,Vcc(40脚)接+5V电源,就构成了单片机的供电电路。+5V电源可由5V直流稳压电源直接提供,也可以用6~9V直流电经LM7805稳压后产生,如图2-2所示。LM7805是三端集成稳压芯片,其外形及引脚序号如图(a)所示。用LM7805输出的5V稳压电源电路如图(b)所示。图2-2中,电容C1和C2是滤波电容,用来稳定LM7805输出的5V电源,C1可取0.33μF, C2可取0.1μF。
图2-2 由LM7805构成的5V直流稳压电源
(a)LM7805的外形及引脚序号(b)LM7805输出5V电源
三、构建时钟电路
单片机的每一条指令的执行都是由若干个基本的微动作组合而成的。例如由取指令、指令译码、指令执行等微动作组合而成。这些微动作在时间上存在严格的先后顺序,要想这些动作有条不紊地执行,就必须有一个时间基准来同步各部件的动作。单片机的时钟信号就是用来提供单片机内部各个微动作的时间基准。
1.时钟信号的产生
根据硬件电路的不同,单片机时钟信号的产生有内部振荡方式和外部振荡方式两种,实际使用中主要是采用内部振荡方式。在单片机的XTAL1引脚和XTAL2引脚之间并接一个晶体振荡器(简称晶振)就构成了内部振荡方式,电路如图2-3所示。图中,单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路以产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。在实际应用中通常还要在晶振的两端和地之间各连一个小电容。电容C1和C2常称为微调电容,其作用有三个:快速起振、稳定振荡频率、微调振荡频率。C1和C2可取5~33 pF。不同型号的单片机其晶振频率范围不同,如STC89C51RC单片机允许外接0~48 MHz的晶振,AT89S51单片机允许外接0~33 MHz的晶振。
图2-3 内部振荡方式电路图
2.时钟电路的安装与焊接
为了减少寄生电容,保证振荡器稳定可靠地工作,在安装、焊接时钟电路时,晶振XT、电容C1和C2应尽可能地安装在单片机XTALl和XTAL2引脚附近。
3.基本时序单位
所谓时序,即单片机执行一条指令时各个微动作所遵循的时间顺序。时序单位即执行指令时单个微动作所花费的时间。单片机所涉及的时序单位主要有振荡周期、状态周期、机器周期和指令周期。
(1)振荡周期
即晶体振荡周期,也称为晶振周期或时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,是单片机的最小时序单位,单片机片内的各个微动作都以它为基准。
(2)状态周期
每个状态周期为时钟周期的2倍,由振荡周期经二分频后得到。
(3)机器周期
机器周期是单片机完成一个基本操作所需要的时间。大多数5l系列单片机的一个机器周期包括12个振荡周期。
(4)指令周期
单片机执行一条指令所需要的时间称为指令周期。5l系列单片机有单周期指令、双周期指令和四周期指令,也就是说单片机执行这些指令分别需要一个机器周期、两个机器周期和四个机器周期。
以上4个时序单位中,振荡周期和机器周期是经常要用到的时序单位。各时序单位的关系如下:
假设晶体振荡器的振荡频率为fosc,则:
振荡周期=1/fosc
状态周期=2/fosc
机器周期=12/fosc
指令周期=1、2、4个机器周期
例如,若单片机外接12MHz晶振,则振荡周期为0.083 3μs,机器周期为1μs。
四、构建复位电路
复位电路的作用是产生复位信号RST,5l系列单片机要求RST引脚(9脚)保持至少2个机器周期的高电平才能完成复位操作。复位操作使单片机的各功能部件回复到一个确定的初始状态。单片机复位后从程序存储器0000 H地址单元取指令并执行指令。
1.复位电路
复位电路有2种基本方式:上电复位和按键复位。
(1)上电复位
所谓上电复位就是单片机只要接通电源就自动实现复位操作。常用的上电复位电路如图2-4(a)所示。单片机接通电源(即上电)时,电解电容C1正极的电压瞬间变为+5V,电容C1对于这个瞬间的电压突变相当于短路,于是+5V高电平相当于直接加到了单片机RST引脚,正是这个加到RST引脚上的瞬间高电平使单片机实现了复位操作。很快,电容C1充满了电,在电路中相当于断路,于是RST引脚所加电压由高电平转为低电平,单片机开始执行程序。
图2-4 复位电路
(a)上电复位电路(b)组合复位电路
从图中可以看出,单片机上电时,电阻R1对电解电容C1充电,RST引脚高电平持续时间取决于RC电路的充电时间常数。只要合理选择C1和R1的参数,就可以实现上电复位。上电后,晶体振荡电路起振要经历一个振荡建立时间,采用不同频率的晶体振荡器,振荡建立时间不同。所以不同振荡频率下,C1和R1的参数不同。通常要求上电时RST引脚持续10ms以上高电平。C1和R1的取值一般为:
C1=10~30μF, R1=l~10kΩ
当晶振频率为6MHz时,可取R1=1kΩ; C1=22μF;
当晶振频率为12MHz时,可取R1=8.2~10kΩ; C1=10μF。
(2)按键复位
按键复位也称按钮复位或者开关复位,是指通过接通按钮开关,使单片机进入复位状态。按键复位电路一般不单独使用。在单片机硬件电路设计中,若需要使用按键复位电路,一般的做法是将按键复位与上电复位组合在一起形成组合复位电路,这种组合复位电路如图2-4(b)所示。图中,上电复位电路完成上电复位功能,按键复位电路由人按开关K实现复位。R2取值一般为200Ω。
2.单片机复位后的工作状态
单片机内部各功能电路模块由特殊功能寄存器控制,而程序的运行由程序计数器PC(Program Counter)管理。PC用于存放单片机下一条要执行的指令地址,是一个16位的专用寄存器,可寻址范围是0000H~FFFFH共64 kb。复位不改变单片机片内RAM中的内容,但使单片机各特殊功能寄存器的内容回复到初始值。程序计数器PC和特殊功能寄存器在单片机复位后的初始值见表2-2。这些特殊功能寄存器的功能和使用方法将在后续学习单元中逐步介绍。
表2-2 程序计数器PC和特殊功能寄存器的复位状态
注:“×”表示无关位,是一个随机数。
3.单片机复位后执行程序的过程
单片机到底是如何执行程序的?这是初学者都想知道而且是必须知道的。计算机其实非常笨,它根本不会自己灵活地做任何事情,它运行程序依赖于程序指针PC,这个程序指针指到哪一条指令就必须执行哪一条指令,单片机根本不会变通!在单片机通电复位后,程序计数器PC中的值一定为“0000”(除非它坏了),所以程序总是从ROM中0000 H单元开始执行。一般情况下,程序计数器PC存放有下一条将要执行的指令的地址,且程序计数器PC还具有计数功能,即自动加一功能:从存储器ROM中每取出指令的一个字节后,其内容又自动加1,指向下一个字节的地址。所以存放在ROM中的程序一旦被启动,则程序段中的指令便会一条接一条地被顺序读出执行,只有遇到跳转指令它才转到其他地方执行程序。
一般来说,单片机的程序通常是一个无限循环结构,目的就是在单片机不断电时让程序一直不断地执行,从而实现对外部器件的控制。
五、构建程序存储器选择电路
单片机/Vpp引脚是程序存储器选择控制脚:当/Vpp引脚接低电平时,片内ROM无效,单片机复位后从片外程序存储器0000 H单元开始取指令并执行指令;当/Vpp引脚接高电平时,片内ROM有效,单片机复位后从片内程序存储器0000 H单元开始取指令并执行指令。现代新型51系列单片机内部都集成了一定容量的ROM,一般不需要在单片机外部扩展ROM,程序就存放在片内ROM中,此时应将/Vpp引脚接高电平。
六、单片机最小系统的构建与测试实例
在图1-9中,如要用单片机的P1.0引脚控制LED发光二极管闪亮,其基本硬件电路应如何构建呢?
1.基本硬件电路的构建
一种单片机最小系统硬件电路如图2-5(a)所示。
图2-5(a)一种单片机最小系统硬件电路
图2-5(a)是自行开发的51MCU-2型单片机教具[如图2-5(b)]的一部分简化电路,本书所涉及的绝大部分实训项目都可通过此教具完成。图2-5(a)中所用的元器件清单(含器件标号、名称、参数和功能)如表2-3所示。
表2-3 一种单片机最小系统元器件清单
图2-5(a)中单片机采用STC89C51 RC,它可通过RS232串口型下载线烧写程序。图中单片机P1端口的8个引脚分别驱动8个发光二极管L0~L7,例如,用P1.0引脚控制发光二极管L0闪亮。由于单片机I/O引脚的驱动能力有限,通常借助单片机外部电源驱动发光二极管,因而将发光二极管的正极与外部正电源Vcc(一般为+5V)相连,发光二极管的负极接单片机I/O引脚。为保证发光二极管工作电流适中(如发光二极管的工作电流太大会烧坏发光二极管),通常发光二极管需串联一个电阻以限制电流大小,此电阻称为限流电阻,图中限流电阻为680Ω。
当我们按图2-5(a)焊接好电源电路、振荡电路、复位电路和程序存储器选择电路后,就完成了单片机最小系统硬件电路的构建。另外,为了让单片机驱动LED发光二极管闪亮,为了借助RS232串口型下载线烧写单片机程序,还需要按图2-5(a)焊接好其他电路。
2.基本硬件电路的测试
最小系统构建是否成功直接关系到单片机能否正常工作,因此有必要对构建的图2-5(a)硬件电路进行测试。单片机基本硬件电路测试方法如下:
(1)测试电源电路:用万用表或示波器测试单片机正电源脚和负电源脚的工作电压是否与单片机器件资料中给出的工作电压范围相符合,一般正电源Vcc为4.5~5.5V。
(2)测试振荡电路:用示波器测试单片机XTAL1引脚和XTAL2引脚是否有振荡波形,此波形为正弦波。正弦波经单片机内部电路转换为时钟信号——方波。
(3)测试复位电路:用示波器测试单片机RST引脚在上电的瞬间是否有10ms以上高电平;用示波器或万用表测试单片机RST引脚在按键S1闭合时是否有高电平,在按键S1断开时是否有低电平。
(4)测试程序存储器选择电路:用万用表或示波器测试单片机/Vpp脚是否为高电平。
3.51MCU-2型单片机教具简介
51MCU-2型单片机教具电路板如图2-5(b)。它既可采用独立的5V直流稳压电源,也可通过电脑的USB口供电。它可通过电脑的串行口或打印机并行口直接在电路板上烧写程序,使用非常灵活、便捷、可靠。教具提供主电路板、指示灯模块、数码管模块、LCD模块、键盘模块、IC卡模块、微型打印机模块等,可完成十多种单片机实训项目。主要实训内容如下:
图2-5(b)51MCU-2型单片机教具电路板
(1)单片机I/O口实训:如单灯闪亮、跑马灯等。
(2)定时/计数器实训:含查询方式与中断方式。
(3)中断实训:含外部中断、定时器/计数器中断和串行口中断。
(4)串行通信实训:如单片机与电脑通信、单工与双工通信、多机通信。
(5)按键实训:涉及单个按键和键盘矩阵。
(6)LED数码管实训:如静态和动态扫描、电子万年历。
(7)LCD实训:采用19264模块。
(8)串行A/D实训:采用TLC549。
(9)I2C总线实训:如AT24C0X系列实训项目。
(10)微型打印机实训。
(11)IC卡实训。
(12)蜂鸣器实训。
(13)实时时钟:采用HT1380。
(14)可扩展的其他实训项目。
4.编写程序
硬件电路搭建好后,单片机还必须写有程序才能让发光二极管闪亮。如要让P1.0引脚控制发光二极管L0闪亮,其完整的程序如下。
【例2-1】 单片机控制单个发光二极管闪亮。硬件电路见图2-5(a),程序如下。
ORG 0000 H ;复位后,程序的起始地址 SJMP MAIN ;程序转移至MAIN处 ORG 0030H ;0000~002FH处有固定用途,程序一般从 0030H 单元开始存放 MAIN:;指令标号,也称符号地址 SETB P1.0 ; P1.0输出高电平 LCALL DELAY ;通过调用延时子程序实现延时 CLR P1.0 ; P1.0输出低电平 LCALL DELAY ;延时 AJMP MAIN ;跳转至MAIN处再循环 DELAY:;延时子程序符号地址 MOV R0, #200;将立即数200传送给寄存器R0 LOOP1:;标号 MOV R1, #250;将立即数250传送给寄存器R1 DJNZ R1, $ ; R1减1后不为0则再次执行此指令,“$”代表“本 行”或本行的标号。 DJNZ R0, LOOP1; R0减 1 后再判断R0的内容是否为0,不为0则转 移至LOOP1 RET ;延时子程序返回 END ;程序结束标志
这里先对以上程序有个初步认识,有待后面逐步深入学习。