欢迎来到天天文库
浏览记录
ID:48509138
大小:44.00 KB
页数:26页
时间:2020-02-06
《51单片机按键控制花样灯.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、......51单片机按键控制花样灯时间:2012-09-1013:50:11来源:51hei作者:/*****************************************************本程序实现用按键控制花样灯。**当K1按下时,灯从0xfe向左跑一遍;**当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置;**当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。**当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。**当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭
2、。*******************************************************/*************************************************连接方法:P0接独立按键JP5;P2接LED灯接口JP1************************************************************/#include//头文件,函数声明#include//定义按键所在位sbit.专业专注.......K1=P0^0;sbi
3、tK2=P0^1;sbitK3=P0^2;sbitK4=P0^3;sbitK5=P0^4;unsignedcharled;unsignedcharj;voiddelayms(unsignedcharms)//1ms标准延时{while(ms--){for(j=0;j<110;j++);//还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确}}voidmain(){//P2=led;unsignedinti;while(1){.专业专注......./******************************************
4、****当K1按下时,灯从0xfe向左跑一遍;**********************************************/if(K1==0)delayms(10);//消除键盘抖动if(K1==0){led=0xfe;for(i=0;i<7;i++)//i可以去8的倍数,表示本电路执行多少次{//led=0x7f;//P端口的初定义要在循环外面,不然会使效果错乱P2=led;//由于这里已经初设一个灯,所以for里面要加上这一个delayms(100);//起初这里设置500MS,使按键每按一下灯彩走一个,不能达到要求。led=_
5、crol_(led,1);P2=led;delayms(100);}while(!K1);//这里强调松开就没再次执行程序P2=led;//说明执行完上面的程序的最后状态}//P2=led;//.专业专注.......如果把本行放在这里,虽然在开头中没有说明程序烧写好之后就先显示一个灯,但由于本行在if外面,所有最后还是会显示/************************************************************当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置*****************
6、*******************************************/if(K2==0)delayms(10);if(K2==0){led=0x7f;for(i=0;i<7;i++){P2=led;delayms(100);led=_cror_(led,1);P2=led;delayms(100);}.专业专注.......while(!K1);P2=led;delayms(100);for(i=0;i<7;i++){led=_crol_(led,1);P2=led;delayms(100);//跑回去怎么就那么快呀?}//此时l
7、ed=0x7f}/******************************************************当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。**************************************************/if(K3==0)delayms(10);//消除抖动if(K3==0){led=0xfe;delayms(200);.专业专注.......for(i=0;i<7;i++){P2=led;delayms(200);led=led<<1;//备注led
8、=_crol_(led,1)等于led<<1
9、
10、led>>7;P2=led;delayms(200);if(led==0x
此文档下载收益归作者所有