單片機(jī)多功能時鐘程序設(shè)計畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設(shè) 計</b></p><p>  設(shè)計題目:多功能時鐘程序設(shè)計</p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  課程設(shè)計題目: 多功能時鐘程序設(shè)計</p><p><b>  中文摘要</b></p>

2、<p>  時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計出新型時鐘。 </p><p>  數(shù)字電子鐘的設(shè)計方法有多種,其中,利用單片機(jī)實現(xiàn)的電子鐘具有編程靈活,便于電子鐘功能的擴(kuò)充,即可用該電子鐘發(fā)出各種控制信號,精確度高等特點,同時可以

3、用該電子鐘發(fā)出各種控制信號。</p><p>  該數(shù)字鐘采用液晶顯示屏顯示其時間與定時時間,即采用P6口輸入,P7口輸出,由R0輸入需顯示的時間,再通過延時程序?qū)r間穩(wěn)定的顯示在液晶屏上。校準(zhǔn)時間由外部中斷4及開關(guān)按鍵控制;定時時間由外部中斷3及開關(guān)按鍵控制 ,KEY3、KEY4鍵每按一次其時分秒的數(shù)字增加一。</p><p>  關(guān)鍵字: 單片機(jī), 數(shù)字鐘, 校時, 定時器

4、</p><p><b>  目錄</b></p><p>  1課程設(shè)計要求1</p><p>  1.1設(shè)計主要內(nèi)容及要求1</p><p>  1.2對設(shè)計論文撰寫內(nèi)容、格式及字?jǐn)?shù)的要求1</p><p>  1.3時間進(jìn)度安排1</p><p>  

5、2課程設(shè)計思路2</p><p><b>  2.1計時2</b></p><p><b>  2.2校時2</b></p><p><b>  2.3鬧鈴2</b></p><p><b>  3設(shè)計流程圖3</b></p>

6、;<p><b>  4各模塊設(shè)計4</b></p><p>  4.1時鐘部分4</p><p>  ?時鐘程序分析4</p><p>  ?時鐘部分程序4</p><p>  4.2定時部分6</p><p>  ?定時程序分析6</p>&

7、lt;p>  ?定時部分程序6</p><p>  4.3校時部分8</p><p>  ?校時程序分析8</p><p>  ?校時部分程序8</p><p>  4.4顯示部分10</p><p>  ?顯示程序分析10</p><p>  ?顯示部分程序1

8、0</p><p>  5工作過程分析16</p><p>  5.1時鐘程序分析16</p><p>  5.2定時程序分析17</p><p>  5.3校時程序分析19</p><p>  5.4顯示程序分析20</p><p>  6主要元器件介紹23</p

9、><p>  6.1C8051F020單片機(jī)23</p><p>  6.2液晶顯示器24</p><p><b>  總結(jié)26</b></p><p><b>  致謝27</b></p><p><b>  參考文獻(xiàn)27</b></p

10、><p><b>  附錄28</b></p><p><b>  課程設(shè)計要求</b></p><p><b>  設(shè)計主要內(nèi)容及要求</b></p><p><b>  編寫多功能時鐘程序</b></p><p>  能夠顯示時、

11、分、秒的時鐘程序。</p><p><b>  具有鬧鐘功能。</b></p><p><b>  能夠進(jìn)行時間調(diào)整。</b></p><p>  對設(shè)計論文撰寫內(nèi)容、格式及字?jǐn)?shù)的要求</p><p>  課程設(shè)計論文是體現(xiàn)和總結(jié)課程設(shè)計成果的載體,一般不應(yīng)少于 30

12、00字。</p><p>  學(xué)生應(yīng)撰寫時應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p><p>  論文要求打印,打印時按《沈陽工程學(xué)院畢業(yè)設(shè)計(論文)撰寫規(guī)范》的要求</p><p>  課程設(shè)計論文裝訂順序為:封面、任務(wù)書、成績評審意見表、中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)。</p><p><b>  時間進(jìn)

13、度安排</b></p><p><b>  課程設(shè)計思路</b></p><p>  本文主要介紹用單片機(jī)編程來實現(xiàn)多功能時鐘的方法,本設(shè)計由單片機(jī)C8051F芯片、LED燈液晶顯示屏為核心,輔以必要的程序,構(gòu)成了一個單片機(jī)數(shù)字時鐘。與傳統(tǒng)時鐘相比,它具有走時精確,顯示直觀等特點。它的計時周期為12小時,分上下午,顯滿刻度為“11時59分59秒”,然后上下

14、午交替,另外具有校時、鬧鐘顯示星期等功能等特點。</p><p><b>  計時</b></p><p>  當(dāng)T0進(jìn)入中斷后,先給T0計時1s,再計時60s;當(dāng)秒計數(shù)滿60s后開始分的計數(shù),同時將秒清零,否則返回程序繼續(xù)執(zhí)行;同理當(dāng)分計數(shù)到60min,開始時的計時并共計數(shù)12次,與此同時分、秒清零。當(dāng)完成12小時的計時后,切換上下午,當(dāng)從下午切換到上午時為12:0

15、0:00星期加一,加到8時再變到1,然后返回主程序繼續(xù)。</p><p><b>  校時</b></p><p>  校時就是對時間進(jìn)行調(diào)整,現(xiàn)將其賦一初值,然后將初值帶入計時程序中,然后將其作為初值,計時從該值開始顯示.。其中初值的設(shè)置由外部中斷KEY3和開關(guān)按鍵設(shè)定,K1、K2、K3、K4、K6分別控制時、分、秒 、上下午、星期。</p><

16、p><b>  鬧鈴</b></p><p>  定時程序?qū)崉t就是讓系統(tǒng)設(shè)定一個鬧鈴時間,并使LED燈在到達(dá)時間時亮。先判斷秒是否相等,不等則繼續(xù),相等則判斷分,同理分相等時判斷時、上下午、星期,當(dāng)系統(tǒng)設(shè)定的秒、分、時、上下午、星期與顯示的時間都相等時跳到程序TSR使LED亮。其中初值的設(shè)置由外部中斷KEY4和開關(guān)按鍵設(shè)定,K1、K2、K3、K4、K6分別控制時、分、秒、上下午、星期

17、。</p><p><b>  設(shè)計流程圖</b></p><p><b>  各模塊設(shè)計</b></p><p><b>  時鐘部分</b></p><p><b>  時鐘程序分析</b></p><p>  主程序主要是使各

18、端口使能,保證各端口正常使用(主程序請參考附錄)。T0工作于定時方式1,進(jìn)行16位計數(shù)。其中秒的地址為30H,分的地址為31H,小時的地址為32H,上下午的地址是50H,星期的地址是34H。</p><p>  當(dāng)T0進(jìn)入中斷后,先給T0賦初值3CB0,定時50ms,循環(huán)20次計時1s,再跳入子程序ABC中循環(huán)60次計時60s;當(dāng)秒計數(shù)滿60s后開始分的計數(shù),同時將秒清零重新計時,否則返回程序繼續(xù)執(zhí)行;同理當(dāng)分計

19、數(shù)到60min,程序開始時的計時并共計數(shù)12次,當(dāng)計數(shù)滿12次時,上下午翻轉(zhuǎn),計滿13次時時針變?yōu)?,與此同時分、秒清零需重新開始計數(shù),當(dāng)從下午變成上午時,星期加1,星期計滿7次變?yōu)?。</p><p><b>  時鐘部分程序</b></p><p>  $INCLUDE(C8051F020.INC)</p><p>  ORG 0000

20、H </p><p>  AJMP MAIN </p><p>  ORG 000BH </p><p>  AJMP T0 </p><p>  ORG

21、 0093H</p><p>  LJMP KEY3</p><p>  ORG 009BH</p><p>  LJMP KEY4</p><p>  ORG 0100H</p><p>  MAIN: MOV WDTCN,#0DEH ;關(guān)看門狗</p><p>  

22、MOV WDTCN,#0ADH</p><p>  MOV OSCICN,#05H ;內(nèi)部振蕩4MHz</p><p>  MOV P1MDOUT,#0FFH ;設(shè)置P1的輸出方式</p><p>  MOV P74OUT, #0F0H ;端口6、端口7輸出方式為推挽輸出</p><p>  MOV CKCON,#00

23、H ;T0定時器12分頻</p><p>  MOV TMOD,#01H ;T0處于工作方式一,16位</p><p>  MOV TCON,#10H ;TR0=1,允許T0計數(shù)</p><p>  MOV XBR2,#40H ;交叉開關(guān)總使能 </p><p>  MOV EIE2,#30H

24、 ;中斷6、中斷7使能</p><p>  MOV P3IF,#0CH ;中斷7上升沿觸發(fā)</p><p>  MOV 50H,#00H</p><p>  MOV 60H,#00H</p><p>  MOV TH0,#3CH ;賦初值</p><p>  MOV TL0,

25、#0B0H</p><p>  MOV 30H,#00H ;秒存儲地址</p><p>  MOV 31H,#00H ;分存儲地址</p><p>  MOV 32H,#12H ;時存儲地址</p><p>  MOV 33H,#00H ;上下午儲存地址</p><p

26、>  MOV 34H,#01H ;星期儲存地址</p><p>  MOV 40H,#00H </p><p>  MOV 41H,#00H</p><p>  MOV 42H,#12H</p><p>  MOV 43H,#00H</p><p>  MOV 44

27、H,#01H</p><p>  MOV R1,#04H ;1s循環(huán)次數(shù)</p><p>  MOV IE,#82H ;中斷使能</p><p><b>  AJMP $</b></p><p>  T0: MOV TL0,#0B0H ;定時50ms</p>

28、<p>  MOV TH0,#3CH</p><p>  DJNZ R1,X ;計時1s</p><p>  MOV R1,#04H</p><p>  LCALL ABC ;跳轉(zhuǎn)到計時程序 </p><p>  LCALL DING ;跳轉(zhuǎn)到定時

29、程序</p><p>  LCALL TIME ;跳轉(zhuǎn)到顯示程序</p><p><b>  X: RETI</b></p><p>  ABC: MOV A,30H </p><p>  ADD A,#1 ;秒加1</p><

30、;p>  DA A ;做十進(jìn)制調(diào)整</p><p>  MOV 30H,A </p><p>  CJNE A,#60H,Y ;是否等于60s?若不是,則跳至Y</p><p>  MOV 30H,#00H ;若是,則30H清零</p><p> 

31、 MOV A,31H </p><p>  ADD A, #1 ;分加1</p><p>  DA A ;做十進(jìn)制調(diào)整</p><p>  MOV 31H,A </p><p>  CJNE A,#60H,Y ;是否等于6

32、0s?若不是,則跳至Y</p><p>  MOV 31H,#00H ;若是,則31H清零</p><p>  MOV A,32H </p><p>  ADD A,#1 ;時加1</p><p>  DA A ;做十進(jìn)制調(diào)整</p&g

33、t;<p>  MOV 32H,A</p><p>  CJNE A,#12H,L</p><p><b>  MOV A,31H</b></p><p>  CJNE A,#00H,L</p><p><b>  MOV A,30H</b></p><p>

34、;  CJNE A,#00H,L</p><p><b>  MOV A,50H</b></p><p><b>  CPL A </b></p><p><b>  MOV 50H,A</b></p><p>  CJNE A,#00H,Y</p><p&

35、gt;<b>  MOV A,34H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 34H,A</b></p><p>  CJNE A,#08H,Y</p><p>

36、  MOV 34H,#01H</p><p>  L: MOV A,32H</p><p>  CJNE A,#13H,Y</p><p>  MOV 32H,#01H </p><p><b>  Y:RET</b></p><p><b>  定時部分<

37、;/b></p><p><b>  定時程序分析</b></p><p>  定時程序?qū)崉t就是人為設(shè)定一個鬧鈴時間,并使LED燈在到達(dá)時間時亮。</p><p>  將秒賦予A,判斷系統(tǒng)是否與設(shè)定的一致,不等則繼續(xù)執(zhí)行下一條指令,相等則跳轉(zhuǎn)到lop1判斷分;再將分賦予A,判斷系統(tǒng)是否與設(shè)定的一致,不等則繼續(xù)執(zhí)行下一條指令,相等則跳轉(zhuǎn)到l

38、op2判斷時;然后將時賦予A,判斷系統(tǒng)是否與設(shè)定的一致,不相等則繼續(xù)下一條指令,相等則跳到LOP3判斷上下午;再將上下午賦予A,判斷系統(tǒng)是否與設(shè)定的一致,不相等則繼續(xù)下一條指令,相等則跳到lop4判斷星期,將星期賦予A,判斷系統(tǒng)是否與設(shè)定的相等,不相等則繼續(xù)下一條指令,相等時跳轉(zhuǎn)到TSR子程序。</p><p>  定時時間由外部中斷4控制,每按一下,其值增加一,時、分、秒、上下午星期由開關(guān)按鍵K1,K2,K3,

39、K4、K6控制。判斷位00H、01H、02H、03、05是否為0,哪個不為0跳轉(zhuǎn)到相應(yīng)的時、分、秒、上下午、星期程序中。在42H、41H、40H、60H、44H中存放時、分、秒、上下午、星期。當(dāng)系統(tǒng)設(shè)定的秒、分、時、上下午、星期與顯示的時間都相等時LED燈亮,表示鬧鈴時間到。將K1撥到0時,按下KEY4,可熄滅LED燈。</p><p><b>  定時部分程序</b></p>

40、<p>  DING: MOV A,30H ;定時程序</p><p>  CJNE A,40H,N</p><p>  AJMP LOP1</p><p>  LOP1: MOV A,31H</p><p>  CJNE A,41H,N</p><p>  AJMP L

41、OP2</p><p>  LOP2: MOV A,32H</p><p>  CJNE A,42H,N</p><p><b>  AJMP LOP3</b></p><p>  LOP3: MOV A,50H</p><p>  CJNE A,60H,N</p>&l

42、t;p><b>  AJMP LOP4</b></p><p>  LOP4:MOV A,34H</p><p>  CJNE A,44H,N</p><p>  AJMP TSR </p><p><b>  N: RET</b></p><p>  TSR:

43、MOV P1,#00H </p><p><b>  RET</b></p><p>  KEY4: LCALL T2</p><p>  LCALL TIME</p><p>  MOV P3IF,#00H</p><p><b>  RETI</b

44、></p><p>  T2: MOV 20H,P5 ;定時程序</p><p>  JNB 00H,SHI1</p><p>  JNB 01H,FEN1</p><p>  JNB 02H,MIAO1</p><p>  JNB 03H,XINGQI1&

45、lt;/p><p>  JNB 05H,ZHOU1</p><p><b>  RET </b></p><p>  ZHOU1: MOV A,44H</p><p>  ADD A,#1</p><p><b>  DA A</b></p>&l

46、t;p>  MOV 44H,A</p><p>  CJNE A,#08H,MB</p><p>  MOV 44H,#01H</p><p><b>  RET</b></p><p>  XINGQI1:MOV A,60H</p><p><b>  CPL A<

47、/b></p><p>  MOV 60H,A </p><p><b>  RET</b></p><p>  SHI1: MOV P1,#0FFH</p><p>  MOV A,42H </p><p>  ADD A,#1 &

48、lt;/p><p>  DA A </p><p>  MOV 42H,A </p><p>  CJNE A,#13H ,MB</p><p>  MOV 42H,#1 </p><p><

49、;b>  RET</b></p><p>  FEN1: MOV A,41H </p><p>  ADD A,#1 </p><p>  DA A </p><p>  MOV 41H,A

50、 </p><p>  CJNE A,#60H ,MB </p><p>  MOV 41H,#0</p><p><b>  RET</b></p><p>  MIAO1:MOV A,40H </p><p>  ADD A,#1

51、 </p><p>  DA A </p><p>  MOV 40H,A </p><p>  CJNE A,#60H ,MB </p><p>  MOV 40H,#0</p><p

52、><b>  MB: RET</b></p><p><b>  校時部分</b></p><p><b>  校時程序分析</b></p><p>  校時部分就是在系統(tǒng)時間不準(zhǔn)確的情況下,給系統(tǒng)賦定值,使系統(tǒng)時間可以從該值開始變化,使用外部中斷KEY3,先給30H、31H、32H、50H

53、、34H賦所需時間,然后調(diào)用程序?qū)⑵滹@示。其中進(jìn)入中斷后調(diào)用子程序T1可以由KEY3鍵設(shè)置所定時間每按一次KEY3鍵值增加一,是調(diào)整時還是分或秒,可由開關(guān)量輸入鍵K1、K2、K3、K4、K5分別控制。其主程序中加入了外不中斷的有關(guān)指令.但需注意的是,在調(diào)解時除打開時、分、秒上下午、星期控制鍵外還需打開K11鍵。(主程序只給出所加指令)</p><p><b>  校時部分程序 </b><

54、;/p><p>  KEY3: LCALL T1 </p><p>  LCALL TIME</p><p>  MOV P3IF,#00H</p><p><b>  RETI</b></p><p>  T1: MOV 20H,P5 ;校準(zhǔn)程序</p>&

55、lt;p>  JNB 00H,SHI</p><p>  JNB 01H,FEN</p><p>  JNB 02H,MIAO</p><p>  JNB 03H,XINGQI</p><p>  JNB 05H,ZHOU</p><p><b>  RET</b&g

56、t;</p><p>  ZHOU: MOV A,34H</p><p><b>  ADD A,#1</b></p><p><b>  DA A</b></p><p>  MOV 34H,A</p><p>  CJNE A,#08H,MN</p>

57、;<p>  MOV 34H,#01H</p><p><b>  RET</b></p><p>  XINGQI:MOV A,50H</p><p><b>  CPL A</b></p><p>  MOV 50H,A</p><p><b&g

58、t;  RET </b></p><p>  SHI:MOV A,32H </p><p>  ADD A,#1 </p><p>  DA A </p><p>  MOV 32H,A

59、 </p><p>  CJNE A,#13H ,MN </p><p>  MOV 32H,#01H </p><p><b>  RET</b></p><p>  FEN: MOV A,31H </p><p>  ADD

60、 A,#1 </p><p>  DA A </p><p>  MOV 31H,A </p><p>  CJNE A,#60H ,MN </p><p>  MOV 31H,#0</p

61、><p><b>  RET</b></p><p>  MIAO:MOV A,30H </p><p>  ADD A,#1 </p><p>  DA A </p><p>  MOV

62、 30H,A </p><p>  CJNE A,#60H ,MN </p><p>  MOV 30H,#0</p><p>  MN: RET </p><p><b>  顯示部分</b></p><p><b&

63、gt;  顯示程序分析</b></p><p>  顯示程序就是將程序中的時分秒顯示在液晶顯示屏上使其看起來更直觀、方便。其中第一行顯示系統(tǒng)運行時間,第二行顯示定時時間。</p><p>  該程序主要根據(jù)老師所給程序改編,利用子程序LINE設(shè)定顯示屏的主要參數(shù).讓時間顯示在上一行且只顯示一個時分秒,如“12:12:12PMXQ1”,不造成顯示多個的后果。NCD為常函數(shù)表,將0

64、-9、A、P、M、X、Q數(shù)字和字母依次存放到以左邊標(biāo)號為起始地址的存儲單元中。TIME中就是將時分秒的十位、各位分別賦予R0,還有判斷50H中是00H還是0FFH,如果是00H就顯示上午AM,然后星期加一,如果是0FFH就顯示下午PM,然背后調(diào)用查表程序?qū)⑵滹@示在液晶屏上。值得注意的是:時與分、分與秒之間需將冒號也顯示出來。同理,定時時間的顯示在第二行,由TIME1控制。</p><p><b>  顯

65、示部分程序</b></p><p>  TIME: CLR A</p><p>  MOV XBR0, A</p><p>  LCALL LCD</p><p>  MOV DPTR,#NCD</p><p>  MOV A,32H</p><p

66、><b>  SWAP A</b></p><p>  MOV R0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,32H</p><p>  LCALL LINE1</p

67、><p>  LCALL DELAY</p><p>  MOV R0,#10</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV A,31H</p><p><b>  SWAP A<

68、/b></p><p>  MOV R0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,31H</p><p>  LCALL LINE1</p><p>  LCALL DEL

69、AY</p><p>  MOV R0,#10</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV A,30H</p><p><b>  SWAP A</b></p><p> 

70、 MOV R0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,30H</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV

71、 A,50H </p><p>  CJNE A,#0FFH,LOPA</p><p>  MOV R0,#12</p><p>  LCALL LINE1</p><p>  LCALL DELAY </p><p>  MOV R0,#13</p>&l

72、t;p>  LCALL LINE1</p><p>  LCALL DELAY </p><p>  AJMP LOPP</p><p>  LOPA: MOV R0,#11</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p>

73、;<p>  MOV R0,#13</p><p>  LCALL LINE1</p><p>  LCALL DELAY </p><p>  LOPP: MOV R0,#14</p><p>  LCALL LINE1</p><p>

74、  LCALL DELAY</p><p>  MOV R0,#15</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,34H</p><p>  LCALL LINE1</p><p>  

75、LCALL DELAY</p><p>  MOV DPTR,#NED</p><p>  MOV P7,#0C0H</p><p>  MOV P6,#1H</p><p>  MOV P6,#0H</p><p>  MOV R0,#11</p><p&g

76、t;  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV A,42H</p><p><b>  SWAP A</b></p><p>  MOV R0,A</p><p>  LCALL LINE1</p><

77、;p>  LCALL DELAY</p><p>  MOV R0,42H</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,#10</p><p>  LCALL LINE1</p><p>  

78、LCALL DELAY</p><p>  MOV A,41H</p><p><b>  SWAP A</b></p><p>  MOV R0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p&g

79、t;  MOV R0,41H</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,#10</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV

80、 A,40H</p><p><b>  SWAP A</b></p><p>  MOV R0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,40H</p><p> 

81、 LCALL LINE1</p><p>  LCALL DELAY</p><p><b>  MOV A,60H</b></p><p>  CJNE A,#0FFH,LOPA1</p><p>  MOV R0,#12</p><p>  LCALL LINE1</p

82、><p>  LCALL DELAY </p><p>  MOV R0,#13</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  LJMP LOP44 </p><p>  LOPA1:MOV R0,#1

83、1</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,#13</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  LOP44:MOV R

84、0,#14</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,#15</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,

85、44H</p><p>  LCALL LINE1</p><p>  LCALL DELAY1</p><p><b>  RET</b></p><p>  LINE1: MOV A,R0</p><p>  ANL A,#0FH</p><p

86、>  MOVC A,@A+DPTR</p><p>  MOV P7,A</p><p>  MOV P6,#05H</p><p>  MOV P6,#04H</p><p><b>  RET</b></p><p>  LCD: LCALL DELA

87、Y</p><p>  MOV P7, #38H</p><p>  MOV P6, #01H</p><p>  MOV P6, #00H</p><p>  LCALL DELAY</p><p>  MOV P7, #0EH</p><p>  MOV

88、 P6, #01H</p><p>  MOV P6, #00H</p><p>  LCALL DELAY</p><p>  MOV P7, #06H</p><p>  MOV P6, #01H</p><p>  MOV P6, #00H</p><

89、p>  LCALL DELAY</p><p>  MOV P7, #01H</p><p>  MOV P6, #01H</p><p>  MOV P6, #00H</p><p>  LCALL DELAY</p><p><b>  RET</b>&l

90、t;/p><p>  DELAY: MOV R6,#50</p><p>  DELAY0: MOV R5,#50</p><p>  DJNZ R5,$</p><p>  DJNZ R6,DELAY0</p><p><b>  RET </b></p>

91、<p>  DELAY1: MOV R4,#35 ;DD</p><p>  DELAY2: MOV R3,#150</p><p>  DELAY3: MOV R2,#250</p><p>  DJNZ R2,$</p><p>  DJNZ R3,DELAY3</p>&

92、lt;p>  DJNZ R4,DELAY2</p><p>  RET </p><p>  NCD:DB'0','1','2','3','4','5','6','7','8','9',':'

93、;,'A','P','M','X','Q',' ' ;常數(shù)表</p><p>  NED:DB'0','1','2','3','4','5','6','7','8','

94、;9',':','A','P','M','X','Q',' ' ;常數(shù)表</p><p><b>  END</b></p><p><b>  工作過程分析</b></p><p><b>

95、;  時鐘程序分析</b></p><p>  在設(shè)計時分秒的程序時,首先定時1s,然后循環(huán)60次,則計時60秒,再判斷是否循環(huán)60次,沒有則繼續(xù)執(zhí)行以完成秒的計時,若完成60次循環(huán)則分加一,同理當(dāng)分計數(shù)滿60時,時加一,在判斷是否計數(shù)滿12次,若完成12次則上下午翻轉(zhuǎn),在判斷是否由下午變成上午,若是則星期加1,以此完成時時分秒上下午星期的計時并據(jù)此編寫程序。(主程序未給出)</p>&

96、lt;p>  T0: MOV TL0,#0B0H ;定時50ms</p><p>  MOV TH0,#3CH</p><p>  DJNZ R1,X ;計時1s</p><p>  MOV R1,#04H</p><p>  LCALL ABC ;跳轉(zhuǎn)到計時程

97、序 </p><p>  LCALL DING ;跳轉(zhuǎn)到定時程序</p><p>  LCALL TIME ;跳轉(zhuǎn)到顯示程序</p><p><b>  X: RETI</b></p><p>  ABC: MOV A,30H </p>

98、<p>  ADD A,#1 ;秒加1</p><p>  DA A ;做十進(jìn)制調(diào)整</p><p>  MOV 30H,A </p><p>  CJNE A,#60H,Y ;是否等于60s?若不是,則跳至Y</p><p>  

99、MOV 30H,#00H ;若是,則30H清零</p><p>  MOV A,31H </p><p>  ADD A, #1 ;分加1</p><p>  DA A ;做十進(jìn)制調(diào)整</p><p>  MOV 31H,A

100、 </p><p>  CJNE A,#60H,Y ;是否等于60s?若不是,則跳至Y</p><p>  MOV 31H,#00H ;若是,則31H清零</p><p>  MOV A,32H </p><p>  ADD A,#1 ;時加1</p

101、><p>  DA A ;做十進(jìn)制調(diào)整</p><p>  MOV 32H,A</p><p>  CJNE A,#12H,L</p><p><b>  MOV A,31H</b></p><p>  CJNE A,#00H,L</p><p

102、><b>  MOV A,30H</b></p><p>  CJNE A,#00H,L ;是否為12:00:00?若不是,跳L</p><p><b>  MOV A,50H</b></p><p><b>  CPL A </b></p><p>  

103、MOV 50H,A ;上下午翻轉(zhuǎn)</p><p>  CJNE A,#00H,Y</p><p>  MOV A,34H ;判斷是否是下午變成上午,若不是,跳Y</p><p>  ADD A,#01H ;星期加1</p><p><b>  DA A</

104、b></p><p>  MOV 34H,A </p><p>  CJNE A,#08H,Y</p><p>  MOV 34H,#01H</p><p>  L: MOV A,32H ;時鐘是否為13,若不是,跳Y</p><p>  CJNE A,#1

105、3H,Y</p><p>  MOV 32H,#01H ;若是,時鐘變成1</p><p><b>  Y:RET</b></p><p>  T0進(jìn)入中斷,開始時分秒上下午星期的計時。最大顯示為“11:59:59PMXQ7”。</p><p><b>  定時程序分析</b>

106、;</p><p>  定時程序?qū)崉t就是讓時鐘設(shè)定一個鬧鈴時間,當(dāng)系統(tǒng)時間與設(shè)定的時間一致時顯示時間并使LED燈亮。先判斷秒是否相等,不等則繼續(xù),相等則跳轉(zhuǎn)到lop1判斷分,同理相等時跳轉(zhuǎn)到lop2、lop3、lop4判斷時上下午、星期,當(dāng)系統(tǒng)設(shè)定的與顯示的時間都相等時跳到程序TSR使LED亮。鬧鐘時間由K4調(diào)整。</p><p>  DING: MOV A,30H

107、 </p><p>  CJNE A,40H,N ;判斷秒是否相等</p><p>  AJMP LOP1</p><p>  LOP1: MOV A,31H</p><p>  CJNE A,41H,N ;判斷分是否相等</p><p>  AJMP LOP2</p><

108、;p>  LOP2: MOV A,32H</p><p>  CJNE A,42H,N ;判斷時是否相等</p><p><b>  AJMP LOP3</b></p><p>  LOP3: MOV A,50H</p><p>  CJNE A,60H,N ;判斷上下午是否相等<

109、/p><p><b>  AJMP LOP4</b></p><p>  LOP4: MOV A,34H</p><p>  CJNE A,44H,N ;判斷星期是否相等</p><p>  AJMP TSR </p><p><b>  N: RET</b>

110、;</p><p>  TSR: MOV P1,#00H </p><p><b>  RET</b></p><p>  KEY4: LCALL T2</p><p>  LCALL TIME</p><p>  MOV P3IF,#00H</p>

111、<p><b>  RETI</b></p><p>  T2: MOV 20H,P5 ;定時程序</p><p>  JNB 00H,SHI1</p><p>  JNB 01H,FEN1</p><p>  JNB 02H,MIAO1</p>

112、<p>  JNB 03H,WU1</p><p>  JNB 05H,ZHOU1 ;判斷加1的是哪個</p><p><b>  RET </b></p><p>  ZHOU1:MOV A,44H</p><p>  ADD A,#1 ;星期加1

113、</p><p><b>  DA A</b></p><p>  MOV 44H,A</p><p>  CJNE A,#08H,MB</p><p>  MOV 44H,#01H</p><p><b>  RET</b></p><p&g

114、t;  WU1:MOV A,60H</p><p>  CPL A ;上下午翻轉(zhuǎn)</p><p>  MOV 60H,A </p><p><b>  RET</b></p><p>  SHI1: MOV P1,#0FFH</p><p>  MOV

115、 A,42H </p><p>  ADD A,#1 ;時加1 </p><p>  DA A </p><p>  MOV 42H,A </p><p>  CJNE A,#

116、13H ,MB</p><p>  MOV 42H,#1 </p><p><b>  RET</b></p><p>  FEN1: MOV A,41H </p><p>  ADD A,#1 ;分加1</p>&

117、lt;p>  DA A </p><p>  MOV 41H,A </p><p>  CJNE A,#60H ,MB </p><p>  MOV 41H,#0</p><p><b>  RET</b>

118、</p><p>  MIAO1:MOV A,40H </p><p>  ADD A,#1 ;秒加1</p><p>  DA A </p><p>  MOV 40H,A </p>

119、<p>  CJNE A,#60H ,MB </p><p>  MOV 40H,#0</p><p><b>  MB: RET</b></p><p>  開始我用P0和P1控制系統(tǒng)時間和鬧鐘時間的上下午,但是不成功,因為判斷是否相等的時候沒有適合的指令,之后我改用50H、60H分別控制,上下午切

120、換時直接CPL50H、60H。</p><p><b>  校時程序分析</b></p><p>  校時程序在校時的時候,時間是不會停止走的,按下KEY3、KEY4,再根據(jù)K1、K2、K3、K4、K6的值分別時、分、秒、上下午、星期加1或翻轉(zhuǎn)。</p><p>  KEY3: LCALL T1 </p><p>  L

121、CALL TIME</p><p>  MOV P3IF,#00H</p><p><b>  RETI</b></p><p>  T1: MOV 20H,P5 ;校準(zhǔn)程序</p><p>  JNB 00H,SHI</p><p>  JNB 01H,F

122、EN</p><p>  JNB 02H,MIAO</p><p>  JNB 03H,WU</p><p>  JNB 05H,ZHOU ;判斷調(diào)整哪個</p><p><b>  RET</b></p><p>  ZHOU: MOV A,34H</p&

123、gt;<p>  ADD A,#1 ;星期加1</p><p><b>  DA A</b></p><p>  MOV 34H,A</p><p>  CJNE A,#08H,MN</p><p>  MOV 34H,#01H</p><p>

124、;<b>  RET</b></p><p>  WU:MOV A,50H</p><p>  CPL A </p><p>  MOV 50H,A </p><p><b>  RET </b></p><p>  SHI:MOV

125、 A,32H </p><p>  ADD A,#1 </p><p>  DA A </p><p>  MOV 32H,A </p><p>  CJNE A,#13H ,MN </p&g

126、t;<p>  MOV 32H,#01H </p><p><b>  RET</b></p><p>  FEN: MOV A,31H </p><p>  ADD A,#1 </p><p>  DA

127、 A </p><p>  MOV 31H,A </p><p>  CJNE A,#60H ,MN </p><p>  MOV 31H,#0</p><p><b>  RET</b></p>

128、<p><b>  MIAO:</b></p><p>  MOV A,30H </p><p>  ADD A,#1 </p><p>  DA A </p><p>  MOV 30H,A

129、 </p><p>  CJNE A,#60H ,MN </p><p>  MOV 30H,#0</p><p>  MN: RET ;</p><p><b>  顯示程序分析</b></p><p>  該部分主

130、要是將隨時變化的時間及定時時間顯示到液晶顯示屏上,開始我用ASCII表示,但是太麻煩,而且網(wǎng)上找的ASCII表有些還不適合我們這款單片機(jī),因此我用' '這種方法,直接往里面打上需要顯示的字母和數(shù)字,然后按排列順序往LCD顯示屏上送,便可以方便的將要顯示的東西顯示出來。</p><p>  TIME: CLR A ;累加器清零</p><p> 

131、 MOV XBR0, A</p><p>  LCALL LCD</p><p>  MOV DPTR,#NCD</p><p>  MOV A,32H</p><p>  SWAP A ;高地位交換</p><p>  MOV R0,A</p>

132、<p>  LCALL LINE1 ;顯示小時的十位</p><p>  LCALL DELAY</p><p>  MOV R0,32H</p><p>  LCALL LINE1 ;顯示小時的個位</p><p>  LCALL DELAY</p><p&

133、gt;  MOV R0,#10 ;顯示(:)</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV A,31H</p><p><b>  SWAP A</b></p><p>  MOV R

134、0,A</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,31H</p><p>  LCALL LINE1</p><p>  LCALL DELAY</p><p>  MOV R0,#1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論