(資料圖片)
1、//頭文件:#include
2、關(guān)閉其它位SMG_q=1;SMG_b=0;SMG_s=1;SMG_g=1;P0=table[da%1000/100];break;case 2://選擇十位數(shù)碼管,關(guān)閉其它位SMG_q=1;SMG_b=1;SMG_s=0;SMG_g=1;P0=table[da%100/10];break;case 3://選擇個(gè)位數(shù)碼管,關(guān)閉其它位SMG_q=1;SMG_b=1;SMG_s=1;SMG_g=0;P0=table[da%10];break;}l_posit++;//每調(diào)用一次將輪流顯示一位if(l_posit>3)l_posit=0;}//掃描鍵盤unsigned char ReadKey(void){unsigned char lkey=0;if((P3&0xfc)!=0xfc){//檢測所有按鍵是否有按鍵按下SPK=0;//按鍵按下則蜂鳴器發(fā)聲delay(10);//有按鍵按下則延時(shí)一段時(shí)間。
3、以消除按鍵拌動(dòng)if(oldkey!=(P3&0xfc)){//檢測按鍵未松開而且不是之前按下的按健就進(jìn)入讀鍵值,否則不作處理oldkey=P3&0xfc;//保存當(dāng)前狀態(tài),為下一次掃描做判斷。
4、請看上一行if(key1==0)lkey=1;//第一個(gè)鍵按下復(fù)值1else if(key2==0)lkey=2;//第二個(gè)鍵按下復(fù)值2else if(key3==0)lkey=3;//第三個(gè)鍵按下復(fù)值3else if(key4==0)lkey=4;//第四個(gè)鍵按下復(fù)值4else if(key5==0)lkey=5;//第五個(gè)鍵按下復(fù)值5else if(key6==0)lkey=6;//第六個(gè)鍵按下復(fù)值6}}else{oldkey=0xfc;//如果都沒有按鍵按下,將復(fù)值初始狀態(tài)SPK=1;//無按鍵按下則退出蜂鳴}return lkey;}//主函數(shù)void main(void) {unsigned int ldata=0;//作為顯示的數(shù)據(jù)unsigned char i;for(i=0;i<8;i++) {P2<<=1;//用移位法將1向高位移入一位delay(25000);} P2=0xff;//LED燈測試完畢f(xié)or(i=8;i>1;i--){P2>>=1;//用移位法將1向高位移入一位delay(25000);}for(i=1;i<2;i++) { P2=0xfe; delay(20000); P2=0xfd; delay(20000); P2=0xfb; delay(20000); P2=0xf7; delay(20000); P2=0xef; delay(20000); P2=0xdf; delay(20000); P2=0xbf; delay(20000); P2=0x7f; delay(20000); P2=0xbf; delay(20000); P2=0xdf; delay(20000); P2=0xef; delay(20000); P2=0xf7; delay(20000); P2=0xfb; delay(20000); P2=0xfd; delay(20000); P2=0xfe; delay(20000); P2=0xff;}P0=0;//數(shù)碼管輸出,準(zhǔn)備測試每一位SMG_g=0;//測試個(gè)位數(shù)碼管delay(38000);SMG_g=1;//關(guān)閉數(shù)碼管。
5、測試個(gè)位完畢SMG_s=0;//十位delay(38000);SMG_s=1;//SMG_b=0;//百位delay(38000);SMG_b=1;//SMG_q=0;//千位數(shù)碼管delay(38000);SMG_q=1;//關(guān)閉數(shù)碼管,測試個(gè)位完畢SMG_b=0;//百位delay(38000);SMG_b=1;//SMG_s=0;//十位delay(38000);SMG_s=1;//P0=0;//數(shù)碼管輸出,準(zhǔn)備測試每一位SMG_g=0;//測試個(gè)位數(shù)碼管delay(38000); SMG_s=0;//十位delay(38000);SMG_b=0;//百位delay(38000);SMG_q=0;//千位數(shù)碼管delay(38000);SMG_g=1;SMG_s=1;SMG_b=1;SMG_q=1;SMG_q=0;//千位數(shù)碼管delay(38000);SMG_b=0;//百位delay(38000);SMG_s=0;//十位delay(38000);P0=0;//數(shù)碼管輸出。
6、準(zhǔn)備測試每一位SMG_g=0;//測試個(gè)位數(shù)碼管delay(38000);SMG_g=1;SMG_s=1;SMG_b=1;SMG_q=1;SPK=0;//測試蜂鳴器delay(3500);SPK=1;//關(guān)閉蜂鳴器delay(30000);SPK=0;//測試蜂鳴器delay(3500);SPK=1;//關(guān)閉蜂鳴器delay(30000);SPK=0;//測試蜂鳴器delay(50000);SPK=1;//關(guān)閉蜂鳴器delay(30000);SPK=0;//測試蜂鳴器delay(50000);SPK=1;//關(guān)閉蜂鳴器delay(30000);SPK=0;//測試蜂鳴器delay(50000);delay(50000);delay(50000);SPK=1;//關(guān)閉蜂鳴器delay(30000);JDQ=0;//測試?yán)^電器delay(50000);JDQ=1;//關(guān)閉繼電器delay(50000);JDQ=0;//測試?yán)^電器delay(50000);delay(50000);delay(50000);JDQ=1;//關(guān)閉繼電器for(i=0;i<8;i++) {P2<<=1;//用移位法將1向高位移入一位delay(50);}while(1){//循環(huán)掃描按鍵及顯示switch(ReadKey()){//讀取鍵值做以下相應(yīng)處理case 1:ldata++;//1鍵顯示內(nèi)容加1P2=0xfe;break;case 2:ldata--;//2鍵顯示內(nèi)容減1P2=0xfc;break;case 3:ldata+=10;//3鍵顯示內(nèi)容加10P2=0xf8;break;case 4:ldata-=10;//4鍵顯示內(nèi)容減10P2=0xf0;break;case 5:ldata+=100;//5鍵顯示內(nèi)容加100P2=0xe0;break;case 6:ldata-=100;//6鍵顯示內(nèi)容減100 P2<<=1; break;}display(ldata);//顯示相應(yīng)的數(shù)值,這里用函數(shù)的形式調(diào)用顯示delay(100);}}。
相信通過語c自戲范文這篇文章能幫到你,在和好朋友分享的時(shí)候,也歡迎感興趣小伙伴們一起來探討。
本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!