1.5 单片机最小系统
搭建一个单片机最小系统,是大多数初学者亲自动手来感受单片机的第一步。在这个环节中,可以对单片机有更加深入地认识。
1.5.1 单片机最小系统
单片机的最小系统是由组成单片机系统必需的一些元件构成的,即无论你要完成什么任务,这些东西都是必须的。比如,一个应用系统不能没有单片机芯片,不能没有电源,不能没有产生时钟的晶体振荡器,一般还需要能使单片机复位的电路等。
下面就根据图1-14所示,给单出片机最小系统的连接图。
现在来实际的搭建一个最小系统的电路图。首先可以找一块面板,一些细导线,在面板上进行线路连接。连接的时候,最好先在放置单片机芯片的位置连接一个40引脚的插座,便于以后单片机芯片的拔插。如果有单片机的开发系统,可以利用开发系统中提供的单片机资源,就没必要连接这样的最小系统了。
● 电源:40引脚VCC接+5V电源,20引脚VSS接地。
● 振荡电路:买来晶体振荡器、电容,按图1-14接在单片机芯片的18、19脚上。
● 复位引脚:按图1-14中画法连好。
● 引脚:引脚接+5V电源。
连接好这个最小系统后,就可在这个最小系统的基础上扩展功能。
图1-14 单片机的最小系统连接图
1.5.2 彩灯控制器的设计
在商店和家庭中,经常使用彩色的小灯来进行装饰和烘托气氛。通过简单的控制系统,可以使彩灯按照特定的规律进行闪烁。下面便介绍其中一种控制方法。
1.彩灯控制器硬件设计
最小系统最简单的应用,就是在口线上接彩灯。它简单易学,在实验室就能做,所有实验系统都有此实验。下面讨论的设计过程,最小系统是固定的,功能可一部分一部分地扩展。对于彩灯控制器,只要在口线上加线驱动器就行。
这些小的实验设计可用89C51或89C2051。其内部自带闪速存储器,可反复擦写。下面是用89C51设计的原理图,如图1-15所示。
图1-15 89C51彩灯控制器电路图
注意:31脚通过一个电阻接高电平,复位电路和时钟电路不变。
2.彩灯控制器软件设计
彩灯控制软件的作用是使小灯闪烁和色彩按照一定的时序进行,因此,程序设计也主要考虑这方面的问题。
1)延时程序
设计软件之前,要考虑数据的编码和硬件的反应时间与人眼的视觉暂留时间。指示灯的闪动,即一亮一暗的延时,应在0.5s以上。一般定1s,不然人的眼睛感觉不出亮暗变化。若延时太短,对人的感觉是指示灯全亮或全暗,这一点要特别注意。
编程时两次送数之间要延时,延时程序一般用循环程序编写(也可用定时器)。延时程序为:
DEL: MOV R7, #0FFH DEL1: MOV R6, #0FFH DEL2: DJNZ R6, DEL2 DJNZ R7, DEL1 RET
此程序为二重循环,第一循环体为“DEL2: DJNZ R6, DEL2”,第一循环体完后再进入第二循环体DJNZ R7, DEL1,如此类推,可编多重循环程序。
2)数据的编码
从原理图上可以知道,P1口线为低电平时指示灯亮,P1口线为高电平时指示灯不亮。在编程时用字节操作法,设定指示灯亮的对应口线为低电平,指示灯不亮的对应口线为高电平,把这些亮暗的情况先用十六进制编码。例如,要P1.0亮,其他的为暗,编码时暗的口线为“1”,亮的口线为“0”,如下所示:
这种情况编码的十六进制值为FEH,后面带H表示此值为十六进制值。如要P1.7亮,其他为暗时,如下所示:
其十六进制编码为7FH。要两边亮,中间暗时,如下所示:
其十六进制编码值为7EH,如此类推,可编各种情况的码值。例如,依次点亮的码值为FEH、FDH、FBH、F7H、EFH、DFH、BFH和7FH。两边的灯依次向中间点亮的编码为7EH、BDH、DBH和E7H。
3)编程
掌握以上的基本知识后,可编写下面的彩灯控制器程序,程序的功能是使接于P1口的8个指示灯顺次点亮,反复循环。
ORG 0000H ;指定下面所编的程序固化到ROM中的起始地址 LOP: MOV P1, #0FEH ;第1个指示灯亮 ACALL DEL ;调用延时子程序延时 MOV P1, #0FDH ;第2个指示灯亮 ACALL DEL MOV P1, #0FBH ;第3个指示灯亮 ACALL DEL MOV P1, #0F7H ;第4个指示灯亮 ACALL DEL MOV P1, #0EFH ;第5个指示灯亮 ACALL DEL MOV P1, #0DFH ;第6个指示灯亮 ACALL DEL MOV P1, #0BFH ;第7个指示灯亮 ACALL DEL MOV P1, #7FH ;第8个指示灯亮 ACALL DEL AJMP LOP ;反复循环 DEL:MOV R7, #0FFH ;延时子程序 DEL1:MOV R6, #0FFH DEL2:DJNZ R6, DEL2 DJNZ R7, DEL1 RET ;子程序返回
将此程序汇编后固化到2764或89C51中,彩灯应按以上编程思路变化。可以编写各种控制彩灯变化的程序,使彩灯变换花样更多,运行后更加美丽。此程序可作为以后讲解的示范程序。
下面设计一个实际应用的产品:顺序控制器。
1.5.3 顺序控制器的设计
顺序控制是工业自动控制系统中常见的一种控制方式。所谓顺序控制是指按时序或事序规定工作的自动控制方式。
该产品使用89C51, P1.0~P1.3分别通过光电隔离后,用4只三极管,驱动4只继电器工作,通过继电器可控制4台电动机工作。
设计时先作原理图如图1-16所示,然后按原理图焊接硬件(做成印制线路板最好),也可用分立拼装板。将CPU板和驱动板、继电器板、光耦板拼装好,按原理图1-16,连好线,检查无误后进行下一步。
1.硬件好坏诊断
用瞬间短路法诊断硬件好坏。用一根导线分别将P1.0、P1.1、P1.2和P1.3对地瞬间短路,继电器应动作。若不动作,则可能有两种情况和解决方法。如果所有的继电器不动作,首先应查电源的正负线是否连好,用万用表测+12V和+5V是否正常。如果个别继电器不动作,则要分别查对应的光耦、三极管和继电器。检查方法如下。
图1-16 顺序控制器
(1)先查光耦。将P1的某一口线对地瞬间短路,对应光耦的内部三极管集电极应有电压高低变化。图1-16中光耦的内部发光二极管的阴极为高电平时,发光二极管熄灭,内部三极管截止。光耦的内部三极管集电极为高电平,图1-16中光耦的内部发光二极管的阴极为低电平时,发光二极管发光,内部三极管导通,光耦的内部三极管集电极为低电平。若三极管没有高低电平变化,说明光耦是坏的,换光耦。反之说明光耦是好的。
(2)继续查继电器4123。当三极管集电极为低电平时,继电器得电,应吸合,若不吸合说明继电器坏,换继电器。还应查一下二极管是否击穿。一个一个元件判断检查,直到全都正常为止。还可用仿真器诊断硬件好坏。也可用固化器,固化程序直接诊断硬件好坏。
2.软件编写
根据以上简单指令可编写程序如下所示。
ORG 0000H ;指定下面所编的程序固化到ROM中的起始地址 MAIN: MOV P1, #0FEH ;第1个指示灯亮 ACALL DEL ';调用延时子程序 MOV P1, # 0FDH ;第2个指示灯亮 ACALL DEL ;调用延时子程序 MOV P1, #0FBH ;第3个指示灯亮 ACALL DEL ;调用延时子程序 MOV P1, #0F7H ;第4个指示灯亮 ACALL DEL ;调用延时子程序 AJMP MAIN ;循环上面的动作 DEL: MOV R4, #0FFH ;延时子程序 DEL1: MOV R5, #0FFH DEL2: DJNZ R5, DEL2 DJNZ R4, DEL1 RET ;子程序返回
将以上程序汇编后,固化到89C51中,插入板中就可运行。有时会出现继电器乱跳,说明有干扰,还要进行软件、硬件抗干扰汇编。