畢業(yè)論文--基于單片機電子時鐘的設計_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  專 科 畢 業(yè) 大 作 業(yè)</p><p><b>  二○一二年五月八日</b></p><p><b>  內(nèi)容摘要:</b></p><p>  本次設計主要是利用AT89C51單片機完成,其中AT89C51是核心元件同時采用數(shù)碼管動態(tài)顯示“時”、“分”、“秒”的現(xiàn)代計時裝置。與傳統(tǒng)機械表相比,

2、它具有走時精確,顯示直觀等特點。它的計時周期為24小時,顯示滿刻度為“23時59分59秒”,另外具有校時功能、整點報時功能、鬧鈴功能、斷電后有記憶功能、恢復供電時可實現(xiàn)計時同步等特點。</p><p>  本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)數(shù)字顯示計時系統(tǒng)的方法,本設計硬件由單片機AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構成了一個單片機數(shù)字顯示計時(鬧鐘)顯示系統(tǒng),硬件電路仿真由Prot

3、eus仿真軟件完成,軟件由偉福(WAVE)編程完成。</p><p>  關鍵詞:AT89C51 LED 鬧鈴 整點報時 </p><p><b>  目錄</b></p><p>  引言……………………………………………………………3</p><p><b>  第一章 概述</b

4、></p><p>  1.1 課題簡介…………………………………………………4</p><p>  1.2 設計的主要原理…………………………………………4</p><p>  1.3方案論證…………………………………………………4</p><p>  1.4設計的目的及要求………………………………………5</p>&l

5、t;p><b>  第二章 硬件設計</b></p><p>  2.1 硬件部分框圖……………………………………………6</p><p>  2.2 使用芯片介紹……………………………………………6</p><p>  2.3 分電路設計………………………………………………9</p><p><b>

6、  第三章 軟件設計</b></p><p>  3.1 單元分配………………………………………………14</p><p>  3.2 程序框圖與匯編程序…………………………………14</p><p><b>  第四章 調(diào)試</b></p><p>  4.1 軟件調(diào)試……………………………………………

7、…22</p><p>  4.2 protues仿真軟件的應用………………………………22</p><p>  4.3性能分析…………………………………………………23</p><p>  小結……………………………………………………………24</p><p>  參考文獻…………………………………………………………………25</p&

8、gt;<p>  附錄A 源程序…………………………………………………………26</p><p>  附錄B 電路原理圖……………………………………………………36 附錄C 元件清單………………………………………………………37</p><p><b>  引言</b></p><p>  時鐘,自從它發(fā)明的那天起,就成為人

9、類的朋友,但隨著時間的推移,科學技術的不斷發(fā)展,人們對時間計量的精度要求越來越高,應用越來越廣。怎樣讓時鐘更好的為人民服務,怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設計出新型時鐘。</p><p>  現(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術,因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯

10、示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p>  時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎。在一個單片機應用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,

11、它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法,典型的時鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>  本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設計由單片機AT89S51芯片和LED數(shù)碼管為核

12、心,輔以必要的電路,構成了一個單片機電</p><p><b>  子時鐘。</b></p><p><b>  第一章 概述</b></p><p><b>  1.1 課題簡介</b></p><p>  數(shù)字鐘是一種用數(shù)字電路技術實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比

13、具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,已得到廣泛的使用。數(shù)字鐘的設計方法有許多種,例如,可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;還可以利用單片機來實現(xiàn)電子鐘等等。這些方法都各有其特點,其中利用單片機實現(xiàn)的電子鐘具有編程靈活,并便于功能的擴展。</p><p>  單片機應用的重要意義在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設

14、計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術也稱為微控制技術,是傳統(tǒng)控制技術的一次革命。</p><p>  本次設計以AT89C51單片機為核心來控制時鐘電路、按鍵電路、復位電路、LED顯示器段碼驅(qū)動電路、LED顯示器碼驅(qū)動電路、6位LED顯示器電路以及蜂鳴器,以達到對“時”“分”“秒”精確的控制和顯示。</p><p

15、>  1.2 設計的主要原理</p><p>  電路工作原理:該電路以AT89C51為核心。顯示器用七段共陽LED數(shù)碼管顯示器,顯示小時、分鐘以及秒,從P0口接入4個按鈕開關,作為輸入電路,進行手動設置調(diào)時、調(diào)分和調(diào)秒,通過P2,P1口來實現(xiàn)對顯示的實時控制。</p><p>  1.3 設計的目的及要求</p><p>  1. 設 計 目 的</p

16、><p> ?。?)熟悉集成電路的引腳安排;</p><p> ?。?)熟悉并掌握80C51的結構原理及應用;</p><p>  (3)了解電路板結構及其接線方法;</p><p> ?。?)了解數(shù)字鐘的組成及工作原理;</p><p> ?。?)掌握芯片的邏輯功能及使用方法;</p><p> 

17、 (6)熟悉數(shù)字鐘的設計與制作。</p><p>  2. 設 計 要 求</p><p> ?。?)報時用中斷方式計時;</p><p> ?。?)到整時時能夠準時;</p><p> ?。?)由晶振提供標準時間基準信號;</p><p> ?。?)自動計時并具備校調(diào)功能??梢詥为殞γ恳晃恍U{(diào);</p>

18、<p> ?。?)設置四個按鍵SET,RET,ALM和+1鍵,對時,分,秒進行調(diào)整;</p><p>  (6)通過軟件編程的方法實現(xiàn)以24小時為一個周期同時顯示小時,分鐘和秒。</p><p><b>  1.4方案論證</b></p><p><b>  方案一:</b></p><p

19、>  采用實時時鐘芯片設計:</p><p>  針對計算機系統(tǒng)對實時時鐘功能的普遍需求,各大芯片生產(chǎn)廠家陸續(xù)推出了一系列的實時時鐘集成芯片,如DS1287,DS12887等,這些實時時鐘芯片具備年月日,時分秒計時功能和多點定時功能,計時數(shù)據(jù)的更新每秒進行一次,不需程序干預。計算機間程序簡單。此外,實時時鐘芯片多數(shù)帶有鋰電池做后備電池具備永不停止的計時功能,具有可編程方波輸出功能,可用做實時測控系統(tǒng)的采樣信

20、號等;有的實時時鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長期保存的但有時也需變更的數(shù)據(jù)。</p><p><b>  方案二:</b></p><p>  采用單片機軟件控制技術:</p><p>  利用AT89C51內(nèi)部的16位定時/計數(shù)器進行中斷服務,配合軟件延時實現(xiàn)計時計時及控制全部采用軟件控制,并配合外圍顯示及鍵盤電路,從而實現(xiàn)電

21、子時鐘的各項功能。</p><p>  比較上述兩種方案:方案一雖然功能強大,性能較好但所用芯片較貴、外圍邏輯電路復雜,且靈活性較低,不利于各種功能的擴展;方案二此系統(tǒng)硬件簡單,將復雜的硬件功能用軟件實現(xiàn),因此系統(tǒng)控制靈活,能很好的滿足基本需求,且能夠使人在定時/計數(shù)器的使用、中斷及程序設計方面得到鍛煉與提高,因此本次設計采用方案二。</p><p><b>  第二章 硬件設計

22、</b></p><p>  2.1 硬件部分框圖</p><p>  圖2-1為該系統(tǒng)設計方案的硬件電路設計框圖。該數(shù)字顯示計時系統(tǒng)的硬件電路是由單片機、時鐘電路、按鍵電路、復位電路、LED顯示器段碼驅(qū)動電路、LED顯示器碼驅(qū)動電路、6位LED顯示器電路。</p><p>  圖2-1硬件電路框圖</p><p>  在圖2-1

23、中,以AT89C51單片機為核心,LED數(shù)碼管顯示內(nèi)容通過P1口從單片機傳送到數(shù)碼管。P2口是數(shù)碼管位選控制端口。形成一個可以顯示時,分,秒的數(shù)字顯示計時系統(tǒng)。</p><p>  在這一系統(tǒng)中當時間調(diào)整設置鍵(SET)被按下時,系統(tǒng)進入時間調(diào)整輸入功能狀態(tài);當定時時間設置鍵(ALM)被按下時,系統(tǒng)進入定時(鬧鐘)時間輸入功能狀態(tài);當+1調(diào)整鍵被按下時,被調(diào)整位加一;當確認鍵(RET)被按下時,指向下一個要調(diào)整的

24、位。4個按鍵開關通過不同的組合實現(xiàn)外部控制程序狀態(tài)</p><p>  2.2 使用芯片介紹</p><p>  AT89C51 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8

25、 位CPU 和在系統(tǒng)可編程Flash,使得AT89C51為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89 c51具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM

26、、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。</p><p>  AT89C51是單片機中的典型產(chǎn)品,AT89C51單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,如圖2.1所示。</p><

27、;p>  圖2.1 單片機內(nèi)部結構示意圖</p><p><b>  現(xiàn)分別加以說明:</b></p><p><b>  1、中央處理器</b></p><p>  中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成

28、運算和控制輸入輸出功能等操作。</p><p>  2、數(shù)據(jù)存儲器(RAM)</p><p>  AT89C51內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結果或用戶定義的字型表。</p><p&g

29、t;  3、程序存儲器(ROM)</p><p>  AT89C51共有4KB掩膜ROM,最大可擴展64K字節(jié),用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p><b>  4、定時/計數(shù)器:</b></p><p>  AT89C51有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉向。</p><

30、p>  5、并行輸入輸出(I/O)口:</p><p>  AT89C51共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。</p><p><b>  6、中斷系統(tǒng)</b></p><p>  AT89C51具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)

31、先級別選擇。</p><p>  7、AT89C51的引腳介紹</p><p>  AT89C51單片機內(nèi)部總線是單總線結構,即數(shù)據(jù)總線和地址總線是公用的. AT89C51有40條引腳, 這40條引腳可分為I/O接口線、電源線、控制線、外接晶體線4部分。 AT89C51單片機為雙列直插式封裝結構, 如圖2.2所示。</p><p>  圖2.2 AT89C51引腳分

32、配圖</p><p>  AT89C51單片機的電源線有以下兩種:</p><p>  (1)VCC:+5V電源線。 </p><p>  (2)GND:接地線。</p><p>  AT89C51單片機的外接晶體引腳有以下兩種: </p><p>  (1)XTAL1:片內(nèi)振蕩器反相放大器的輸入端和內(nèi)部時鐘工作的輸

33、入端。采用內(nèi)部振蕩器時,它接外部石英晶體和微調(diào)電容的一個引腳。</p><p>  (2)XTAL2:片內(nèi)振蕩器反相放大器的輸出端,接外部石英晶體和微調(diào)電容的另一端。采用外部振蕩器時,該引腳懸空。外接晶體引腳。</p><p>  控制線 AT89C51單片機的控制線有以下幾種:</p><p> ?。?)RST:復位輸入端,高電平有效。</p>&

34、lt;p> ?。?)ALE/PROG:地址鎖存允許/編程線。</p><p> ?。?)PSEN:外部程序存儲器的讀選通線。</p><p>  (4)EA/Vpp:片外ROM允許訪問端/編程電源端。 </p><p><b>  2.3 分電路設計</b></p><p>  1.按鍵電路設計與器件選擇<

35、/p><p>  具備隨時對當前時間進行調(diào)整的基本功能,由于并不需要經(jīng)常修改時間且按鍵少可以接入獨立式鍵盤輸入電路。獨立式鍵盤結構電路是由按鍵和4個電阻組成,按鍵分別命名為 SET.ALM.RET和+1,按鍵可以采用輕觸開關,電阻采用并腳排電阻(4*10K)如圖2-4所示:</p><p><b>  圖2-4 鍵盤結構</b></p><p> 

36、 在圖2- 4中4個按鍵的功能的具體說明: </p><p> ?、賀ET確認鍵的功能:</p><p>  確認,即對 +1 調(diào)整位進行確認,該鍵按下時說明被調(diào)整位的值已經(jīng)確定,轉去調(diào)整下一位。</p><p> ?、?1鍵調(diào)整鍵的功能:</p><p>  分別對時間值的小時十位、小時個位、分的十位、分的個位、秒的十位、秒的個位進行+1調(diào)

37、整,即該鍵每按下一次,對應的時間調(diào)整位+1。</p><p><b> ?、跘LM鍵功能:</b></p><p>  設置定時(鬧鐘)時間,即當需要電子時鐘進行定時(鬧鐘)服務時,可以通過該鍵的功能來輸入定時(鬧鐘)時間,使用ALM 鍵與 +1鍵RET 鍵配合來完成這一功能。④SET鍵功能:</p><p>  設置當前時間,即當電子時鐘的時

38、間有誤差時,需要隨時對它進調(diào)整,使用SET 鍵與+1 鍵RET 鍵配合來完成這一功能。</p><p>  鍵盤的硬件電路設計只能保證4個按鍵信號的可靠進入,要想完成鍵盤的輸入功能,還要靠軟件編程來具體實現(xiàn)的。</p><p>  當用手按下一個鍵時,如圖2-5所示,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也回會出現(xiàn)類似的情況。這就是抖動。抖動的持續(xù)時

39、間隨鍵盤材料和操作員而異,不過通??偸遣淮笥?0ms。很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以很容易地解決抖動問題,這就是通過延遲10ms來等待抖動消失,這之后,在讀入鍵盤碼。</p><p>  圖2-5 按鍵抖動信號波形</p><p>  2. LED顯示電路選擇</p><p>  在單片機的應用系統(tǒng)中,通常需要進行人機對話。這包括人

40、對應用系統(tǒng)的狀態(tài)干預與數(shù)據(jù)輸入,以及應用系統(tǒng)向人們顯示運行狀態(tài)與運行結果等。顯示器、鍵盤電路就是用來完成人-機對話活動的人-機通道。</p><p>  LED顯示器的驅(qū)動是一個非常重要的問題,由系統(tǒng)硬件設計框圖可知顯示電路由LED顯示器、段驅(qū)動電路和位驅(qū)動電路組成。在本次設計中運用LED數(shù)碼顯示器、采用PNP管以及單片機的P2口來組成顯示電路。LED顯示器由7個發(fā)光二極管組成,也稱為7段LED顯示器,排列形狀如

41、圖2-3a所示。</p><p>  LED顯示器的發(fā)光二極管有共陰極和共陽極兩種連接方法.圖2-3b為共陰極接法,各發(fā)光二極管的陰極連在一起并接地,當某一發(fā)光二極管的陽極輸入高電平時,則該段發(fā)光;圖2-3c為共陽極接法,各發(fā)光二極管的陽極連在一起并接+5V,當陰極輸入法低電平時,該段發(fā)光二極管發(fā)光。</p><p>  使用LED顯示器時,要注意區(qū)分兩種不同的接法。為了顯示數(shù)字或符號,要

42、為LED顯示器提供代碼(字形碼),在兩種接法中字形碼是不同的。</p><p>  圖2-3 7(8)段LED顯示器</p><p>  7段發(fā)光二極管再加上一個小數(shù)點位,共計8段,提供給LED顯示器的字形碼正好1B,各字形對應關系如下:</p><p>  用LED顯示器顯示十六進制數(shù)的字形碼見表2-2。</p><p>  表2-2 十六

43、進制數(shù)字形代碼表</p><p>  3. 蜂鳴器電路的設計</p><p>  鬧鈴指示可以有聲或光兩種形式,本系統(tǒng)采用聲音指示。關鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當直流電源電壓即可;元件內(nèi)部已經(jīng)封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3V、5V、6V等系列,以適應不同的應用需要。其中PNP小功率三極

44、管采用9012。其最大集電極電流為800mA。完全滿足蜂鳴器驅(qū)動的需要。適當調(diào)節(jié)基極電阻可改變蜂鳴器的發(fā)聲功率。</p><p><b>  圖2-7蜂鳴器電路</b></p><p>  在圖2-7中,當P3.7=0時,VT1導通時,使蜂鳴器的兩個引腳間獲得將近5V的直流電壓,蜂鳴器中有電流通過,而產(chǎn)生蜂鳴音。當P3.7=1時,VT1截止時,蜂鳴器的兩引腳間的直流電

45、壓接近0V,蜂鳴器不發(fā)聲。</p><p>  4. 單 片 機 的 復 位 方 式 與 電路選擇</p><p>  復位就是通過某種方式,使單片機內(nèi)各寄存器的值變?yōu)槌跏蓟癄顟B(tài)的操作。AT89C51單片機在時鐘電路工作以后,在RESET端持續(xù)給出2個機器周期的高電平就可以完成復位操作。復位分為上電自動復位和手動復位兩種方式。</p><p>  本系統(tǒng)采用上電復

46、位方式。上電復位是在單片機接通電源時,對單片機的復位。在上電瞬間RST端與VCC電位相同,隨著電容上電壓的逐漸上升,RST端電位逐漸下降。上電復位所需要的最短時間是振蕩器建立時間加2個機器周期</p><p>  3種方式復位電路圖:</p><p>  注:一般情況下圖中電容C1和C2取30PF左右,晶體的振蕩頻率范圍是1.2~12MHZ。晶體振蕩頻率越高,則系統(tǒng)的時鐘頻率越高,單片機運

47、行速度也越快。一般情況下,單片機使用的振蕩頻率為6MHZ或者說12MHZ。</p><p>  5.相關電路參數(shù)的計算</p><p> ?。?)PNP三極管與P2口之間的電阻選擇:</p><p>  選取三極管9012的放大倍數(shù)為100,選通一個LED數(shù)碼管所需電流即三極管的集電極電流為:Ic=15mA*7=105mA,則它的基極電流Ib=105mA/100=1

48、.05mA,取1mA,三極管壓降為0.7V,則電阻阻值為:R=(5-0.7)V/1mA=4.3K,實際取4.7K</p><p> ?。?)LED數(shù)碼管與P1口之間的電阻選擇:</p><p>  由于LED數(shù)碼管是由七段發(fā)光二極管組成。每個二極管所需電壓為2V,電阻的峰值電流取10mA,又由于P1的壓降為,則電阻上所需電壓為5-2-0.3=2.7V</p><p>

49、;  則電阻上的阻值為2.7V/10mA=270,實際取300</p><p> ?。?)開關與P0口之間的電阻選擇:</p><p>  由于開關端的電阻接+5電源,導線本身的電流是非常微小的,所以我選擇了10K的電阻來完成硬件電路的連接。</p><p> ?。?)I端口分配及連接:</p><p>  P1.0-P1.7:LED數(shù)碼管顯

50、示內(nèi)容通過P0口從單片機傳送到數(shù)碼管。</p><p>  P2.0-P2.5:數(shù)碼管位選控制端口。</p><p>  P0.0- P0.3:分別連接開關,SET、 ALM 、+1和 RET鍵,通過不同的組合實現(xiàn)外部控制程序狀態(tài)。</p><p><b>  第三章 軟件設計</b></p><p><b>

51、  3.1單元分配</b></p><p>  在AT89C51單片機的內(nèi)部00H-1FH為工作寄存器區(qū),20H-2FH為位尋址區(qū),30H-7FH為數(shù)據(jù)緩沖區(qū)。堆棧的先進后出的特點。</p><p>  1.堆棧區(qū) 70H-7FH</p><p>  2.段碼顯示緩沖區(qū) 45H-40H</p><p>  3.當前時間的二進制存儲

52、單元30H-32H</p><p>  4.鬧鈴時間的二進制存儲單元33H-35H</p><p>  5.閃爍顯示單元 20H</p><p>  3.2程序框圖與匯編程序</p><p>  主程序框圖如圖3-1所示:</p><p><b>  圖3-1主程序框圖</b></p>

53、;<p><b>  1 主程序</b></p><p>  主程序的內(nèi)容的一般包括:主程序的起始地址,中斷服務程序的起始地址,有關內(nèi)存單元及相關部件的初始化和一些子程序的調(diào)用等內(nèi)容。</p><p>  設置中斷入口地址、設置主程序的起始地址(開始),為了保護現(xiàn)場設置堆棧指針,為了保證顯示的正確性要進行T0的初始化和顯示緩沖區(qū)與計時有關的寄存器的清零。

54、啟動T0調(diào)用顯示程序顯示當前時間,根據(jù)需要可以進行按鍵處理,一旦鬧鐘時間到,發(fā)出報警,報警時間過后,調(diào)用顯示程序繼續(xù)正常的時間顯示。</p><p><b>  主程序清單如下:</b></p><p>  ORG 0000H ;中斷入口地址</p><p><b>  AJMP MAIN</b></p&

55、gt;<p>  ORG 000BH ;T0中斷</p><p>  AJMP T0INT</p><p>  MAIN: MOV SP,#70H ;設置堆棧指針</p><p>  MOV R6,#06H ;顯示緩沖區(qū)清零</p><p>  MOV R1,#45H</p>&l

56、t;p>  S0:MOV @R1,#00H</p><p><b>  DEC R1</b></p><p>  DJNZ R6,S0</p><p>  MOV TMOD,#01H ;T0為工作方式1</p><p>  MOV TH0,#0BH ;設T0計數(shù)初值</p><p>  

57、MOV TL0,#0DCH</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p>  MOV R2,#00H ;相關寄存器清零</p><p>  MOV R3,#00H</p><p>  MOV R4,#00H</p><p>  MOV R5,#00H</p>&l

58、t;p>  CLR RS0 ;選擇工作區(qū)0</p><p>  MOV R1,#45H ;顯緩區(qū)首指針送R1</p><p>  SETB TR0 ;開T0</p><p>  SS1: LCALL DISP ;調(diào)用顯示程序</p><p>  LCALL KEYBOARD

59、 ;調(diào)用按鍵處理程序</p><p>  MOV R2, 35H ;判斷是否有定時時間</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 34H</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 33H</p><

60、;p>  CJNE R2, #0, NT</p><p><b>  SJMP BB</b></p><p>  NT: MOV A, 35H</p><p>  CJNE A, 32H, BB ;判斷定時時間到否</p><p>  MOV A, 34H</p><p>  C

61、JNE A, 31H, BB</p><p>  MOV A, 33H</p><p>  CJNE A, 30H, BB</p><p>  CLR P3.7 ;時間到發(fā)出報警</p><p>  MOV R7,#15</p><p><b>  SJMP SS1</b>&l

62、t;/p><p>  BB: SETB P3.7</p><p><b>  SJMP SS1</b></p><p><b>  2 中斷系統(tǒng)的介紹</b></p><p>  如果在執(zhí)行主程序時只有一個中斷請求源請求中斷,而這時CPU又是對中斷開放的那么這個中斷立即得到響應。然而由于中斷是

63、隨機產(chǎn)生的,中斷源又不止1個,因此往往會出現(xiàn)這樣的情況:幾個中斷源同時請求中斷,或者當某一個中斷正在響應中,又有其他中斷源請求中斷,這時中斷一般會按如下原則進行處理:</p><p>  不同級的中斷源同時請求中斷時——先高后低</p><p>  同級的中斷源同時申請中斷時——事先規(guī)定</p><p>  處理低級中斷又收到高級中斷請求時——停低轉高</p&

64、gt;<p>  處理高級中斷又收到低級中斷請求時——高不理低</p><p>  AT89C51單片機的中斷系統(tǒng)對優(yōu)先級的控制比較簡單,只規(guī)定了兩個中斷優(yōu)先級,對于每一個中斷源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。在同一個優(yōu)先級中,五個中斷優(yōu)先級的次序如下:</p><p>  外部中斷0(IE0)</p><p>  定時器/計數(shù)器T0溢出中斷(T

65、F0)</p><p>  外部中斷1(IE1)</p><p>  定時器/計數(shù)器T1溢出中斷(TF1)</p><p>  串行口中斷(RI+TI)</p><p>  AT89C51單片機有1個中斷優(yōu)先級寄存器IP,字節(jié)地址為B8H。對于每一個中斷源,均可通過IP的設置來確定優(yōu)先等級,置1為高優(yōu)先級,反之為低。</p>&

66、lt;p><b>  3 時鐘計時程序</b></p><p>  數(shù)字顯示計時系統(tǒng)的主要任務是:采用單片機為核心的器件產(chǎn)生24小時時間,并用LED顯示器將它顯示出來。在本次設計中所用的晶振為6MHz,定時器最長的定時時間為131.72ms,要產(chǎn)生24h的時間值,故我們采用定時器T0方式1。</p><p> ?。?)24小時的產(chǎn)生:</p>&l

67、t;p>  選擇定時器T0 方式1,定時125ms中斷一次,利用R2寄存器加1,8次為1s,再利用寄存器R3計數(shù)60s,依次類推,累計24的時間值,并需設置以下幾個寄存器:</p><p>  R2:累計1s時間寄存器。T0每中斷一次R2=R2+1,計數(shù)八次向R3進位,并將R2清零</p><p>  R3:累計60s時間寄存器。當R3=60s,向R4進位,并使R3=0。</p

68、><p>  R4:累計60min時間寄存器。當R4=60min向R5進位,并使R4=0。</p><p>  R5:累計24h時間寄存器。當R5=24h,正好是晝夜的時間,并使R5=0。</p><p> ?。?)定時器的初值:</p><p>  F=6MHZ, Tp=2us X=65536-125ms/2us=0BD

69、CH</p><p> ?。?)程序設計框圖:</p><p>  計時程序設計框圖如圖3-2所示</p><p>  圖 3-2計時程序設計框圖</p><p><b>  程序清單如下:</b></p><p>  T0定時器,每125ms中斷一次,中斷8次為1s。</p>&l

70、t;p>  T0INT: PUSH A ;T0計時中斷程序,保護現(xiàn)場</p><p><b>  CLR TR0</b></p><p>  MOV TH0,#0BH ;設T0計數(shù)初值</p><p>  MOV TL0,#0DCH</p><p>  

71、SETB TR0 ;開T0</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p><b>  INC R2</b></p><p>  CJNE R2,#08H,JT0 ;1s到了嗎?沒到,轉JT0</p><p

72、>  MOV R2,#00H ;到了,R2清零</p><p>  INC R3 ;秒單元+1</p><p>  CJNE R3,#60,JT0 ;60s到了嗎?沒到,轉JT0</p><p>  MOV R3,#00H ;到了

73、,秒單元清零</p><p>  INC R4 ;分單元+1</p><p>  CJNE R4,#60,JT0 ;60min到了嗎?沒到,轉JT0</p><p>  MOV R4,#00H ;到了,分單元清零</p><p>  INC R

74、5 ;時單元+1</p><p>  CJNE R5,#24,JT0 ;24h到了嗎?沒到,轉JT0</p><p>  MOV R5,#00H ;時單元清零</p><p>  JT0: MOV 30H,R3</p><p>  MO

75、V 31H,R4</p><p>  MOV 32H,R5</p><p>  MOV R6,#03 ;二-十進制轉換程序</p><p>  MOV R0,#32H</p><p>  MOV R1,#45H</p><p>  JT1:MOV B,#10</p><

76、;p><b>  MOV A,@R0</b></p><p><b>  DIV AB</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  MOV A

77、,B</b></p><p><b>  MOV @R1,A</b></p><p><b>  DEC R1</b></p><p><b>  DEC R0</b></p><p>  DJNZ R6,JT1</p><p><b&

78、gt;  CLR RS0</b></p><p>  POP A ;恢復現(xiàn)場</p><p>  RETI ;中斷返回</p><p>  DTOB: SETB RS0 ;十-二進制轉換程序</p><p>

79、  MOV R6,#03</p><p>  MOV R0,#32H</p><p>  MOV R1,#45H</p><p>  JT2:MOV B,#10</p><p><b>  MOV A,@R1</b></p><p><b>  MUL AB</b></

80、p><p><b>  DEC R1</b></p><p><b>  ADD A,@R1</b></p><p><b>  MOV @R0,A</b></p><p><b>  DEC R1</b></p><p><b&

81、gt;  DEC R0</b></p><p>  DJNZ R6,JT2</p><p>  MOV R3,30H</p><p>  MOV R4,31H</p><p>  MOV R5,32H</p><p>  MOV R2,#00</p><p><b>  C

82、LR RS0</b></p><p><b>  RET</b></p><p>  TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CFH</p><p><b>  END</b></p><p><b>

83、;  第四章 調(diào)試</b></p><p>  4.1 軟 件 調(diào) 試</p><p>  軟件調(diào)試的任務是利用應用軟件(如WAVE軟件)進行仿真調(diào)試,是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。程序運行后編輯,查看程序是否有邏輯的錯誤。</p><p>  運用WAVE(偉福)軟件編譯自己設計的匯編程序

84、,檢驗程序。發(fā)現(xiàn)程序中的語法錯誤與邏輯錯誤并加以排除糾正。注意運用WAVE軟件保存文件時的后綴名用(.ASM)。</p><p><b>  仿真結果如下:</b></p><p>  4.2 proteus 仿 真 軟 件 的 應 用</p><p>  PROTEUS軟件是由英國Labcenter electronics公司開發(fā)的一款電子

85、設計軟件,它是目前能對CPU芯片及其外圍電路進行完整仿真的計算機設計分析軟件。在使用Proteus進行仿真調(diào)試時,可以從實物的角度直接觀看電路運行的結果(而不是某條語句或存儲器的內(nèi)容),從某種意義上講,proteus解決了理論設計與動手制作相互脫節(jié)的重大問題。</p><p>  在本次設計中,正是由于這款軟件的使用,大大提高了設計的效率,縮短了設計的周期。Proteus仿真軟件無疑是單片機開發(fā)者掌握單片機開發(fā)技

86、術的絕好的入門工具。</p><p><b>  仿真結果</b></p><p>  數(shù)碼管能顯示“時”,“分”,“秒”,蜂鳴器也能響。系統(tǒng)初步達到了設計的要求。在仿真的過程中每個管腳旁邊會出現(xiàn)一個小方塊,紅色的方快表示高電平,藍色的表示低電平。通過方快顏色的變化可以很方便地知道每個管腳電平的變化,從而能對系統(tǒng)的運行有更直觀的了解,這對程序的調(diào)試有很大的幫助<

87、/p><p>  Protues 仿真電路圖如下:</p><p><b>  4.3性能分析</b></p><p>  按照設計程序分析,LED顯示器動態(tài)掃描頻率在實際觀察時沒有閃爍。由于即使中斷程序中加了中斷延時誤差處理,所以實際計時精度很高,可以滿足多種場合的應用需要。</p><p><b>  小

88、結</b></p><p>  我在這一次數(shù)字電子鐘的設計過程中,很是受益匪淺。通過對自己在大學三年時間里所學的知識的回顧,并充分發(fā)揮對所學知識的理解和對畢業(yè)設計的思考及書面表達能力,最終完成了。這為自己今后進一步深化學習,積累了一定寶貴的經(jīng)驗。撰寫論文的過程也是專業(yè)知識的學習過程,它使我運用已有的專業(yè)基礎知識,對其進行設計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉化為能力的實際訓練。培養(yǎng)了我運用所

89、學知識解決實際問題的能力。</p><p>  通過這次數(shù)字鐘的設計制作,我們將從書本上學到的知識應用于實踐,提高了一些電子電路仿真設計能力,雖然過程中遇到了一些困難,但是在解決這些問題的過程無疑也是對自己自身專業(yè)素質(zhì)的一種提高。當最終調(diào)試成功的時候也是對自己的一種肯定。此次的設計作業(yè)不僅增強了自己在專業(yè)設計方面的信心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己以后的學習方向的明確了重點</p><

90、;p>  我們的學習不但要立足于書本,以解決理論和實際教學中的實際問題為目的,還要以實踐相結合,理論問題即實踐課題,解決問題即課程研究,學生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學習就應該采取理論與實踐結合的方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強我們的動手能力和解決問題的能力。</p><p>  在這里感謝

91、學校三年來的培養(yǎng)和各科老師的悉心教導,使我受益匪淺。感謝同學們和我一起度過珍貴而難忘的三年,并給與我生活上和學習上的幫助。感謝我的父母對我默默的支持和辛勤的付出。在此,謹向我的學校﹑我的各位老師和我的父母致以崇高的敬意和深深的感謝。</p><p><b>  參 考 文 獻:</b></p><p>  [1]、李華,MCS-51系列單片機實用接口技術[M],北京:

92、北京航空航天大學出版社,1993.8。</p><p>  [2] 馬彪.單片機應用技術.鄭州.中國輕工業(yè)出版社,2006.4</p><p>  [3] 馬家辰,MCS-51單片機原理與接口技術[M],哈爾濱:哈爾濱工業(yè)大學出版社。</p><p>  [4]皮紅梅,李英順. 單片機開發(fā)中的定時方法. 沈陽:石油化工高等??茖W校學報,2002年12月</p&

93、gt;<p>  [5] 黃慶華.單片機開發(fā)技術與實訓.北京.電子工業(yè)出版社,2006.7</p><p>  [6]夏繼強,邢春香.單片機應用設計培訓教程——實踐篇.北京:北京航空航天大學出版社,2008</p><p><b>  附錄A 源程序</b></p><p><b>  主程序清單:</b>&

94、lt;/p><p>  ORG 0000H ;中斷入口地址</p><p><b>  AJMP MAIN</b></p><p>  ORG 000BH ;T0中斷</p><p>  AJMP T0INT</p><p>  MAIN: MOV SP,#70H ;設置堆棧指針&l

95、t;/p><p>  MOV R6,#06H ;顯示緩沖區(qū)清零</p><p>  MOV R1,#45H</p><p>  S0:MOV @R1,#00H</p><p><b>  DEC R1</b></p><p>  DJNZ R6,S0</p><p>  MO

96、V TMOD,#01H ;T0為工作方式1</p><p>  MOV TH0,#0BH ;設T0計數(shù)初值</p><p>  MOV TL0,#0DCH</p><p>  SETB RS0 ;選擇工作區(qū)1</p><p>  MOV R2,#00H ;相關寄存器清零</p><p>  MOV R

97、3,#00H</p><p>  MOV R4,#00H</p><p>  MOV R5,#00H</p><p>  CLR RS0 ;選擇工作區(qū)0</p><p>  MOV R1,#45H ;顯緩區(qū)首指針送R1</p><p>  SETB TR0 ;開T0</p>&l

98、t;p>  SS1: LCALL DISP ;調(diào)用顯示程序</p><p>  LCALL KEYBOARD ;調(diào)用按鍵處理程序</p><p>  MOV R2, 35H ;判斷是否有定時時間</p><p>  CJNE R2, #0, NT</p><p>  MOV R2, 34H</p>&

99、lt;p>  CJNE R2, #0, NT</p><p>  MOV R2, 33H</p><p>  CJNE R2, #0, NT</p><p><b>  SJMP BB</b></p><p>  NT: MOV A, 35H</p><p>  CJNE A, 32H

100、, BB ;判斷定時時間到否</p><p>  MOV A, 34H</p><p>  CJNE A, 31H, BB</p><p>  MOV A, 33H</p><p>  CJNE A, 30H, BB</p><p>  CLR P3.7 ;時間到發(fā)出報警</p>

101、<p><b>  SJMP SS1</b></p><p>  BB: SETB P3.7</p><p><b>  SJMP SS1</b></p><p>  按鍵處理(當前)時間程序清單</p><p>  KEYBOARD: NOP</p><p

102、>  KEY: MOV R4,#04H ;調(diào)顯示程序</p><p>  S1: LCALL DISP</p><p>  DJNZ R4,S1</p><p><b>  SETB P0.0</b></p><p>  JB P0.0,KEY ;P0.0(SET鍵

103、)為高電平嗎?是,轉KEY</p><p>  MOV R4,#0AH ;否,調(diào)顯示延時消抖</p><p>  S2: LCALL DISP</p><p>  DJNZ R4,S2</p><p><b>  SETB P0.0</b></p><p>  JB P0

104、.0,KEY ;P0.0為高電平嗎?是,轉KEY</p><p>  CLR TR0 ;否,關T0</p><p>  JNB P0.0,$ ;等待鍵釋放</p><p>  MOV 20H,R1 ;R1送閃爍顯示單元20H</p&

105、gt;<p>  MOV R2,#00 ;LED位數(shù)單元R2清零</p><p>  KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序</p><p>  MOV P0,#0FFH</p><p><b>  MOV A,P0</b></p><p><

106、;b>  CPL A</b></p><p><b>  JZ KEY1</b></p><p>  KEY2: JNB ACC.0,KEY3 ;P0.0(SET鍵)按下嗎?否,轉KEY3</p><p>  JNB P0.0,$ ;是,等待鍵釋放</p><p&

107、gt;  DEC R1 ;R1-1</p><p>  INC R2 ;R2+1</p><p>  CJNE R2,#06,L13 ;R2=6嗎?否,轉L13</p><p>  MOV R1,#45H ;是,重新開始調(diào)位</p&g

108、t;<p>  MOV R2,#00</p><p>  L13:MOV 20H,R1 ;R1送閃爍顯示單元20H</p><p><b>  SJMP KEY1</b></p><p>  KEY3: JNB ACC.2,KEY4 ;P0.2(+1鍵)按下嗎?否,轉KEY4</p>

109、<p>  JNB P0.2,$</p><p><b>  MOV A,@R1</b></p><p>  CJNE R1,#45H,L1 ;是小時的十位嗎?否,轉L1</p><p>  CJNE A,#02,LL ;十位為2嗎?否,轉LL</p><p>&

110、lt;b>  SJMP KEY5</b></p><p>  L1: CJNE R1,#44H,L2 ;是小時的個位嗎?否,轉L2</p><p>  MOV R4,45H</p><p>  CJNE R4,#02,L101 ;十位為2嗎?否,轉L101</p><p>  CJNE A,

111、#03,LL ;是,個位為3嗎?否,轉LL</p><p><b>  SJMP KEY5</b></p><p>  L101: CJNE A,#09,LL ;個位為9嗎?否,轉LL</p><p><b>  SJMP KEY5</b></p><p>

112、  L2: CJNE R1,#43H,L3 ;是分鐘的十位嗎?否,轉L3</p><p>  CJNE A,#05,LL ;是,十位為5嗎?否,轉LL</p><p><b>  SJMP KEY5</b></p><p>  L3: CJNE R1,#42H,L4 ;是分鐘的個位嗎?否,轉L4&

113、lt;/p><p>  CJNE A,#09,LL ;是,個位為9嗎?否,轉LL</p><p><b>  SJMP KEY5</b></p><p>  L4: CJNE R1,#41H,L5 ;是秒鐘的十位嗎?否,轉L5</p><p>  CJNE A,#05,LL

114、 ;是,十位為5嗎?否,轉LL</p><p><b>  SJMP KEY5</b></p><p>  L5: CJNE R1,#40H,L6 ;是秒鐘的個位嗎?否,轉L6</p><p>  CJNE A,#09,LL ;是,個位為9嗎?否,轉LL</p><p>  K

115、EY5: MOV @R1,#00H ;R1單元內(nèi)容清零</p><p><b>  SJMP KEY1</b></p><p>  LL: INC A ;做+1處理</p><p><b>  MOV @R1,A</b></p><p>  L6: SJMP

116、 KEY1</p><p>  KEY4: JNB ACC.3,L6 ;P0.3(RET鍵)按下嗎?否,轉L6</p><p>  JNB P0.3,$ ;是,等待鍵釋放</p><p>  MOV R1,#45H</p><p>  ACALL DTOB ;調(diào)十-二進制轉換

117、程序</p><p>  SETB TR0 ;開T0</p><p><b>  LJMP KEY</b></p><p>  按鍵處理(鬧鐘)時間程序清單</p><p>  KEYBOARD: NOP</p><p>  KEY: MOV R4,#04H

118、 ;調(diào)顯示程序</p><p>  S1: LCALL DISP</p><p>  DJNZ R4,S1</p><p><b>  SETB P0.2</b></p><p>  JB P0.1,KEY ;P0.1(ALM鍵)為高電平嗎?是,轉KEY</p><

119、;p>  MOV R4,#0AH ;否,調(diào)顯示延時消抖</p><p>  S2: LCALL DISP</p><p>  DJNZ R4,S2</p><p><b>  SETB P0.1</b></p><p>  JB P0.1,KEY ;P0.1為高電

120、平嗎?是,轉KEY</p><p>  CLR TR0 ;否,關T0</p><p>  JNB P0.0,$ ;等待鍵釋放</p><p>  MOV 20H,R1 ;R1送閃爍顯示單元20H</p><p>  MOV R2,#00

121、 ;LED位數(shù)單元R2清零</p><p>  KEY1: LCALL DISP_2 ;調(diào)閃爍顯示程序</p><p>  MOV P0,#0FFH</p><p><b>  MOV A,P0</b></p><p><b>  CPL A</b></p><

122、p><b>  JZ KEY1</b></p><p>  KEY2: JNB ACC.1,KEY3 ;P0.1(ALM鍵)按下嗎?否,轉KEY3</p><p>  JNB P0.1,$ ;是,等待鍵釋放</p><p>  DEC R1 ;R1-1</p

溫馨提示

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

評論

0/150

提交評論