版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 單片機課程設計報告</b></p><p><b> 學號:xxx</b></p><p><b> 姓名:xxx</b></p><p><b> 指導老師:xxx </b></p><p> 題目:定時鬧鈴LCD&
2、lt;/p><p> 目的:通過本課程設計可以學習8051定時器時間計時處理,按鍵掃描及LCD顯示的設計方法。</p><p><b> 功能說明:</b></p><p> 定時鬧鈴的基本功能如下:</p><p> 1,文字型LCD(16x2)顯示。</p><p> 2,顯示格式為“時
3、時 分分”。</p><p> 3,由LED閃動來做秒計數(shù)表示。</p><p> 4,具有4個按鍵來做功能設置,可以設置現(xiàn)在的時間及顯示鬧鈴設置時間。</p><p> 程序執(zhí)行后工作指示燈LED閃動,表示程序開始執(zhí)行,LCD顯示“00 00”,按下操作鍵K1~K4動作如下:</p><p> 操作鍵K1:設置現(xiàn)在的時間。<
4、;/p><p> 操作鍵K2:顯示鬧鈴設置時間。</p><p> 操作鍵K3:設置鬧鈴時間。</p><p> 操作鍵K4:鬧鈴ON/OFF的狀態(tài)設置,設為ON時連續(xù)三次發(fā)出嗶的一聲,設為OFF時發(fā)出嗶的一聲。</p><p> 設置現(xiàn)在的時間或是鬧鈴時間設置如下:</p><p> 操作鍵K1:調(diào)整時。<
5、;/p><p> 操作鍵K2:調(diào)整分。</p><p> 操作鍵K3:設置完成。</p><p> 時間到時發(fā)出一陣聲響,按下K4鍵可以停止聲響。</p><p><b> 控制電路:</b></p><p> 定時鬧鈴的控制電路分為以下幾部分: </p><p>&
6、lt;b> ? 單片機8051</b></p><p><b> ? LCD顯示器 </b></p><p><b> ? 按鍵控制 </b></p><p><b> ? 壓電喇叭 </b></p><p> 完整的控制電路圖如下: </p
7、><p><b> LCD接口設計:</b></p><p> LCD接口可以分為8位及4位控制方式,本課程設計使用的是4位控制方式,使用D4~D7數(shù)據(jù)線來傳送控制命令及數(shù)據(jù)。使用4位數(shù)據(jù)線做控制時需分兩次來傳送,先送出高4位數(shù)據(jù),再送出低4位數(shù)據(jù)。 </p><p> 4為控制電路如圖所示:</p><p> 以8
8、051 P0的6條輸出控制線來實現(xiàn)控制,P0還接有提升電阻以增加其驅(qū)動能力,控制信號說明如下: </p><p> ?。?)R/W LCD讀寫控制線 </p><p> 直接接地,由于R/W=0時,LCD執(zhí)行寫入的動作,R/W=1時則執(zhí)行讀取的動作。因此簡化設計后,則無法對LCD實現(xiàn)讀取動作。所有控制數(shù)據(jù)的寫入需加入適當?shù)难舆t ,以配合LCD內(nèi)部控制信號的執(zhí)行 </p>
9、;<p> ?。?)RS 寄存器選擇控制線 </p><p> 由P0.0控制,當RS=0時,可以寫入指令寄存器,如果RS=1則寫入數(shù)據(jù)寄存器。 </p><p> (3)EN 啟用控制線 </p><p> 由P0.1控制,高電平動作。高電平時LCD動作啟用有效。 </p><p> ?。?)VO 亮度調(diào)整控制引腳 &l
10、t;/p><p> 直接接地,是字符顯示最亮。 </p><p> ?。?)D0~D7 雙向的數(shù)據(jù)總線 </p><p> LCD 數(shù)據(jù)讀寫方式以4為方式進行寫入,只用到D7~D4,分別由P0.7~P0.4控制。</p><p><b> 壓電喇叭:</b></p><p> 在IO51單板上
11、8051端口3的第4位(P3.4)是壓電喇叭的驅(qū)動位,持續(xù)送出工作脈沖可以推動喇叭發(fā)出嗶的響聲,當工作頻率越高時,聲音越清脆,工作頻率低時,聲音則較低沉,太低的工作頻率則無法使喇叭發(fā)出聲音.</p><p><b> 按鍵:</b></p><p> 按鍵采用低電平有效,由于本設計中接8051的片P2.7~p2.4口,已有內(nèi)部上拉電阻,故外電路無需加上拉電阻,斷開
12、時表現(xiàn)為高電平,當閉合時,為低電平,則該按鍵有效。</p><p><b> 匯編環(huán)境:</b></p><p> 8051匯編編譯器:KEIL匯編編譯器</p><p> 主程序控制的工作流程:</p><p><b> N</b></p><p><b>
13、; Y</b></p><p><b> 程序清單</b></p><p><b> 引腳定義</b></p><p> K1:ADJ TIME K2:HOUR K3:MIN K4:OK</p><p> ;定時器0及時中斷程序每隔5ms中斷一次</p>
14、<p> ;MOV TL0,#(8192-5000).MOD.32</p><p> ;MOV TH0,#(8192-5000)/32</p><p><b> LO EQU 24</b></p><p><b> HI EQU 99</b></p><p><b>
15、;</b></p><p> CO EQU 200 ;5ms中斷計數(shù)時間常數(shù), 計數(shù)200次表示1s</p><p> ALB EQU 20H.0 ;鬧鐘設置標志</p><p> HOUR EQU 30H ;存放小時變量</p><p> MIN EQU 31H ;存放分
16、鐘變量</p><p> SEC EQU 32H ;存放秒鐘變量</p><p> DEDA EQU 33H ;5ms計數(shù)器</p><p> SECO EQU 34H ;存放舊的秒數(shù)</p><p> X EQU 35H ;LCD位置變量</p><p>
17、; HH EQU 36H ;加載低字節(jié)</p><p> MM EQU 37H ;加載高字節(jié)</p><p><b> ;</b></p><p><b> ;KEY4</b></p><p> K1 EQU P2.4 ;按鍵1引腳定義</
18、p><p> K2 EQU P2.5 ;按鍵2引腳定義</p><p> K3 EQU P2.6 ;按鍵3引腳定義</p><p> K4 EQU P2.7 ;按鍵4引腳定義</p><p> ;LCD控制信號引腳定義</p><p> RS EQU P0.0
19、 ;LCD RS 引腳定義</p><p> EN EQU P0.1 ;LCD EN 引腳定義</p><p> SPK EQU P3.4 ;壓電喇叭信號</p><p> WLED EQU P3.7 ;工作指示燈引腳定義</p><p><b> ;</b></p>
20、;<p> ORG 0H ;程序代碼由地址0開始執(zhí)行</p><p><b> JMP START</b></p><p> ORG 0BH ;定時器0中斷地址設置</p><p> JMP T0_INT</p><p><b> ;</b
21、></p><p><b> START:</b></p><p> CLR EN ;LCD OFF</p><p> CLR ALB ;消除鬧鈴標志</p><p> MOV HH,#1 ;內(nèi)定鬧鈴時間為1h</p><p
22、> MOV MM,#I ;內(nèi)定鬧鈴時間為1 min</p><p> CALL SET_LCD ;LCD 初始化</p><p><b> CALL BZ</b></p><p><b> CALL BZ</b></p><p> CALL L
23、ED_BL ;LCD 閃動,表示程序開始執(zhí)行 </p><p> CALL INIT ;初始變量 </p><p> CALL INIT_TIMER ;初始化定時器</p><p> CALL MENU</p><p><b> 按鍵掃描子程序</b>&
24、lt;/p><p> LOOP: ;無窮循環(huán)</p><p> CALL TIME_PRO ;時間計時處理 </p><p> ;TEST KEY</p><p> JB K1 ,L1 ;未按下K1鍵則繼續(xù)掃描</p><p> ;K
25、1 KEYED..........</p><p> CALL BZ </p><p> MOV DPTR,#MADJ ;顯示執(zhí)行消息</p><p><b> MOV A,#1</b></p><p> CALL LCD_PRINT </p&
26、gt;<p> CALL SET_TIME ;設置目前時間</p><p> CALL MENU</p><p><b> JMP LOOP</b></p><p> L1: JB K2,L2 ;未按下K2 鍵則繼續(xù)掃描</p><p> ;K2
27、 KEYED</p><p> CALL BZ </p><p> MOV DPTR, #MLAL ;顯示執(zhí)行消息</p><p> MOV A, #1</p><p> CALL LCD_PRINT </p><p> CALL LOOK_ATIM
28、E ;顯示鬧鈴時間</p><p> CALL LED_BL</p><p> CALL LED_BL</p><p> CALL MENU</p><p><b> JMP LOOP</b></p><p><b> ;</b></p
29、><p> L2: JB K3,L3 ;未按下K3鍵則繼續(xù)掃描</p><p> JNB K3,$ ;等K3鍵放開</p><p> ;K3 KEYED</p><p><b> CALL BZ</b></p><p>
30、 MOV DPTR,#MAADJ</p><p><b> MOV A,#1</b></p><p> CALL LED_PRINT</p><p> CALL SET_ATIME ;設置鬧鈴時間</p><p> CALL LED_BL</p><p>
31、 CALL LED_BL</p><p><b> CALL MENU</b></p><p><b> JMP LOOP</b></p><p><b> ;</b></p><p> L3: JB K4,L4 ;未按下K4鍵則繼
32、續(xù)掃描</p><p> ;K4 KEYED ALARM ALB ON/OFF</p><p><b> CPL ALB</b></p><p> JNB ALB, L31</p><p> ;ALARM ON ;鬧鈴啟動</p>
33、<p><b> CALL BZ</b></p><p><b> CALL BZ</b></p><p><b> CALL BZ</b></p><p><b> JMP LOOP</b></p><p><b> L3
34、1:</b></p><p> ;ALARM OFF ;鬧鈴未啟動發(fā)出一聲響</p><p><b> CALL BZ</b></p><p><b> JMP LOOP</b></p><p><b> L4:</b><
35、;/p><p><b> JMP LOOP</b></p><p> LMESSI1: DB"PCLL IO51 CLCOK",0</p><p> LMESSI2: DB"TIME: ",0</p><p> TITLE: DB"PCLL.ASM
36、8051 CLOCK WITH LCDCK WITH LCD+ALARM+BZ"</p><p><b> 初始化程序 </b></p><p> INIT: ;初始化控制變量</p><p> MOV DEDA,#0 ;5ms計數(shù)器清除為0<
37、/p><p> MOV SECO,#0 ;舊的秒數(shù)清除為0</p><p> MOV SEC,#0 ;秒的變量清除為0 </p><p> MOV MIN,#0 ;分鐘變量清除為0</p><p> MOV HOUR,#0
38、 ;小時變量清除為0 </p><p><b> RET </b></p><p> INT_TIME: ;初始化定時器接口,使用定時器0 模式0計時</p><p> MOV TMOD,#00000000B ;設置定時器0工作模式為0 </p><p> MOV IE
39、,#10000010B ;啟動定時器0中斷產(chǎn)生</p><p> MOV TL0,#LO ;加載低字節(jié)</p><p> MOV THO,#H1 ;加載高字節(jié)</p><p> SETB TR0 ;啟動定時器0開始計時&
40、lt;/p><p><b> RET</b></p><p><b> 計時程序</b></p><p> USE TIMER MODE 0 </p><p> COUNT=5ms/0.001ms=5000 </p><p> T0_I
41、NT: ;定時器0中斷程序每隔5ms中斷一次</p><p> PUSH ACC ;將累加器放入堆棧</p><p> MOV TL0,#L0 ;加載低字節(jié)</p><p> MOV TH0,#H1 ;加
42、載高字節(jié) </p><p> INC DEDA ;5s計數(shù)值加1 </p><p> 1 SEC TIME OUT CHECK</p><p> MOV A,DEDA</p><p> CJNE A,#CO, TT ;一秒是否到了 </p>
43、;<p> MOV DEDA, #0 ;計數(shù)值清除為0</p><p> CPL WLED ;LED燈亮滅變換</p><p> INC SEC ;秒計數(shù)加1</p><p> MOV A,SEC
44、 </p><p> CJNE A,#60,TT ;是否1min到了?</p><p> 1 MIN TIME OUT </p><p> INC MIN ;分計數(shù)加1</p><p&g
45、t; MOV SEC,#0 ;秒計數(shù)清零</p><p> MOV A,MIN </p><p> CJNE A,#60,TT ;是否1h到了? </p><p> 1 HOUR TIME OUT</p><p> INC HOUR
46、 ;小時計數(shù)加1</p><p> MOV MIN,#0 ;分計數(shù)清零</p><p> MOV A,HOUR </p><p> CJNE A#24,TT ;是否24h到了? <
47、;/p><p> MOV SEC,#0 ;秒鐘變量清除為0</p><p> MOV MIN,#0 ;分鐘變量清除為0</p><p> MOV HOUR,#0 ;小時變量清除為0</p><p><
48、b> TT:</b></p><p> POP ACC ;將累加器由堆棧取出</p><p><b> RETI</b></p><p> ;K2:HH K3:MM K4:OK ;設置目前時間</p><p>
49、<b> SET_TIME</b></p><p> CLR TRO ;定時器動作暫停</p><p> Mov sec,#0 ;秒鐘變量清除為0</p><p> ??;SCAN 3 KEY TO ADJ;。。。。</p>
50、<p><b> SO:</b></p><p> JB K2,S1 ;未按下K2鍵繼續(xù)掃描 </p><p> ??;K1 KEYED ADJ HH 。。。。 ;小時調(diào)整</p><p> CALL BZ
51、 ;發(fā)出嗶的一聲 </p><p> INC HOUR ;小事計數(shù)加1 </p><p> MOV A ,HOUR </p><p> CJNE A ,# 24,S11 ;是否24小時到了?</p><p> MOV HOUR ,# 0
52、 ;小時變量清除為零</p><p><b> S11</b></p><p> CALL CONV ;轉(zhuǎn)換數(shù)據(jù)至LCD </p><p> MOV R5 ,#20 ;延遲一下</p>
53、<p> CALL DELAY </p><p> JMP S0 ;繼續(xù)程序執(zhí)行 </p><p><b> ??;……………………</b></p><p> S1:JB K3 ,S2 ;未按下K3鍵則繼續(xù)掃描
54、 </p><p> ;K2 KEYED ADJ MM………….. ;分鐘調(diào)整</p><p><b> CALL BZ </b></p><p> INC MIN ;分鐘計數(shù)器加1</p><p> MOV A,MIN
55、 </p><p> CJNE A ,#60 S21 ;是否60min到了?</p><p> MOV MIN ,#0 ;分計數(shù)器清0</p><p><b> S21:</b></p><p> CALL CONV
56、 ;轉(zhuǎn)換顯示數(shù)據(jù)到LCD</p><p> MOV R5,#20 ;延遲一下</p><p> CALL DELA; </p><p> JMP SO ;繼續(xù)執(zhí)行</p><p>
57、;<b> ;……………..</b></p><p> S2:JB K4 ,SO ;未按下K3鍵則繼續(xù)掃描</p><p> JNB K4 ,S ;有按下則等待放開</p><p> K3 KEYED OK …..
58、 ;設置完成</p><p><b> CALL BZ </b></p><p><b> CALL BZ </b></p><p> SETB TRO ;啟動定時器</p><p><b> RET <
59、/b></p><p><b> ………………</b></p><p> ;A:DIG X:LCD X POS ;在LCD第一行顯示數(shù)字</p><p> ;SHOW ON LCD LINE1</p><p> SHOW_DIG: </p><p&g
60、t; MOV B ,#10 ;設置被除數(shù)</p><p> DIV AB ;除法運算,結(jié)果A存除數(shù),B存余數(shù)</p><p> ADD A ,#30H ;A為十進制,轉(zhuǎn)換為字符</p><p> PUSH B
61、 ;B放入堆棧暫存</p><p> MOV B ,X ;設置LCD顯示的位置</p><p> CALL LCDP1 ;由LCD顯示出來</p><p> POP B ;B有堆棧取出來</p><p> MOV A
62、,B ;B為個位數(shù)</p><p> ADD A ,#30H ;轉(zhuǎn)換為字符</p><p> INC X ;LCD顯示位置加1</p><p> MOV B,X ;設置LCD顯示位置</p>
63、<p> CALL LCDP1 ;由LCD顯示出來</p><p><b> RET</b></p><p><b> ;……………..</b></p><p> ;A:DIG X:LCD X POS</p><p> ;SHOW_D
64、IG2:</p><p><b> MOV B,#10</b></p><p><b> DIV AB </b></p><p> ADD A,#30H</p><p><b> INC X </b></p><p><b> MOV
65、 B ,X</b></p><p> CALL LCDP2</p><p><b> RET</b></p><p><b> ;………………</b></p><p> ;顯示現(xiàn)在的時間 時時:分分:秒秒 數(shù)據(jù)</p><p> ;CONVERT TO
66、ASCII AND SHOW </p><p><b> CONV:</b></p><p> ;SHOW HOUR ….. ;顯示小時數(shù)</p><p> MOV A ,HOUR</p><p><b> MOV X ,#5</b></p>
67、<p> CALL SHOW _DIG2</p><p><b> INC X</b></p><p> MOV A,#’:’</p><p><b> MOV B ,X</b></p><p> CALL LCDP2</p><p> ;SHOW M
68、IN ……………. ;顯示分鐘數(shù)據(jù)</p><p> MOV A ,MIN</p><p><b> INC X </b></p><p> CALL SHOW_DIG2</p><p><b> INC X </b></p><p> M
69、OV A,#’:’</p><p><b> MOV B, X </b></p><p> CALL LCDP2</p><p> ;SHOW SEC………………. ;顯示時間秒數(shù)</p><p> MOV A ,SEC</p><p><b>
70、 INC X</b></p><p> CALL SHOW_DIG2</p><p><b> RET</b></p><p> INIT_LCD1: ;LCD控制指令初始化</p><p> MOV A,#28H ;雙行顯示,字符使
71、用5*7點陣</p><p> CALL WCOM </p><p> MOV A,#0CH ;光標出現(xiàn),不閃爍</p><p> CALL WCOM</p><p> MOV A,#0EH ;每向右移動一位,顯示屏不移動<
72、/p><p> CALL WCOM</p><p> MOV A#01H ;清除LCD顯示屏</p><p> CALL WCOM </p><p><b> RET</b></p><p> ;---------------------------
73、--------</p><p> CLR_LINE1 ;清除LCD的第一行字符</p><p> MOV A,#80H ;設置第一行地址</p><p> CALL WCOM </p><p> MOV R0 ,#24
74、 ;設置計數(shù)器</p><p> C1:MOV A,#’’ ;載入空格符至LCD</p><p> CALL WDATA ;輸出字符至LCD</p><p> DJNZ R0 ,C1 ;計數(shù)結(jié)束</p><
75、p><b> RET</b></p><p> ;--------------------------------</p><p> ;A=LIEN 1 OR 2 ;在LCD的第一行或第二行顯示字符</p><p> ;DPTR=MESSAGE POINTER </p><
76、;p> LCD_PRINT:</p><p> CJNE A ,#1,LINE2 ;判斷是否是第一行</p><p> LINE1: MOV A,#80H ;設置LCD的第一行地址</p><p> CALL WCOM ;寫入命令</p>
77、<p> CALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p> MOV A,#80H ;設置LCD的第一行地址</p><p> CALL WCOM ;寫入命令</p><p><b> JMP FILL
78、</b></p><p> LINE2: MOV A,#OCOH</p><p> CALL WCOM </p><p> CALL CLR_LINE</p><p> MOV A,#OCOH</p><p><b> CALL WCOM</b></p><
79、;p> FILL: ;填入字符</p><p><b> CLR A </b></p><p> MOVC A ,@A+DPTR ;由消息區(qū)取出字符</p><p> CJNE A#0,LC1 ;判斷是否是結(jié)束碼<
80、;/p><p><b> RET</b></p><p><b> LC1:</b></p><p> CALL WDATA ;寫入數(shù)據(jù)</p><p> INC DPTR ;指針加1</p>&
81、lt;p> JMP FILL ;繼續(xù)填入字符</p><p> RET </p><p> ;--------------------------------</p><p> CLR_LINE: ;清除該行LCD字符</p>&l
82、t;p> MOV R0,#24 </p><p> CL1: MOV A,#’’ </p><p> CALL WDATA</p><p> DJNZ R0, CL1</p><p><b> RET</b></p><p> ;-------------
83、------------------- </p><p> DE:MOV R7,#5 ;短暫延時</p><p> DJNZ R7,#5 </p><p><b> DJNZ R7,$</b></p><p><b> RET</b></p>
84、<p> ;-------------------------</p><p> EN1: ;短脈沖產(chǎn)生啟用信號</p><p><b> SETB EN</b></p><p><b> CALL DE</b></p><
85、;p><b> CLR EN</b></p><p><b> CALL DE</b></p><p><b> RET</b></p><p> INIT_LCD: ;4位I/O控制LCD接口初始化</p><p&g
86、t; MOV PO,#30H ;RS=0 R/W=0 D7~D4=0011</p><p> CALL EN1 </p><p> MOV PO ,#30H</p><p><b> CALL EN1</b></p><p>
87、MOC PO,#30H</p><p><b> CALL EN1</b></p><p> MOV PO ,#20H ;啟動4位接口指令</p><p><b> CALL EN1</b></p><p> CALL INIT_LCD1
88、 ;LCD指令設置初始化</p><p><b> RET</b></p><p> ;-----------------------</p><p> WCOM: ;以4位控制方式將命令寫至LCD</p><p> ;WRITE HI 4BI
89、T ;寫入高4位數(shù)據(jù)</p><p> MOV PO , A</p><p> CLR RS ;設置寫入命令</p><p><b> CALL EN1</b></p><p> RLC A
90、 ;左移4位</p><p><b> RLC A</b></p><p><b> RLC A</b></p><p><b> RLC A</b></p><p> ;WRITE LO 4 BIT ;寫入低4
91、位</p><p><b> MOV PO,A</b></p><p> CLR RS;SET COMMAN ;設置寫入命令</p><p><b> CALL EN1</b></p><p><b> RET</b></p>
92、<p><b> ;</b></p><p> WDATA: ;以4位控制方式將數(shù)據(jù)寫入LCD</p><p> ;WRITE HO 4 BIT ;寫入高4位數(shù)據(jù)</p><p> MOV PO,A </p>&
93、lt;p> SETB RS ;設置寫入數(shù)據(jù)</p><p><b> CALL EN1</b></p><p><b> RLC A</b></p><p> RLC A ;左移4位</p&g
94、t;<p><b> RLC A</b></p><p><b> RLC A</b></p><p> ;WRITE LO 4 BIT</p><p><b> MOV PO,A</b></p><p> SETB RS
95、 ;設置寫入數(shù)據(jù)</p><p><b> CALL EN1</b></p><p><b> RET</b></p><p><b> ;</b></p><p> ;PRINT A CHAR ON LCD LINE 1 </p>
96、<p> ;A=ASC DATA</p><p> ;B=LINE X POS.</p><p> LCDP1: ;在第一行顯示字符</p><p><b> ;LINE 1</b></p><p> PUSH ACC
97、 ;將A放入堆棧</p><p> MOV A,B ;設置現(xiàn)實的地址</p><p> ADD A,#80H ;設置LCD第一行地址</p><p> CALL WCOM ;寫入命
98、令</p><p> POP ACC ;由堆棧取出A</p><p> CALL WDATA ;寫入數(shù)據(jù)</p><p><b> RET</b></p><p><b> ;</b>&
99、lt;/p><p> ;PRINT A CHAR ON LCD LINE 2</p><p> ;A=ASC DATA</p><p> ;B=LINE X POS.</p><p><b> LCDP2:</b></p><p><b> ;LINE 1</b><
100、;/p><p><b> PUSH ACC</b></p><p><b> MOVE A,B</b></p><p> ADD A,#0C0H</p><p><b> CALL WCOM</b></p><p><b> POP AC
101、C</b></p><p> CALL WDATA</p><p><b> RET</b></p><p><b> ;</b></p><p> ;DELAY R5*10ms ;延遲子程序</p><p>
102、DELAY: ;總延遲時間R5*10ms</p><p> MOV R6,#50 </p><p> D1:MOV R7,#100</p><p><b> DJNZ R7,$</b></p><p> DJNZ R6,D1</p><
103、;p> DJNZ R5,DELAY</p><p><b> RET</b></p><p><b> ;</b></p><p> LED_BL ;工作指示燈閃爍</p><p><b> MOV R4,#4<
104、;/b></p><p> LEO:CPL WLED ;位相反</p><p> MOV R5,#10 ;延遲100ms</p><p> CALL DELAY</p><p> DJNZ R4,LE0</p><
105、;p><b> RET</b></p><p> MMENU:DB"1-SET 2-AL 3-SAL",0 ;LCD顯示數(shù)據(jù)</p><p> MADJ:DB"K2:H K3:M K4:OK",0</p><p> MLAL:DB"NOW ALARM TIME:&
106、quot;,0</p><p> MAADJ:DB"K2 K3:M K4:OK",0</p><p> MENU: ;LCD顯示菜單</p><p> MOV DPTR,#MMENU</p><p><b> MOV A,#1</b>
107、</p><p> CALL LCD_PRINT</p><p><b> RET</b></p><p><b> ;</b></p><p> BZ: ;壓電喇叭發(fā)出嘩的一聲</p><p><
108、;b> MOV R6,#0</b></p><p> BI:CALL DEX</p><p><b> CPL,SPK</b></p><p> DJNZ R6,B1</p><p> MOV R5,#10 </p><p&
109、gt; CALL DELAY</p><p><b> RET</b></p><p><b> ;</b></p><p> DEX:MOV R7,#180 ;短暫延遲</p><p><b> DE1:NOP</b>&l
110、t;/p><p> DJNZ R7,DE1</p><p><b> RET</b></p><p><b> ;</b></p><p> ;LOOK ALARM TIME ;查看已設置的鬧鐘時間</p><p> LOOK_
111、ATIME:</p><p> ;SHOW HOUR............. ;顯示小時數(shù) </p><p><b> MOV A,HH</b></p><p><b> MOV X,#5</b></p><p> CALL SHOW_DIG
112、2</p><p><b> INC X</b></p><p> MOV A,#':'</p><p><b> MOV B,X</b></p><p> CALL LCDP2</p><p> ;SHOW MIN.........
113、 ;顯示分鐘數(shù)</p><p><b> MOV A,MM</b></p><p><b> INC X</b></p><p> CALL SOW_DIG2</p><p><b> INC.X</b></p><
114、p> MOV A,#':'</p><p><b> MOV B,X</b></p><p> CALLL CDP2</p><p> SHOW SEC……………….. ;顯示秒鐘數(shù)為0</p><p><b> MOV A,#0 <
115、;/b></p><p><b> INC X</b></p><p> CALL SHOW_DIG2</p><p><b> RET</b></p><p><b> 鬧鐘時間設置</b></p><p> K2:HH K3:MM K
116、4:OK ;顯示鬧鐘時間</p><p> SET_ATIME:</p><p> CALL LOOK_ATIME ;加載鬧鐘時間數(shù)據(jù)</p><p> SCEAN 3 KEY TO ADJ………………….</p><p><b>
117、ASO:</b></p><p> JB K2,AS1 ;未按下K2繼續(xù)掃描</p><p> K1 KEYED ADJ HH……. ;調(diào)整小時</p><p><b> CALL BZ</b></p><p&
118、gt;<b> INC HH</b></p><p><b> MOV A,HH</b></p><p> CJNE A,#24,AS11 ;是否24h到了?</p><p> MOV HH,#0 ;小時清零&l
119、t;/p><p><b> AS11:</b></p><p> CALL LOOK_ATIME ;加載鬧鐘數(shù)據(jù)到LCD</p><p> MOV R5,#20 ;延遲一下</p><p> CALL DELAY</p>
120、;<p> JMP ASO </p><p> ………………………………………………..</p><p> AS1: JB K3,AS2 </p><p> K2 KEYED ADJ MM…….</p><p><b>
121、CALL BZ</b></p><p><b> INC MM</b></p><p><b> MOV A,MM</b></p><p> CJNE A,#60,AS21</p><p><b> MOV MM,#0</b></p><
122、p><b> AS21:</b></p><p> CALL LOOK_ATIME</p><p> MOV R5,#20</p><p> CALL DELAY</p><p><b> JMP ASO</b></p><p> …………………………………
123、…………………….</p><p> AS2: JB K4,AS0 ;未按下K4鍵則繼續(xù)掃描</p><p> JNB K4,$ ;燈K4鍵放開</p><p> K3 KEYED OK………………………….</p><p><b&
124、gt; CALL BZ</b></p><p><b> CALL BZ</b></p><p><b> RET</b></p><p> --------------------------------------------------------</p><p> JB
125、 ALB,TI3</p><p><b> RET</b></p><p><b> TI:</b></p><p> CHECK ALARM………………….. ;檢查鬧鐘時間是否到了</p><p> MOV A,HOUR </p><p>
126、<b> MOV B,HH</b></p><p> CJNE A,B,BK ;檢查鬧鐘小時時間</p><p><b> MOV A,MIN</b></p><p><b> MOV B,MM</b></p><p>
127、 CJNE A,B,BK ;檢查鬧鐘分鐘時間</p><p> TIME MATCH……………………..</p><p> CALL TIME_OUT ;執(zhí)行檢查鬧鐘時間到了處理</p><p><b> BK: </b></p><p&
128、gt;<b> RET</b></p><p> ---------------------------------------------------- </p><p> TIME_OUT: ;所設時間到了</p><p> M1: CALL LED_BL
129、 ;LED閃動</p><p> CALL BZ </p><p> KEY 4 STOP………………. </p><p> JB K4,M1 ;等待是否按下K4鍵</p><p> JNB K4,$ ;有
130、按下則等待放開</p><p> CALL LED_BL ;LED閃動</p><p> CLR ALB ;清除鬧鈴位</p><p><b> RET </b></p><p> ----------------------
131、----------------------------------- </p><p><b> END</b></p><p><b> 英文: 89c51</b></p><p> Pin Description</p><p><b> VCC</b></
132、p><p> Supply voltage.</p><p><b> GND</b></p><p><b> Ground.</b></p><p><b> Port 0</b></p><p> Port 0 is an 8-bit ope
133、n drain bidirectional I/O port. As an</p><p> output port each pin can sink eight TTL inputs. When 1s</p><p> are written to port 0 pins, the pins can be used as highimpedance</p><p
134、><b> inputs.</b></p><p> Port 0 may also be configured to be the multiplexed loworder</p><p> address/data bus during accesses to external program</p><p> and dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計---- lcd電子定時鬧鐘設計
- 單片機課程設計—帶有l(wèi)cd的定時鬧鐘
- 單片機課程設計--帶有l(wèi)cd顯示的定時鬧鐘
- 基于單片機的定時鬧鈴設計開題報告
- 單片機課程設計--定時插座
- lcd單片機原理課程設計
- 單片機定時鬧鐘課程設計
- 單片機在定時鬧鈴中的應用
- lcd顯示設計單片機課程設計
- 單片機定時鬧鐘課程設計
- 定時鬧鐘—單片機課程設計
- 單片機課程設計—定時鬧鐘設計
- 單片機課程設計—定時鬧鐘設計
- 單片機課程設計---定時鬧鐘設計
- 單片機課程設計--定時鬧鐘設計
- 單片機lcd系統(tǒng)顯示課程設計
- 數(shù)字鐘單片機課程設計-- lcd顯示的定時鬧鐘制作
- 課程設計--單片機定時鬧鐘設計報告
- 單片機課程設計---定時鬧鐘的設計
- 單片機課程設計--基于51單片機的定時鬧鐘設計
評論
0/150
提交評論