LED灯课程设计.doc

上传人:marr****208 文档编号:141584190 上传时间:2020-08-10 格式:DOC 页数:10 大小:151.50KB
返回 下载 相关 举报
LED灯课程设计.doc_第1页
第1页 / 共10页
LED灯课程设计.doc_第2页
第2页 / 共10页
LED灯课程设计.doc_第3页
第3页 / 共10页
LED灯课程设计.doc_第4页
第4页 / 共10页
LED灯课程设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《LED灯课程设计.doc》由会员分享,可在线阅读,更多相关《LED灯课程设计.doc(10页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及系统课程设计报告目 录1 引言12设计方案及原理12.1 LED广告灯设计原理12.2 LED广告灯设计方案13 硬件设计24 软件设计34.1程序流程图34.2源程序4总结5参考文献5附录61 引言在21世纪,随着人们生活水平的不断提高,环境的不断改善和美化,在许多场合我们可以看到很多彩色的霓虹灯。特别是现在是一个充满竞争的时代,各地政府为了吸引游客和投资者,在城市的沿街、沿道、沿河、沿线等地用霓虹灯造景,实施亮化工程,以美化环境、树立城市形象,由此可见,LED灯的利用为城市的美化做出了突出的贡献。但是目前市场上各种式样的LED彩灯多半是采用全硬件电路实现,电路结构复杂、功能单一

2、,这样一旦制成成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。同时这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外从功能上来看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。 本设计提出了一种基于89C51单片机的广告灯控制方案,以实现对LED彩灯的控制。本方案以89C51单片机作为控制核心,配合20盏LED彩灯,可以以不同频率显示不同的图案,实际应用效果较好,亮灯模式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。与普通LED彩灯相比,具有体积小,价格低,控制方便

3、,耗能低等优点。2设计方案及原理2.1 LED广告灯设计原理LED灯也就是发光二极管,根据我们在模拟电子技术中所学到的知识可知,当给二极管的阳极接正电源正极,阴极接电源负极,只要电压足够大,大约超过管压降( 0.7V),就可以点亮发光二极管,不同颜色的发光二极管就可以使发光二极管发出相应颜色的光,组合多个LED灯并且控制其高低电平就可以显示不同的图案。当供电的电压较高,电流较大时,我们就需要串联大电阻进行分压,以防烧毁二极管。本文中设计的是利用20个LED灯,以显示倒计时数字3、2、1以及各种变化多端的图案。2.2 LED广告灯设计方案本文设计的是根据不同的模式选择开关状态来显示不同的图案,在

4、P0,P1输入00时即模式1,显示3、2、1的倒计时;在P0,P1输入01时即模式2,LED外围先亮起,内核后亮起;在P0,P1输入10时即模式3,LED内核先亮起,外围后亮起;在P0,P1输入11时即模式4,LED灯所有全亮后全灭。图1是20个LED灯排列成的矩阵,共连接20个I/O口,各个灯所连接的I/0口如图中分配。图1 LED灯I/O口分配为了在确定的时间点亮可以输出确定的图案,就需要在确定的时间给相应的I/O口输出高电平,以点亮相应的灯显示图案,如在显示数字3的时候需要输出高电平的I/O口分别是P3.1、P3.2、P3.6、P1.2、P1.1、P1.6、P2.2、P2.1,就可以显示

5、数字3,显示数字2、1时同理。在显示每一个数字后都加了相应的延时程序,其中延时程序是采用了空循环来进行延时。点亮LED灯我们可以采用2种方式,第一种:单片机的I/O口分别接各个LED灯的阳极,另一端共阴极接地,在主程序开始的时候,把I/O口初始化为低电平,而后当程序使单片机I/O口输出高电平的时候就可以点亮LED灯,当我们想要点亮某一盏LED灯时给连在该I/0口的灯输出即可。第二种是单片机的I/O口接各个LED灯的阴极,而LED的共阳极接+5V电源,在主程序开始的时候把I/O初始化为高电平,当需要点亮某一盏LED灯时,就可以给相应的连在该灯的I/O口地址送低电平0,就可以点亮相应的LED灯。3

6、 硬件设计图2是在PROTEUS中进行硬件连线仿真电路概略图,设计中应用了单片机AT89C51,LED灯采用共阴极连线方式。图2 广告灯设计概略图图3是在PROTEUS中进行硬件连线仿真电路,图中采用总线连线方式,SW3是总开关,SW4是手动和自动选择开关,SW1和SW2是亮灯模式选择开关。图3 广告灯在PROTEUS中的硬件连线图在该硬件连线图中,SW3是用来开启或者停止LED显示的选择开关,它通过P0.2来输入单片机。SW1和SW2是用来选择广告灯LED显示模式的选择开关,他们分别是通过P0.0和P0.1来输入单片机的。D1D7是用P3口的输出来控制,D12D16是利用P1口来控制,D17

7、D20是利用P2口的P2.0、P2.1、P2.2、以及P2、P3输出来进行控制。图中选择的状态是所有灯显示开启,模式选择开关SW1和SW2是00状态,即选择的是模式1,运行的该电路,显示的是3、2、1的倒数计时。4 软件设计4.1程序流程图图4是LED广告灯设计的程序流程图,在该程序中,首先判断的是LED灯的开关位P0.2的状态,如果程序检测到P0.2的值为1,则开始按照模式选择开关所选择的模式运行程序,如果程序检测到P0.2的值为0,关闭所有LED灯,并不断检测开关位P0.2的状态。图4 程序流程图在软件设计中,通过首先通过检测P0.2的状态,决定是否进入运行模式,当P0.2输入为高电平时,

8、进入运行模式,然后根据不同的P0.0和P0.1的状态来选择运行不同的模式。4.2源程序源程序见附录。总结本设计是采用AT89C51单片机,通过程序控制单片机的I/O口进行输出来点亮LED灯,然后对LED等进行组合,利用20盏LED灯来显示数字和图案,外部加了模式选择开关和总的LED显示开关。在程序运行中可以检测模式选择位以及LED显示开关的状态,并对系统的输出显示加以控制,适合于经常需要对LED显示输出显示进行改变的场合。在本设计的过程中,我认识到了当软件和硬件相结合的时候,并不仅仅是只是考虑软件设计那么简单,而是需要把硬件的输出情况也加以考虑,才能得到正确的结果。在以后的学习生活中,我要加强

9、动手能力的锻炼,以更好的适应社会。参考文献1 李华,王思明,张金敏.单片机原理及应用M.兰州:兰州大学出版社,2003.2 何钦铭,颜辉.C语言程序设计M.北京:高等教育出版社,2010.附录#include void delay(int ms) /延时子程序 int i1,j1;for(i1=0;i1ms;i1+) for(j1=0;j11141;j1+); void natural() /读取P0.0以及P0.1错误时调用的子程序 P1=0X00; P2=0X00; P3=0Xff;void mode1() P3=0X46; /显示3P1=0X46;P2=0X06;delay(150);P

10、3=0X46; /显示2P1=0X26;P2=0X06;delay(150); P3=0X64; /显示1P1=0X44;P2=0X0E;delay(100);void mode2() P3=0X9F; /外围亮起P2=0X0F;P1=0X99; delay(100); /暂停即延时P3=0x60; /内核亮起P1=0x66;P2=0X00; delay(100); /暂停即延时 void mode3() int n=0; for(n=0;n=10;n+) P3=0x60; /内核亮起 P1=0x66; P2=0X00; delay(100); P3=0X9F; /外围亮起 P2=0X0F;

11、P1=0X99; delay(100); void mode4() int k=0;for(k=0;k=10;k+) P3=0XFF; /灯全亮P1=0XFF;P2=0XFF;delay(5);P3=0X00; /灯全灭P1=0X00;P2=0X00; void read() /读取P0.0以及P0.1口的状态 if(P0_0=0)&(P0_1=0) mode1(); delay(10); else if(P0_0=0)&(P0_1=1) mode2(); delay(10); else if(P0_0=1)&(P0_1=0) mode3(); delay(10); else if(P0_0=1)&(P0_1=1) mode4(); delay(10); else natural();void main() if(P0_2=1) /判断P0.2的状态 if(P0_3=0) IE=0; P1=0X00; P2=0X00; P3=0X00; delay(200); /调用延时子程序 read(); else mode1(); mode2(); mode3(); mode4(); else P1=0X00; P2=0X00; P3=0X00; 9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号