




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
51單片機按鍵控制花樣燈時間:2012-09-10 13:50:11 來源:51hei 作者:/* 本程序實現用按鍵控制花樣燈。 * 當K1按下時,燈從0xfe向左跑一遍; * 當K2按下時,LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置; * 當K3鍵按下時,LED燈從0xfe開始作流水燈形式運行一次,然后再流回來。 * 當K4鍵按下時,LED燈先亮前四個,接著再轉向亮后四個。 * 當K5鍵按下時,結束任意正在進行的程序,使LED燈全部熄滅。 */*連接方法:P0接獨立按鍵JP5;P2接LED燈接口JP1 */#include /頭文件,函數聲明#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標準延時 while(ms-)for(j=0;j110;j+); /還是無法設置比較標準的延時,如1S等;所以應該用定時器延時才最準確void main() /P2=led; unsigned int i; while(1) /* 當K1按下時,燈從0xfe向左跑一遍; * */ if(K1=0) delayms(10); /消除鍵盤抖動 if(K1=0) led=0xfe; for(i=0;i7;i+) /i可以去8的倍數,表示本電路執(zhí)行多少次 /led=0x7f; / P端口的初定義要在循環(huán)外面,不然會使效果錯亂 P2=led; /由于這里已經初設一個燈,所以for里面要加上這一個 delayms(100); /起初這里設置500MS,使按鍵每按一下燈彩走一個,不能達到要求。 led=_crol_(led,1); P2=led; delayms(100); while(!K1); /這里強調松開就沒再次執(zhí)行程序 P2=led; /說明執(zhí)行完上面的程序的最后狀態(tài) /P2=led; / 如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個燈,但由于本行在if外面,所有最后還是會顯示/*當K2按下時,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); /跑回去怎么就那么快呀? /此時led=0x7f /*當K3鍵按下時,LED燈從0xfe開始作流水燈形式運行一次,然后再流回來。 * */ if(K3=0) delayms(10); /消除抖動 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; /這里一定要有個break,跳出循環(huán),然后別忘了此時的狀態(tài)是00,而不是7f while(!K1); led=0x7f; P2=led; delayms(200 ); for(i=0;i1; P2=led; delayms(200); /*當K4鍵按下時,LED燈先亮前四個,接著再轉向亮后四個。* */ if(K4=0) delayms(10); /消除抖動 if(K4=0) for(i=0;i4;i+) /執(zhí)行四次 led=0xf0; P2=led; delayms(500); led=0x0f; P2=led; delayms(500); /*當K5鍵按下時,結束任意正在進行的程序,使LED燈全部熄滅。* */ if(K5=0) delayms(10); if(K5=0) P2=0xff; /* */時鐘+秒表+流水燈的單片機匯編程序時間:2012-09-10 13:49:42 來源: 作者:/HJSMSY-V1.0單片機開發(fā)板測試程序/-/ /-/=主函數=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 ;秒個位值 MOV 31H,#00H ;秒十位值 MOV 32H,#00H ;分個位 MOV 33H,#00H ;分十位 MOV 34H,#00H ;時個位 MOV 35H,#00H ;時十位 MOV 44H,#00H ;秒表毫秒十位 MOV 45H,#00H ;秒表秒毫秒百位 MOV 46H,#00H ;秒表秒個位 MOV 47H,#00H ;秒表秒十位 MOV 48H,#00H ;秒表分個位 MOV 49H,#00H ;秒表分十位 MOV P2,#0F0H ;P2口按鍵初始化 MOV 40H,#01H ;數碼管休眠值 /流水燈/秒表開關數 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 ;時鐘顯示ACL1:CJNE R0,#02H,ACL2 ACALL MAIN3 ;秒表ACL2:CJNE R0,#03H,ACL3 ACALL LED ;流水燈ACL3:ACALL KEY ;按鍵掃描/ ACALL BAO ;定時報警 LJMP MAIN1/=報警子程序=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/=時鐘掃描子程序=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/=定時器T0中斷服務=T00:MOV TH0,#0D8H MOV TL0,#0F0H INC R7 CJNE R7,#64H,AA MOV R7,#00H/-時鐘跑值- TK1:INC 30H ;每秒鐘秒個位增一 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/=定時器T1中斷服務子程序=/T11:MOV TH1,#0F0H / MOV TL1,#0B0H/ RETI/*定時時間調整子程序*/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 /用作調定時時間 ;K13 秒個位增一 ACALL DELAY1 ACALL TK1KK1:JB P2.2,KK2 ;K14 秒十增一 ACALL DELAY1 ACALL TK2KK2:JB P2.1,KK3 ;K15 分個位增一 ACALL DELAY1 ACALL TK3KK3:JB P2.0,KE1 ;K16 分十位增一 ACALL DELAY1 ACALL TK4KE1:MOV P2,#0DFH ;P2.5行 JB P2.3,KK4 ;K9 時個位增一 ACALL DELAY1 ACALL TK5KK4:JB P2.2,KK5 ;K10 時十位增一 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 開/關蜂鳴器 CPL P3.2KK6:JB P2.0,KE2 ;K12 秒表暫停 MOV 42H,#00H KE2:MOV P2,#0BFH ;P.6行 JB P2.3,KK7 ;K5 時鐘暫停/取消暫停 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 分個位減一 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 時個位減一 ACALL DELAY1 MOV R3,34H CJNE R3,#00H,JA4 L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年林業(yè)安全生產工作計劃
- 部編版小學二年級語文上冊家校共育計劃
- 二年級上冊書法筆順教學計劃
- 教師學期工作總結與計劃
- 成都市XXX小學機器人課程教學計劃
- 商業(yè)街綠化施工技術難點細化措施
- 玻璃制造業(yè)安全生產技術組織措施
- 小學托管手工制作社團計劃
- 2025年物流行業(yè)紀律教育學習月心得體會
- 【真題】高一下學期期末測試數學試題(含解析)四川省成都市新都區(qū)2023-2024學年
- 機械租賃投標服務方案
- 《工程勘察設計收費標準》(2002年修訂本)
- 人工智能知到章節(jié)答案智慧樹2023年復旦大學
- GB/T 19939-2005光伏系統并網技術要求
- 財富沙盤流程課件
- 2022年西學中考試題庫
- 《大學物理》課程教學大綱
- 99S203消防水泵接合器安裝圖集
- 建筑安全生產自查臺賬(建筑施工)
- 人教版 小學音樂下冊 一至六年級全套精品教案(1-6年級全套合集)
- 承臺模板及支架檢驗批質量驗收記錄表
評論
0/150
提交評論