51單片機(jī)C語言可調(diào)時(shí)鐘_第1頁
51單片機(jī)C語言可調(diào)時(shí)鐘_第2頁
51單片機(jī)C語言可調(diào)時(shí)鐘_第3頁
51單片機(jī)C語言可調(diào)時(shí)鐘_第4頁
51單片機(jī)C語言可調(diào)時(shí)鐘_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、/*這是一個(gè)真正有意義的時(shí)鐘key1功能鍵 選擇可調(diào)位,短按,每按一下有一位閃爍 長(zhǎng)按閃爍不斷向下一位推移key2 加鍵 短按相應(yīng)閃爍的位加1,長(zhǎng)按連續(xù)加1;key3 減鍵 短按相應(yīng)閃爍的位減1,長(zhǎng)按連續(xù)減一;key4 確定鍵 按下退出調(diào)時(shí),正常顯示;*/#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define LED P0 #define KEY_1 0x0e #define KEY_2 0x0d#define KEY_3 0x0b#define KEY_4 0x07#define K

2、EY_NULL 0x0f#define KEY_PRESS 0x80 #define KEY_LONG 0x40#define KEY_STATE_INIT 0 #define KEY_STATE_PRESS 1#define KEY_STATE_LONG 2#define KEY_STATE_UP 3#define KEY_LONG_PERIOD 20 #define KEY_CONTINUE_PERIOD 10bit set;bit dao1S=0; bit dao2MS=0;bit dao10MS; sbit dula=P26;sbit wela=P27;sbit key1=P34; s

3、bit key2=P35;sbit key3=P36;sbit key4=P37;int main_flag,exit_flag,up_flag,down_flag; int tab=0,0,0,0,0,0; uchar weitable=0x01,0x02,0x04,0x08,0x10,0x20;uchar tab1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void nint() TMOD=0X01; TH0=0XF8; TL0=0XCC; TR0=1; ET0=1; uchar KeyScan() if(key1=0) retur

4、n KEY_1; if(key2=0) return KEY_2; if(key3=0) return KEY_3; if(key4=0) return KEY_4; return KEY_NULL;uchar GetKey()uchar keyRetu=0,keyTemp=KEY_NULL; static uchar s_keyState=KEY_STATE_INIT,keyTime=0,keyLast=KEY_NULL; keyTemp=KeyScan();switch (s_keyState) case KEY_STATE_INIT: if(keyTemp!=KEY_NULL) s_ke

5、yState=KEY_STATE_PRESS; break; case KEY_STATE_PRESS: if(keyTemp!=KEY_NULL) s_keyState=KEY_STATE_LONG; keyTime=0; keyLast=keyTemp; else s_keyState=KEY_STATE_INIT; break; case KEY_STATE_LONG: if(keyTemp=KEY_NULL) s_keyState=KEY_STATE_INIT; keyRetu=(keyLast|KEY_PRESS); else if(+keyTime>=KEY_LONG_PER

6、IOD) /按下時(shí)間>1s s_keyState=KEY_STATE_UP; keyTime=0; break; case KEY_STATE_UP: if(keyTemp=KEY_NULL) s_keyState=KEY_STATE_INIT; else keyTime=0; keyRetu=(keyLast|KEY_LONG); break;return keyRetu;void updatetime() if(dao1S) dao1S=0; if(+tab5=10) tab5=0; if(+tab4=6)tab4=0; if(+tab3=10) tab3=0; if(+tab2=6

7、) tab2=0; if(tab0<2) if(+tab1=10) tab1=0; tab0+; else if(tab1=4) tab1=0; tab0=0; void display() static uchar k=0; dula=1; LED=tab1tabk; if(set&&(k=main_flag-1) LED=0XFF; dula=0; LED=0Xff; wela=1; LED=weitablek; wela=0; if(+k>5)k=0; void sittime(uchar hour,uchar minute,uchar second ) uc

8、har a1,a2,b1,b2,c1,c2; a1=hour/10; a2=hour%10; b1=minute/10; b2=minute%10; c1=second/10; c2=second%10; tab0=a1; tab1=a2; tab2=b1; tab3=b2; tab4=c1; tab5=c2; void main() nint(); EA=1; sittime(15,20,15); while(1) updatetime(); if(dao2MS) dao2MS=0; display(); if(dao10MS) dao10MS=0; switch (GetKey() cas

9、e (KEY_1|KEY_PRESS): if(+main_flag>=7)main_flag=0; break; case (KEY_1|KEY_LONG): if(+main_flag>=7)main_flag=0; break; case (KEY_2|KEY_PRESS): switch(main_flag) case 1: if(+tab0>=3) tab0=0; break; case 2: if(+tab1>4) tab1=0; break; case 3: if(+tab2>5) tab2=0; break; case 4: if(+tab3>

10、;9) tab3=0; break; case 5: if(+tab4>5) tab4=0; break; case 6: if(+tab5>9) tab5=0; break; case (KEY_2|KEY_LONG): switch(main_flag) case 1: if(+tab0>=3) tab0=0; break; case 2: if(+tab1>4) tab1=0; break; case 3: if(+tab2>5) tab2=0; break; case 4: if(+tab3>9) tab3=0; break; case 5: if(

11、+tab4>5) tab4=0; break; case 6: if(+tab5>9) tab5=0; break; case (KEY_3|KEY_PRESS): switch(main_flag) case 1: if(-tab0<0) tab0=2; break; case 2: if(-tab1<0) tab1=4; break; case 3: if(-tab2<0) tab2=5; break; case 4: if(-tab3<0) tab3=9; break; case 5: if(-tab4<0) tab4=5; break; cas

12、e 6: if(-tab5<0) tab5=9; break; case (KEY_3|KEY_LONG): switch(main_flag) case 1: if(-tab0<0) tab0=2; break; case 2: if(-tab1<0) tab1=4; break; case 3: if(-tab2<0) tab2=5; break; case 4: if(-tab3<0) tab3=9; break; case 5: if(-tab4<0) tab4=5; break; case 6: if(-tab5<0) tab5=9; break;case (KEY_4|KEY_PRESS): main_flag=0; disp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論