




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
51單片機(jī)按鍵控制花樣燈時(shí)間:2012-09-10 13:50:11 來源:51hei 作者:/* 本程序?qū)崿F(xiàn)用按鍵控制花樣燈。 * 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; * 當(dāng)K2按下時(shí),LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置; * 當(dāng)K3鍵按下時(shí),LED燈從0xfe開始作流水燈形式運(yùn)行一次,然后再流回來。 * 當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。 * 當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。 */*連接方法:P0接獨(dú)立按鍵JP5;P2接LED燈接口JP1 */#include /頭文件,函數(shù)聲明#include /定義按鍵所在位sbit K1=P00;sbit K2=P01;sbit K3=P02;sbit K4=P03;sbit K5=P04;unsigned char led;unsigned char j;void delayms(unsigned char ms) / 1ms標(biāo)準(zhǔn)延時(shí) while(ms-)for(j=0;j110;j+); /還是無法設(shè)置比較標(biāo)準(zhǔn)的延時(shí),如1S等;所以應(yīng)該用定時(shí)器延時(shí)才最準(zhǔn)確void main() /P2=led; unsigned int i; while(1) /* 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; * */ if(K1=0) delayms(10); /消除鍵盤抖動(dòng) if(K1=0) led=0xfe; for(i=0;i7;i+) /i可以去8的倍數(shù),表示本電路執(zhí)行多少次 /led=0x7f; / P端口的初定義要在循環(huán)外面,不然會(huì)使效果錯(cuò)亂 P2=led; /由于這里已經(jīng)初設(shè)一個(gè)燈,所以for里面要加上這一個(gè) delayms(100); /起初這里設(shè)置500MS,使按鍵每按一下燈彩走一個(gè),不能達(dá)到要求。 led=_crol_(led,1); P2=led; delayms(100); while(!K1); /這里強(qiáng)調(diào)松開就沒再次執(zhí)行程序 P2=led; /說明執(zhí)行完上面的程序的最后狀態(tài) /P2=led; / 如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個(gè)燈,但由于本行在if外面,所有最后還是會(huì)顯示/*當(dāng)K2按下時(shí),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); /跑回去怎么就那么快呀? /此時(shí)led=0x7f /*當(dāng)K3鍵按下時(shí),LED燈從0xfe開始作流水燈形式運(yùn)行一次,然后再流回來。 * */ if(K3=0) delayms(10); /消除抖動(dòng) if(K3=0) led=0xfe; delayms(200); for(i=0;i7;i+) P2=led; delayms(200); led=led1; / 備注led=_crol_(led,1)等于led7; P2=led; delayms(200); if(led=0x00) break; /這里一定要有個(gè)break,跳出循環(huán),然后別忘了此時(shí)的狀態(tài)是00,而不是7f while(!K1); led=0x7f; P2=led; delayms(200 ); for(i=0;i1; P2=led; delayms(200); /*當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。* */ if(K4=0) delayms(10); /消除抖動(dòng) if(K4=0) for(i=0;i4;i+) /執(zhí)行四次 led=0xf0; P2=led; delayms(500); led=0x0f; P2=led; delayms(500); /*當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。* */ if(K5=0) delayms(10); if(K5=0) P2=0xff; /* */時(shí)鐘+秒表+流水燈的單片機(jī)匯編程序時(shí)間:2012-09-10 13:49:42 來源: 作者:/HJSMSY-V1.0單片機(jī)開發(fā)板測試程序/-/ /-/=主函數(shù)=ORG 0000H LJMP MAIN ORG 000BH LJMP T00/ ORG 001BH/ LJMP T11 ORG 0030H/=程序初始化=MAIN: MOV TMOD,#11H MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#0F0H MOV TL1,#0B0H SETB EA SETB ET0/ SETB ET1 SETB TR0/ SETB TR1 CLR P3.4 MOV R7,#00H ;秒值 MOV 30H,#00H ;秒個(gè)位值 MOV 31H,#00H ;秒十位值 MOV 32H,#00H ;分個(gè)位 MOV 33H,#00H ;分十位 MOV 34H,#00H ;時(shí)個(gè)位 MOV 35H,#00H ;時(shí)十位 MOV 44H,#00H ;秒表毫秒十位 MOV 45H,#00H ;秒表秒毫秒百位 MOV 46H,#00H ;秒表秒個(gè)位 MOV 47H,#00H ;秒表秒十位 MOV 48H,#00H ;秒表分個(gè)位 MOV 49H,#00H ;秒表分十位 MOV P2,#0F0H ;P2口按鍵初始化 MOV 40H,#01H ;數(shù)碼管休眠值 /流水燈/秒表開關(guān)數(shù) MOV 41H,#08H ;流水燈循環(huán)值 MOV 42H,#00H ;秒表暫停/ ACALL T11/- MAIN1: MOV P0,#0FFH MOV P1,#0FFH MOV R0,40H CJNE R0,#01H,ACL1 ACALL MAIN2 ;時(shí)鐘顯示ACL1:CJNE R0,#02H,ACL2 ACALL MAIN3 ;秒表ACL2:CJNE R0,#03H,ACL3 ACALL LED ;流水燈ACL3:ACALL KEY ;按鍵掃描/ ACALL BAO ;定時(shí)報(bào)警 LJMP MAIN1/=報(bào)警子程序=BAO:MOV R4,33H CJNE R4,#03H,YY1 CLR P3.2 ACALL KEY LJMP YY2YY1:CJNE R4,#05H,YY2 SETB P3.2 ACALL KEYYY2:RET/=時(shí)鐘掃描子程序=MAIN2: MOV A,30H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.0 ACALL DELAY MOV A,31H MOV DPTR,#TAB MOVC A,A+ DPTR MOV P0,A CLR P1.1 SETB P1.0 ACALL DELAY MOV A,32H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.2 SETB P1.1 ACALL DELAY MOV A,33H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.3 SETB P1.2 ACALL DELAY MOV A,34H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.4 SETB P1.3 ACALL DELAY MOV A,35H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.5 SETB P1.4 ACALL DELAY MOV P0,#7FH MOV P1,#0EBH ACALL DELAY MOV P1,#0FFH RET/=秒表掃描子程序=MAIN3: MOV A,44H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.0 ACALL DELAY MOV A,45H MOV DPTR,#TAB MOVC A,A+ DPTR MOV P0,A CLR P1.1 SETB P1.0 ACALL DELAY MOV A,46H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.2 SETB P1.1 ACALL DELAY MOV A,47H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.3 SETB P1.2 ACALL DELAY MOV A,48H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.4 SETB P1.3 ACALL DELAY MOV A,49H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A CLR P1.5 SETB P1.4 ACALL DELAY MOV P0,#7FH MOV P1,#0EBH ACALL DELAY MOV P1,#0FFH RET/=定時(shí)器T0中斷服務(wù)=T00:MOV TH0,#0D8H MOV TL0,#0F0H INC R7 CJNE R7,#64H,AA MOV R7,#00H/-時(shí)鐘跑值- TK1:INC 30H ;每秒鐘秒個(gè)位增一 MOV R6,30H CJNE R6,#0AH,AA MOV 30H,#00HTK2:INC 31H MOV R6,31H CJNE R6,#06H,AA MOV 31H,#00H TK3:INC 32H MOV R6,32H CJNE R6,#0AH,AA MOV 32H,#00HTK4:INC 33H MOV R6,33H CJNE R6,#06H,AA MOV 33H,#00HTK5:INC 34H MOV R5,34H MOV R6,35H CJNE R5,#04H,TK6 CJNE R6,#02H,TK6 MOV 34H,#00H MOV 35H,#00HTK6:CJNE R5,#0AH,AA MOV 34H,#00H INC 35H/-秒表跑值- AA: MOV R5,42H CJNE R5,#01H,TK7 INC 44HTK7:MOV R5,44H CJNE R5,#0AH,AA1 MOV 44H,#00H INC 45H MOV R5,45H CJNE R5,#0AH,AA1 MOV 45H,#00H INC 46H MOV R5,46H CJNE R5,#0AH,AA1 MOV 46H,#00H INC 47H MOV R5,47H CJNE R5,#06H,AA1 MOV 47H,#00H INC 48H MOV R5,48H CJNE R5,#0AH,AA1 MOV 48H,#00H INC 49H MOV R5,49H CJNE R5,#06H,AA1 MOV 49H,#00H AA1:RETI/=定時(shí)器T1中斷服務(wù)子程序=/T11:MOV TH1,#0F0H / MOV TL1,#0B0H/ RETI/*定時(shí)時(shí)間調(diào)整子程序*/TBAO: MOV 50H,#00H MOV 51H,#00H MOV 52H,#00H MOV 53H,#00H MOV 54H,#00H MOV 55H,#00H MOV R3,50H DJNZ 30H,RET1RET1: RET/=鍵盤掃描子程序= KEY:MOV P2,#0F0H MOV R3,P2 CJNE R3,#0F0H,KE0 LJMP KK13KE0:CJNE R3,#0E0H,KE1 ;P2.4行 MOV P2,#0EFH JB P2.3,KK1 /用作調(diào)定時(shí)時(shí)間 ;K13 秒個(gè)位增一 ACALL DELAY1 ACALL TK1KK1:JB P2.2,KK2 ;K14 秒十增一 ACALL DELAY1 ACALL TK2KK2:JB P2.1,KK3 ;K15 分個(gè)位增一 ACALL DELAY1 ACALL TK3KK3:JB P2.0,KE1 ;K16 分十位增一 ACALL DELAY1 ACALL TK4KE1:MOV P2,#0DFH ;P2.5行 JB P2.3,KK4 ;K9 時(shí)個(gè)位增一 ACALL DELAY1 ACALL TK5KK4:JB P2.2,KK5 ;K10 時(shí)十位增一 ACALL DELAY1 INC 35H MOV R3,35H CJNE R3,#03H,HH0 MOV 35H,#00H LJMP KK5HH0:CJNE R3,#02H,HH1 LJMP KK5HH1:CJNE R3,#01H,HH2 LJMP KK5HH2:MOV 35H,#00HKK5:JB P2.1,KK6 ACALL DELAY1 ;K11 開/關(guān)蜂鳴器 CPL P3.2KK6:JB P2.0,KE2 ;K12 秒表暫停 MOV 42H,#00H KE2:MOV P2,#0BFH ;P.6行 JB P2.3,KK7 ;K5 時(shí)鐘暫停/取消暫停 ACALL DELAY1 CPL ET0 KK7:JB P2.2,KK8 ;K6 顯示/休眠/流水燈 ACALL DELAY2 INC 40H MOV R3,40H CJNE R3,#04H,KK8 MOV 40H,#01HKK8:JB P2.1,KK9 / ACALL DELAY3 ;K7 秒表清0 MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV 48H,#00H MOV 49H,#00HKK9:JB P2.0,KE3 ;K8 秒表開始跑 MOV 42H,#01H KE3:MOV P2,#7FH ;P2.7行 JB P2.3,KK10 ;K1 秒十位減一 ACALL DELAY1 MOV R3,31H CJNE R3,#00H,JA1 LJMP KK10JA1:DEC 31HKK10:JB P2.2,KK11 ;K2 分個(gè)位減一 ACALL DELAY1 MOV R3,32H CJNE R3,#00H,JA2 LJMP KK11JA2: DEC 32HKK11:JB P2.1,KK12 ;K3 分十位減一 ACALL DELAY1 MOV R3,33H CJNE R3,#00H,JA3 LJMP KK12JA3:DEC 33HKK12:JB P2.0,KK13 ;K4 時(shí)個(gè)位減一 ACALL DELAY1 MOV R3,34H CJNE R3,#00H,JA4 L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)課件的建議
- 人力資源培訓(xùn)晉升課件
- 醫(yī)療風(fēng)險(xiǎn)培訓(xùn)課件
- 端午娛樂活動(dòng)方案
- 河南拆遷協(xié)議書
- 孝道謎語題目及答案圖片
- 小學(xué)英語便簽題目及答案
- 數(shù)據(jù)鐵籠培訓(xùn)課件
- 兒童腹瀉培訓(xùn)課件
- 專題01 金屬的回收利用-備戰(zhàn)2020年中考化學(xué)工藝流程題型特訓(xùn)(原卷版)
- 配電室巡檢培訓(xùn)
- 項(xiàng)目部組織安排
- 妊娠期非產(chǎn)科手術(shù)麻醉管理
- 武警防暴隊(duì)形課件
- DB21T 3163-2019 遼寧省綠色建筑施工圖設(shè)計(jì)評價(jià)規(guī)程
- 小學(xué)家校共育合作實(shí)施方案
- 警用執(zhí)法記錄儀培訓(xùn)
- 財(cái)務(wù)崗位招聘筆試題及解答(某大型國企)2025年
- TCOSHA 021-2023 井鹽礦山開采安全操作規(guī)程
- 2024年河北省中考語文試題(含答案解析)
- 腸內(nèi)營養(yǎng)堵管的護(hù)理方法
評論
0/150
提交評論