闪烁小灯控制器.docx
- 文档编号:5316305
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:11
- 大小:166.36KB
闪烁小灯控制器.docx
《闪烁小灯控制器.docx》由会员分享,可在线阅读,更多相关《闪烁小灯控制器.docx(11页珍藏版)》请在冰点文库上搜索。
闪烁小灯控制器
设计题目:
闪烁小灯控制器
设计目的:
本设计的闪烁小灯控制器,可使小灯轮流点亮、逐点点亮、间隔点亮。
设计目标:
如果要控制交通彩灯,可在P1端口加接继电器或可控硅接口电路。
本设计可应用在广告彩灯控制器和舞台灯光控制器等领域。
任务下达时间:
2010-3-1
任务完成时间:
2010-3-12
指导教师评语:
年月日
设计成绩:
摘要:
本设计的闪烁小灯控制器,可使小灯轮流点亮、逐点点亮、间隔点亮。
如果要控制交通彩灯,可在P1端口加接继电器或可控硅接口电路。
本设计可应用在广告彩灯控制器和舞台灯光控制器等领域。
关键词:
控制器;轮流点亮;逐点点亮;间隔点亮
引言:
随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进。
本文提出了一种基于AT89C51单片机的彩灯控制方案,实现对LED彩灯的控制。
本方案以AT89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。
在主控模块上设有8个按键和5位七段码LED显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器T0实现一个基本单位时间为5ms的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。
该新型LED彩灯及其控制器是上海某公司委托开发产品,产品实际应用效果较好,亮灯模式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。
与普通LED彩灯相比,具有体积小、价格低、低能耗等优点。
1.原理系统硬件电路的设计
图1为闪烁小灯控制器的电路原理图,其中:
单片机采用AT89C2051,P1口作LED发光管输出控制用,P3.0~P3.2口为闪烁方式控制开关K1、K2、K3按键接口,P3.3口的按键作备用,限流电阻为510Ω,发光管工作电流约为10mA,采用12MHz晶振。
图1系统主要程序的设计
2.硬件软件
2.1主程序
通过扫描P3.0~P3.2口,判断是否有按键按下,然后在20H内存单元的低三位的对应位置1标志,确定应执行的闪烁功能。
当20H.0为1时,发光管轮流点亮;当20H.0为1时,发光管逐点点亮;当20H.2为1时,发光管间隔闪亮。
在主程序对20H的低3位进行位值判定后,转入相应的闪烁控制程序。
上电初始化时,对20H的最低位置1,系统进入轮流点亮方式。
主程序流程图如图2所示。
2.2键扫描子程序
因按键较少,采用直接端口扫描键开关,用软件延时消抖确认后,对20H内存单元相应的位值1,并把其余位清0.
图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.延时子程序
4.1延时子程序
有10ms和0.5ms两个,用键扫描消抖及发光管闪烁延时。
发光管闪烁的快慢可由R4寄存器内的初值进行改变。
本控制器在使用中,如果要改变闪烁的方式,可按下相应的功能按键。
当一个完整的闪烁循环结束后,即可转入新的闪烁方式。
由于键扫描是在闪烁循环结束时进行,因此,功能开关按下的时间应较长才能被读入。
改进的方法是把DL05延时子程序用键扫描子程序来替代,这样,只要按下按键即可被键扫描程序读入。
4.2汇编程序清单
以下是闪烁LED小灯控制器完整的汇编程序清单:
;************;
;小灯控制程序;
;************;
;
;************;
;中断入口程序;
;************;
;
ORG0000H;程序执行开始地址
LJMPSTART;跳至START执行
ORG0003H;外中断0中断入口地址
RETI;中断返回(不开中断)
ORG000BH;定时器T0中断入口地址
RETI;中断返回(不开中断)
ORG0013H;外中断1中断入口地址
RETI;中断返回(不开中断)
ORG001BH;定时器T1中断入口地址
RETI;中断返回(不开中断)
ORG0023H;串行口中断入口地址
RETI;中断返回(不开中断)
;
;************;
;初始化程序;
;************;
;
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:
MOVA,#0FEH;累加器赋初值
FUN11:
MOVP1,A;累加器值送至P1口
LCALLDL05S;延时
JZMAIN;A为0转MAIN
RLA;累加器A中数据循环左移1位
ANLA,P1;A同P1口值相与
AJMPFUN11;转FUN11循环
;
;第3种闪烁功能程序
FUN2:
MOVA,#0AAH;累加器赋初值
MOVP1,A;累加器值送至P1口
LCALLDL05S;延时
CPLA;A中各位取反
MOVP1,A;累加器值送至P1口
LCALLDL05S;延时
AJMPMAIN;转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
RET;子程序返回
;
;闪烁功能0键处理程序
KEY0:
LCALLDL10MS;延时10毫秒消抖
JBP3.0,OUT0;P3.0为1,子程序返回(干扰)
SETB00H;20H.0位置1(执行闪烁功能1标志)
CLR01H;20H.1位清0
CLR02H;20H.2位清0
CLR03H;20H.3位清0
OUT0:
RET;子程序返回
;
;闪烁功能1键处理程序
KEY1:
LCALLDL10MS
JBP3.1,OUT1
SETB01H;20H.1位置1(执行闪烁功能2标志)
CLR00H
CLR02H
CLR03H
OUT1:
RET
;
;闪烁功能2键处理程序
KEY2:
LCALLDL10MS
JBP3.2,OUT2
SETB02H;20H.2位置1(执行闪烁功能3标志)
CLR01H
CLR00H
CLR03H
OUT2:
RET
;
;闪烁功能(备用)键处理程序
KEY3:
LCALLDL10MS
JBP3.3,OUT3
SETB03H;20H.3位置1(执行备用闪烁功能标志)
CLR01H
CLR02H
CLR00H
OUT3:
RET
;
;************;
;延时程序;
;************;
;0.5毫秒延时子程序,执行一次时间为513微秒
DL512:
MOVR2,#0FFH
LOOP1:
DJNZR2,LOOP1
RET
;
;10毫秒延时子程序(调用20次0.5毫秒延时子程序)
DL10MS:
MOVR3,#14H
LOOP2:
LCALLDL512
DJNZR3,LOOP2
RET
;
;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为15×25毫秒)
DL05S:
MOVR4,#0FH
LOOP3:
LCALLDL25MS
DJNZR4,LOOP3
RET
;
;25毫秒延时子程序,用调用扫键子程序延时,可快速读出功能按键值
DL25MS:
MOVR5,#0FFH
LOOP4:
LCALLKEYWORK
DJNZR5,LOOP4
RET
END;程序结束
5.结论:
与市面上大多数的LED彩灯相比,该种彩灯具有更好的灯光装饰效果,性价比更高,与普通的全硬件LED彩灯相比具有更好的经济效益。
应用主控模块输出的控制信号去控制灯管内的LED板模块工作,使得产品性能稳定,便以安装容易操作。
由于控制程序存储在89C51单片机的电可擦除Flash闪存EPROM中,如果用户需要更改系统的亮灯模式Model_i,无须改变系统硬件电路,只需修改其中程序即可,是一种很有发展前途的彩灯控制器
6.课程设计体会:
增进了对单片机的感性认识,加深对单片机理论方面的理解。
进一步掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
参考文献
1.楼然苗李光飞51系列单片机设计实例北京航空航天大学出版社2006-2
2.何立民单片机高级教程-应用与设计北京航天航空大学出版社2000
3.胡辉单片机原理及应用设计中国水利水电出版社2005-07
4.凌玉华刘连浩单片机原理及应用系统设计中南大学出版社2006-5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 闪烁 控制器