闪烁LED灯的设计单片机课程设计Word文档格式.docx
《闪烁LED灯的设计单片机课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《闪烁LED灯的设计单片机课程设计Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
![闪烁LED灯的设计单片机课程设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/4a3e76f0-9204-4d2e-b6f5-4a7778a8bd03/4a3e76f0-9204-4d2e-b6f5-4a7778a8bd031.gif)
图2主程序流程图
3、闪烁控制程序
闪烁控制程序用来控制P1口的发光管发光变化方式,其中:
执行功能程序0(FUN0)时的P1口输出值变化为11111110→延时→11111101→延时→11111011→延时→11110111→延时→11101111→延时→11011111→延时→10111111→延时→01111111→延时→结束转主程序。
执行功能程序1(FUN1)时的P1口输出变化为11111110→延时→11111100→延时→11111000→延时→11110000→延时→11100000→延时→11000000→延时→10000000→延时→00000000→延时→结束转主程序。
执行功能程序2(FUN2)时的P1口输出变化为10101010→延时→01010101→延时→结束转主程序。
4、延时子程序
延时子程序有10ms和0.5s两个,用作键扫描消抖及发光管闪烁延时。
发光管闪烁的快慢可由R4寄存器内的初值进行改变。
本控制器在使用中,如果要改变闪烁的方式,可按下相应的功能按键。
当一个完整的闪烁循环结束后,即可转入新的闪烁方式。
由于键扫描是在闪烁循环结束时进行,因此,功能开关按下的时间应较长才能被读入。
改进的方法是把DL05S延时子程序用键扫描子程序来代替,这样,只要按下按键即可被键扫描程序读入。
三、汇编语言
以下是闪烁LED小灯控制器完整的汇编程序清单:
小灯控制程序
中断入口程序
ORG0000H;
程序执行开始地址
LJMPSTART;
跳到START执行
ORG0003H;
外中断0中断入口地址
RETI;
中断返回(不开中断)
ORG000BH;
定时器T0中断入口地址
ORG0013H;
外中断1中断入口地址
ORG001BH;
定时器T1中断入口地址
ORG0023H;
串行口中断入口地址
初始化程序
CLEAR:
MOV20H,#00H;
20H单元内存清0(闪烁标志清0)
SETB00H;
20H.0位置1(上电时自动执行闪烁功能1)
RET;
子程序返回
主程序
START:
ACALLCLEAR;
调用初始化子程序
MAIN:
LCALLKEYWORK;
调用键扫描子程序
JB00H,FUN0;
20H.0位为1时执行FUN0
JB01H,FUN1;
20H.1位为1时执行FUN1
JB02H,FUN2;
20H.2位为1时执行FUN2
JB03H,MAIN;
备用
AJMPMAIN;
返回主程序MAIN
功能程序
第1种闪烁功能程序
FUN0:
MOVA,#0FEH;
累加器赋初值
FUN00:
MOVP1,A;
累加器值送至P1口
LCALLDL05S;
延时
JNBACC.7,MAIN;
累加器最高位为0时转MAIN
RLA;
累加器A中数据循环左移1位
AJMPFUN00;
转FUN00循环
第2种闪烁功能程序
FUN1:
FUN11:
JZMAIN;
A为0转MAIN
ANLA,P1;
A同P1口值相“与”
AJMPFUN11;
转FUN11循环
第3种闪烁功能程序
FUN2:
MOVA,#0AAH;
CPLA;
A中各位取“反”
转MAIN
扫描程序
KEYWORK:
MOVP3,#0FFH;
置P3口为输入状态
JNBP3.0,KEY0;
读P3.0口,若为0转KEY0
JNBP3.1,KEY1;
读P3.1口,若为0转KEY1
JNBP3.2,KEY2;
读P3.2口,若为0转KEY2
JNBP3.3,KEY3;
读P3.3口,若为0转KEY3
闪烁功能0键处理程序
KEY0:
LCALLDL10MS;
延时10ms消抖
JBP3.0,OUT0;
P3.0为1,子程序返回(干扰)
20H.0位置1(执行闪烁功能1标志)
CLR01H;
20H.1位清0
CLR02H;
20H.2清0
CLR03H;
20H.3位清0
OUT0:
闪烁功能1键处理程序
KEY1:
LCALLDL10MS
JBP3.1,OUT1
SETB01H;
20H.1位置1(执行闪烁功能2标志)
CLR00H
CLR02H
CLR03H
OUT1:
RET
闪烁功能2键处理程序
KEY2:
JBP3.2,OUT2
SETB02H;
20H.2位置1(执行闪烁功能3标志)
CLR01H
OUT2:
闪烁功能(备用)键处理程序
KEY3:
JBP3.3,OUT3;
20H.3位置1(执行备用闪烁功能标志)
SETB03H
OUT3:
延时程序
延时子程序,执行一次时间为513μs
DL512:
MOVR2,#0FFH
LOOP1:
DJNZR2,LOOP1
10ms延时子程序(调用20次0.5ms延时子程序)
DL10MS:
MOVR3,#14H
LOOP2:
LCALLDL512
DLNZR3,LOOP2
延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为25ms×
15)
DL05S:
MOVR4,#0FH
LOOP3:
LCALLDL25MS
DLNZR4,LOOP3
25ms延时子程序,调用扫键子程序延时,可快速读出功能按键值
DL25MS:
MOVR5,#0FFH
LOOP4:
LCALLKEYWORK
DJNZR5,LOOP4
END;
程序结束
四、程序仿真调试
基于单片机的闪烁LED灯的设计,我们小组使用了keiluvision3和Proteus两种单片机开发软件进行仿真调试。
KeiluVision3是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,Proteus集成了原理图捕获、SPICE电路仿真和PCB设计,形成一个完整的电子设计系统。
1、汇编程序,建立源程序
使用KeiluVision3软件编写闪烁LED灯控制程序,调试程序
图3汇编程序
图4调试程序
2、闪烁LED电路仿真
使用Proteus进行电路仿真,利用上面已编好的源程序对设计电子电路进行虚拟模型仿真
图5电路仿真
五、设计总结
LED灯具有使用低压电源、耗能少、适用性强、稳定性高、响应时间短、对环境无污染、多色发光等的优点,LED灯广泛使用于我们的生活中,给我们带来了色彩丰富的世界。
本设计的闪烁LED灯的控制原理,广泛应用在广告彩灯控制器和舞台灯光控制器等领域,关于LED灯产品的商业效益有着不错的发展前途。
经过这次的设计,我们小组对单片机有了更进一步的了解,知道了它的内部结构的程序的运行过程,同时对汇编语言有了进一步的了解,能用它实现简单功能的单片机设计。
在本次设计中,使用到了Keil和Proteus两种单片机仿真软件,逐步深入了解这两个软件的使用,对以后关于单片机的电子设计有着