設計并制作一種基于STC89C52單片機的數碼管顯示電子時鐘,由8位數碼管顯示時、分、秒;自動計時,具有校準功能,可設置當前時間,具備定時啟鬧功能,可以設置啟鬧時間,啟鬧一定時間后自動關閉鬧鈴,主要內容如下: 1.對MCU的內部定時器、I/0口、鍵盤和顯示接口等知識能融匯貫通,初步形成獨立設計、制作和調試較簡單的單片機應用系統的能力; 2.熟悉MCU應用系統的硬件設計、模塊化程序設計及軟件調試方法,掌握單片機應用系統的開發過程; 3.設計并制作出8位數碼管顯示電子鐘系統,具有設置、校準、鬧鈴等功能; 4.系統硬件設計與制作; 5.系統軟件設計; 6.系統軟、硬件聯合調試; 7.系統性能測試。
2 設計方案及系統原理
2.1 設計方案圖2.1 8位數碼管電子鐘電路設計框圖 此次設計方案如圖2.1所示的設計框圖,以單片機為核心,由晶振電路模塊、復位電路模塊、按鍵電路模塊、蜂鳴器電路模塊(起整點報時的功能)、以及顯示模塊組成。在這次設計中采用LED數碼管顯示時、分、秒,以24小時計時方式,根據數碼管動態顯示原理來進行顯示,用12MHz的晶振產生振蕩脈沖,定時器計數。 2.2 系統原理 圖2.2 8位數碼管電子鐘原理圖 電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,具有校時功能和定時功能。如圖2.2所示,一個基本的電子鐘電路主要由顯示電路、復位電路、時鐘電路以及蜂鳴器報警電路等部分組成。
2.2.2 復位電路圖2.4 復位電路圖 復位電路的作用是使單片機的狀態處于初始化狀態,讓單片機的程序從頭開始執行。如圖2.4復位電路圖所示,C3和R1構成單片機的上電自動復位電路。STC89C52單片機屬于高電平復位,RST管腳上需要持續兩個機器周期(24個時鐘周期)以上的高電平,單片機才能復位。復位原理:上電的瞬間,電源給C3充電,在R1產生壓降,R1上端為高電平,RST管腳檢測到高電平,單片機的各個寄存器清零或恢復初始狀態,特別是PC計數器清零,程序便從頭開始執行。如果C3、R1取值過大或過小都會引起單片機復位時間過長或過短,不利于單片機啟動。如果需要加手動復位,那就在C3兩端并聯一個按鈕即可。 2.2.3 時鐘電路圖2.5 時鐘電路圖 時鐘電路作用是來配合晶振實現振蕩的電路,這樣可以為單片機提供運行時鐘。如圖2.5時鐘電路圖所示,C1、C2和X1構成單片機的時鐘源電路。C1和C2是晶振X1的負載電容,過大或過小都會影響晶振的頻率和幅度。STC89C52單片機對晶振負載電容的取值有明確的要求:在20pf到40pf之間,最佳值為30pf。X1的取值可從1MHz到24MHZ選擇,常用的是12MHz。因為51單片機12個時鐘周期為一個機器周期,用12MHz晶振,一個機器周期剛好是1us,編程時計時很方便。 2.2.4 顯示電路圖2.6 顯示電路圖 顯示電路的作用是對控制電路的信號進行放大。本次設計采用動態顯示法實現LED顯示,通過對每位數碼管的依次掃描,使對應數碼管亮,能夠點亮數碼管后,就可以通過單片機控制數碼管顯示數字或字母。如圖2.6顯示電路圖所示,為了控制方便,我們將數碼管的a~dp引腳依次連接單片機的P0.0-P0.7引腳。因為是共陰極數碼管,所以位選應接低電平,段選接高電平時,數碼管正常顯示。 2.2.5 按鍵控制電路圖2.7 按鍵控制電路圖 按鍵模塊的作用是調節時間及設置鬧鐘時間。實際的電子鐘電路由于秒信號的精確性和不可能做到完全準確無誤,加之電路中其它原因,電子鐘總會產生走時誤差的現象,因此,電路中就應該有校準時間的功能的電路。如圖2.7按鍵控制電路圖所示,此次設計中,K1控制復位功能;K2為暫停;K3為啟動;K4為調整,可切換時、分、秒的調整,從而進行鬧鐘的設置;K5、K6分別為加一、減一。 2.2.6 蜂鳴器報警電路圖2.8 蜂鳴器報警電路圖 圖2.8為蜂鳴器報警電路圖。它的作用是實現整點。蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電。由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O口是無法直接驅動的,所以要利用放大電路來驅動,這里使用三極管Q1來放大電流。當單片機檢測到整點的時候,例如00-01-00時,單片機系統應能發出信號使蜂鳴器發出“嘀、嘀、嘀”的聲音。 2.2.7 軟件程序設計本設計中主程序主要實現顯示的初始化和調用各子程序工作的功能,讀取時間的子程序主要實現初始化,時間信息的采集和顯示段碼的碼的存取。設計中計時主要以定時器T0中斷完成,定點鬧鈴使用蜂鳴器來完成。當端口有開關按下時,轉入相應的功能程序,其主程序執行流程圖如圖2.9所示: 圖2.9 主程序執行流程圖 在時鐘狀態下,觸發外中斷1時,進入鬧鐘時間設定模式,且不影響T0計時器的功能狀態,在鍵盤上輸入對應的數字進行時間設定。鬧鐘時間設定流程圖如圖2.10所示: 圖2.10 鬧鐘時間設定流程圖
3 設計步驟和結果3.1 設計步驟(1)先在Proteus上繪制硬件電路; (2)使用Keil uVisio4進行程序軟件編譯,生成.Hex文件; (3)在以上兩步完成后,雙擊Proteus中的單片機,把用Keil uVisio4編譯生成的.Hex文件指定為下載文件,點擊PLAY鍵即可進行仿真; (4)當電路出現錯誤時,列表中說明了具體的錯誤,必須要先排錯才可以繼續進行; (5)仿真過程中,LED數碼管要能正常顯示時間;在LED數碼管顯示時間達到設定的鬧鐘時間時,蜂鳴器要響才算成功; (6)根據Proteus繪制的硬件電路圖,首先在萬能板上進行布局,方便接線; (7)布局好后按照器件焊接原則進行焊接,要求安裝正確。元器件無缺焊、錯焊,連結無誤,印制板焊點無虛焊、橋接等; (8)注意三極管接線時需要仔細對照原理圖,不要接反接錯; (9)焊接過程中,電烙鐵在焊接處停留的時間不宜過長,以免燙壞元件;烙鐵離開焊接處后,被焊接的零件不能立即移動,否則因焊錫尚未凝固而使零件容易脫焊; (10)接通電源后,若電子鐘正常工作,即可;若不能正常工作,則對接線進行檢查,看是否有虛接、錯接等情況,直至其功能得到實現。 3.2 實驗結果3.2.1 原理圖仿真結果設置鬧鐘為:“00-01-00”,響鈴一分鐘。如圖3.1所示: 圖3.1 原理圖仿真結果 3.2.2 實物焊接結果接通電源后,LED數碼管顯示從“00-00-00”開始運行,此時按下調整鍵,將時間調至“00-01-00”。當其再次運行時,LED數碼管顯示時間已到達設定的鬧鐘時間,此時蜂鳴器響。實物焊接結果圖如圖3.2所示: 圖3.2 實物焊接結果圖
設計總結此次設計整體論述了設計電子鐘的大致思路,然后再采用劃分模塊的方法將系統分為復位模塊、時鐘模塊、顯示模塊、按鍵模塊等部分。最后將各模塊集成為一個整體,合成一個多功能的電子鐘。在程序編寫的過程中,通過查閱不少的書籍以及參考一下網上一些可用的程序,我更加加深了對單片機的工作原理以及使用方法。同時,通過對實際的單片機最小系統的搭建與焊接,我更加掌握了單片機最小系統的硬件要求和焊接技術。
在這次設計中我深深地體會到了理論跟實踐的不同,理論學的再好不會動手那也只能是紙上談兵。了解了集成電路芯片的型號命名規律,懂得了沒有某種芯片時的替代方法,以及在網上查找電子電路資料的方法,掌握了各芯片的邏輯功能及使用方法,進一步熟悉了集成電路的引腳安排,掌握了數字鐘的設計方法,明白了數字鐘的組成原理以及工作原理。掌握了計數器的工作原理,以及計數器進制的組成方法和級聯方法,實現了一次理論指導實踐、理論向實踐過渡的跨越,雖然期間遇到一些困難,但這些困難卻增強了我分析問題、解決問題的能力,使我以后不僅只學習書本中的理論知識,而且知道學以致用,動過動手實踐是我對書本中的理論知識掌握地跟牢固、理解地跟深刻,這對我今后的工作及學習有積極的影響。 這次設計不僅再次復習了數字電子和模擬電子,而且讓我對于芯片的使用更加了解。增加了我的動手操作能力,加深了對軟件使用的了解。這就是這次設計的成果,相信這些實際的操作經驗會是我以后的寶貴財富。
以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便大家保存): |