1.3 单片机最小应用系统
1.单片机最小系统的组成
所谓最小系统就是指由单片机和一些基本的外围电路所组成的一个可以工作的单片机系统。一般来说,它包括单片机、晶振电路和复位电路。
1)晶振电路
AT89S52片内有一个由高增益反相放大器构成的振荡电路。XTAL1和XTAL2分别为振荡电路的输入、输出端。其振荡电路有两种组成方式:片内振荡器和片外振荡器。
片内振荡器如图1.6(a)所示。在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常C1和C2取30pF,晶振频率的取值在(1.2~12)MHz之间。
片外振荡器如图1.6(b)所示。XTAL1是外部时钟信号的输入端,XTAL2可悬空。由于外部时钟信号经过片内一个二分频的触发器进入时钟电路,因此对外部时钟信号的占空比没有严格要求,但高、低电平的时间宽度应不小于20ns。
图1.6 AT89S52振荡器电路
2)CPU时序的概念
CPU的时序是指CPU在执行指令过程中,其控制器所发出的一系列特定的控制信号在时间上的相互关系。
时序常用定时单位来说明。时序定时单位共有四个:振荡周期、时钟周期、机器周期、指令周期。
(1)振荡周期
振荡周期也称时钟周期,是指晶体振荡器直接产生的振荡信号的周期,是振荡频率的倒数。
(2)时钟周期
时钟周期又称状态周期,用S表示,是振荡周期的2倍。每个时钟周期分为P1和P2两个节拍,P1节拍完成算术逻辑操作,P2节拍完成内部寄存器间数据的传递。
1个时钟周期=2个振荡周期
(3)机器周期
机器周期是机器的基本操作周期。
1个机器周期=6个时钟周期=12个振荡周期
(4)指令周期
指令周期是执行一条指令所占用的全部时间。一个指令周期通常由1~4个机器周期组成。在AT89S52系统中,有单周期指令、双周期指令和四周期指令。例如:
外接晶振频率fosc=12 MHz,则4个基本周期的具体数值如下。
① 振荡周期=1/12 μs。
② 时钟周期=1/6 μs。
③ 机器周期=1 μs。
④ 指令周期=1~4 μs。
3)复位电路
AT89S52单片机的复位电路如图1.7所示。在RST输入端出现高电平时实现复位和初始化。
在振荡运行的情况下,要实现复位操作,必须使RST引脚至少保持2个机器周期(24个振荡周期)的高电平。CPU在第2个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RST端电平变低。复位期间不产生ALE及PSEN信号,复位后,各内部寄存器状态如表1.3所示。
如图1.7(a)所示为上电自动复位电路。加电瞬间,RST端的电位与VCC相同,随着RC电路充电电流的减小,RST的电位下降,只要RST端保持10 ms以上的高电平就能使AT89S52单片机有效地复位,复位电路中RC的参数通常由实验调整。当振荡频率选用6 MHz时,电容的大小选22 μF,电阻的大小选1 kΩ,便能可靠地实现上电自动复位。
如图1.7(b)所示为手动复位电路。
图1.7 AT89S52单片机复位电路
2.单片机最小系统常用控制器件
单片机最小系统只是单片机能工作的最低要求,它不能对外完成控制任务,实现人机对话。要进行人机对话还要一些输入、输出部件,做控制时还要有执行部件。常见的输入部件有开关、按钮、键盘、鼠标等,输出部件有指示灯、数码管、显示器等,执行部件有继电器、电磁阀等,下面只介绍几个简单的部件。
1)继电器
继电器是用低电压控制高电压的器件,它包括线圈、铁芯、衔铁和触点。触点有常开触点、常闭触点之分。在开关特性上有单刀单置、双刀单置、单刀双置、双刀双置、单刀多置、双刀多置之分。图1.8(a)为继电器的符号,图中只列了四种类型的继电器,方框代表线圈,圆圈代表触点,直线代表刀。左下图为单刀单置,右下图为单刀双置,左上图为双刀双置,右上图为双刀单置。
工作过程:线圈得电时,常开触点闭合,常闭触点断开;线圈失电时,常开触点断开,常闭触点闭合。电路连接时,由于继电器所需驱动电流较大,一般情况下需要增加电流放大电路,最简单的电路是将继电器的线圈一端接到相应的正电源,另一端接到三极管集电极上,三极管的基极接单片机的输出端口,发射极接地,并在继电器的线圈上反并联一个二极管。以单刀单置为例,将220V相线断开接触点两端(相当于在相线上接一个开关),220V线上再接电气设备。这样只要用软件控制单片机的该输出口线为高电平时,线圈得电,常开触点闭合,电气设备工作(设定高电平工作);用软件控制单片机的该输出口线为低电平时,线圈失电,常开触点断开,电气设备停止工作(设定低电平停止)。
2)光耦
光耦在电路中起隔离作用,由光作为信号传递媒介,将单片机和外部设备在电气上隔离。光耦可分为三极管型光耦(又分带基极型和不带基极型)、可控硅型光耦(又分单向可控和双向可控)。如图1.8(b)所示光耦的工作过程:有电流通过内部发光管,发光管发光,所对应的内部三极管导通;无电流通过内部发光管,发光管不发光,所对应的内部三极管断开。一般接法是内部发光管阳极接高电平(电源正极),与单片机同电源。阴极接单片机的某一输出口线,内部三极管对外的两端接外部设备,这就将单片机和外部设备在电气上分隔开。当用软件控制单片机的该输出口线为低电平时,内部发光管发光,所对应的内部三极管导通,外部设备工作(设定低电平工作);用软件控制单片机的该输出口线为高电平时,内部发光管不发光,所对应的内部三极管不导通,外部设备就停止工作(设定高电平停止)。
图1.8 继电器和光耦工作过程
3)发光二极管
发光二极管常用做指示灯,其正向压降为1.4~3.0 V,加正向电压发光,反之不发光。一般接法是阳极接高电平,电源正极,阴极接单片机的某一输出口线。当该输出口线为低电平时,指示灯亮;该输出口线为高电平时,指示灯不亮。这样只要编程控制单片机的该输出口,就可控制指示灯亮或灭。在实际应用中,多增加电流驱动电路。
项目实施1 闪光灯电路的硬件与软件设计
闪光灯电路是学习单片机的入门知识,可为后续其他章节的学习打基础。
1.硬件电路设计
闪光灯电路是AT89S52单片机的一种最简单电路,它包含3个部分:晶振电路、上电复位电路和用户电路。闪光灯电路原理图如图1.9所示。
图1.9 闪光灯电路原理图
由于只使用内部程序存储器,AT89S52的EA端接电源正极。
选用驱动能力较强的P0口中的第一个端口P0.0控制一只LED。当P0.0输出为1时, LED无电流不发光。当P0.0输出为0时,流过LED的电流为
LED的控制方法如下所示。
2.元器件清单
元器件清单如表1.5所示。
表1.5 元器件清单
3.软件设计
单片机控制系统与传统的模拟和数字控制系统的最大区别在于:单片机系统除了硬件以外还必须有程序支持,即设计软件程序。
1)程序设计步骤
(1)分析任务,确定算法和解题思路。
(2)根据算法和解题思路画出程序流程图。
(3)根据流程图编写程序。
(4)上机调试程序。
2)画流程图
(1)流程图的符号如表1.6所示。
表1.6 流程图符号
(2)闪光灯电路的流程图如图1.10所示。
图1.10 闪光灯电路流程图
3)程序清单
ORG 0000H L1: CPL P0.0 MOV R6,#00H ;1个机器周期 L2: MOV R7,#00H ;1个机器周期 L3: NOP ;1个机器周期 DJNZ R7,L3 ;2个机器周期 DJNZ R6,L2 ;2个机器周期 SJMP L1 ;2个机器周期 END
4)软件延时时间计算方法
总延时时间:1+[1+(1+2)×256]×256+2×256=197377个机器周期
如果振荡频率=6MHz,即一个机器周期=2 μs,则延时时间为:
2 μs×197377=394754 μs=394.754 ms
振荡频率=12MHz,即一个机器周期=1μs,则延时时间为:
1 μs×197377=197377 μs=197.377 ms
调整寄存器R6和R7的值,可改变延时时间。如果执行指令“MOV R6, #80H”,振荡频率=12MHz,则延时时间为1+[1+(1+2)×256]×128+2×128=98816×1μs=98816μs≈98.816ms。
4.制作与调试
(1)在用户板上按图1.9所示的电路原理图安装元器件,元器件清单见表1.5。(40分)
(2)检查无误后接通电源,观察LED显示情况。 (10分)
(3)分析程序中是哪一条指令使LED的状态发生变化(闪光)的。 (10分)
(4)画出流程图。 (20分)
(5)计算延时时间并编写一个延时12ms的程序。 (20分)
5.成绩评定
项目训练1 设计一只会闪光的灯
1.目的要求
(1)掌握单片机最小系统硬件电路组成。
(2)掌握硬件电路设计方法。
2.任务目标
用面包板、元器件搭建一个单片机最小系统,控制一只发光管,使发光二极管可以亮、灭,延时时间自己设定,I/O口也自己设定。
3.工具器材
直流稳压电源、面包板、跳线、元器件等。
4.实训环节
(1)用面包板组装最小系统。 (40分)
(2)在计算机中输入程序并调试,记录调试中存在的问题。 (20分)
(3)使用下载软件将程序文件传送到用户板中,观察效果。 (20分)
(4)写出操作步骤、设计流程。 (20分)
5.成绩评定