理论教育 单片机流水灯安装与调试

单片机流水灯安装与调试

时间:2023-11-08 理论教育 版权反馈
【摘要】:任务目标知识目标:1.理解流水灯控制工作原理及控制方法。图2-12 流水灯电路4.电路安装五、联机调试1)将编写程序输入Keil中,进行程序检查,编译及下载。子程序结构使程序的存储空间大大缩小,并为调试程序提供了方便。调用指令在主程序中使用,返回指令是子程序结束指令,在子程序中使用。

单片机流水灯安装与调试

任务引入

我们已经理解单片机控制LED灯的亮(灭),还有LED常亮,不停地有规律地闪烁。在一些高楼大厦、广告灯箱、智能设备的自检等中,常有若干个发光二极管像流水式地亮灭,来实现美妙的视觉效果。它们是如何控制的呢?我们在此共同实现吧!

任务目标

知识目标:1.理解流水灯控制工作原理及控制方法。

2.进一步熟悉掌握发光二极管工作原理和检测方法。

3.理解移位指令控制书写形式。

4.能独立编写单片机控制流水灯的流程图和程序。

技能目标:1.能使用相关仪表检测应用元器件的性能。

2.掌握各电器元件的焊接方法。

3.能编写单灯亮、灭的程序。

4.会调试单片机。

情感目标:1.在制作任务过程中养成严谨的工作态度。

2.在任务实施过程中加强沟通,团队合作。

任务描述

1.利用开发板,绘制流水灯控制流程图,设计流水灯控制程序。

2.对流水灯控制电路相关元器件进行检测和安装,并完成联机调试,如图2-10所示为流水灯显示过程。

978-7-111-46712-0-Chapter02-32.jpg

图2-10 流水灯显示过程

978-7-111-46712-0-Chapter02-33.jpg

图2-11 程序流程图

一、任务分析

要实现单片机控制8个LED的流水灯闪烁,实际控制过程是LED1灯亮→延时→LED2灯亮→延时→LED3灯亮→延时→LED4灯亮→延时→LED5灯亮→延时→LED6灯亮→延时→LED7灯亮→延时→LED8灯亮,周而复始的过程。此时需要单片机中P2口对外部输出控制。

二、画程序流程图

根据任务画出程序流程图,如图2-11所示。

三、编写程序

根据流程图和相关指令编写程序。

978-7-111-46712-0-Chapter02-34.jpg

任务实施

978-7-111-46712-0-Chapter02-35.jpg

四、硬件制作

1.器材准备

8个LED流水灯控制电路,所需硬件包含有:基本电路、限流电阻排、8个LED灯。

1)元器件表如表2-5所示。

2-5 元器件表

978-7-111-46712-0-Chapter02-36.jpg

2)流水灯电路实物图如图2-12所示。

2.工具准备

安装基本电路的焊接工具有:电烙铁、镊子、焊锡、松香等,如图1-58所示。

3.制作要求

(1)按元器件表清点所需安装元器件

(2)检测所有元器件的特性、好坏

(3)焊接要求

1)焊接元器件整体美观、分布均匀、焊接过程先焊接大件,再焊接小件。

2)焊接过程中严格按照电路施工,注重电源的正负极。

3)要求焊接的焊点光滑、饱满、无毛刺,导电性能良好。

4)焊接整体应居中部以底座分布,为以后的电路焊接调试预留布置地方。

978-7-111-46712-0-Chapter02-37.jpg

图2-12 流水灯电路

4.电路安装

五、联机调试

1)将编写程序输入Keil中,进行程序检查,编译及下载。

2)将hex文件通过双龙下载器烧入单片机并调试。

知识链接

一、流水灯控制原理

以P2口为例,8个LED与单片机的连接如图2-13所示,要使D1灯亮,P2.0必然输出低电平信号及逻辑0信号,其余不亮的输出高电平信号及逻辑1信号。

978-7-111-46712-0-Chapter02-38.jpg

图2-13 8个LED与单片机的连接图

根据流水灯显示要求,单片机P2口应输出的数据对应灯亮关系,如表2-6所示。

2-6 单片机P2口输出数据对应灯亮关系

978-7-111-46712-0-Chapter02-39.jpg

二、相关指令学习

1.累加器清零指令CLR A

指令功能:执行该指令后,对特殊寄存器A中的内容进行清除,相当于A的内容为00H。

978-7-111-46712-0-Chapter02-40.jpg

2.累加器按位取反指令CPL A

指令功能:执行该指令后,对特殊寄存器A中的内容进行按位取反,其中某位是0,执行该指令后是1;相反是1,执行后为0。注意:按位取反是指的累加器以二进制方法进行。

978-7-111-46712-0-Chapter02-41.jpg

3.移位指令

(1)循环左移指令RL

指令功能:执行该指令一次后,对累加器A中的内容进行按位依次左移一位,最高位移到最低位,最右边的第一位移到倒数第二位,依次移动。注意:按位移动是指的累加器以二进制方法进行,如图2-14所示。

978-7-111-46712-0-Chapter02-42.jpg

978-7-111-46712-0-Chapter02-43.jpg

图2-14 RL指令示意图

(2)循环右移指令RR(www.daowen.com)

指令功能:执行该指令一次后,对累加器A中的内容进行按位依次右移一位,最低位移到最高位,最左边的第一位移到左边第二位,依次移动,如图2-15所示。

978-7-111-46712-0-Chapter02-44.jpg

978-7-111-46712-0-Chapter02-45.jpg

图2-15 RR指令示意图

(3)循环左移指令RLC

指令功能:执行该指令一次后,对累加器A中的内容进行按位依次左移一位,最高位移到Cy,Cy内容移到最低位,最右边的第一位移到倒数第二位,依次移动。Cy是程序状态字PSW中的最高位,是进位标志位。在进行加减运算时,如果操作数结果使A中最高位D7有进位或借位时,则Cy=1;否则Cy=0,如图2-16所示。

978-7-111-46712-0-Chapter02-46.jpg

978-7-111-46712-0-Chapter02-47.jpg

图2-16 RLC指令示意图

(4)循环右移指令RRC

指令功能:执行该指令一次后,对累加器A中的内容进行按位依次右移一位,最低位移到Cy,Cy内容移到A最高位,左边的位依次向右移到一位,如图2-17所示。

978-7-111-46712-0-Chapter02-48.jpg

978-7-111-46712-0-Chapter02-49.jpg

图2-17 RRC指令示意图

注意:移位指令操作对象只能在累加器A中进行,不能在其他寄存器和地址中进行。

4.子程序调用和返回指令

MCS-51汇编语言程序在结构上有主程序和子程序之分,主程序是程序的主体,体现完整的工作流程,子程序完成某一具体和需要重复进行的工作(如延时程序、显示程序),主程序在执行时会多次重复调用子程序。子程序结构使程序的存储空间大大缩小,并为调试程序提供了方便。

子程序是一段完整的小程序,在主程序需要时被调用,子程序执行完后还应返回主程序继续执行。为了实现这一过程,必须有子程序调用指令和子程序返回指令。调用指令在主程序中使用,返回指令是子程序结束指令,在子程序中使用。由此可见,子程序调用指令和返回指令必须成对出现,缺一不可。

在一个程序中,往往子程序中还会调用子程序,这称为程序嵌套。程序嵌套中为保证正确调用和返回,必须有几个调用指令,就应有几个返回指令与之对应,如图2-18所示。

978-7-111-46712-0-Chapter02-50.jpg

图2-18 子程序调用示意图

(1)长调用指令LCALL

指令功能:执行该指令后,无条件转移LCALL调用指令后跟的地址去执行子程序,这里相当于LJMP功能,但不完全相同。转移的地址范围64KB任意地方,也就是子程序可放在64KB任意地方,主程序都可以调得到。

指令格式:LCALL addr16; PC←addr16

978-7-111-46712-0-Chapter02-51.jpg

注意:LJMP无条件转移指令与LCALL长调用指令有区别。LJMP指令是从程序一处跳过某些程序执行另一处程序,可以向前或向后转移,不需要返回。LCALL指令从主程序某一处到另一处子程序,转移前利用专门寄存器记住当前地址,便于程序返回,在执行子程序后返回当前转移的主程序的指令下一条继续执行。

(2)短调用指令ACALL

指令功能:执行该指令后,无条件转移ACALL调用指令后跟的地址去执行子程序,执行意义与长调用相似。但只可调用2KB范围内的子程序。

978-7-111-46712-0-Chapter02-52.jpg

(3)返回指令RET指令功能:调用指令与返回指令是成对出现的,在主程序需要调用子程序时执行

LCALL指令,进入子程序后并执行完子程序,应使程序返回主程序继续执行下面程序,必

须在子程序后放置一条返回指令RET。

978-7-111-46712-0-Chapter02-53.jpg

978-7-111-46712-0-Chapter02-54.jpg

任务拓展

根据所学内容完成调试花样灯显示循环:

1)D1D2亮→D3D4亮→D5D6亮→D7D8亮→D1D2亮→……

2)D1D2D3D4亮→D5D6D7D8亮→D1D2D3D4亮→……

3)D1D3D5D7亮→D2D4D6D8亮→D1D3D5D7亮→……

评一评

978-7-111-46712-0-Chapter02-55.jpg

项目2 《流水灯安装及调试评价表

978-7-111-46712-0-Chapter02-56.jpg

(续)

978-7-111-46712-0-Chapter02-57.jpg

思考与练习

选择题

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工作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈