51单片机按键控制花样灯_第1页
51单片机按键控制花样灯_第2页
51单片机按键控制花样灯_第3页
51单片机按键控制花样灯_第4页
51单片机按键控制花样灯_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页51单片机按键控制花样灯/*****************************************************本程序实现用按键控制花样灯。**当K1按下时,灯从0xfe向左跑一遍;**当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;**当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。**当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。**当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。*******************************************************/*************************************************连接方法:P0接独立按键JP5;P2接LED灯接口JP1************************************************************/#includereg52.h//头文件,函数声明#includeintrins.h//定义按键所在位sbitK1=P0^0;sbitK2=P0^1;sbitK3=P0^2;sbitK4=P0^3;sbitK5=P0^4;unsignedcharled;unsignedcharj;voiddelayms(unsignedcharms)//1ms标准延时{while(ms){for(j=0;j110;j++);//还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}voidmain(){//P2=led;unsignedinti;while(1){/**********************************************当K1按下时,灯从0xfe向左跑一遍;**********************************************/if(K1==0)delayms(10);//消除键盘抖动if(K1==0){led=0xfe;for(i=0;i7;i++)//i可以去8的倍数,表示本电路执行多少次{//led=0x7f;//P端口的初定义要在循环外面,不然会使效果错乱P2=led;//由于这里已经初设一个灯,所以for里面要加上这一个delayms(100);//起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。led=_crol_(led,1);P2=led;delayms(100);}while(!K1);//这里强调松开就没再次执行程序P2=led;//说明执行完上面的程序的最后状态}//P2=led;//如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示/************************************************************当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置************************************************************/if(K2==0)delayms(10);if(K2==0){led=0x7f;for(i=0;i7;i++){P2=led;delayms(100);led=_cror_(led,1);P2=led;delayms(100);}while(!K1);P2=led;delayms(100);for(i=0;i7;i++){led=_crol_(led,1);P2=led;delayms(100);//跑回去怎么就那么快呀?}//此时led=0x7f}/******************************************************当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。**************************************************/if(K3==0)delayms(10);//消除抖动if(K3==0){led=0xfe;delayms(200);for(i=0;i7;i++){P2=led;delayms(200);led=led1;//备注led=_crol_(led,1)等于led1||led7;P2=led;delayms(200);if(led==0x00)break;//这里一定要有个break,跳出循环,然后别忘了此时的状态是00,而不是7f}while(!K1);led=0x7f;P2=led;delayms(200);for(i=0;i7;i++){led=led1;P2=led;delayms(200);}}/*****************************************************当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。*****************************************************/if(K4==0)delayms(10);//消除抖动if(K4==0){for(i=0;i4;i++)//执行四次{led=0xf0;P2=led;delayms(500);led=0x0f;P2=led;delayms(500);}}/*********************************************************当K5键按下时,结束任意正

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论