用AT89C2051单片机制作简易流水灯

一、所需元件及其作用
1.实验面包板一块
面包板上下两半对称。其插孔间距为2.5mm。紧靠中缝的两排孔距7.5mm,正好能将7.5mm双列直插式集成电路,包括AT89C2051单片机插入。紧靠中缝纵向每5个孔内部已用金属双簧片连通,只要插入导线横向接通两点,就能构成任意电路。
面包板最上边的两排水平孔内部已用金属双簧片横向连通,一般作电源正极;最下边的两排水平孔内部也用金属双簧片横向连通,一般作电源负极。
还要注意,最上边的左边第1组一直到第5组5组水平孔内部亦连通,右边第1组一直到第5组5组水平孔内部亦连通,但中间断开,需要时应在外部插线连接。最下边的10组水平孔亦如此。
注意面包实验板不允许插入过粗的线头,否则将损坏实验板内部的金属双簧片弹性,日后易造成接触不良。面包板允许插入线径最好不超过0.7mm。8芯因特网电缆的单股线径0.5mm,最适合插入面包板,也最容易寻求。制作时可用电工专用剥线钳去除因特网单股线的线皮。
2.发光二极管8个、限流电阻8个
LED由砷化镓(CaAs)等半导体材料制成,红,绿色LED正向压降约1.6-2V,白光及蓝光LED约2.8-3.2V;单片机系统工作电源通常为5V,所以一般要与LED串联一个限流电阻。
已知电源电压UCC,LED工作电流I,可取2。4mA。正向压降UIED,估算限流电阻为:
3.双列直插20线单片机一片
8051单片机有4个8位I/O口,每个I/0口可以单独做输入或输出。再加上电源地、复位、晶体振荡等引线,共40或44引线。在简单应用场合用不了那么多I/O口,AT89C2051只留下一半I/O口,内部结构和8051相同,如上图所示,2051单片机Pl、P3口结构见下图。
单片机输出l,就是使MOS电子开关漏极D与源极S断开;输出0,就是使MOS电子开关漏极D与源极S接合。
2051单片机I/O口内部与地之间的电子开关T断开时,可以接收外部输入高、低电平信号,T接合时口线被短路到地,就不能接收外部输入高电平信号。2051单片机I/O口输出1之后,内部与地之间的电子开关T断开,就能作输入。
把这样的即可作输出口、又可有条件地作输入的I/O口叫做准双向I/O口。要明确51单片机I/O口只有在1状态下才能作输入。复位后51单片机I/O口处于1状态。复位后51单片机I/O口既能作输入,又能作输出。
4.晶体
单片机中类似于人的心脏的东西叫做时钟振荡器,单片机用晶体振荡使时钟更稳定准确。设计制作单片机电路时,只要把晶振的两条线接在单片机芯片的规定两脚之间,在直流电源作用下就会产生连续电压脉冲,形成单片机一步步执行指令的时钟信号。
晶振决定计算机主频。51单片机晶振频率范围为0—33MHz。一般选6MHz或12MHz晶振。
晶振相当于RLC等效电路。将6MHz晶振的两个引线连接在AT89C2051第4,5脚,与芯片内部的反相器构成正反馈,形成6MHz振荡,为单片机工作提供时钟信号。
5.复位电路
上电前1μ电容无电荷。故上电后Reset脚相当与+5V电源连接而短暂地获得高电平电压。随着电源Vcc经lOk电阻给1μ电容充电,Reset脚电压逐渐变低,完成复位,上电约4ms后开始执行程序。
复位按钮Sl按下时,lμ电容经lk电阻放电。复位按钮Reset按下期间,Reset脚获得101 (1+10)×5V一4.55V高电平电压,松开Sl后电源Vcc经lOk电阻给1μ电容充电,Reset脚逐渐变低,约3ms后又开始执行程序。
系统出现故障时,首先检查有无电源电压,其次检查Reset脚电压是否正常。51单片机正常工作时Reset脚电压应为低电平。若查出Reset脚电压为高电平,则应检查外接复位电路。
二、安装过程
新品LED较长的一脚为正极。
从侧面看,通常LED内部尺寸较小的一条腿为正极。LED两个引线应剪短到10~12mm,引脚适当掰宽,下图下方有2只LED,然后骑插到面包板中缝上下,注意正极下。
搭接复位电路时,首先插入电解电容。电解电容正极朝上,负极朝下,以便插入一小段明线将其正极与单片机第20脚连接,再插入一小段明线将其负极与单片机第1脚连接。按钮开关一极需要插入一段明线与电容正极连接,电阻按图插入即可,然后用因特网线将单片机第12脚(P1.0)与右边第1个LED负极连接,见图中白线。再依次将Pl口线与其他LED负极一一连接。
将下横条作为电源正极,将2k4电阻一一连接在LED正极与电源正极之间。
最后通过开关右极将单片机第20脚与下横条连接,整个电路即搭接完毕。
三、电路图电路
如下图所示。常用发光二极管有φ3mm和φ5mm。选φ3mm发光二极管制作霓虹灯,LED工作电流要求达到I=1.25mA.已知电源电压UCC=5V,LED正向压降ULED=2V,忽略电子开关电压降落,限流电阻阻值为。
LED电流通路:Ucc一2k4电阻→LED→单片机内MOS电子开关→CND。
四、程序汇编及固化
用伟福6000编辑器把程序汇编为机器码,然后用编程器或ISP功能把机器码程序固化到AT89C2051单片机内部的FLASH程序存储器中。初学者可以找人借用,也可请人固化程序。
固化程序时可分两步,第一步先固化两条指令构成的程序,使左边4只LED常亮,右边4只LED常灭。第二步固化流水灯程序。
①固定亮灭控制程序MOVPl,#OOO01111B:
OOO01111B输出到Pl口,使霓虹灯左边4位亮,右边4位暗HERE:SJMPHERE;原地踏步,相当停止②简易流水霓虹灯控制程序MOVA,#OOO01111B;原始状态:使霓虹灯左边4位亮,右边4位暗START:MOVPl,A;输出,
MOVR6b#100延时时间常数
LOOP:MOVR7,#200;延时时间常数
HERE:DJNZR7.HERE;R7减1,若结果非O则再次执行本指令,若是0则顺序执行下条指令
DJNZR6,LOOP;R6减1,若结果非O则执行标号LOOP的指令,若是0则顺序执行下条指令
RLA:亮暗逐位变化
SJMPSTART;循环起来,产生霓虹灯效果
③用户自编闪灯花样不同的程序Pl口某位输出O时,内部对地的电子开关接通,LED流过电流而发光,这叫做低电平驱动。低电平驱动方式应用很广泛。Pl口某位输出1时,内部对地的电子开关断开,LED无电流不亮。
把使霓虹灯左边4位亮,右边4位暗的原始状态数据OOO01111B送到累加器A,目的是利用累加器A的循环移位功能实现亮灭转换,达到霓虹灯效果。
累加器A循环移位指令RLA功能如下图所示,从最低位开始的7位依次向高位移动1位,原最高位数移到最低位。
执行本指令前,高4位亮,低4位灭。第1次执行本指令后,高3位亮,最低位亮,其余4位灭。第2次执行本指令后,高2位亮,低2位亮,其余4位灭。亮者好似高山流水,灭者犹如峡谷阴森。只要时间掌握恰当,就好像河水在波浪起伏中流动。
延迟时间由两层循环实现。
工作寄存器R7减l,若结果非0则转移指令DJNZ Rn,rel(n=0~7)是一个复合指令。执行它时先减l再判断结果是否为0。若非0则转移,若为0则顺序执行。
事先往R7送200,那么HERE:
DJNZ R7,HERE就会反复执行200次,总共消耗200个指令周期。
该指令系双机器周期指令。晶振周期6MHz时机器周期2μs(微秒),指令周期4μs,200个指令周期即是800μs=0.8ms,外层R6循环100次,延迟时间粗略估计为100×0.8ms=80ms。实际DJNZ R6,LOOP等指令也要消耗时间,故延迟时间比80ms略大。
五、实验演示
实验时还需要一对双夹线,即两头带夹子的软线。电工电子技术用的小夹子俗称“鱼嘴夹”,可在电器店购到,也可直接购买双夹线。
将一根明线插到单片机第10脚下方,作为电源负极输入;将另一根明线插到下横条,作为电源正极输入,用两个双夹线即能方便地把电源接到面包板上,使单片机工作。
本设计属于低电平驱动,所以复位期间LED显示会全部熄灭。手压复位键时间不限,可以充分观察复位期间口线输出的高电平。
评论