




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机彩灯控制器的设计.z.51单片机彩灯控制器的设计原题要求如下:1.用16盏以上的LED小灯,实现至少4种彩灯灯光效果〔不含全部点亮,全部熄灭〕;2.可以用输入按钮在几种灯光效果间切换;3.可以通过按钮暂停彩灯效果,使小灯全亮,再次按下一样按钮后继续之前的效果;4.增加自动在几种效果间切换的功能,并设置一个按钮可以在自动模式和手动模式间切换;5.使用定时中断延时。最终作品如下:一共有十钟灯光效果,分别是:顺时针流水灯、逆时针流水灯、交替闪烁、顺时针对角灯、逆时针对角灯、顺时针逐个点亮、顺时针逐个熄灭、逆时针逐个点亮、逆时针逐个熄灭、二进制加法。程序代码如下:/**************************************************************************************************模块名称:51单片机彩灯控制器模块功能:实现十种循环彩灯控制编写日期:2021/12/18**************************************************************************************************/*include<reg51.h>*definefalse0*definetrue1*defineucharunsignedchar*defineuintunsignedintsbitpause_key=P3^0;//暂停按钮sbitauto_key=P3^1;//手动模式的效果切换sbitchange_key=P3^2;//手动模式效果切换sbitpauseLed=P3^6;//暂停、启动指示灯sbitautoLed=P3^7;//自动、手动模式指示灯intledCode[8]={0*fe,0*fd,0*fb,0*f7,0*ef,0*df,0*bf,0*7f};//led段码(单个显示)intledCode2[8]={0*fe,0*fc,0*f8,0*f0,0*e0,0*c0,0*80,0*00};//led段码〔半显示半灭〕intdisCode[10]={0*03,0*9f,0*25,0*0d,0*99,0*49,0*41,0*1f,0*01,0*09};//数码管段码0~9voiddisplayLed(void);//显示led的主函数voidkeyScan(void);//键盘扫描处理函数voidDelay10ms(unsignedintn);//延时10msbitisPause=false;//是否暂停bitisAuto=true;//是否自动运行bitisChange=false;//是否要切换下一个效果uchartime;//计时满0.5suchartypes;//第几种灯光显示方案uintcounts;//灯光的第几个51单片机彩灯控制器的设计全文共8页,当前为第1页。/*******************************************************************************51单片机彩灯控制器的设计全文共8页,当前为第1页。*函数名:T0_INT*函数功能:T0定时器中断函数*输入:无*输出:无*******************************************************************************/voidT0_INT(void)interrupt1{TL0=(65536-50000)/256;TH0=(65536-50000)%256;time++;if(time>=10)//定时时间:0.5s{time=0;if(isChange==true)//可以变换下一种显示效果了{counts=0;types++;//显示下一种效果if(types>9)types=0;P0=disCode[types];//更新数码管显示isChange=false;}displayLed();counts++;}}/********************************************************************************函数名:main*函数功能:主函数*输入:无*输出:无*******************************************************************************/voidmain(void){TMOD=0*61;//01100001//方式一TL0=(65536-50000)/256;//50msTH0=(65536-50000)%256;TR0=1;//开启T0ET0=1;//T0中断允许EA=1;//总中断开启time=0;//定时器时间扩种〔0.5s〕counts=0;//灯光的第几次types=0;//灯光显示模式pauseLed=0;//暂停指示灯灭51单片机彩灯控制器的设计全文共8页,当前为第2页。P0=disCode[types];//更新数码管显示51单片机彩灯控制器的设计全文共8页,当前为第2页。while(1){keyScan();//键盘扫描及处理}}/********************************************************************************函数名:keyScan*函数功能:键盘扫描处理*输入:无*输出:无*******************************************************************************/voidkeyScan(void){if(pause_key==0)//按下了暂停按钮{Delay10ms(1);if(pause_key==0){isPause=~isPause;pauseLed=isPause;if(isPause==true){ET0=0;//关闭T0中断P0=0*fd;//数码管显示"-〞P1=0*00;//所有的灯都亮起来P2=0*00;}else{ET0=1;//T0中断允许P0=disCode[types];//更新数码管显示displayLed();}while(pause_key==0);//防止按键重复检测}}if(auto_key==0)//自动、手动切换按键按下{Delay10ms(1);if(auto_key==0){isAuto=~isAuto;autoLed=isAuto;}while(auto_key==0);//防止按键重复检测51单片机彩灯控制器的设计全文共8页,当前为第3页。}51单片机彩灯控制器的设计全文共8页,当前为第3页。if(change_key==0&&isAuto==false)//手动模式,并且效果切换按下{Delay10ms(1);if(change_key==0){isChange=true;}while(change_key==0);//防止按键重复检测}}/********************************************************************************函数名:displayLed*函数功能:显示led灯*输入:(全局变量)types:显示效果;counts:当前效果下的第几次*输出:无*******************************************************************************/voiddisplayLed(void){switch(types){case0://顺时针旋转led灯{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts<8){P1=0*ff;P2=ledCode[7-counts];}else{P1=ledCode[15-counts];P2=0*ff;}break;}case1://逆时针旋转LED灯{if(counts>=16)counts=0;if(counts>=15)51单片机彩灯控制器的设计全文共8页,当前为第4页。{51单片机彩灯控制器的设计全文共8页,当前为第4页。if(isAuto==true)isChange=true;}if(counts<8){P1=ledCode[counts];P2=0*ff;}else{P1=0*ff;P2=ledCode[counts-8];}break;}case2://穿插替换{if(counts>=16)counts=0;if(counts>=15){if(isAuto==true)isChange=true;}if(counts%2==0)//偶数{P1=0*aa;P2=0*aa;}else{P1=0*55;P2=0*55;}break;}case3://对角顺时针{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[7-counts];P2=ledCode[7-counts];break;51单片机彩灯控制器的设计全文共8页,当前为第5页。}51单片机彩灯控制器的设计全文共8页,当前为第5页。case4://对角逆时针{if(counts>=8)counts=0;if(counts>=7){if(isAuto==true)isChange=true;}P1=ledCode[counts];P2=ledCode[counts];break;}case5://顺时针逐个点亮{if(counts>=17)counts=0;if(counts<8){P1=~ledCode2[7-counts];P2=0*ff;}elseif(counts<16){P1=0*00;P2=~ledCode2[15-counts];}else//全亮{P1=0*00;P2=0*00;if(isAuto==true)isChange=true;}break;}case6://顺时针逐个又灭掉{if(counts>=17)counts=0;if(counts<8){P1=ledCode2[7-counts];P2=0*00;}elseif(counts<16){P1=0*ff;51单片机彩灯控制器的设计全文共8页,当前为第6页。P2=ledCode2[15-counts];51单片机彩灯控制器的设计全文共8页,当前为第6页。}else//全灭{P1=0*ff;P2=0*ff;if(isAuto==true)isChange=true;}break;}case7://逆时针逐个点亮{if(counts>=17)counts=0;if(counts<8){P1=0*ff;P2=ledCode2[counts];}elseif(counts<16){P1=ledCode2[counts-7];P2=0*00;}else//全亮{P1=0*00;P2=0*00;if(isAuto==true)isChange=true;}break;}case8://逆时针逐个灭掉{if(counts>=17)counts=0;if(counts<8){P1=0*00;P2=~ledCode2[counts];}elseif(counts<16){P1=~ledCode2[counts-7];P2=0*ff;}51单片机彩灯控制器的设计全文共8页,当前为第7页。else//全亮51单片机彩灯控制器的设计全文共8页,当前为第7页。{P1=0*ff;P2=0*ff;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 催客户付款合同标准文本
- 公司出资入股合同标准文本
- 1997合同标准文本
- 书委托创作合同标准文本
- 中介房产违约合同标准文本
- 停车车位合同标准文本
- 公司聘用个人合同样本
- 供热经营合同范例
- 些属于商业合同标准文本
- 新疆伊犁州奎屯一中2025年高三第三次测评化学试卷含解析
- 【道法】做自强不息的中国人课件+-2024-2025学年统编版道德与法治七年级下册
- 【道法】人生当自强课件-2024-2025学年统编版道德与法治七年级下册
- 山东省济宁市2025届高三下学期3月一模试题 地理 含解析
- 标准田径场地租赁合同样本2025
- 外研版(三起)(2024)三年级下册英语Unit 3 单元测试卷(含答案)
- 2024年广州市卫生健康系统招聘“优才计划”考试真题
- 河北省石家庄市2025届普通高中教学质量检测一(石家庄一模)高三英语试卷 含答案
- 重点营业线施工方案
- 2025年西安印钞有限公司招聘(16人)笔试参考题库附带答案详解
- 第23 课《太空一日》课件 部编版七年级语文下册
- 《水土保持监测技术规范SLT 277-2024》知识培训
评论
0/150
提交评论