单片机流水灯设计报告

单片机流水灯设计报告

ID:12701959

大小:465.50 KB

页数:12页

时间:2018-07-18

单片机流水灯设计报告_第1页
单片机流水灯设计报告_第2页
单片机流水灯设计报告_第3页
单片机流水灯设计报告_第4页
单片机流水灯设计报告_第5页
资源描述:

《单片机流水灯设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、班级:组员:研究课题:单片机流水灯目的:近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1.关键字:单片机、流水灯2.需求分析:随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流

2、水灯的千姿百态恰能给人一种视觉冲击,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用电子电路去设计,我们主要可以用装套控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机AT89C51来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面程序也不复杂,因此制作的远离简单,但功能作用并不低于电子电路设计的,由于它的小巧方便、通俗易懂,所以我们往往采用单片机来做流水灯。3.系统设计1.硬件框图STC89C51复位电路键盘震荡电路流水灯电路2.总设计图3.选用AT89C51的引脚功能XTAL1:单芯片系统时钟的反向放大器输入端。XTA

3、L2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。P0:端口0是一个8位宽的开路汲汲双向输出入端口,共有8个位,P0.0表示0,P0.1表示1,以此类推。P2:端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时

4、,此端口便能当成输入端口来使用。4.说明如图所示,S1为复位开关,S2、S3、S4分别为切换不同流水效果的开关,P2口控制LED灯D1~D7的显示,P0口作为LED的输出控制。当按下S2后能实现D1和D7同时亮其他不亮,然后D2和D6亮,依此类推。当按下复位S1,然后按下S2实现LED灯从D7到D1循环亮,按下S1然后按下S3实现LED从D1到D7的循环亮。硬件详细设计1.复位电路部分如图所示,当要对晶片重置时,只要按此开关就能完成LED和开关的重置。2.晶振部分产生时钟信号3.开关部分S2、S3、S4分别控制3种LED显示效果,这里就不用详细说明了。4.LED显示部分限流电阻为470欧姆,

5、经过的电流大概为10mA。软件详细设计1.软件框图开始根据键盘指令执行流水灯显示效果检查是否有键按下读取键值执行结束2.详细程序清单#include//头文件sbitk1=P0^0;//定义按键k1sbitk2=P0^1;//定义按键k2sbitk3=P0^2;//定义按键k3codeunsignedcharnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//左移0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//右移0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e}

6、;//两边到中间unsignedchark;//数组的移动指针voiddelay10ms(void)//延时10ms{unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}voiddelay02s(void)//延时0.2s{unsignedchari;for(i=20;i>0;i--){delay10ms();}}voidKEY(void)//按键扫描程序{if(k1==0){delay10ms();if(k1==0){k=0;}}if(k2==0){delay10ms();if(k2==0){k=8;}}if(k3==0){delay1

7、0ms();if(k3==0){k=16;}}}voidmain(void)//主程序{unsignedchari;while(1)//死循环{if(P0!=0xff)//判断是否有按键按下{KEY();//执行按键扫描程序for(i=0;i<8;i++)//循环8次的出8个亮的状态{P2=num[i+k];//根据按下的键得到亮的状态delay02s();//延时0.2s}P2=0xff;//全灭}}}5.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。