led數(shù)字倒計(jì)時(shí)器課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  淮陰師范學(xué)院物理與電子電氣工程學(xué)院</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  一、設(shè)計(jì)任務(wù)與要求</b></p><p>  近年來隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透,單片機(jī)的應(yīng)用正在不斷深入人們的生活,同時(shí)帶動(dòng)傳統(tǒng)控制檢測日新月異。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,

2、單片機(jī)往往作為一個(gè)核心部件來使用,僅單片機(jī)方面的知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),針對(duì)具體應(yīng)用特點(diǎn)與軟件結(jié)合。本項(xiàng)目討論了LED數(shù)字倒計(jì)時(shí)器的設(shè)計(jì)與制作,此方案線路簡單,成本低,應(yīng)用前景廣闊。</p><p>  本次設(shè)計(jì)的任務(wù)與要求是,使基于AT89C51單片機(jī)的LED數(shù)字倒計(jì)時(shí)器主要具有如下功能:</p><p>  (1)LED數(shù)碼管顯示倒計(jì)時(shí)時(shí)間。</p><

3、p> ?。?)倒計(jì)時(shí)過程中能設(shè)置多個(gè)鬧鐘,當(dāng)?shù)褂?jì)時(shí)值倒計(jì)到設(shè)定值時(shí)會(huì)發(fā)出約2s的報(bào)警聲音。</p><p> ?。?)通過按鍵可以對(duì)倒計(jì)時(shí)設(shè)定初值。倒計(jì)時(shí)初始值范圍在24:00:00-00:00:60之間,用戶可根據(jù)需要對(duì)其進(jìn)行設(shè)置,設(shè)置成功后復(fù)位初始值為成功設(shè)定值。</p><p><b>  二、硬件電路設(shè)計(jì)</b></p><p>

4、  設(shè)計(jì)電路采用模塊化設(shè)計(jì),主要由AT89C51單片機(jī)、復(fù)位電路、LED顯示模塊和控制模塊組成(如圖2.1)。</p><p>  圖2.1 基于AT89C51單片機(jī)的數(shù)字倒計(jì)時(shí)器系統(tǒng)框圖</p><p>  圖2.2 基于AT89C51單片機(jī)的數(shù)字倒計(jì)時(shí)器電路原理圖(元件清單見附錄一)</p><p> ?。?)AT89C51單片機(jī)控制模塊</p>

5、<p>  圖2.3 單片機(jī)控制模板</p><p><b> ?。?)復(fù)位電路</b></p><p>  復(fù)位是單片機(jī)的初始化操作,只需給AT89S51的復(fù)位引腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就可得單片機(jī)復(fù)位,復(fù)位時(shí),PC初始化為0000H,使單片機(jī)從OUT單元開始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外由于程序運(yùn)行出錯(cuò)或

6、操作錯(cuò)誤而使系統(tǒng)處于死鎖狀態(tài),為擺脫死鎖狀態(tài),也需按復(fù)位鍵使得RST腳為高電平,使單片機(jī)重新啟動(dòng)。</p><p><b>  圖2.4復(fù)位電路</b></p><p><b>  LED顯示模塊</b></p><p>  圖2.5 LED顯示模塊</p><p><b> ?。?)按鍵

7、電路</b></p><p>  按鍵電路的按鍵功能說明:</p><p> ?。?)K1用于設(shè)置時(shí)間的分鐘。</p><p>  (2)K2用于設(shè)置小時(shí)以及設(shè)置鬧鐘的開關(guān)。</p><p> ?。?)K3用于設(shè)置分鐘和鬧鐘的分鐘。</p><p> ?。?)K4用于設(shè)置完成退出。</p>&

8、lt;p><b>  圖2.6 按鍵模塊</b></p><p><b>  軟件設(shè)計(jì)</b></p><p><b> ?。?)程序流程圖</b></p><p>  圖3.1 LED數(shù)字倒計(jì)時(shí)器程序流程圖</p><p>  程序清單(匯編語言)</p>

9、;<p>  K1 EQU p1.0</p><p>  K2 EQU P1.1</p><p>  K3 EQU p1.2</p><p>  K4 EQU P1.3</p><p><b>  ORG 0000H</b></p><p><b>  LJMP MAIN&

10、lt;/b></p><p><b>  ORG 000BH</b></p><p><b>  LJMP TIME</b></p><p><b>  ORG 0100H</b></p><p>  MAIN: MOV SP, #50H</p><p

11、>  MOV 20H, #3CH ;時(shí)間 BIN SECOND</p><p>  MOV 21H, #3CH ; BIN MINUTE</p><p>  MOV 22H, #18H ; BIN HOUR </p><p>  MOV 23H, #01H ;鬧鈴 BIN MINUTE</p><

12、p>  MOV 24H, #01H ; BIN HOUR</p><p>  MOV 25H, #00H ;定義一個(gè)標(biāo)志位</p><p>  MOV 30H, #00H ;時(shí)間 BCD SECOND</p><p>  MOV 31H, #00H </p><p>  MOV 32

13、H, #00H ; BCD MINUTE</p><p>  MOV 33H, #00H</p><p>  MOV 34H, #00H ; BCD HOUR </p><p>  MOV 35H, #00H</p><p>  MOV 36H, #01H ;鬧鈴 BCD MINUTE</p>

14、;<p>  MOV 37H, #00H</p><p>  MOV 38H, #01H ; BCD HOUR</p><p>  MOV 39H, #00H</p><p>  MOV TMOD, #01H ;16位計(jì)數(shù)器T0,方式1</p><p>  MOV THO, #03CH ;賦初值<

15、/p><p>  MOV TLO, #0B0H</p><p>  MOV IE, #10000111B;開中斷TO,EA=1</p><p>  SETB TRO ;T0啟動(dòng)計(jì)數(shù)</p><p>  MOV R2, #14H ;計(jì)數(shù)器</p><p>  MOV P2, #0FFH </p

16、><p>  LOOP:LCALL TIMEPRO ;調(diào)用現(xiàn)在時(shí)間與鬧鈴時(shí)間比較程序</p><p>  LCALL DISPLAY1 ;調(diào)用現(xiàn)在時(shí)間顯示子程序</p><p>  JB K1,M1 ;判斷按鍵是否按下</p><p>  LCALL XIAOZHEN1 ;調(diào)用消抖程序</p>

17、<p>  MOV C, 25H.0</p><p><b>  JC A1</b></p><p>  A1: CLR 25H.0</p><p>  LCALL SETTIME ;調(diào)用設(shè)置現(xiàn)在時(shí)間子程序</p><p><b>  LJMP LOOP</b></p&

18、gt;<p>  M1: JB K2, M2</p><p>  LCALL XIAOZHEN2</p><p>  MOV C, 25H.0</p><p><b>  JC A2</b></p><p>  A2: CLR 25H.0</p><p>  LCALL SETTIM

19、E ;調(diào)用設(shè)置鬧鐘的程序</p><p><b>  LJMP LOOP</b></p><p>  M2: JB K4, M3</p><p>  A3: LCALL XIAOZHEN3</p><p>  MOV C, 25H.0</p><p><b>  JC A4&l

20、t;/b></p><p>  A4: CLR 25H.0</p><p>  M3: LJMP LOOP</p><p><b>  SETTIME:</b></p><p>  LO: LCALL DISPLAY1</p><p><b>  JB K2, L1</b&g

21、t;</p><p>  LCALL XIAOZHEN4</p><p>  MOV C, 25H.0</p><p><b>  JC A5</b></p><p>  A5: CLR 25H.0</p><p><b>  DEC 22H</b></p>&

22、lt;p><b>  MOV A,22H</b></p><p>  CJNE A,#18H,G012</p><p>  MOV 22H, #00H</p><p>  MOV 34H, #00H</p><p>  MOV 35H, #00H</p><p><b>  LJM

23、P L0</b></p><p>  L1: JB K3, L2</p><p>  LCALL XIAOZHEN5</p><p>  MOV C, 25H.0</p><p><b>  JC A6</b></p><p>  A6: CLR 25H.0</p>&l

24、t;p><b>  DEC 21H</b></p><p><b>  MOV A,21H</b></p><p>  CJNE A,#3CH,G011</p><p>  MOV 21H, #00H</p><p>  MOV 32H, #00H</p><p>  

25、MOV 33H, #00H</p><p><b>  LJMP L0</b></p><p>  GO11: MOV B,#0AH</p><p><b>  DIV AB</b></p><p>  MOV 32H, B</p><p>  MOV 33H, A</

26、p><p><b>  LJMP L0</b></p><p>  GO12: MOV B,#0AH</p><p><b>  DIV AB</b></p><p>  MOV 34H, B</p><p>  MOV 35H, A</p><p>&l

27、t;b>  LJMP L0</b></p><p>  L2: JB K4, L0</p><p>  LCALL XIAOZHEN3</p><p>  MOV C, 25H.0</p><p><b>  JC AX</b></p><p>  AX: CLR 25H.0&l

28、t;/p><p><b>  RET</b></p><p>  SETATIME: LCALL DISPLAY2</p><p>  NO: LCALL DISPLAY2</p><p><b>  JB K3, N1</b></p><p>  LCALL XIAOZHEN6

29、</p><p>  MOV C, 25H.0</p><p><b>  JC A7</b></p><p>  A7: CLR 25H.0</p><p><b>  DEC 24H</b></p><p>  MOV A, 24H</p><p>

30、;  CJNE A,#24,G022</p><p>  MOV 24H, #00H</p><p>  MOV 38H, #00H</p><p>  MOV 39H, #00H</p><p><b>  LJMP N0</b></p><p>  N1: JB K1 N2</p>

31、<p>  LCALL XIAOZHEN7</p><p>  MOV C, 25H.0</p><p><b>  JC A8</b></p><p>  A8: CLR 25H.0</p><p><b>  DEC 23H</b></p><p>  MO

32、V A, 23H</p><p>  CJNE A,#60,G021</p><p>  MOV 23H, #00H</p><p>  MOV 36H, #00H</p><p>  MOV 37H, #00H</p><p><b>  LJMP N0</b></p><p

33、>  G021: MOV B, #0AH</p><p><b>  DIV AB</b></p><p>  MOV 36H, B</p><p>  MOV 37H, A</p><p><b>  LJMP N0</b></p><p>  G022: MOV

34、B, #0AH</p><p><b>  DIV AB</b></p><p>  MOV 38H, B</p><p>  MOV 39H, A</p><p><b>  LJMP N0</b></p><p>  N2: JB K4 N0</p><

35、;p>  LCALL XIAOZHEN3</p><p>  MOV C, 25H.0</p><p><b>  JC A9</b></p><p>  A9: CLR 25H.0</p><p><b>  RET</b></p><p>  TIMEPRO: MO

36、V A, 21H</p><p>  MOV B, 23H</p><p>  CJNE A, B, BK</p><p>  MOV A, 22H</p><p>  MOV B, 24H</p><p>  CJNE A, B, BK</p><p>  SETB 25H.0</p&g

37、t;<p>  MOV C, 25H.0</p><p><b>  JC XX</b></p><p>  XX: LCALL TIMEOUT</p><p><b>  BK: RET</b></p><p><b>  TIMEOUT:</b></p&

38、gt;<p>  X1: LCALL BZ</p><p>  LCALL DISPLAY2</p><p><b>  CLR 25H.0</b></p><p><b>  JB K4,X1</b></p><p><b>  RET</b></p>

39、;<p>  BZ: CLR P3.7</p><p>  MOV R7, #250</p><p>  T2: MOV R6, #124</p><p>  T3: DJNZ R6,T3</p><p>  DJNZ R7,T2</p><p><b>  JB K4,XY</b>

40、</p><p>  LCALL XIAOZHEN3</p><p>  MOV C, 25H.0</p><p><b>  JC XY1</b></p><p><b>  XY: RET</b></p><p>  XY1: LJMP LOOP</p>&

41、lt;p>  XIAOZHEN1: LCALL DISPLAY1</p><p>  JB K1,XIAOZHEN1</p><p><b>  MOV C, K1</b></p><p>  LCALL JC XIAOZHEN1</p><p>  LCALL DELAY</p><p>

42、<b>  MOV C, K1</b></p><p>  JC XIAOZHEN1</p><p>  STOP1: MOV C, K1</p><p><b>  JNC STOP1</b></p><p>  LCALL DELAY</p><p><b> 

43、 MOV C, K1</b></p><p><b>  JNC STOP1</b></p><p>  SETB 25H.0</p><p><b>  RET</b></p><p>  XIAOZHEN2: LCALL DISPLAY2</p><p>  

44、JB K2,XIAOZHEN2</p><p><b>  MOV C, K2</b></p><p>  JC XIAOZHEN2</p><p>  STOP2: MOV C, K2</p><p><b>  JNC STOP2</b></p><p>  LCALL

45、DELAY</p><p><b>  MOV C, K2</b></p><p><b>  JNC STOP2</b></p><p>  SETB 25H.0</p><p><b>  RET</b></p><p>  XIAOZHEN3: L

46、CALL DISPLAY1</p><p>  JB K4,XIAOZHEN3</p><p><b>  MOV C, K4</b></p><p>  JC XIAOZHEN3</p><p>  LCALL DELAY</p><p><b>  MOV C, K4</b&g

47、t;</p><p>  JC XIAOZHEN3</p><p>  STOP3: MOV C, K4</p><p><b>  JNC STOP3</b></p><p>  LCALL DELAY</p><p><b>  MOV C, K4</b></p&g

48、t;<p><b>  JNC STOP3</b></p><p>  SETB 25H.0</p><p><b>  RET</b></p><p>  XIAOZHEN4: LCALL DISPLAY1</p><p>  JB K2,XIAOZHEN4</p>&

49、lt;p><b>  MOV C, K2</b></p><p>  JC XIAOZHEN4</p><p>  LCALL DELAY</p><p><b>  MOV C, K2</b></p><p>  JC XIAOZHEN4</p><p>  STOP

50、4: MOV C, K2</p><p><b>  JNC STOP4</b></p><p>  LCALL DELAY</p><p><b>  MOV C, K2</b></p><p><b>  JNC STOP4</b></p><p>

51、  SETB 25H.0</p><p><b>  RET</b></p><p>  XIAOZHEN5: LCALL DISPLAY1</p><p>  JB K3,XIAOZHEN5</p><p><b>  MOV C, K3</b></p><p>  JC

52、XIAOZHEN5</p><p>  LCALL DELAY</p><p><b>  MOV C, K3</b></p><p>  JC XIAOZHEN5</p><p>  STOP5: MOV C, K3</p><p><b>  JNC STOP5</b>&

53、lt;/p><p>  LCALL DELAY</p><p><b>  MOV C, K3</b></p><p><b>  JNC STOP5</b></p><p>  SETB 25H.0</p><p><b>  RET</b></p&

54、gt;<p>  XIAOZHEN6: LCALL DISPLAY2</p><p>  JB K3, XIAOZHEN6</p><p><b>  MOV C, K3</b></p><p>  JC XIAOZHEN6</p><p>  LCALL DELAY</p><p>

55、;<b>  MOV C, K3</b></p><p>  JC XIAOZHEN6</p><p>  STOP6: MOV C, K3</p><p><b>  JNC STOP6</b></p><p>  LCALL DELAY</p><p><b>

56、  MOV C, K3</b></p><p><b>  JNC STOP6</b></p><p>  SETB 25H.0</p><p><b>  RET</b></p><p>  XIAOZHEN7: LCALL DISPLAY2</p><p> 

57、 JB K1, XIAOZHEN7</p><p><b>  MOV C, K1</b></p><p>  JC XIAOZHEN7</p><p>  LCALL DELAY</p><p><b>  MOV C, K1</b></p><p>  JC XIAOZH

58、EN7</p><p>  STOP7: MOV C, K1</p><p><b>  JNC STOP7</b></p><p>  LCALL DELAY</p><p><b>  MOV C, K1</b></p><p><b>  JNC STOP7&

59、lt;/b></p><p>  SETB 25H.0</p><p><b>  RET</b></p><p>  DELAY: MOV R4, #14H</p><p>  DL00: MOV R5, #OFFH</p><p>  DL11: DJNZ R5, DL11</p&

60、gt;<p>  DJNZ R4, DL00</p><p><b>  RET</b></p><p>  TIME: PUSH ACC</p><p><b>  PUSH PSW</b></p><p>  MOVTH0, #03CH</p><p>  

61、MOV TL0, #0B0H</p><p>  DJNZ R2, RET0</p><p>  MOV R2, #14H</p><p>  MOV A, 20H</p><p><b>  CLR C</b></p><p><b>  DEC A</b></p&g

62、t;<p>  CJNE A, #0, G01</p><p>  MOV 20H, #3CH</p><p>  MOV 30H, #0</p><p>  MOV 31H, #0</p><p>  MOV A, 21H</p><p><b>  DEC A</b><

63、/p><p>  CJNE A, #3CH, G02</p><p>  MOV 21H, #0H</p><p>  MOV 32H, # 0</p><p>  MOV 33H, # 0</p><p>  MOV A, 22H</p><p><b>  DEC A</b>

64、;</p><p>  CJNE A, #18H,GO3</p><p>  MOV 22H, # 00H</p><p>  MOV 34H, # 0</p><p>  MOV 35H, # 0</p><p><b>  AJMP RETO</b></p><p> 

65、 GO1: MOV 20H, A</p><p>  MOV B, # 0AH</p><p><b>  DIV AB</b></p><p>  MOV 31H, A</p><p>  MOV 30H, B</p><p><b>  AJMP RETO</b><

66、/p><p>  GO2: MOV 21H, A</p><p>  MOV B, # 0AH</p><p><b>  DIV AB</b></p><p>  MOV 33H, AEEH</p><p>  MOV 32H, B</p><p><b>  AJ

67、MP RETO</b></p><p>  GO3: MOV 22H, A</p><p>  MOV B, # OAH</p><p><b>  DIV AB</b></p><p>  MOV 35H, A</p><p>  MOV 34H, B</p><

68、p><b>  AJMP RETO</b></p><p>  RETO: POP PSW</p><p><b>  POP ACC</b></p><p><b>  RETI</b></p><p>  DISPLAY1: MOV R0, # 30H</p&g

69、t;<p>  MOV R3, # 0EEH</p><p><b>  MOV A, R3</b></p><p>  PLAY1: MOV P2, A</p><p><b>  MOV A,@RO</b></p><p>  MOV DPTR, # DSEG1</p>

70、<p>  MOVC A,@A + DPTR </p><p><b>  MOV P0, A</b></p><p><b>  LCALL DL1</b></p><p>  MOV P2, # 0EEH</p><p><b>  MOV A, R3</b>

71、;</p><p><b>  RL A</b></p><p>  JNB ACC.6, LD1</p><p><b>  INC R0</b></p><p><b>  MOV R3, A</b></p><p>  LJMP PLAY1<

72、/p><p><b>  LD1: RET</b></p><p>  DISPLAY2: PUSH ACC</p><p><b>  PUSH PSW</b></p><p>  MOV RO, # 36H</p><p><b>  MOV A, R3</b

73、></p><p>  PLAY2: MOV P2, A</p><p><b>  MOV A,@R0</b></p><p>  MOV DPTR, # DSEG1</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0, A</b&g

74、t;</p><p><b>  LCALL DLL</b></p><p>  MOV P2, # 0FFH</p><p><b>  MOV A, R3</b></p><p><b>  RL A</b></p><p>  JNB ACC.6,

75、 LD2</p><p><b>  INC R0</b></p><p><b>  MOV R3, A</b></p><p>  LJMP PLAY2</p><p>  LD2: POP PSW </p><p><b>  POP ACC</b>

76、;</p><p><b>  RET</b></p><p>  DL1: MOV R7, # 05H</p><p>  DL: MOV R6, # 0FFH</p><p>  DL6: DJNZ R6, $</p><p>  DJNZ R7, DL</p><p>

77、;<b>  RET</b></p><p>  DSEG1: DB 3FH, 06H, 5BH, 4FH, 66H</p><p>  DB 6DH, 7DH, 07H, 7FH, 6FH</p><p><b>  END</b></p><p>  程序清單2(C語言)</p>

78、<p>  #include<reg51.h> </p><p>  sbit kh=P1^0;//定義kh為與P1.0相連接的按鍵B1 </p><p>  sbit km=P1^1;//定義km為與P1.1相連接的按鍵B2 </p><p>  sbit ks=P1^2;//定義ks為與P1.2相連接的按鍵B3 </p>

79、<p>  sbit st=P1^3;//定義st為與P1.3相連接的按鍵B4 </p><p>  sbit b=P3^7;//定義b為P3.7</p><p><b>  unsigned </b></p><p>  char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0

80、x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; // LED數(shù)碼管從0到F的顯示</p><p>  unsigned char i=0,hour=0,minute=0,second=0;</p><p>  void delayms(unsigned int x) </p><p><b>  { </b>

81、</p><p>  unsigned char a=160;//定義無符號(hào)變量a的值為160,指延時(shí)時(shí)間為160個(gè)及其周期乘以x,160可以為180等,自己設(shè)置</p><p>  while(x--) </p><p><b>  { </b></p><p>  while(a--); </p>&l

82、t;p><b>  a=160; </b></p><p><b>  } </b></p><p>  }//定義延時(shí)程序的延時(shí)時(shí)間為160個(gè)及其周期乘以x,避免按鍵抖動(dòng)的影響</p><p><b>  main() </b></p><p>  { TH0=(

83、65536-50000)/256;//設(shè)置定時(shí)時(shí)間對(duì)高八位賦值,50000是50000個(gè)機(jī)器周期,0.05秒 </p><p>  TL0=(65536-50000)%256;//設(shè)置定時(shí)時(shí)間對(duì)低八位賦值,50000是50000個(gè)機(jī)器周期,0.05秒</p><p>  TMOD=1;//定時(shí)器模式 </p><p>  TR0=0;//停止計(jì)時(shí) <

84、;/p><p>  ET0=1;//開定時(shí)器中斷 </p><p>  EA=1;//開總中斷 </p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  P0=table[hour/10];//顯示分鐘的十位<

85、;/p><p>  P2=~32;//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示分鐘的十位</p><p>  delayms(1);//延時(shí)以便于顯示</p><p>  P2=0xff;//重新給P2口一個(gè)高電平,避免誤操作</p><p>  P0=table[hour%10];//顯示分鐘的個(gè)位</p><p>  P2=~

86、16;//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示分鐘的個(gè)位</p><p>  delayms(1);//延時(shí)以便于顯示</p><p>  P2=0xff;//重新給P2口一個(gè)高電平,避免誤操作</p><p>  P0=table[minute/10];//顯示秒鐘的十位</p><p>  P2=~8;//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示秒鐘

87、的十位</p><p>  delayms(1);//延時(shí)以便于顯示</p><p>  P2=0xff;//重新給P2口一個(gè)高電平,避免誤操作</p><p>  P0=table[minute/10];//顯示秒鐘的十位</p><p>  P2=~4;//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示秒鐘的十位</p><p>

88、;  delayms(1);//延時(shí)以便于顯示</p><p>  P2=0xff;//重新給P2口一個(gè)高電平,避免誤操作</p><p>  P0=table[second%10];//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示秒鐘的個(gè)位</p><p>  P2=~1;//對(duì)數(shù)碼管進(jìn)行位選和段選,選中顯示秒鐘的個(gè)位</p><p>  delaym

89、s(1);//延時(shí)以便于顯示</p><p>  P2=0xff;//重新給P2口一個(gè)高電平,避免誤操作</p><p>  if(!kh)//如果小時(shí)按鍵B1按下</p><p><b>  { </b></p><p>  delayms(200);//延時(shí)200乘以160個(gè)機(jī)器周期,避免按鍵抖動(dòng)的影響</p&

90、gt;<p>  hour++;//定時(shí)時(shí)間的小時(shí)加一</p><p>  if(hour>23)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于23 </p><p><b>  hour=23; </b></p><p><b>  } </b></p><p> 

91、 else if(!km)//如果分鐘按鍵B2按</p><p><b>  { </b></p><p>  delayms(200);//延時(shí)200乘以160個(gè)機(jī)器周期,避免按鍵抖動(dòng)的影響</p><p><b>  minute++;</b></p><p>  if(minute>59

92、)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于59 </p><p>  minute=59; </p><p><b>  } </b></p><p>  else if(!ks)//如果秒按鍵按下B3</p><p><b>  { </b></p><p&g

93、t;  delayms(200);//延時(shí)200乘以160個(gè)機(jī)器周期,避免按鍵抖動(dòng)的影響</p><p><b>  second++;</b></p><p>  if(second>59)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于59 </p><p>  second=59; </p><p>

94、;<b>  } </b></p><p>  if(!st)//開始按加按</p><p><b>  { </b></p><p>  delayms(200);//延時(shí)200乘以160個(gè)機(jī)器周期,避免按鍵抖動(dòng)的影響</p><p>  TR0=1;//開始計(jì)</p><p

95、><b>  } </b></p><p>  if(TR0==1&&hour==0&&minute==0&&second<3)//如果在最后2秒</p><p>  b=!b;//開報(bào)警delayms(1);//延時(shí)以便于顯示</p><p><b>  } </b&

96、gt;</p><p><b>  } </b></p><p>  void t0() interrupt 1 //定義中斷服務(wù)程序</p><p><b>  { </b></p><p>  TH0=(65536-50000)/256;//設(shè)置定時(shí)時(shí)間對(duì)高八位賦值,50000是50000個(gè)機(jī)器

97、周期,0.05秒</p><p>  TL0=(65536-50000)%256;//設(shè)置定時(shí)時(shí)間對(duì)低八位賦值,50000是50000個(gè)機(jī)器周期,0.05秒</p><p>  i++;//控制變量i自加</p><p>  if(i>=20)//定時(shí)滿20次是1秒,即50000個(gè)機(jī)器周期為一</p><p><b>  {

98、</b></p><p><b>  i=0; </b></p><p>  second--;//秒減一</p><p>  if(second>59)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于59 </p><p><b>  { </b></p>

99、<p>  second=59;//秒為59 </p><p>  minute--;//分鐘減一</p><p>  if(minute>59)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于59 </p><p><b>  { </b></p><p>  minute=59;//因?yàn)槭?/p>

100、無符號(hào)的變量,減到0之后,再減就會(huì)變成ff,大于59 </p><p>  hour--;//小時(shí)減一</p><p>  if(hour>23)//因?yàn)槭菬o符號(hào)的變量,減到0之后,再減就會(huì)變成ff59,如果小時(shí)減過0說明計(jì)</p><p><b>  { </b></p><p><b>  hour=

101、0;</b></p><p>  minute=0; </p><p>  second=0; </p><p>  TR0=0;//停止計(jì)時(shí)</p><p><b>  }</b></p><p><b>  } </b></p><p>

102、;<b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  利用Proteus軟件仿真</p><p>  打開Proteus的ISIS 7 Professional編輯環(huán)境,并從元件庫中選出所需的元件,放

103、置元器件、電源和地、連線得到電路原理圖(如圖2.2)。</p><p>  打開Keil uVision4編輯環(huán)境,單擊Create a new file按鈕新建一個(gè)空白文本,將匯編程序輸入文本中后以.asm后綴保存匯編文件,點(diǎn)擊菜單欄中Project新建Project工程,建立一個(gè)工程文件,選擇Atmel_AT89C51型號(hào)的CPU。在樹狀文件目錄中右擊Source Group1加載.asm文件到工程中,右擊T

104、arget1后選擇Option for Group’Source Group1’設(shè)置頻率為12MHz并選擇創(chuàng)建HEX文件。單擊編譯按鈕未出現(xiàn)錯(cuò)誤在電路原理圖中單擊單片機(jī),加載HEX文件。</p><p>  圖4.1 程序代碼文件加載圖</p><p>  點(diǎn)擊開始按鈕仿真開始。</p><p><b>  第一次仿真</b></p&g

105、t;<p><b>  第二次仿真調(diào)節(jié)鬧鐘</b></p><p><b>  按K4鍵完成設(shè)置</b></p><p><b>  仿真完成</b></p><p><b>  五.總結(jié)</b></p><p>  單片機(jī)的應(yīng)用正在不斷深入

106、人們的生活,同時(shí)帶動(dòng)傳統(tǒng)控制檢測日新月異。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。</p><p>  通過本次設(shè)計(jì),使我們認(rèn)識(shí)并了解了基本的設(shè)計(jì)開發(fā)過程,在這過程中,我的身邊的同學(xué)們給了我很大的啟示和幫助,而且我覺得對(duì)以前不了解的單片機(jī)只是有了一個(gè)更感更深的了解。我相信我所學(xué)的東西在以后的工作學(xué)習(xí)中會(huì)起很大的作用。</p><p>

溫馨提示

  • 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)論