任务引入
我们已经理解单片机控制LED单灯的亮(灭)了,但在生活中我们看到的一个LED不但有常亮的,还有不停地有规律地闪烁的。比如街上的广告灯、充电器指示灯、消防工作指示灯等,它们多数是用单片机控制的。它们是如何控制的呢?我们在此共同实现吧!
任务目标
知识目标:1.进一步掌握单片机编程流程和思路。
2.进一步熟悉掌握发光二极管工作原理和检测方法。
3.掌握单片机使LED闪烁的相关指令。
4.理解延时意义。
技能目标:1.能使用相关仪表检测应用元器件的性能。
2.进一步掌握各电子元器件的焊接方法。
3.会编写单灯闪烁的流程图和汇编程序。
4.会调试单片机。
情感目标:1.在制作任务过程中养成严谨的工作态度。
2.在任务实施过程中加强沟通,团队合作。
任务描述
1.利用开发板,设计单灯闪烁程序,绘制单灯闪烁控制流程图。
2.利用开发板,能独立调试单灯闪烁程序。
任务实施
一、任务分析
本次任务就是在已准备好的开发板上利用P2.0实现LED单灯不停闪烁,闪烁时间间隔为1s,因为在开发板上实现,所以不增加硬件电路元器件。
二、画程序流程图
根据任务画程序流程图,如图2-9所示。
图2-9 程序流程图
三、编写程序
根据流程图和相关指令编写程序。
四、联机调试
1)将编写程序输入Keil中,进行程序检查,编译及下载。
2)将hex文件通过双龙下载器烧入单片机并调试。
知识链接
单片机控制LED的闪烁,实际控制过程是LED亮→LED灭→LED亮→LED灭周而复始的过程。但人们要看到亮灭的现象,必须在它们之间加一个延时过程,使亮或灭的现象在我们的眼睛里能看到并记忆下来。(www.daowen.com)
一、延时程序
在利用汇编语言编写单片机应用程序时,经常会用到延时子程序来配合主程序实现其功
能。通常延时程序有软件延时和定时器定时两种方法,其中软件延时方法占用CPU较多,
而定时器定时占用CPU极少,这里先介绍软件延时方法。单片机反复执行一段程序以达到
延时的目的,称为软件延时,大部分的延时子程序采用由MOV、NOP、DJNZ指令构成的多
重循环程序来实现,循环的基本用途之一是用嵌套循环产生时间延迟。这种延时方式是依靠
一定数量的时钟周期来计时的,所以延时依赖于晶体振荡器的振荡频率。现以12MHz晶振
的几个经典延时子程序为例,详细分析单片机延时程序。
1.指令执行时间
CPU执行一条指令所需要的时间称为指令周期,指令周期是以机器周期为单位,不同的指令所需的机器周期不一定相同,可参考MCS-51系列单片机指令速查表。例如,单周期指令是指指令周期为一个机器周期的指令。
由上分析可得:若CPU采用12MHz的晶振,执行一条单周期指令,需要1μs;执行一条双周期指令需要2μs,1个机器周期就是1μs。若要延时1s,则单片机要执行1000000个机器周期的指令。根据程序执行延时现象,下面介绍几种延时程序
2.减一条件转移指令DJNZ(条件转移类型)
指令功能:减一条件转移指令是将操作数的内容减一,而后判断操作数里的内容结果。若内容为0,执行DJNZ指令的下一条指令;若内容不为0,执行DJNZ指令中所给的地址的程序。在指令中D代表减一(DEC),J代表转移(JUMP),N代表不(NO),Z代表0(ZERO)。即为减一后内容不为0时转移。
例1 DJNZR4,kk1功能是执行该程序时对R4寄存器的内容进行减一,减一后再判断R4内容,如果为0了,就执行该指令紧跟的下一条指令;如果不为0,就执行该指令指向的地址即KK1为地址的程序指令。
例2 DJNZRn,rel指令的应用。
DJNZR5,LOOP ;2个机器周期
延时时间T=1×T机+(4×T机)×TIME
如果fosc=12MHz,则T机=1μs,上例循环一次为4个机器周期为4μs。
设TIME=50,则延时时间T=1×1μs+(4×1μs)×50=201μs。
例3 0.1s延时程序
程序执行时间:T=1×1μs+((1+2×250+2)×200+2)×1μs=100603≈0.1s。
例4 1s延时程序
程序执行时间:T=[1×1μs+((1+2×250+2)×200+2)×1μs]×10≈1s。
知识拓展根据所学内容调试8个LED灯L1~L8的任意灯数的闪烁。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。