理论教育 单片机项目:LED单灯闪烁完全教程!

单片机项目:LED单灯闪烁完全教程!

时间:2023-11-08 理论教育 版权反馈
【摘要】:任务描述1.利用开发板,设计单灯闪烁程序,绘制单灯闪烁控制流程图。任务实施一、任务分析本次任务就是在已准备好的开发板上利用P2.0实现LED单灯不停闪烁,闪烁时间间隔为1s,因为在开发板上实现,所以不增加硬件电路元器件。知识拓展根据所学内容调试8个LED灯L1~L8的任意灯数的闪烁。

单片机项目:LED单灯闪烁完全教程!

任务引入

我们已经理解单片机控制LED单灯的亮(灭)了,但在生活中我们看到的一个LED不但有常亮的,还有不停地有规律地闪烁的。比如街上的广告灯、充电器指示灯、消防工作指示灯等,它们多数是用单片机控制的。它们是如何控制的呢?我们在此共同实现吧!

任务目标

知识目标:1.进一步掌握单片机编程流程和思路。

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

3.掌握单片机使LED闪烁的相关指令。

4.理解延时意义。

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

2.进一步掌握各电子元器件的焊接方法。

3.会编写单灯闪烁的流程图和汇编程序。

4.会调试单片机。

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

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

任务描述

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

2.利用开发板,能独立调试单灯闪烁程序。

任务实施

一、任务分析

本次任务就是在已准备好的开发板上利用P2.0实现LED单灯不停闪烁,闪烁时间间隔为1s,因为在开发板上实现,所以不增加硬件电路元器件。

二、画程序流程图

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

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

图2-9 程序流程图

三、编写程序

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

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

四、联机调试

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时转移。

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

例1 DJNZR4,kk1功能是执行该程序时对R4寄存器的内容进行减一,减一后再判断R4内容,如果为0了,就执行该指令紧跟的下一条指令;如果不为0,就执行该指令指向的地址即KK1为地址的程序指令。

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

例2 DJNZRn,rel指令的应用。

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

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延时程序

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

程序执行时间:T=1×1μs+((1+2×250+2)×200+2)×1μs=100603≈0.1s。

例4 1s延时程序

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

程序执行时间:T=[1×1μs+((1+2×250+2)×200+2)×1μs]×10≈1s。

知识拓展根据所学内容调试8个LED灯L1~L8的任意灯数的闪烁。

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

我要反馈