資源描述:
《51單片機按鍵控制花樣燈.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、......51單片機按鍵控制花樣燈時間:2012-09-1013:50:11來源:51hei作者:/*****************************************************本程序實現(xiàn)用按鍵控制花樣燈。**當K1按下時,燈從0xfe向左跑一遍;**當K2按下時,LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置;**當K3鍵按下時,LED燈從0xfe開始作流水燈形式運行一次,然后再流回來。**當K4鍵按下時,LED燈先亮前四個,接著再轉向亮后四個。**當K5鍵按下時,結束任意正在進行的程序,使LED燈全部熄滅
2、。*******************************************************/*************************************************連接方法:P0接獨立按鍵JP5;P2接LED燈接口JP1************************************************************/#include//頭文件,函數(shù)聲明#include//定義按鍵所在位sbit.專業(yè)專注.......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){.專業(yè)專注......./******************************************
4、****當K1按下時,燈從0xfe向左跑一遍;**********************************************/if(K1==0)delayms(10);//消除鍵盤抖動if(K1==0){led=0xfe;for(i=0;i<7;i++)//i可以去8的倍數(shù),表示本電路執(zhí)行多少次{//led=0x7f;//P端口的初定義要在循環(huán)外面,不然會使效果錯亂P2=led;//由于這里已經初設一個燈,所以for里面要加上這一個delayms(100);//起初這里設置500MS,使按鍵每按一下燈彩走一個,不能達到要求。led=_
5、crol_(led,1);P2=led;delayms(100);}while(!K1);//這里強調松開就沒再次執(zhí)行程序P2=led;//說明執(zhí)行完上面的程序的最后狀態(tài)}//P2=led;//.專業(yè)專注.......如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個燈,但由于本行在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);}.專業(yè)專注.......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);.專業(yè)專注.......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