版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 數(shù)字顯示30秒倒計(jì)時(shí)器課程設(shè)計(jì)報(bào)告
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 電子課程設(shè)計(jì)報(bào)告--籃球比賽倒計(jì)時(shí)器
- 課程設(shè)計(jì)-籃球比賽倒計(jì)時(shí)器
- 單片機(jī)答辯倒計(jì)時(shí)器課程設(shè)計(jì)報(bào)告
- 數(shù)電課程設(shè)計(jì)——考試天數(shù)倒計(jì)時(shí)器
- 課程設(shè)計(jì)----籃球競賽24秒倒計(jì)時(shí)器
- eda課程設(shè)計(jì)報(bào)告--籃球競賽30秒倒計(jì)時(shí)器
- 60秒倒計(jì)時(shí)器-單片機(jī)課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告---數(shù)字時(shí)鐘倒計(jì)時(shí)
- 24秒籃球倒計(jì)時(shí)器課程設(shè)計(jì)
- 24秒籃球倒計(jì)時(shí)器課程設(shè)計(jì)
- 60秒倒計(jì)時(shí)器-單片機(jī)課程設(shè)計(jì)
- 電子課程設(shè)計(jì)報(bào)告---籃球比賽24秒倒計(jì)時(shí)器
- 電子課程設(shè)計(jì)報(bào)告-----24秒籃球倒計(jì)時(shí)器
- 電子課程設(shè)計(jì)報(bào)告----籃球比賽24秒倒計(jì)時(shí)器
評(píng)論
0/150
提交評(píng)論