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

下載本文檔

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

文檔簡介

1、<p>  基于單片機的電子時鐘設(shè)計</p><p><b>  摘 要</b></p><p>  20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的</p><p>  各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)</p><p>  品性

2、能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。</p><p>  現(xiàn)代生活的人們越來越重視起了時間觀念,可以說是時間和金錢劃上了等號。對于那些</p><p>  對時間把握非常嚴格和準確的人或事來說,時間的不準確會帶來非常大的麻煩,所以以數(shù)碼</p><p>  管為顯示器的時鐘比指針式的時鐘表現(xiàn)出了很大的優(yōu)勢。數(shù)碼管顯示的時間簡單明了而且讀</p>

3、<p>  數(shù)快、時間準確顯示到秒。而機械式的依賴于晶體震蕩器,可能會導(dǎo)致誤差。</p><p>  數(shù)字鐘是采用數(shù)字電路實現(xiàn)對“時”、“分”、“秒”數(shù)字顯示的計時裝置。數(shù)字鐘的精度、</p><p>  穩(wěn)定度遠遠超過老式機械鐘。在這次設(shè)計中,我們采用LED數(shù)碼管顯示時、分、秒,以24</p><p>  小時計時方式,根據(jù)數(shù)碼管動態(tài)顯示原理來進行顯示

4、,用12MHz的晶振產(chǎn)生振蕩脈沖,定</p><p>  時器計數(shù)。在此次設(shè)計中,電路具有顯示時間的其本功能,還可以實現(xiàn)對時間的調(diào)整。數(shù)字</p><p>  鐘是其小巧,價格低廉,走時精度高,使用方便,功能多,便于集成化而受廣大消費的喜愛,</p><p>  因此得到了廣泛的使用。</p><p>  關(guān)鍵字:數(shù)字電子鐘 單片機<

5、;/p><p><b>  目 錄</b></p><p>  第一部分 整體設(shè)計方案</p><p>  1.1 課程設(shè)計任務(wù)</p><p>  1.2 單片機的選擇</p><p>  1.3 單片機的基本結(jié)構(gòu)</p><p>  第二部分 數(shù)字鐘的硬件設(shè)計<

6、;/p><p>  2.1 最小系統(tǒng)設(shè)計</p><p>  2.2 LED顯示電路</p><p>  第三部分 數(shù)字鐘的軟件設(shè)計</p><p>  3.1 系統(tǒng)軟件設(shè)計流程圖</p><p><b>  3.2主程序</b></p><p>  3.4 時鐘設(shè)置子程序&

7、lt;/p><p>  3.5 定時器中斷子程序</p><p>  3.6 LED顯示子程序</p><p>  3.7 按鍵控制子程序</p><p>  第四部分 調(diào)試與功能說明</p><p>  4.1系統(tǒng)性能測試與功能說明</p><p>  4.2系統(tǒng)時鐘誤差分析</p>

8、<p><b>  4.3硬盤調(diào)試</b></p><p>  4.4軟件調(diào)試問題及解決</p><p><b>  心得體會</b></p><p><b>  附件</b></p><p>  第一部分 整體方案的設(shè)計</p><p>

9、<b>  課程設(shè)計的任務(wù):</b></p><p>  設(shè)計一個多功能數(shù)字時鐘完成以下功能</p><p>  1、 走時(能實現(xiàn)時分秒,年月日的計時)</p><p>  2 、顯示(分屏顯示時分秒,年月日,修改定位閃爍顯示)</p><p>  3、校時(能用按鍵修改和校準時鐘)</p><p&

10、gt;<b>  4、定時報警</b></p><p>  1.2 單片機的選擇 </p><p>  單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p>  通常,單片機由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機的基本功能部件:中央處理器、存

11、儲器和I/O接口電路等。因此,單片機只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機控制系統(tǒng)。</p><p>  單片機經(jīng)過1、2、3代的發(fā)展,正朝著多功能、高性能、低電壓、低功耗、低價格、大存儲容量、強I/O功能及較好的結(jié)構(gòu)兼容性方向發(fā)展。其發(fā)展趨勢不外乎以下幾個方面:</p><p>  1、多功能 </p><p>  單片機中盡可能地把所需要

12、的存儲器和I/O口都集成在一塊芯片上,使得單片機可以實現(xiàn)更多的功能。比如A/D、PWM、PCA(可編程計數(shù)器陣列)、WDT(監(jiān)視定時器---看家狗)、高速I/O口及計數(shù)器的捕獲/比較邏輯等。</p><p>  有的單片機針對某一個應(yīng)用領(lǐng)域,集成了相關(guān)的控制設(shè)備,以減少應(yīng)用系統(tǒng)的芯片數(shù)量。例如,有的芯片以51內(nèi)核為核心,集成了USB控制器、SMART CARD接口、MP3解碼器、CAN或者I*I*C總線控制器等,

13、LED、LCD或VFD顯示驅(qū)動器也開始集成在8位單片機中。</p><p><b>  2、高效率和高性能</b></p><p>  為了提高執(zhí)行速度和執(zhí)行效率,單片機開始使用RISC、流水線和DSP的設(shè)計技術(shù),使單片機的性能有了明顯的提高,表現(xiàn)為:單片機的時鐘頻率得到提高;同樣頻率的單片機運行效率也有了很大的提升;由于集成度的提高,單片機的尋址能力、片內(nèi)ROM(F

14、LASH)和RAM的容量都突破了以往的數(shù)量和限制。</p><p>  由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開始使用高級語言(如C語言)來開發(fā)單片機的程序。使用高級語言可以降低開發(fā) 難度,縮短開發(fā)周期,增強軟件的可讀性和可移植性,便于改進和擴充功能。</p><p><b>  3、低電壓和低功耗</b></p><p>  單片機的嵌入式應(yīng)用決

15、定了低電壓和低功耗的特性十分重要。由于CMOS等工藝的大量采用,很多單片機可以在更低的電壓下工作(1.2V或0.9V),功耗已經(jīng)降低到uA級。這些特性使得單片機系統(tǒng)可以在更小電源的支持下工作更長的時間。</p><p><b>  4、低價格</b></p><p>  單片機應(yīng)用面廣,使用數(shù)量大,帶來的直接好處就是成本的降低。目前世界各大公司為了提高競爭力,在提高單

16、片機性能的同時,十分注意降低其產(chǎn)品的價格。</p><p>  下面大致介紹一下單片機的主要應(yīng)用領(lǐng)域和特點。</p><p><b> ?。?)家用電器領(lǐng)域</b></p><p>  用單片機控制系統(tǒng)取代傳統(tǒng)的模擬和數(shù)字控制電路,使家用電器(如洗衣機、空調(diào)、冰箱、微波爐、和電視機等)功能更完善,更加智能化和易于使用。</p>&

17、lt;p> ?。?)辦公自動化領(lǐng)域</p><p>  單片機作為嵌入式系統(tǒng)廣泛應(yīng)用于現(xiàn)代辦公設(shè)備,如計算機的鍵盤、磁盤驅(qū)動、打印機、復(fù)印機、電話機和傳真機等。</p><p><b> ?。?)商業(yè)應(yīng)用領(lǐng)域</b></p><p>  商業(yè)應(yīng)用系統(tǒng)部分與家用和辦公應(yīng)用系統(tǒng)相似,但更加注重設(shè)備的穩(wěn)定性、可靠性和安全性。商用系統(tǒng)中廣泛使用的

18、電子計量儀器、收款機、條形碼閱讀器、安全監(jiān)測系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)和冷凍保鮮系統(tǒng)等,都采用了單片機構(gòu)成的專用系統(tǒng)。與通用計算機相比,這些系統(tǒng)由于比較封閉,可以更有效地防止病毒和電磁干擾等,可靠性更高。</p><p><b> ?。?)工業(yè)自動化</b></p><p>  在工業(yè)控制和機電一體化控制系統(tǒng)中,除了采用工控計算機外,很多都是以單片機為核心的單片機和多機系統(tǒng)。

19、</p><p>  (5)智能儀表與集成智能傳感器</p><p>  目前在各種電氣測量儀表中普遍采用了單片機應(yīng)用系統(tǒng)來代替?zhèn)鹘y(tǒng)的測量系統(tǒng),使得測量系統(tǒng)具有存儲、數(shù)據(jù)處理、查詢及聯(lián)網(wǎng)等智能功能。將單片機和傳感器相結(jié)合,可以構(gòu)成新一代的智能傳感器。它將傳感器變換后的物理量作進一步的變化和處理,使其成為數(shù)字信號,可以遠距離傳輸并與計算機接口。</p><p> ?。?/p>

20、6)現(xiàn)代交通與航空航天領(lǐng)域</p><p>  通常應(yīng)用于電子綜合顯示系統(tǒng)、動力監(jiān)控系統(tǒng)、自動駕駛系統(tǒng)、通信系統(tǒng)以及運行監(jiān)視系統(tǒng)等。這些領(lǐng)域?qū)w積、功耗、穩(wěn)定性和實時性的要求往往比商用系統(tǒng)還要高,因此采用單片機系統(tǒng)更加重要。</p><p>  目前,我國生產(chǎn)很多型號的單片機,在此,我們采用型號為STC89C52的單片機。因為: STC89C52是一個低電壓,高性能CMOS 8位

21、單片機,片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準MCS-52指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C52提供了高性價比的解決方案。</p><p>  STC89C52是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出

22、(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,STC89C51可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。</p><p>  1.3 單片機的基本結(jié)構(gòu)</p><p>  STC89C-52單片機內(nèi)部結(jié)構(gòu)</p><p>

23、  STC89C-52單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:</p><p><b>  中央處理器:</b></p><p>  中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼

24、,CPU負責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。</p><p>  數(shù)據(jù)存儲器(RAM)</p><p>  STC89C-52內(nèi)部有256個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有256個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或

25、用戶定義的字型表。</p><p>  程序存儲器(ROM):</p><p>  STC89C-52共有8192個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p>  定時/計數(shù)器(ROM):</p><p>  STC89C-52有三個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。</p&g

26、t;<p>  并行輸入輸出(I/O)口:</p><p>  STC89C-52共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。</p><p><b>  全雙工串行口:</b></p><p>  STC89C-52內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收

27、發(fā)器,也可以當(dāng)同步移位器使用。</p><p><b>  中斷系統(tǒng):</b></p><p>  STC89C-52具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。</p><p><b>  時鐘電路:</b></p><p&g

28、t;  STC89C-52內(nèi)置最高頻率達12MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但STC89C-52單片機需外置振蕩電容。</p><p>  單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的MCS-52系列單片機采用的是哈佛結(jié)構(gòu)的形

29、式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結(jié)構(gòu)。</p><p><b>  復(fù)位電路</b></p><p>  單片機的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。</p><p>  上電自動和手動復(fù)位電路圖

30、</p><p>  圖2-5 內(nèi)部和外部時鐘方式圖 </p><p>  第二部分 數(shù)字鐘的硬件設(shè)計</p><p>  2.1 最小系統(tǒng)設(shè)計 </p><p>  單片機的最小系統(tǒng)是由電源、復(fù)位、晶振、/EA=1組成,下面介紹一下每一個組成部分。</p><p>  1.電源引腳 </

31、p><p>  Vcc 40 電源端</p><p>  GND 20 接地端</p><p>  工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。 </p><p><b>  2.外接晶體引腳</b></p><p>  圖3-2 晶振連接的內(nèi)部、外部方式圖</

32、p><p><b>  XTAL1 19</b></p><p><b>  XTAL2 18</b></p><p>  XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就

33、為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。系統(tǒng)的時鐘電路設(shè)計是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對外接電容的值雖然沒有嚴格的要求,但電容的大小會

34、影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為22μF。在焊接刷電路板時,晶體振蕩器和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。</p><p>  3. 復(fù)位 RST 9</p><p>  在振蕩器運行時,有兩個機器周期(24個振蕩周期)以

35、上的高電平出現(xiàn)在此引腿時,將使單片機復(fù)位,只要這個腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運行程序。復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機器周期的S5P2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電自動復(fù)位和

36、按鈕復(fù)位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復(fù)位電路。當(dāng)時鐘頻率選用6MHz時,C取22μF,Rs約為200Ω,Rk約為1K。復(fù)位操作不會對內(nèi)部RAM有所影響。</p><p>  常用的復(fù)位電路如下圖所示:</p><p>  圖3-3 常用復(fù)位電路圖</p><p><b>  4.輸入輸出引腳</b></p><p&

37、gt;  (1) P0端口[P0.0-P0.7] P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。</p><p>  對內(nèi)部Flash程序存儲器編程時,接收指令字節(jié);校驗程序時輸出指令字節(jié),要求外接上拉電阻。</p><p>  在訪問外部程序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電

38、阻起作用。</p><p>  (2) P1端口[P1.0-P1.7] P1是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。</p><p>  對內(nèi)部Flash程序存儲器編程時,接收低8位地址信息。</p><p>  (3) P2端口[P2.0-P2.7] P2是一個帶有內(nèi)部上拉電阻的8位雙

39、向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收高8位地址和控制信息。</p><p>  在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。</p><p>  (4) P3端口[P3.0-P3.7] P2是一個帶有內(nèi)部上拉電阻的8

40、位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。</p><p>  對內(nèi)部Flash程序存儲器編程時,接控制信息。除此之外P3端口還用于一些專門功能,具體請看下表。</p><p>  P3端口引腳兼用功能表</p><p>  2.2 LED顯示電路</p><p>  顯示器普遍地用于直觀地

41、顯示數(shù)字系統(tǒng)的運行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝,單片機應(yīng)用系統(tǒng)中常用的顯示器有: 發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一,如下圖所示。</p><p>  LED顯示器的符號圖</p><p>  發(fā)光二極管(LED)由特殊的半導(dǎo)體材料砷化鎵、磷砷化鎵等制成,可以單獨使用,也可以組裝成分段式或點陣式LED顯示器件(半導(dǎo)體顯示器)

42、。分段式顯示器(LED數(shù)碼管)由7條線段圍成8字型,每一段包含一個發(fā)光二極管。外加正向電壓時二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號。LED數(shù)碼管有共陽、共陰之分。圖是共陽式、共陰式LED數(shù)碼管的原理圖和符號.</p><p>  共陽式、共陰式LED數(shù)碼管的原理圖和數(shù)碼管的符號圖</p><p>  顯示電路顯示模塊需要實時顯示當(dāng)前的時間,即時、分

43、、秒,因此需要6個數(shù)碼管。采用動態(tài)顯示方式顯示時間,硬件連接如下圖所示,時的十位和個位分別顯示在第一個和第二個數(shù)碼管,分的十位和個位分別顯示在第三個和四五個數(shù)碼管,秒的十位和個位分別顯示在第五個和第六個數(shù)碼管。LED顯示器的顯示控制方式按驅(qū)動方式可分成靜態(tài)顯示方式和動態(tài)顯示方式兩種。對于多位LED顯示器,通常</p><p>  都是采用動態(tài)掃描的方法進行顯示,其硬件連接方式如下圖所示。</p>&

44、lt;p>  數(shù)碼管的硬件連接示意圖</p><p><b>  數(shù)碼管使用條件:</b></p><p>  a、段及小數(shù)點上加限流電阻 </p><p>  b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點:根據(jù)發(fā)光顏色決定</p><p>  c、使用電流:靜態(tài):總電流 80mA(每段 10mA);動

45、態(tài):平均電流 4-5mA 峰值電流 100mA</p><p>  數(shù)碼管使用注意事項說明:</p><p>  (1)數(shù)碼管表面不要用手觸摸,不要用手去弄引角;</p><p> ?。ǎ玻┖附訙囟龋海玻叮岸?;焊接時間:5S</p><p> ?。ǎ常┍砻嬗斜Wo膜的產(chǎn)品,可以在使用前撕下來。</p><p>  第三部

46、分 數(shù)字鐘的軟件設(shè)計</p><p>  系統(tǒng)的軟件設(shè)計也是工具系統(tǒng)功能的設(shè)計。單片機軟件的設(shè)計主要包括執(zhí)行軟件(完成各種實質(zhì)性功能)的設(shè)計和監(jiān)控軟件的設(shè)計。單片機的軟件設(shè)計通常要考慮以下幾個方面的問題:</p><p> ?。?)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個相對獨立的部分,設(shè)計出合理的總體結(jié)構(gòu),使軟件開發(fā)清晰、簡潔和流程合理;</p><p>  (

47、2)培養(yǎng)良好的編程風(fēng)格,如考慮結(jié)構(gòu)化程序設(shè)計、實行模塊化、子程序化。既便于調(diào)試、鏈接,又便于移植和修改;</p><p>  (3)建立正確的數(shù)學(xué)模型,通過仿真提高系統(tǒng)的性能,并選取合適的參數(shù);</p><p> ?。?)繪制程序流程圖;</p><p> ?。?)合理分配系統(tǒng)資源;</p><p> ?。?)為程序加入注釋,提高可讀性,實施

48、軟件工程;</p><p>  (7)注意軟件的抗干擾設(shè)計,提高系統(tǒng)的可靠性。</p><p>  3.1軟件設(shè)計流程圖</p><p>  這次的數(shù)字電子鐘設(shè)計用到很多子程序,它們的流程圖如下所示。</p><p>  主程序是先進行初始的設(shè)置,然后啟動定時器計數(shù)器0,定時器啟動后再進行按鍵檢測,檢測完后,在根據(jù)為各種顯示設(shè)置的標志來判斷顯

49、示時分秒,年月日或鬧鐘時間,若判斷有按鍵則進入相應(yīng)按鍵處理子程序進行操作。</p><p>  按鍵處理是先檢測秒按鍵是否按下,秒按鍵如果按下,秒就加1;如果沒有按下,就檢測分按鍵是否按下,分按鍵如果按下,分就加1;如果沒有按下,就檢測時按鍵是否按下,時按鍵如果按下,時就加1;如果沒有按下,就把時間顯示出來。 </p><p><b>  按鍵處理流程圖</b>&l

50、t;/p><p>  采用定時器計數(shù)器0,工作在方式1下,每50毫秒中斷一次,若計時中斷每到20次則跳出中斷繼續(xù)計時,若到20次則秒存儲單元加1,若秒不滿60則跳出中斷,滿60則清零,分單元加1,分滿60則清零,時單元加1,不滿24退出中斷,滿則時單元清零,日單元加1,如此方式累次下去就完成時分秒,年月日的走時。</p><p><b>  定時器中斷流程圖</b><

51、;/p><p><b>  鬧鐘設(shè)置流程圖</b></p><p>  數(shù)字電子鐘的工作原理。</p><p>  工作原理 : </p><p>  數(shù)字電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,另外還有校時功能。因此,一個基本的數(shù)字鐘

52、電路主要由顯示器“時”,“分”,“秒”和單片機,還有校時電路組成。8個數(shù)碼管的段選接到單片機的P0口,位選接到單片機的P2口。數(shù)碼管按照數(shù)碼管動態(tài)顯示的工作原理工作,將標準秒信號送入“秒單元”,“秒單元”采用60進制計數(shù)器,每累計60秒發(fā)出一個“分脈沖”信號,該信號將作為“分單元”的時鐘脈沖。“分單元”也采用60進制計數(shù)器,每累計60分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時單元”?!皶r單元”采用24進制計時器,可實現(xiàn)對一天24小

53、時的累計。顯示電路將“時”、“分”、“秒”通過七段顯示器顯示出來。</p><p>  3.2設(shè)計主程序。(采用匯編語言編寫程序)</p><p><b>  資源分配:</b></p><p>  P0.0-7口 為數(shù)碼管段選,采用共陰顯示管。</p><p>  ;P2.0-5數(shù)碼管位選</p><

54、;p>  30H-秒,31H-分,32H-時,40H-日,41H-月,42H-年</p><p>  鬧鐘:50H-秒,51H-分,52H-時</p><p>  60H,61H,調(diào)整定位計數(shù)單元</p><p><b>  38H-計數(shù)單元</b></p><p>  F0-切換標志,為1顯示日期,為0顯示時間&

55、lt;/p><p>  PSW.1為1顯示鬧鐘定時單元,為0正常顯示時間</p><p><b>  R7定時中斷次數(shù)</b></p><p><b>  R5延時計數(shù)單元</b></p><p>  R2-掃描碼初始單元</p><p><b>  ORG 0000H

56、</b></p><p>  LJMP MAIN;跳入主程序初始化</p><p>  ORG 000BH ;定時中斷0入口地址</p><p><b>  LJMP TM0</b></p><p><b>  ORG 0030H</b></p><p>

57、  MAIN: MOV 60H,#00 ;時分秒定位計數(shù)</p><p>  MOV 61H,#00 ;鬧鐘定位計數(shù)</p><p>  CLR PSW.1 </p><p><b>  CLR F0</b></p><p>  MOV SP,#6FH ;堆棧指針初始化</p>&l

58、t;p>  MOV 30H,#50H ;秒初始化</p><p>  MOV 31H,#36H ;分初始化</p><p>  MOV 32H,#14H ;時初始化</p><p>  MOV 40H,#22H ;日初始化</p><p>  MOV 41H,#12H ;月初始化</p><p>  M

59、OV 42H,#11H ;年初始化</p><p>  MOV 50H,#00H</p><p>  MOV 51H,#30H</p><p>  MOV 52H,#14H</p><p>  MOV R7,#20 ;50毫秒中斷50次</p><p>  MOV SCON,#00</p><

60、;p>  MOV DPTR,#TAB</p><p>  MOV IE,#82H</p><p>  MOV TMOD,#01H</p><p>  MOV TH0,#3CH</p><p>  MOV TL0,#0B0H</p><p>  SETB TR0 ;啟動計時</p><

61、p>  LOOP1: ACALL DSP1 ;調(diào)用顯示時分秒程序</p><p>  ACALL CJDW ;查鍵</p><p>  ACALL DSP2 ;調(diào)用顯示年月日子程序 </p><p>  ACALL NZXX;鬧鐘顯示</p><p>  ACALL NN;鬧鐘設(shè)定</p><

62、;p>  AJMP LOOP1</p><p>  DSP1: JB PSW.1,EXQ0 ;PSW.1為1跳出</p><p>  JB F0,EXQ0 ;F0為1跳出</p><p>  MOV R2,#0FEH ;掃描碼初始化</p><p>  MOV R6,#03 </p><p>  

63、MOV R0,#32H ;顯示單元初始化</p><p>  ACALL SCAN ;調(diào)用掃描子程序</p><p><b>  RET </b></p><p>  DSP2: JB PSW.1,EXQ0</p><p>  JNB F0,EXQ0</p><p>  MOV R2

64、,#0FEH</p><p>  MOV R6,#03</p><p>  MOV R0,#42H</p><p>  ACALL SCAN </p><p>  EXQ0: RET</p><p>  SCAN: NOP</p><p>  LOOP2: MOV A,@R0<

65、;/p><p>  ANL A,#0F0H ;取高位</p><p><b>  SWAP A</b></p><p>  MOVC A,@A+DPTR ;查表</p><p>  MOV SBUF,A ;送入SBUF串行輸出</p><p><b>  JNB TI,$</

66、b></p><p><b>  CLR TI</b></p><p><b>  MOV A,R2</b></p><p>  MOV P2,A ;送位選碼,選通數(shù)碼管</p><p><b>  RL A</b></p><p>&l

67、t;b>  MOV R2,A</b></p><p>  ACALL DELAY1MS ;單個數(shù)碼管顯示延時</p><p><b>  MOV A,@R0</b></p><p>  ANL A,#0FH</p><p>  MOVC A,@A+DPTR</p><p>  

68、MOV SBUF,A</p><p><b>  JNB TI,$</b></p><p><b>  CLR TI</b></p><p><b>  MOV A,R2</b></p><p><b>  MOV P2,A</b></p>

69、<p><b>  RL A</b></p><p><b>  MOV R2,A</b></p><p><b>  DEC R0</b></p><p>  ACALL DELAY1MS</p><p>  DJNZ R6,LOOP2</p><

70、;p><b>  RET</b></p><p>  DELAY1MS:MOV R5,#02 ;延時1毫秒</p><p>  LP3: MOV B,#250</p><p><b>  DJNZ B,$</b></p><p>  DJNZ R5,LP4</p>

71、<p><b>  RET</b></p><p>  DELAY10MS:MOV R5,#10 ;查鍵延時10毫秒(延時去抖)</p><p>  LP4: MOV B,#250</p><p><b>  DJNZ B,$</b></p><p>  DJNZ R5

72、,LP4</p><p><b>  RET</b></p><p>  CJDW: NOP</p><p>  K1: JB P1.4,K2</p><p>  ACALL DELAY10MS</p><p>  JB P1.4,K2</p><p>

73、  XH:JNBF0,SFM</p><p>  ACALLDSP2</p><p>  AJMP NEXT</p><p>  SFM: ACALLDSP1</p><p>  NEXT: JNBP1.4,XH</p><p><b>  CPL F0</b></

74、p><p><b>  RET</b></p><p>  K2: JB P1.5,K3</p><p>  ACALL DELAY10MS</p><p>  JB P1.5,K3</p><p><b>  MOV A,60H</b></p><

75、;p><b>  ADD A,#01</b></p><p><b>  MOV 60H,A</b></p><p>  CJNE A,#07,K3</p><p><b>  CLR F0</b></p><p>  JX1: MOV R0,#32H</

76、p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  JNB P1.5,JX1</p><p>  EXQ1: MOV 6

77、0H,#00</p><p><b>  RET</b></p><p>  K3: NOP</p><p>  TM: MOV A,60H ;秒調(diào)整</p><p>  CJNE A,#01,TF;定位到秒?</p><p>  MOV 38H,#160

78、;循環(huán)顯示160次</p><p>  LOOP3: MOV R0,#32H ;閃爍,秒單元不顯示</p><p>  MOV R2,#0FEH ;掃描碼初始化</p><p>  MOV R6,#02 ; 只顯示時和分</p><p><b>  MOV A,@R0</b></p><

79、;p>  ACALL SCAN ;調(diào)用掃描子程序</p><p>  DJNZ 38H,LOOP3</p><p>  MOV 38H,#01</p><p>  LOOP5: MOV R0,#32H ;正常顯示</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03&

80、lt;/p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38,LOOP5</p><p>  JB P1.6,EXQ2 ;判斷是否按加1鍵</p><p>  ACALL DELAY10MS ;延時10毫秒去抖</p&

81、gt;<p>  JB P1.6,EXQ2</p><p>  MOV A,30H ;秒加1</p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 30H,A</b></p><p> 

82、 CJNE A,#60H,EXQ2 ;秒滿60</p><p>  MOV 30H,#00H ;清零</p><p>  RET ;返回主程序</p><p>  TF: CJNE A,#02,TS ;調(diào)分</p><p>  MOV 38H,#160</p><

83、p>  LOOP6: MOV R0,#32H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  MOV R0,#30H</p

84、><p>  MOV R2,#0EFH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP6 </p><p>  MOV 3

85、8H,#100</p><p>  LOOP7: MOV R0,#32H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p

86、>  DJNZ 38H,LOOP7 </p><p>  JB P1.6,EXQ2</p><p>  ACALL DELAY10MS</p><p>  JB P1.6,EXQ2</p><p><b>  MOV A,31H</b></p><p>  ADD A,#01

87、H</p><p><b>  DA A</b></p><p><b>  MOV 31H,A</b></p><p>  CJNE A,#60H,EXQ2</p><p>  MOV 31H,#00H</p><p><b>  RET</b><

88、;/p><p>  EXQ2: RET</p><p>  TS: CJNE A,#03,TR 調(diào)時</p><p>  MOV 38H,#160</p><p>  LOOP8: MOV R0,#31H</p><p>  MOV R2,#0FBH</p><p

89、>  MOV R6,#02</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP8</p><p>  MOV 38H,#120</p><p>  LOOP9: MOV R0,#32H</

90、p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP9</p><p>  JB P1.6,EXQ3&

91、lt;/p><p>  ACALL DELAY10MS</p><p>  JB P1.6,EXQ3</p><p><b>  MOV A,32H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p&

92、gt;<b>  MOV 32H,A</b></p><p>  CJNE A,#24H,EXQ3</p><p>  MOV 32H,#00H</p><p><b>  EXQ3:RET</b></p><p>  TR: ;調(diào)日</p>

93、<p>  CJNE A,#04,TY </p><p>  MOV 38H,#120</p><p>  LOOP10: MOV R0,#42H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#02</p><p><b>  MOV A,@R0<

94、/b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP10 </p><p>  MOV 38H,#120</p><p>  LOOP11: MOV R0,#42H</p><p>  MOV R2,#0FEH</p><p>  MOV

95、 R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP11</p><p>  JB P1.6,EXQ4</p><p>  ACALL DELAY10MS</p><p&

96、gt;  JB P1.6,EXQ4</p><p><b>  MOV A,40H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 40H,A</b></p><p> 

97、 CJNE A,#31H,EXQ4</p><p>  MOV 40H,#00H</p><p><b>  RET</b></p><p>  TY: CJNE A,#05,TN ;調(diào)月</p><p>  MOV 38H,#160</p><p>  LOOP12:

98、MOV R0,#42H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  MOV R0,#40H</p><p>  

99、MOV R2,#0EFH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP12 </p><p>  MOV 38H,#100</p>

100、;<p>  LOOP13: MOV R0,#42H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,L

101、OOP13 </p><p>  JB P1.6,EXQ4</p><p>  ACALL DELAY10MS</p><p>  JB P1.6,EXQ4</p><p><b>  MOV A,41H</b></p><p>  ADD A,#01H</p>&l

102、t;p><b>  DA A</b></p><p><b>  MOV 41H,A</b></p><p>  CJNE A,#13H,EXQ4</p><p>  MOV 41H,#00H </p><p>  EXQ4: RET</p><p&g

103、t;  TN: CJNE A,#06,EXQ5 ;調(diào)整年</p><p>  MOV 38H,#160</p><p>  LOOP14: MOV R0,#41H</p><p>  MOV R2,#0FBH</p><p>  MOV R6,#02</p><p><b>  

104、MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP14 </p><p>  MOV 38H,#120</p><p>  LOOP15: MOV R0,#42H</p><p>  MOV R2,#0FEH</p><

105、;p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,LOOP15</p><p>  JB P1.6,EXQ5</p><p>  ACALL DELAY10MS</p&

106、gt;<p>  JB P1.6,EXQ5</p><p><b>  MOV A,42H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 42H,A</b></p>

107、<p>  CJNE A,#99H,EXQ5</p><p>  MOV 42H,#00H</p><p><b>  EXQ5:RET</b></p><p>  NN: JB P1.7,N0 ;P1.7鬧鐘定位</p><p>  ACALL DELAY10MS ;延時去抖<

108、;/p><p>  DD: JB P1.7,N0</p><p>  SETB PSW.1</p><p><b>  MOV A,61H</b></p><p><b>  ADD A,#01</b></p><p><b>  MOV 61H,A</b

109、></p><p>  CJNE A,#04,N0</p><p><b>  CLR PSW.1</b></p><p>  JX2: MOV R0,#52H ;退出鬧鐘是正常顯示時間待按鍵結(jié)束</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#

110、03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  JNB P1.7,JX2</p><p>  MOV 61H,#00</p><p><b>  RET</b></p><p>

111、;  N0: MOV A,61H</p><p>  CJNE A,#01,N1 ;設(shè)定秒</p><p>  MOV 38H,#120</p><p>  DD1: MOV R0,#52H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#02</p>

112、;<p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,DD1</p><p>  MOV 38H,#120</p><p>  DD2: MOV R0,#52H</p><p>  MOV R2,#0F

113、EH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,DD2</p><p>  JB P1.6,DD</p><p>  ACALL DELA

114、Y10MS</p><p>  JB P1.6,DD</p><p><b>  MOV A,50H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 50H,A</b>&

115、lt;/p><p>  CJNE A,#60H,EXIT1</p><p>  MOV 50H,#00H</p><p>  EXIT0: RET</p><p>  N1: CJNE A,#02,N2 ;設(shè)定分</p><p>  MOV 38H,#120</p><p&

116、gt;  DD3: MOV R0,#52H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  MOV R0,#50H</p>

117、<p>  MOV R2,#0EFH</p><p>  MOV R6,#01</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,DD3 </p><p>  MOV 38H,#12

118、0</p><p>  DD4: MOV R0,#52H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJ

119、NZ 38H,DD4 </p><p>  JB P1.6,TC</p><p>  ACALL DELAY10MS</p><p>  JB P1.6,TC</p><p><b>  MOV A,51H</b></p><p>  ADD A,#01H</p>&

120、lt;p><b>  DA A</b></p><p><b>  MOV 51H,A</b></p><p>  CJNE A,#60H,EXIT1</p><p>  MOV 51H,#00H</p><p><b>  RET</b></p><

121、p>  N2: CJNE A,#03,EXIT1 ;設(shè)定時</p><p>  MOV 38H,#160</p><p>  DD5: MOV R0,#51H</p><p>  MOV R2,#0FBH</p><p>  MOV R6,#02</p><p><b>  M

122、OV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,DD5 </p><p>  MOV 38H,#120</p><p>  DD6: MOV R0,#52H</p><p>  MOV R2,#0FEH</p><p> 

123、 MOV R6,#03</p><p><b>  MOV A,@R0</b></p><p>  ACALL SCAN</p><p>  DJNZ 38H,DD6 </p><p>  JB P1.6,TC</p><p>  ACALL DELAY10MS</p><p&

124、gt;  JB P1.6,TC</p><p><b>  MOV A,52H</b></p><p>  ADD A,#01H</p><p><b>  DA A</b></p><p><b>  MOV 52H,A</b></p><p>  C

125、JNE A,#12H,EXIT1</p><p>  MOV 52H,#00H</p><p>  EXIT1: RET</p><p>  TC: AJMP DD</p><p>  NZXX: MOV A,52H</p><p>  CJNE A,32H,EXIT2</p>

126、<p><b>  MOV A,51H</b></p><p>  CJNE A,31H,EXIT2</p><p>  CT: MOV R0,#52H</p><p>  MOV R2,#0FEH</p><p>  MOV R6,#03</p><p><b&g

127、t;  MOV A,@R0</b></p><p>  ACALL SCAN</p><p><b>  CLR P3.5</b></p><p>  ACALL DELAY1MS</p><p><b>  SETB P3.5</b></p><p>  ACA

128、LL DELAY1MS</p><p><b>  CLR P3.5</b></p><p>  ACALL DELAY1MS</p><p>  JB P1.7,CT </p><p>  ACALL DELAY1MS</p><p>  JB P1.7,CT </p>

129、;<p><b>  SETB P3.5</b></p><p><b>  SETB P3.5</b></p><p>  CLR PSW.1 </p><p>  EXIT2: RET </p><p>  TM0: PUSH PSW

130、 ;定時中斷程序</p><p><b>  PUSH ACC</b></p><p>  MOV TH0,#3CH ;計數(shù)初值重賦值</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R7,EXQ</p><p>  MOV R7,#20

131、 ;是否中斷20次</p><p>  MOV A,30H </p><p>  ADD A,#01H ;秒加1</p><p><b>  DA A</b></p><p><b>  MOV 30H,A</b></p><p>  CJN

132、E A,#60H,EXQ ;滿60秒?</p><p>  MOV 30H,#00H ;清零</p><p><b>  MOV A,31H</b></p><p>  ADD A,#01H ;分加1</p><p><b>  DA A</b></p>

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論