2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  學(xué)號(hào):xxx</b></p><p><b>  姓名:xxx</b></p><p><b>  指導(dǎo)老師:xxx </b></p><p>  題目:定時(shí)鬧鈴LCD&

2、lt;/p><p>  目的:通過本課程設(shè)計(jì)可以學(xué)習(xí)8051定時(shí)器時(shí)間計(jì)時(shí)處理,按鍵掃描及LCD顯示的設(shè)計(jì)方法。</p><p><b>  功能說明:</b></p><p>  定時(shí)鬧鈴的基本功能如下:</p><p>  1,文字型LCD(16x2)顯示。</p><p>  2,顯示格式為“時(shí)

3、時(shí) 分分”。</p><p>  3,由LED閃動(dòng)來做秒計(jì)數(shù)表示。</p><p>  4,具有4個(gè)按鍵來做功能設(shè)置,可以設(shè)置現(xiàn)在的時(shí)間及顯示鬧鈴設(shè)置時(shí)間。</p><p>  程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,LCD顯示“00 00”,按下操作鍵K1~K4動(dòng)作如下:</p><p>  操作鍵K1:設(shè)置現(xiàn)在的時(shí)間。<

4、;/p><p>  操作鍵K2:顯示鬧鈴設(shè)置時(shí)間。</p><p>  操作鍵K3:設(shè)置鬧鈴時(shí)間。</p><p>  操作鍵K4:鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)為ON時(shí)連續(xù)三次發(fā)出嗶的一聲,設(shè)為OFF時(shí)發(fā)出嗶的一聲。</p><p>  設(shè)置現(xiàn)在的時(shí)間或是鬧鈴時(shí)間設(shè)置如下:</p><p>  操作鍵K1:調(diào)整時(shí)。<

5、;/p><p>  操作鍵K2:調(diào)整分。</p><p>  操作鍵K3:設(shè)置完成。</p><p>  時(shí)間到時(shí)發(fā)出一陣聲響,按下K4鍵可以停止聲響。</p><p><b>  控制電路:</b></p><p>  定時(shí)鬧鈴的控制電路分為以下幾部分: </p><p>&

6、lt;b>  ? 單片機(jī)8051</b></p><p><b>  ? LCD顯示器 </b></p><p><b>  ? 按鍵控制 </b></p><p><b>  ? 壓電喇叭 </b></p><p>  完整的控制電路圖如下: </p

7、><p><b>  LCD接口設(shè)計(jì):</b></p><p>  LCD接口可以分為8位及4位控制方式,本課程設(shè)計(jì)使用的是4位控制方式,使用D4~D7數(shù)據(jù)線來傳送控制命令及數(shù)據(jù)。使用4位數(shù)據(jù)線做控制時(shí)需分兩次來傳送,先送出高4位數(shù)據(jù),再送出低4位數(shù)據(jù)。 </p><p>  4為控制電路如圖所示:</p><p>  以8

8、051 P0的6條輸出控制線來實(shí)現(xiàn)控制,P0還接有提升電阻以增加其驅(qū)動(dòng)能力,控制信號(hào)說明如下: </p><p> ?。?)R/W LCD讀寫控制線 </p><p>  直接接地,由于R/W=0時(shí),LCD執(zhí)行寫入的動(dòng)作,R/W=1時(shí)則執(zhí)行讀取的動(dòng)作。因此簡(jiǎn)化設(shè)計(jì)后,則無法對(duì)LCD實(shí)現(xiàn)讀取動(dòng)作。所有控制數(shù)據(jù)的寫入需加入適當(dāng)?shù)难舆t ,以配合LCD內(nèi)部控制信號(hào)的執(zhí)行 </p>

9、;<p>  (2)RS 寄存器選擇控制線 </p><p>  由P0.0控制,當(dāng)RS=0時(shí),可以寫入指令寄存器,如果RS=1則寫入數(shù)據(jù)寄存器。 </p><p> ?。?)EN 啟用控制線 </p><p>  由P0.1控制,高電平動(dòng)作。高電平時(shí)LCD動(dòng)作啟用有效。 </p><p> ?。?)VO 亮度調(diào)整控制引腳 &l

10、t;/p><p>  直接接地,是字符顯示最亮。 </p><p> ?。?)D0~D7 雙向的數(shù)據(jù)總線 </p><p>  LCD 數(shù)據(jù)讀寫方式以4為方式進(jìn)行寫入,只用到D7~D4,分別由P0.7~P0.4控制。</p><p><b>  壓電喇叭:</b></p><p>  在IO51單板上

11、8051端口3的第4位(P3.4)是壓電喇叭的驅(qū)動(dòng)位,持續(xù)送出工作脈沖可以推動(dòng)喇叭發(fā)出嗶的響聲,當(dāng)工作頻率越高時(shí),聲音越清脆,工作頻率低時(shí),聲音則較低沉,太低的工作頻率則無法使喇叭發(fā)出聲音.</p><p><b>  按鍵:</b></p><p>  按鍵采用低電平有效,由于本設(shè)計(jì)中接8051的片P2.7~p2.4口,已有內(nèi)部上拉電阻,故外電路無需加上拉電阻,斷開

12、時(shí)表現(xiàn)為高電平,當(dāng)閉合時(shí),為低電平,則該按鍵有效。</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>  ;定時(shí)器0及時(shí)中斷程序每隔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中斷計(jì)數(shù)時(shí)間常數(shù), 計(jì)數(shù)200次表示1s</p><p>  ALB EQU 20H.0 ;鬧鐘設(shè)置標(biāo)志</p><p>  HOUR EQU 30H ;存放小時(shí)變量</p><p>  MIN EQU 31H ;存放分

16、鐘變量</p><p>  SEC EQU 32H ;存放秒鐘變量</p><p>  DEDA EQU 33H ;5ms計(jì)數(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控制信號(hào)引腳定義</p><p>  RS EQU P0.0

19、 ;LCD RS 引腳定義</p><p>  EN EQU P0.1 ;LCD EN 引腳定義</p><p>  SPK EQU P3.4 ;壓電喇叭信號(hào)</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 ;定時(shí)器0中斷地址設(shè)置</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 ;消除鬧鈴標(biāo)志</p><p>  MOV HH,#1 ;內(nèi)定鬧鈴時(shí)間為1h</p><p

22、>  MOV MM,#I ;內(nèi)定鬧鈴時(shí)間為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 閃動(dòng),表示程序開始執(zhí)行 </p><p>  CALL INIT ;初始變量 </p><p>  CALL INIT_TIMER ;初始化定時(shí)器</p><p>  CALL MENU</p><p><b>  按鍵掃描子程序</b>&

24、lt;/p><p>  LOOP: ;無窮循環(huán)</p><p>  CALL TIME_PRO ;時(shí)間計(jì)時(shí)處理 </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 ;設(shè)置目前時(shí)間</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 ;顯示鬧鈴時(shí)間</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 ;設(shè)置鬧鈴時(shí)間</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 ;鬧鈴啟動(dòng)</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 ;鬧鈴未啟動(dòng)發(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計(jì)數(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、 ;小時(shí)變量清除為0 </p><p><b>  RET </b></p><p>  INT_TIME: ;初始化定時(shí)器接口,使用定時(shí)器0 模式0計(jì)時(shí)</p><p>  MOV TMOD,#00000000B ;設(shè)置定時(shí)器0工作模式為0 </p><p>  MOV IE

39、,#10000010B ;啟動(dòng)定時(shí)器0中斷產(chǎn)生</p><p>  MOV TL0,#LO ;加載低字節(jié)</p><p>  MOV THO,#H1 ;加載高字節(jié)</p><p>  SETB TR0 ;啟動(dòng)定時(shí)器0開始計(jì)時(shí)&

40、lt;/p><p><b>  RET</b></p><p><b>  計(jì)時(shí)程序</b></p><p>  USE TIMER MODE 0 </p><p>  COUNT=5ms/0.001ms=5000 </p><p>  T0_I

41、NT: ;定時(shí)器0中斷程序每隔5ms中斷一次</p><p>  PUSH ACC ;將累加器放入堆棧</p><p>  MOV TL0,#L0 ;加載低字節(jié)</p><p>  MOV TH0,#H1 ;加

42、載高字節(jié) </p><p>  INC DEDA ;5s計(jì)數(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 ;計(jì)數(shù)值清除為0</p><p>  CPL WLED ;LED燈亮滅變換</p><p>  INC SEC ;秒計(jì)數(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 ;分計(jì)數(shù)加1</p><p&g

45、t;  MOV SEC,#0 ;秒計(jì)數(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í)計(jì)數(shù)加1</p><p>  MOV MIN,#0 ;分計(jì)數(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 ;小時(shí)變量清除為0</p><p><

48、b>  TT:</b></p><p>  POP ACC ;將累加器由堆棧取出</p><p><b>  RETI</b></p><p>  ;K2:HH K3:MM K4:OK ;設(shè)置目前時(shí)間</p><p>

49、<b>  SET_TIME</b></p><p>  CLR TRO ;定時(shí)器動(dòng)作暫停</p><p>  Mov sec,#0 ;秒鐘變量清除為0</p><p> ?。籗CAN 3 KEY TO ADJ;。。。。</p>

50、<p><b>  SO:</b></p><p>  JB K2,S1 ;未按下K2鍵繼續(xù)掃描 </p><p>  ;K1 KEYED ADJ HH 。。。。 ;小時(shí)調(diào)整</p><p>  CALL BZ

51、 ;發(fā)出嗶的一聲 </p><p>  INC HOUR ;小事計(jì)數(shù)加1 </p><p>  MOV A ,HOUR </p><p>  CJNE A ,# 24,S11 ;是否24小時(shí)到了?</p><p>  MOV HOUR ,# 0

52、 ;小時(shí)變量清除為零</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 ;分鐘計(jì)數(shù)器加1</p><p>  MOV A,MIN

55、 </p><p>  CJNE A ,#60 S21 ;是否60min到了?</p><p>  MOV MIN ,#0 ;分計(jì)數(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、 ;設(shè)置完成</p><p><b>  CALL BZ </b></p><p><b>  CALL BZ </b></p><p>  SETB TRO ;啟動(dòng)定時(shí)器</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è)置被除數(shù)</p><p>  DIV AB ;除法運(yùn)算,結(jié)果A存除數(shù),B存余數(shù)</p><p>  ADD A ,#30H ;A為十進(jìn)制,轉(zhuǎn)換為字符</p><p>  PUSH B

61、 ;B放入堆棧暫存</p><p>  MOV B ,X ;設(shè)置LCD顯示的位置</p><p>  CALL LCDP1 ;由LCD顯示出來</p><p>  POP B ;B有堆棧取出來</p><p>  MOV A

62、,B ;B為個(gè)位數(shù)</p><p>  ADD A ,#30H ;轉(zhuǎn)換為字符</p><p>  INC X ;LCD顯示位置加1</p><p>  MOV B,X ;設(shè)置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í)間 時(shí)時(shí):分分:秒秒 數(shù)據(jù)</p><p>  ;CONVERT TO

66、ASCII AND SHOW </p><p><b>  CONV:</b></p><p>  ;SHOW HOUR ….. ;顯示小時(shí)數(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í)間秒數(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點(diǎn)陣</p><p>  CALL WCOM </p><p>  MOV A,#0CH ;光標(biāo)出現(xiàn),不閃爍</p><p>  CALL WCOM</p><p>  MOV A,#0EH ;每向右移動(dòng)一位,顯示屏不移動(dòng)<

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 ;設(shè)置第一行地址</p><p>  CALL WCOM </p><p>  MOV R0 ,#24

74、 ;設(shè)置計(jì)數(shù)器</p><p>  C1:MOV A,#’’ ;載入空格符至LCD</p><p>  CALL WDATA ;輸出字符至LCD</p><p>  DJNZ R0 ,C1 ;計(jì)數(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 ;設(shè)置LCD的第一行地址</p><p>  CALL WCOM ;寫入命令</p>

77、<p>  CALL CLR_LINE ;清除該行字符數(shù)據(jù)</p><p>  MOV A,#80H ;設(shè)置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 ;短暫延時(shí)</p><p>  DJNZ R7,#5 </p><p><b>  DJNZ R7,$</b></p><p><b>  RET</b></p>

84、<p>  ;-------------------------</p><p>  EN1: ;短脈沖產(chǎn)生啟用信號(hào)</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 ;啟動(dòng)4位接口指令</p><p><b>  CALL EN1</b></p><p>  CALL INIT_LCD1

88、 ;LCD指令設(shè)置初始化</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 ;設(shè)置寫入命令</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 ;設(shè)置寫入命令</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è)置寫入數(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è)置寫入數(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 ;設(shè)置現(xiàn)實(shí)的地址</p><p>  ADD A,#80H ;設(shè)置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: ;總延遲時(shí)間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 ;查看已設(shè)置的鬧鐘時(shí)間</p><p>  LOOK_

111、ATIME:</p><p>  ;SHOW HOUR............. ;顯示小時(shí)數(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>  鬧鐘時(shí)間設(shè)置</b></p><p>  K2:HH K3:MM K

116、4:OK ;顯示鬧鐘時(shí)間</p><p>  SET_ATIME:</p><p>  CALL LOOK_ATIME ;加載鬧鐘時(shí)間數(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)整小時(shí)</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 ;小時(shí)清零&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………………….. ;檢查鬧鐘時(shí)間是否到了</p><p>  MOV A,HOUR </p><p>

126、<b>  MOV B,HH</b></p><p>  CJNE A,B,BK ;檢查鬧鐘小時(shí)時(shí)間</p><p><b>  MOV A,MIN</b></p><p><b>  MOV B,MM</b></p><p> 

127、 CJNE A,B,BK ;檢查鬧鐘分鐘時(shí)間</p><p>  TIME MATCH……………………..</p><p>  CALL TIME_OUT ;執(zhí)行檢查鬧鐘時(shí)間到了處理</p><p><b>  BK: </b></p><p&

128、gt;<b>  RET</b></p><p>  ---------------------------------------------------- </p><p>  TIME_OUT: ;所設(shè)時(shí)間到了</p><p>  M1: CALL LED_BL

129、 ;LED閃動(dòng)</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閃動(dòng)</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等.壓縮文件請(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. 眾賞文庫僅提供信息存儲(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)論