任务引入
我们已经理解单片机控制LED灯的亮(灭),还有LED常亮,不停地有规律地闪烁。在一些高楼大厦、广告灯箱、智能设备的自检等中,常有若干个发光二极管像流水式地亮灭,来实现美妙的视觉效果。它们是如何控制的呢?我们在此共同实现吧!
任务目标
知识目标:1.理解流水灯控制工作原理及控制方法。
2.进一步熟悉掌握发光二极管工作原理和检测方法。
3.理解移位指令控制书写形式。
4.能独立编写单片机控制流水灯的流程图和程序。
技能目标:1.能使用相关仪表检测应用元器件的性能。
2.掌握各电器元件的焊接方法。
3.能编写单灯亮、灭的程序。
4.会调试单片机。
情感目标:1.在制作任务过程中养成严谨的工作态度。
2.在任务实施过程中加强沟通,团队合作。
任务描述
1.利用开发板,绘制流水灯控制流程图,设计流水灯控制程序。
2.对流水灯控制电路相关元器件进行检测和安装,并完成联机调试,如图2-10所示为流水灯显示过程。
图2-10 流水灯显示过程
图2-11 程序流程图
一、任务分析
要实现单片机控制8个LED的流水灯闪烁,实际控制过程是LED1灯亮→延时→LED2灯亮→延时→LED3灯亮→延时→LED4灯亮→延时→LED5灯亮→延时→LED6灯亮→延时→LED7灯亮→延时→LED8灯亮,周而复始的过程。此时需要单片机中P2口对外部输出控制。
二、画程序流程图
根据任务画出程序流程图,如图2-11所示。
三、编写程序
根据流程图和相关指令编写程序。
任务实施
四、硬件制作
1.器材准备
8个LED流水灯控制电路,所需硬件包含有:基本电路、限流电阻排、8个LED灯。
1)元器件表如表2-5所示。
表2-5 元器件表
2)流水灯电路实物图如图2-12所示。
2.工具准备
安装基本电路的焊接工具有:电烙铁、镊子、焊锡、松香等,如图1-58所示。
3.制作要求
(1)按元器件表清点所需安装元器件
(2)检测所有元器件的特性、好坏
(3)焊接要求
1)焊接元器件整体美观、分布均匀、焊接过程先焊接大件,再焊接小件。
2)焊接过程中严格按照电路施工,注重电源的正负极。
3)要求焊接的焊点光滑、饱满、无毛刺,导电性能良好。
4)焊接整体应居中部以底座分布,为以后的电路焊接调试预留布置地方。
图2-12 流水灯电路
4.电路安装
五、联机调试
1)将编写程序输入Keil中,进行程序检查,编译及下载。
2)将hex文件通过双龙下载器烧入单片机并调试。
知识链接
一、流水灯控制原理
以P2口为例,8个LED与单片机的连接如图2-13所示,要使D1灯亮,P2.0必然输出低电平信号及逻辑0信号,其余不亮的输出高电平信号及逻辑1信号。
图2-13 8个LED与单片机的连接图
根据流水灯显示要求,单片机P2口应输出的数据对应灯亮关系,如表2-6所示。
表2-6 单片机P2口输出数据对应灯亮关系
二、相关指令学习
1.累加器清零指令CLR A
指令功能:执行该指令后,对特殊寄存器A中的内容进行清除,相当于A的内容为00H。
2.累加器按位取反指令CPL A
指令功能:执行该指令后,对特殊寄存器A中的内容进行按位取反,其中某位是0,执行该指令后是1;相反是1,执行后为0。注意:按位取反是指的累加器以二进制方法进行。
3.移位指令
(1)循环左移指令RL
指令功能:执行该指令一次后,对累加器A中的内容进行按位依次左移一位,最高位移到最低位,最右边的第一位移到倒数第二位,依次移动。注意:按位移动是指的累加器以二进制方法进行,如图2-14所示。
图2-14 RL指令示意图
(2)循环右移指令RR(www.daowen.com)
指令功能:执行该指令一次后,对累加器A中的内容进行按位依次右移一位,最低位移到最高位,最左边的第一位移到左边第二位,依次移动,如图2-15所示。
图2-15 RR指令示意图
(3)循环左移指令RLC
指令功能:执行该指令一次后,对累加器A中的内容进行按位依次左移一位,最高位移到Cy,Cy内容移到最低位,最右边的第一位移到倒数第二位,依次移动。Cy是程序状态字PSW中的最高位,是进位标志位。在进行加减运算时,如果操作数结果使A中最高位D7有进位或借位时,则Cy=1;否则Cy=0,如图2-16所示。
图2-16 RLC指令示意图
(4)循环右移指令RRC
指令功能:执行该指令一次后,对累加器A中的内容进行按位依次右移一位,最低位移到Cy,Cy内容移到A最高位,左边的位依次向右移到一位,如图2-17所示。
图2-17 RRC指令示意图
注意:移位指令操作对象只能在累加器A中进行,不能在其他寄存器和地址中进行。
4.子程序调用和返回指令
MCS-51汇编语言程序在结构上有主程序和子程序之分,主程序是程序的主体,体现完整的工作流程,子程序完成某一具体和需要重复进行的工作(如延时程序、显示程序),主程序在执行时会多次重复调用子程序。子程序结构使程序的存储空间大大缩小,并为调试程序提供了方便。
子程序是一段完整的小程序,在主程序需要时被调用,子程序执行完后还应返回主程序继续执行。为了实现这一过程,必须有子程序调用指令和子程序返回指令。调用指令在主程序中使用,返回指令是子程序结束指令,在子程序中使用。由此可见,子程序调用指令和返回指令必须成对出现,缺一不可。
在一个程序中,往往子程序中还会调用子程序,这称为程序嵌套。程序嵌套中为保证正确调用和返回,必须有几个调用指令,就应有几个返回指令与之对应,如图2-18所示。
图2-18 子程序调用示意图
(1)长调用指令LCALL
指令功能:执行该指令后,无条件转移LCALL调用指令后跟的地址去执行子程序,这里相当于LJMP功能,但不完全相同。转移的地址范围64KB任意地方,也就是子程序可放在64KB任意地方,主程序都可以调得到。
指令格式:LCALL addr16; PC←addr16
注意:LJMP无条件转移指令与LCALL长调用指令有区别。LJMP指令是从程序一处跳过某些程序执行另一处程序,可以向前或向后转移,不需要返回。LCALL指令从主程序某一处到另一处子程序,转移前利用专门寄存器记住当前地址,便于程序返回,在执行子程序后返回当前转移的主程序的指令下一条继续执行。
(2)短调用指令ACALL
指令功能:执行该指令后,无条件转移ACALL调用指令后跟的地址去执行子程序,执行意义与长调用相似。但只可调用2KB范围内的子程序。
(3)返回指令RET指令功能:调用指令与返回指令是成对出现的,在主程序需要调用子程序时执行
LCALL指令,进入子程序后并执行完子程序,应使程序返回主程序继续执行下面程序,必
须在子程序后放置一条返回指令RET。
任务拓展
根据所学内容完成调试花样灯显示循环:
1)D1D2亮→D3D4亮→D5D6亮→D7D8亮→D1D2亮→……
2)D1D2D3D4亮→D5D6D7D8亮→D1D2D3D4亮→……
3)D1D3D5D7亮→D2D4D6D8亮→D1D3D5D7亮→……
评一评
项目2 《流水灯安装及调试》评价表
(续)
思考与练习
一、选择题
1.二进制数110010010对应的十六进制数为( )。
A.192H B.C90H C.1A2H D.CA0H
2.二进制数110110110对应的十六进制数为( )。
A.1D3H B.1B6H C.DB0H D.666H
3.LJMP跳转空间最大可达到( )。
A.2KBB.265BC.128BD.64KB
4.AT8952单片机中,唯一一个用户不能直接使用的寄存器是( )。
A.PSWB.DPTRC.PCD.B
5.执行如下三条指令后,30H单元的内容是( )。
MOV R1,#30H
MOV 40H,#OEH
MOV @R1,40H
A.40HB.30HC.00HD.70H
二、填空题
1.以助记符形式表示的单片机指令就是它的 语言。
2.十进制数21转换成二进制数 ,转换成十六进制数 。
3.十六进制数36H转化成二进制数 ,转换成十进制数 。
4.SET指令为置 指令,CLR指令为置 指令。
5.LJMP指令的转移地址范围 到 。AJMP指令的转移地址范围 到
。SJMP指令的转移地址范围 到 。
6.A=04H时,当执行一次PLA后,累加器的值为 。A=16H时,当执行一次RR后,累加器值为 。
三、编程题
1.单片机AT89S52的P1口接8个LED,让这8个LED实现闪烁功能,即8个LED亮一段时间,灭一段时间,如此循环。
2.单片机AT89S52的P1口接8个LED,让这8个LED先交互闪烁3次,然后双灯左移之后再双灯右移,如此循环,开成流水灯效果,延时0.5s。
3.利用单片机任意两口,实现8路按键输入信号显示到另一口所接的LED上。例如:P2口所接的第一按键按下,P3口对应的第一个LED工作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。