數(shù)字電子時鐘的設(shè)計說明_第1頁
數(shù)字電子時鐘的設(shè)計說明_第2頁
數(shù)字電子時鐘的設(shè)計說明_第3頁
數(shù)字電子時鐘的設(shè)計說明_第4頁
數(shù)字電子時鐘的設(shè)計說明_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 .PAGE28 / NUMPAGES36Xxxx屆畢業(yè)設(shè)計說明書設(shè)計題目:數(shù)字電子時鐘作 者 姓 名 xxx 作 者 學 號 xxxx 專 業(yè) 班 級 電氣自動化-4班 指導教師 xxx 專業(yè)技術(shù)職稱 講 師 Xxxx學院機電系2011年06月10日畢業(yè)設(shè)計(論文)任務(wù)書題 目: 數(shù)字電子時鐘 專 業(yè): 電氣自動化 班 級: 2008-4班 學生: xx 學號:xxxxxXxx年xx 月xx 日至 xx 月 xx 日共 xx 周一、設(shè)計容(論文闡述的問題)數(shù)字時鐘在日常生活中很常見,應(yīng)用也很廣泛。本次設(shè)計就是設(shè)計一款數(shù)字時鐘,以AT89C51單片機為核心,配備數(shù)碼管顯示模板、按鍵等功能模塊。

2、數(shù)字時鐘采用24小時制方式顯示時間,在數(shù)碼管上顯示小時、分鐘等功能。設(shè)計的核心主要包括硬件設(shè)計和軟件編程兩個方面。硬件電路設(shè)計主要包括中央處理單元電路、時鐘電路、執(zhí)行電路等幾部分。軟件用匯編語言來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。由于系統(tǒng)所用元器件較少,單片機所被占用的I/O口不多,因此系統(tǒng)具有一定的可擴展性。二、設(shè)計原始資料與要求(1)利用定時器或軟件延時,可編程并行芯片AT89C51,LED顯示控制。(2)顯示無誤(3)走時準確三、設(shè)計完成后提交的文件和圖表(論文完成后提交的文件)1.圖紙部分:系統(tǒng)硬件電路圖四、畢業(yè)設(shè)計(論文)進程安排序號設(shè)計(論文)各階段工作容時間分配(起止日期)1畢業(yè)

3、調(diào)查實習,與指導老師交流設(shè)計事宜3月15日-3月28日2查閱文獻,收集資料3月29日-4月 4 日3確定系統(tǒng)的設(shè)計方案4月5日-4月 11 日4總體設(shè)計、結(jié)構(gòu)設(shè)計、詳細計算、編程與調(diào)試等容4月12日-5月 3 日5編寫設(shè)計說明書5月4日-5月 25 日6指導教師批改、同時自己繼續(xù)完善修改5月26日-6月 5 日7進一步核定數(shù)據(jù)、修改設(shè)計圖紙和說明書6月6日-6月 14 日8畢業(yè)設(shè)計答辯6月15日-6月16日五、主要參考資料1家健、柏榮、汪志峰 編著.單片機原理與應(yīng)用技術(shù).高等教育2嚴天峰 單片機應(yīng)用系統(tǒng)設(shè)計與仿真調(diào)試.航空航天大學3廖芳.電子產(chǎn)品生產(chǎn)工藝與管理M.清華大學2003.4建民.模擬

4、電子技術(shù)基礎(chǔ)M.清華大學2006.5嘉奎.電子線路(線性部)M.第四版.:高等教育,19996自美.電子電路設(shè)計 實驗測試M. 武昌華中理工大學,19947童詩白.模擬電子技術(shù)基礎(chǔ)M.第二版.:人民郵電,19998康華光主編,電子技術(shù)基礎(chǔ)M (數(shù)學部分、模擬部分),高等教育,19889胡宴如. 模擬電子技術(shù)M. :高等教育,2004,210志忠.數(shù)字電子技術(shù)M. : 高等教育,2003,12學 生 (簽 字): 教研室主任(簽字):指導教師(簽字): 系主任 (簽字):摘 要 數(shù)字時鐘在日常生活中很常見,應(yīng)用也很廣泛。本次設(shè)計就是設(shè)計一款數(shù)字時鐘,以AT89C51單片機為核心,配備數(shù)碼管顯示模

5、板、按鍵等功能模塊。數(shù)字時鐘采用24小時制方式顯示時間,在數(shù)碼管上顯示小時、分鐘等功能。設(shè)計的核心主要包括硬件設(shè)計和軟件編程兩個方面。硬件電路設(shè)計主要包括中央處理單元電路、時鐘電路、執(zhí)行電路等幾部分。軟件用匯編語言來實現(xiàn),電路簡單明了,系統(tǒng)穩(wěn)定性高。由于系統(tǒng)所用元器件較少,單片機所被占用的I/O口不多,因此系統(tǒng)具有一定的可擴展性。主要包括主程序,鍵盤掃描子程序,時間設(shè)置子程序等軟件模塊。關(guān)鍵詞:AT89C51,單片機,數(shù)碼顯示,中斷ABSTRACTDigital clock in daily life is very common, and is also widely used. This

6、design is the design of a digital clock, with AT89C51, equipped with digital pipe display template, such as keys function modules. Digital clock with the 24-hour system in digital displays the time, displayed on the hour, minute tube etc. Function. Design core mainly includes hardware design and sof

7、tware programming two aspects. Hardware circuit design includes the central processing unit circuit, clocking circuit and executive circuit segments. Software to realize with assembly language, including the main program, the keyboard scan subroutines, time setting subroutines software modules.KEY W

8、ORDS: AT89C51, microcontroller, digital display, interrupts目錄第一章 引言1第二章 方案論證32.1方案一.32.2方案二.32.3方案三.3第三章 主要電路模塊的設(shè)計.103.1 系統(tǒng)方框圖.43.2系統(tǒng)說明.43.3總電路圖.43.4單片機電路.43.4.1時鐘電路.43.4.2復位電路.43.5按鍵電路.63.6示電路.73.6.1方案論證.73.6.2 LED的結(jié)論與與原理.83.7電源電路.10第四章 軟件設(shè)計流程圖.124.1時鐘主程序流程圖.114.2按鍵掃描程序流程圖.114.3時鐘程序流程圖.12第五章 硬軟件系統(tǒng)的

9、調(diào)試.14參考文獻.15結(jié)論.16致 .16附件.27第一章 引言時鐘,自從它被發(fā)明的那天起,就成為人們生活中必不可少的一種工具,尤其是在現(xiàn)在這個講究效率的年代,時鐘更是在人類生產(chǎn)、生活、學習等多個領(lǐng)域得到廣泛的應(yīng)用。然而隨著時間的推移,人們不僅對于時鐘精度的要求越來越高,而且對于時鐘的要求也越來越多,時鐘已不僅僅是一種用來顯示時間的工具在很多實際應(yīng)用中他還需要能夠?qū)崿F(xiàn)更多其他的功能。比如鬧鐘功能、日歷顯示功能、溫度測量功能、濕度測量功能、電壓測量功能、頻率測量功能、過欠壓報警功能等。鐘表的數(shù)字化給人們的生產(chǎn)生活帶來了極大的方便,而且大擴展了鐘表原先的報時功能等。比如定時自動報警、按時自動打鈴

10、、時間程序自動控制、定時廣播、自動啟閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電器的自動啟用等,所用這些,都是以鐘表數(shù)字化為基礎(chǔ)的??梢哉f,設(shè)計多功能數(shù)字時鐘的意義以不只在于數(shù)字時鐘本身,更大的意義在于多功能數(shù)字時鐘在許多實時控制系統(tǒng)中的應(yīng)用。在很多實際應(yīng)用中只要對數(shù)字時鐘的程序和硬件電路加以一定的修改,便可以得到實時控制的實用系統(tǒng),從而應(yīng)用到實際工作與生產(chǎn)中去。因此研究數(shù)字時鐘與擴大其應(yīng)用,有著非常現(xiàn)實的意義。 怎樣讓時鐘更好的為我們服務(wù)?怎樣讓時鐘更符合實際應(yīng)用的需求?這就要求人們設(shè)計出新型時鐘,不斷設(shè)計出適合實際應(yīng)用的多功能時鐘。本畢業(yè)設(shè)計方案正是根據(jù)以上所述并結(jié)合日常生活中多時鐘

11、功能需要的分析,運用單片機技術(shù),設(shè)計出一個適合日常生活需要的多功能數(shù)字鐘。此多功能數(shù)字時鐘除了傳統(tǒng)的顯示時間功能之外還具日歷功能以與定時鬧鐘功能。第二章 方案論證2.1 方案一采用TTL、CMOS集成電路實現(xiàn)的,其系統(tǒng)方框圖如圖1所示。數(shù)字鐘主要由以下幾個部分組成:信號源、分頻器、十進制計數(shù)器、六進制計數(shù)器、二進制計數(shù)器、RCD-七段顯示譯碼/驅(qū)動器、LED(light-emitting-diode)七段顯示數(shù)碼管、時間校準電路和鬧時電路。 這是一種純硬件電路系統(tǒng),用時序邏輯電路實現(xiàn)時鐘功能,用555定鬧鐘報時的設(shè)定。該電路具有抗干擾強、計算精確,使用元器件種類少等優(yōu)點,但是這種實現(xiàn)方法可靠性

12、差、控制精度低、靈活性小、線路復雜、安裝調(diào)試部方便,且不具備對測溫信號進行數(shù)據(jù)處理的功能。要實現(xiàn)測溫功能必須在添加處理芯片,系統(tǒng)集成度低。2.2方案二利用可編程邏輯器件PLD(Programmab logic Devices )實現(xiàn)。可編程邏輯器件PLD具有集成度高、速度快、功耗小、可靠性高等優(yōu)點。且EDA(Electronic Design Automation)軟件的功能和時序仿真功能和時序仿真功能使得電路功能的調(diào)試變得十分的方便。這種方案與前一種相比,可靠性增加,同時可以很好的完成時鐘的功能。但是對于溫度測量,其不具備對測溫數(shù)據(jù)的處理功能,無法很好的完成擴展功能的要求。同時這種方案只能選

13、用數(shù)碼管顯示,顯示的效果不夠理想。因此,系統(tǒng)的靈活性不夠。2.3方案三利用單片機部具有的計數(shù)器實現(xiàn)時鐘功能。以12MHZ晶振為例,通過計算可知,使定時器每50秒產(chǎn)生一次中斷,當產(chǎn)生20次中斷后秒單元將加一,以此類推,從而實現(xiàn)時、分、秒的走時,并加以顯示。雖然這種方法存在由于系統(tǒng)晶振誤差、溫度、中斷響應(yīng)時間的不確定性與定時器重新裝載時間常數(shù)帶來的誤差等不足。而且用這種方法實現(xiàn)的時鐘在斷電的情況下降停止走時,通電后必須再初始化,需要重新調(diào)表。但是利用這種方法實現(xiàn)的系統(tǒng)具有一定的可擴展性。由于時鐘的實現(xiàn)大部分是有軟件的編程來實現(xiàn)的,因此沒有前幾種方案中來自硬件的束縛。只要對數(shù)字時鐘的程序和硬件電路加

14、以一定的修改,就可以應(yīng)用到一些實時控制的系統(tǒng)中去。系統(tǒng)的實用意義更大。通過以上三種方案的比較,決定采用方案三。第三章 主要電路模塊的設(shè)計3.1系統(tǒng)方框圖系統(tǒng)方框圖如1-1所示圖表1-1系統(tǒng)方框圖3.2系統(tǒng)說明系統(tǒng)由51系列單片機AT89C51、按鍵、數(shù)碼管顯示、電源等部分構(gòu)成。單片機部分包括時鐘電路、復位電路;按鍵部分能夠?qū)崿F(xiàn)對時間的調(diào)整、設(shè)定。三個按鍵的功能分別為;小時的調(diào)整,分鐘的調(diào)整,復位。電源部分(實驗室配備電源)可輸出一個電壓;5V。5V電壓給小系統(tǒng)硬件提供電源。3.3總電路圖電子鐘總電路圖見附錄1所示。3.4單片機電路3.4.1時鐘電路時鐘電路由外接諧振蕩器、時鐘發(fā)生器與關(guān)斷控制信

15、號等組成。時鐘時鐘振蕩器是單片機的時鐘源,時鐘發(fā)生器對振蕩器的輸出信號進行二分頻。 CPU 的時鐘正當信號有兩個來源;一是采用部振蕩器,此時需要在XTALI和XTAL2腳連接一只頻率圍為0-33MHZ的晶體振蕩或瓷振蕩器與兩只30pf電容。二是采用外部振蕩,此時應(yīng)將外部振蕩器的輸出信號接至XTALI腳,將XTAL2腳浮空。 利用單片機部定時功能實現(xiàn)時鐘的走時,通過編程實現(xiàn)每50毫秒產(chǎn)生一次中斷,中斷20此后,秒單元加1,秒單元加到60時,跳回到零再繼續(xù)加1;同時分單元加1;當分單元加到60時,跳到0再繼續(xù)加,同時時單元的各位加1,以此類推,從而實現(xiàn)秒分小時的走時。本次設(shè)計采用的是部振蕩器,頻率

16、為12MHZ的晶振振蕩器與30pf的瓷片電容。如圖1-3所示。圖1-3時鐘電路3.4.2復位電路復位是指在規(guī)定的條件下,單片機自動將CPU以與與程序運行相關(guān)的主要功能部件、IO口等設(shè)置為確定初始狀態(tài)的過程。如果電路參數(shù)不符合規(guī)定的條件或干擾導致單片機不能正確的復位,系數(shù)將無法進行正常的工作,因此,復位電路除了要符合廠家規(guī)定的參數(shù)外,還要濾除可能的干擾。AT89S52單片機部有一個由施密特觸發(fā)器等組成的復位電路。復位信號時從其9腳,即RST腳輸入的。AT89S52單片機規(guī)定,當其處于正常工作基于51單片機的數(shù)字時鐘的設(shè)計77狀態(tài),且振蕩工作穩(wěn)定后,在RST端有從高電平到低電平,且高電平時間大于兩

17、個機器周期的復位信號時,CPU將完成對系統(tǒng)的復位。有兩點需要注意:一、復位信號是高電平有效,二、高電平的保持時間必須大于兩個機器周期,可見高電平保持時間與振蕩率有關(guān)。 本次設(shè)計中采用上電復位電路,上電復位是指在系統(tǒng)上電時,RST端自動產(chǎn)生復位所需要的信號將單片機復位,本次設(shè)計中的上電位復位電路如圖所示。上電時,RST端高電平的維持時間取決于R(lk)和C(22uF)的值。要使單片機可靠的復位,設(shè)計中使其維持的時間足夠長。如圖1-4所示。 圖1-4復位電路3.5按鍵電路方案一: 采用陣列式鍵盤,此類鍵盤是采用行列式掃描方式,當按鍵較多時間可以減少占用單片機的I/O數(shù)目。 方案二:采用獨立式按鍵電

18、路,每個鍵單獨占用一根I/O接口線,每個I/O口的工作狀態(tài)互不影響,此類鍵盤采用端口直接掃描方式。但是當按鍵較多時占用單片機的I/O數(shù)目較多。本系統(tǒng)只需兩個按鍵,因此選擇方案二。 如果按鍵采用中斷的話,可以使單片機工作更加靈活、效率更高。由于該系統(tǒng)要用到兩個按鍵,考慮到單片機的中斷資源不夠,所以就只用外部INT1和INT2中斷,與P1.2和P1.3口。電路如圖1-5所示。 圖1-5按鍵電路3.6顯示電路3.61方案論證 方案一:采用動態(tài)顯示,這種工作方式是分時輪流選通用數(shù)碼管的公共端,使得各個數(shù)碼管輪流導通。當所有的數(shù)碼管依次顯示一遍后,軟件控制循環(huán),使每位顯示器分時點亮。這種方式不但能提高數(shù)

19、碼管的發(fā)光效率,并且由于各個數(shù)碼管的字段線是并聯(lián)使用的,因而大大簡化了硬件線路。各個數(shù)碼管雖然是分時輪流通電,單由于發(fā)光數(shù)碼管具有余輝特性與人眼具有視覺暫留作用,所以適當選取循環(huán)掃描頻率時,看上去所有數(shù)碼管是同時點亮的,察覺不出有閃爍現(xiàn)象。 方案二:采用靜態(tài)顯示 數(shù)碼管工作在靜態(tài)顯示方式下,共陰極或共陽極點連接在一起接地或高電平。每位的段選線與一個8位并行口相連。只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。該工作方式常采用串行口設(shè)定方式0輸出,外接74LS164移位寄存器構(gòu)成顯示電路。 由于該系統(tǒng)用到數(shù)碼管不多,單片機的I/O口資源夠。采用靜態(tài)顯示,一個數(shù)碼管就就要對應(yīng)一片

20、74LS164芯片,從編程和提供的硬件等方面綜合考慮后,決定采用靜態(tài)先顯示的方法。 采用4片74LS164級聯(lián)的方法來帶動4個數(shù)碼管顯示。分鐘的個位的短選線連接到第一片74LS164,分鐘的十位的短選線連接在第二片74LS164,小時的個位的段選線連接在第三片74LS164,小時的十位的短選線接在第四片74LS164,第一片的A、B腳由單片機的數(shù)字信號P1.7輸入,第二片的A、B腳接到第一片的QH,第三片的A、B腳接到第四片的QH,四片74LS164的CLK腳共同接到單片機的時鐘信號端P1.5。 發(fā)送第1個數(shù)據(jù)時數(shù)據(jù)暫存在第一片164芯片中;發(fā)送第2個數(shù)據(jù)時,第1個數(shù)據(jù)就移到第二片164芯片,

21、而第2個數(shù)據(jù)就存在第一芯片中;發(fā)送第3個數(shù)據(jù)時,第1個數(shù)據(jù)就移到第三片芯片,第2個數(shù)據(jù)就移到第二片芯片,而第3個數(shù)據(jù)就存在第一片芯片中;發(fā)送第4個數(shù)據(jù)時,第1個數(shù)據(jù)就移到第四片芯片,第2數(shù)據(jù)就移到第三片芯片,而3數(shù)據(jù)就移到第二片芯片,第4數(shù)據(jù)就移到第一片芯片中。當連續(xù)發(fā)送完4個數(shù)據(jù)后,把電源撥到ON時,這時數(shù)碼管就顯示第一次的4個數(shù);依次下去數(shù)碼管就可以顯示全部的數(shù)據(jù)。如圖1-6所示。 圖1-6顯示電路LED顯示器的結(jié)構(gòu)與原理3.6.2 LED的結(jié)構(gòu)與原理 下面以最簡單的七段數(shù)碼顯示器為例進行說明。通常用的七段數(shù)碼顯示器的部有8個發(fā)光二極管,其中7個發(fā)光二極管就組成了數(shù)字“8”,剩下一個發(fā)光二

22、極管就是這位數(shù)字所帶的小數(shù)點。數(shù)碼管結(jié)構(gòu)圖如圖1-7所示。 一般數(shù)碼管部有共陰和共陽兩種連接方式。共陰就是將各個發(fā)光二極管的陰極連接地,共陰數(shù)碼管如圖(1所示。圖中一個發(fā)光二極管就相當于一個數(shù)碼管。若給某段加上高電平,那么相對的段就會亮。根據(jù)要想現(xiàn)實的數(shù)值給各段數(shù)碼管加上相應(yīng)的高電平就可以顯示不同的數(shù)值了。共陽就是將各個發(fā)光二極管的陰極一起接在高電平上。公陽數(shù)碼管如圖(3)所示,從圖(3)中可以看出共陽的顯示器與共陰的顯示器有一點區(qū)別。圖1-7是8段LED數(shù)碼的結(jié)構(gòu)示意圖,其部實質(zhì)上8只發(fā)光二極管。圖1-7(1)LED的結(jié)構(gòu)圖 圖1-7(2)共陰數(shù)碼 圖1-7(3)共陽數(shù)碼 由于它部構(gòu)造不同,

23、在顯示時代碼也有所不同,共陰和共陽七段LED段選碼表如表1-1和表1-2所示。 表1-1共陰七段LED段選碼顯示字符數(shù)顯代碼顯示字符數(shù)顯代碼03FH56DH106H67DH258H7F8H34FH880H466H990H 表1-2共陽七段LED段選碼顯示字符顯示代碼顯示字符顯示代碼0C0H592H1F9H682H2A4H7F8H3B0H880H499H990H3.7電源電路 該部分有一個輸出電壓5V。220V交流市電通過電源變壓器變換成交流12V低壓,再經(jīng)過橋式整流電路D1D4和濾波電容2200uf的整流和濾波,在固定式三端穩(wěn)壓器LM7809的Vin和GND兩端形成一個并不十分穩(wěn)定的直流電壓(

24、該電壓常常會因為市電電壓的波動或負載的變化等原因而發(fā)生變化)。此直流電壓經(jīng)過LM7809的穩(wěn)壓和100uf電容的濾波后,便在穩(wěn)壓電源的輸出產(chǎn)生了精度高、穩(wěn)定度好的直流輸出9V電壓。9V電壓給可調(diào)分流基準芯片TL431提供電源。TL431的主要作用是給A/D轉(zhuǎn)換芯片TLC1594提供比較精確的參考電壓。9V電源再經(jīng)過LM7805穩(wěn)壓后,給各個芯片提供電源。電路見圖1-8。三端穩(wěn)壓器是標準化、系列化的通用線性穩(wěn)壓電源集成電路,以其體積小、成本低、性能好、工作可靠性高、使用簡潔等特點,成為目前穩(wěn)壓電源中應(yīng)用最為廣泛的一種單片式集成穩(wěn)壓器件。三端穩(wěn)壓器的工作原理(以78系列為例)如下:他與一般分立元件

25、組成的串聯(lián)式穩(wěn)壓電路基本相似。不同的是增加了啟動電路、保護電路和恒流源。啟動電路時為恒流源建立工作點而設(shè)置的。恒流源隨著在基準電壓形成和誤差放大器電路中,是為了使穩(wěn)壓器能夠在比較大的電壓變化圍正??煽抗ぷ鳌T谛酒O(shè)置了兩種較完善的保護電路:一是過流保護,一是過熱保護。 圖1-8 電源電路第四章 軟件設(shè)計流程圖4.1時鐘主程序流程圖時鐘主程序流程圖如圖1-9所示。 圖1- 9時鐘主程序流程4.2按鍵掃描程序流程圖 按鍵掃描程序流程圖如圖1-10所示。 圖1-10按鍵掃描程序流程4.3時鐘程序流程時鐘程序流程如圖1-11所示。第五章 硬軟件系統(tǒng)的調(diào)試 硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括線的

26、連接,按鍵是否接上了上拉電阻等。由于最小系統(tǒng)出了點錯誤,導致寫好的芯片無法顯示。經(jīng)用萬用表檢測,手工慢慢焊接好接入電源。在用萬用表檢查各個芯片管腳的電壓是否達到正常的工作電壓,然后判斷是否有存在短路現(xiàn)象等,經(jīng)一步步修改后把硬件調(diào)試好。 程序的調(diào)試是采用一個模塊一個模塊的進行,首先單獨調(diào)試個功能子程序,檢驗程序是否能夠?qū)崿F(xiàn)預期的功能等;最后逐步將各子程序連接起來總調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正確傳遞參數(shù)。 在程序調(diào)試過程當中,出現(xiàn)了以下幾個問題:LED閃爍問題:雖然本次設(shè)計的最終方案是采用LCD顯示屏實現(xiàn)顯示功能,但是在進行方案比較時曾采用過LED顯示方法,最初數(shù)碼管顯示不正常,出現(xiàn)閃

27、爍現(xiàn)象。通過調(diào)試發(fā)現(xiàn)這是由于延時時間選擇不當造成的。由于數(shù)碼管是采用動態(tài)顯示方式,為了使人眼長生視覺暫留效果,每一次顯示時都必須加入適當?shù)臅r間延時。由于一開始所選用的延時時間太短,因此出現(xiàn)閃爍現(xiàn)象,在增加顯示延時之后,數(shù)碼管顯示正常。鬧鈴蜂鳴器異常啟動問題:鬧鈴蜂鳴器的啟動/關(guān)閉是通過單片機輸出的控制信號來實現(xiàn)的,當當前時間與鬧鐘設(shè)置時間比較吻合時,單片機將對鬧鈴控制口P3.4執(zhí)行取反命令,從而啟動蜂鳴器發(fā)聲。一開始編寫程序時,沒有對P3.4口的最初狀態(tài)作正確設(shè)置,由于系統(tǒng)開機復位后,P3.4口處于高電平狀態(tài),因此出現(xiàn)一開機蜂鳴器就處于啟動狀態(tài)的情況。通過在主程序最開始加入對P3.4口取零命令

28、后,蜂鳴器啟動/關(guān)閉控制恢復正常。按鍵消抖問題:在最初編寫程序時,按鍵控制部分按照常例加入了按鍵消抖程序。在實際調(diào)試中,發(fā)現(xiàn)按鍵出現(xiàn)反映不靈敏現(xiàn)象。這是因為在鍵盤控制程序中除了消抖程序外,還加入了按鍵提示音程序(每次按壓鍵時,蜂鳴器發(fā)出“嘩”的一聲提示音)。由于在調(diào)用提示音子程序時,實際上已實現(xiàn)了一次時間的延時,因此再加入按鍵消抖程序的延時后,致使延時時間過長而出現(xiàn)按鍵反映不靈敏問題。通過調(diào)試發(fā)現(xiàn)提示音子程序本身所產(chǎn)生的延時已能夠滿足按鍵消抖程序后,按鍵控制靈敏度恢復正常。計時顯示異常問題:計時程序里面秒值顯示每次達到60后直接跳變到下一分鐘的01秒,最終會出現(xiàn)24:60:60的時間顯示。正確

29、的顯示應(yīng)該是秒值達到59后變成00,時間值在顯示到23:59:59之后的下一秒顯示為0:00:00。出現(xiàn)這種異常顯示的主要問題在于每次計時相應(yīng)的時鐘計時器在向高一位的時候沒有將顯示單元清零。因此在計時程序里面出現(xiàn)進位情況時,增加相應(yīng)顯存清零的語句后,計時顯示恢復正常。 經(jīng)過不斷的調(diào)試以后,總體功能達到了預期效果。時間誤差很小,運行一天以后時通過按鍵可以修改當前時間。當定時時間到了24小時,數(shù)碼顯示自動的顯示0,然后又從0開始計時。參考文獻1家健、柏榮、汪志峰 編著.單片機原理與應(yīng)用技術(shù).高等教育2嚴天峰 單片機應(yīng)用系統(tǒng)設(shè)計與仿真調(diào)試.航空航天大學3廖芳.電子產(chǎn)品生產(chǎn)工藝與管理M.清華大學200

30、3.4建民.模擬電子技術(shù)基礎(chǔ)M.清華大學2006.5嘉奎.電子線路(線性部)M.第四版.:高等教育,19996自美.電子電路設(shè)計 實驗測試M. 武昌華中理工大學,19947童詩白.模擬電子技術(shù)基礎(chǔ)M.第二版.:人民郵電,19998康華光主編,電子技術(shù)基礎(chǔ)M (數(shù)學部分、模擬部分),高等教育,19889胡宴如. 模擬電子技術(shù)M. :高等教育,2004,210志忠.數(shù)字電子技術(shù)M. : 高等教育,2003,12致 回首x年,取得了些許成績,生活中有快樂也有艱辛。感老師三年來對我孜孜不倦的教誨,對我成長的關(guān)心和愛護。學友情深,情同兄妹。四年的風風雨雨,我們一同走過,充滿著關(guān)愛,給我留下了值得珍藏的最

31、美好的記憶。在我的十幾年求學歷程里,離不開父母的鼓勵和支持,是他們辛勤的勞作,無私的付出,為我創(chuàng)造良好的學習條件,我才能順利完成完成學業(yè),感激他們一直以來對我的撫養(yǎng)與培育最后,我要特別感x老師。是他在我畢業(yè)的最后關(guān)頭給了我們巨大的幫助與鼓勵,使我能夠順利完成畢業(yè)設(shè)計,在此表示衷心的感激.x老師認真負責的工作態(tài)度,嚴謹?shù)闹螌W精神和深厚的理論水平都使我收益匪淺。她無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高這對于我以后的工作和學習都有一種巨大的幫助,感她耐心的輔導。在畢業(yè)設(shè)計過程中x老師也給予我很大的幫助,幫助解決了不少的難點,使得系統(tǒng)能夠與時開發(fā)完成,這里一并表示真誠的感。數(shù)

32、字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。 數(shù)字鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。 因此,我們此次設(shè)計與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學會制作數(shù)字鐘.而且通過數(shù)字鐘的制作進一步的了解各種在制作中用到的中小規(guī)模集成電路的作用與實用方法.且由于數(shù)字鐘包括組合邏輯電路和時敘電路.通過它可以進一步學習與掌握各種組合邏輯電路與時序電路的原理與使用方法。我們這一次的課程設(shè)計雖然只有二個星期的時間,但對我們的受益是很大的。從一開始的不知所措,到經(jīng)過不斷的探索

33、和努力之后,從無到有的把數(shù)字電子鐘設(shè)計出來了,這對我們學生來說是難得的經(jīng)歷和經(jīng)驗。雖然數(shù)字鐘的功能不是很完善,但是透過過這一次的學習和實踐,確確實實的把數(shù)字電子鐘的運作的基本原理、數(shù)字電路設(shè)計規(guī)劃以與元件之間的關(guān)聯(lián)性了解透徹,使我們在以后可以憑借著這些寶貴的經(jīng)驗,設(shè)計出更為復雜的電路。整個過程和我們所獲得的經(jīng)驗是我們本次課程設(shè)計的最大收獲。附件附錄一 系統(tǒng)硬件電路圖附錄二:程序清單Void main(void); sys_init(); /*系統(tǒng)初始化*/ t0_init(); /*定時器初始化*/ t1_init(); uart_init(); /*串口初始化*/ buf0=OX0a; bu

34、f1=OX0b; buf2=OX0b; buf3=OX0b; display(); /*顯示待機符P.*/ settime(); /*等待設(shè)置當前時間*/ display(); /*帶閃爍后要加顯示,否則出現(xiàn)尾位不顯的現(xiàn)象*/ TR0=1; /*設(shè)置完后開始走時,啟動定時器T0*/ET0=1; /*允許T0溢出中斷*/while(1) If(fresh) /*判斷是否要刷新顯示(分或時變化)*/ buf0=hourh; /*是,則新的時間送到顯示緩沖區(qū)*/buf1=hourl;buf2=miunh;buf3=miunl; display(); /*顯示刷新*/ if(sec) /*判斷秒指針要

35、刷新否*/ sec =0 /*是,則刷新(閃爍)*/ L1=!L1; L2=!L2;Dela20ms(); /*點亮時間不能太長,否則影響秒指針,短則太暗*/ else(sec) if(sec) sec=0; L1=!L1; L2=!L2; delay20ms(); void display(void) uchar out; DISPCON=1; /*關(guān)閉顯示,防止傳送數(shù)據(jù)期間閃爍*/ out=segbuf0; /*取出高位字段碼*/ SBUF=out; /*送入74LS164*/ while(!T1); /*等待發(fā)送完成*/ T1=0; out=segbuf1; /*取出低位時段碼*/ ou

36、t&=OXfe; /*顯示時分分隔符*/ SBUF=out; while(!T1); T1=0; out=segbuf2; /*分*/ SBUF=out; while(!T1); T1=0; out=segbuf3; SBUF=out; while(!T1); T1=0; DISPCON=0; /*所有數(shù)據(jù)已送入后開顯示*/ buf0=hourh; /*將目前設(shè)定的參數(shù)送顯示緩沖區(qū)*/buf1=hourl;buf2=miunh;buf3=miunl; if(ss) swich(setflag) /*判當前設(shè)定位*/ case OX01; buf0=OX0b; /*全暗代碼*/ break; c

37、ase OX02; buf1=OX0b; break; case OX04; buf2=OX0b; break; case OX08; buf3=OX0b; break; display(); void timerl (void) interrupt 3 using 1 TH1=OX3c; /*100ms定時常數(shù)*/ TL1=OXb0; count+; /*中斷次數(shù)加1*/ if(count!=5) /*判到10次(1s)否,不到直接返回*/ return; ss=!ss; /*ss閃爍標志求反*/ count=0; void settime(void) uchar i ; while(S1)

38、; /*等待s1鍵開始設(shè)置*/ for(i=0;i4;i+) delay20ms(); /*延時去抖動*/ while(S1); setflag=0; ss=0; hh=1; /*設(shè)置當前位標志*/ TR1=1; /*啟動定時器T1*/ ET1=1; /*允許T1溢出中斷*/ void settime(void) uchar i ; while(S1); /*等待s1鍵開始設(shè)置*/ for(i=0;i4;i+) delay20ms(); /*延時去抖動*/ while(S1); setflag=0; ss=0; hh=1; /*設(shè)置當前位標志*/ TR1=1; /*啟動定時器T1*/ ET1=

39、1; /*允許T1溢出中斷*/ break; case OX04; buf2=OX0b; break; case OX08; buf3=OX0b; break; /*/ display(); if(S1) goto sett_1; if(ml) TR1=0; /*關(guān)閉定時器T1*/ ET1=0; /*禁止T1溢出中斷*/ buf0=hourh; buf1=hourl; buf2=minuh; buf3=minul; return; /*如果當前編輯的份低位,則按S1鍵結(jié)束設(shè)定*/ setflag=1; /*當前位右移(標志左移1位)*/ continue; sett_1: if(S2) con

40、tinue; for(i=0;i4;i+) delay20ms(); /*延時去抖動*/ if(S2) continue; if(!hh) goto sett-2; hourl+; /*時高位加1處理*/ if(hourh!=2) continue; hourh=0; /*時高位只能是0,1*/continue; sett_2: if(!h1) goto sett-3; hourl+;/*時低位加一處理,高位為0,可以是09,否則,只能02*/ if(hour) goto sett-20; if(hourl=10) goto sett-21; continue; sett-21: hourl=

41、10; continue; sett-20: if(hourl=3) goto sett-22; continue; sett-22: hourl=0; continue; sett_3: if(!mh) goto sett-4; miunh+; /*分高位加1處理,只能是05*/ if(miunh=6) goto sett-30; continue; sett-30: miunh=0; continue; sett_4: minul+; /*分低位加1處理,只能是09*/ if(minul=10) goto sett-40; continue; sett-40: minul=0; conti

42、nue; #include “REG51.H”#define uchar unsigned char#define PSEG OX30 /*P.的段碼*/*09和P,暗的的端碼(共陽數(shù)碼管) */uchar codeseg=OX03,OX9F,OX25,OX0D,OX99,OX49,OX41,OX1F,OX01,OX09,OX30,OXff;/*/;74LS164的3 4 5 6 10 11 12 13對應(yīng)數(shù)碼管的A,B,C,D,E,F,G,DP,DB OCoh,OF9H,OA4H,OB0H,99H; DB 92H,82H,OF8H,80H,90H /*/ /*輸入輸出定義*/ sbit DI

43、SPCON=P32; /* 顯示控制*/ sbit S1 = P13; /* 設(shè)置鍵*/ sbit S1= P12; /* 數(shù)字+1鍵*/ sbit L1= P17; /* L1,L2構(gòu)成秒指針*/ sbit L2= P16; /* 全局變量定義 */ uchar buf4; /* 顯示緩沖區(qū)*/ uchar hourh; /* BCD時鐘各位*/ uchar hourl; uchar minuh; uchar minul; uchar second; /* 秒變量*/ uchar count; /* 溢出中斷計數(shù)器*/ uchar bdata setflag; /* 設(shè)置用標志字節(jié)*/ uc

44、har bdata uflag; /* 通用標志字節(jié)*/ /* 位變量定義*/ /* 以下4個位變量在setflag中,便于移位處理*/sbit hh=setflag0; /* 當前設(shè)置位標志*/sbit h1=setflag1;bit mh=setflag2;bit m1=setflag3;/* 以下變量在uflag*/sbit fresh=uflag0; /* 顯示刷新標志*/sbit ss=uflag1; /* 位閃爍標志*/sbit sec=uflag2; /* 秒指針標志*/sbit warning=uflag3; /* 定時標志*/*/ sbit tfix=uflag4; /* 開

45、始修正標志*/ #define N 60 /* 誤差值,單位:1/10秒,默認為0,即不修正*/*/*函數(shù)說明*/void sys-init(void);void t0-init(void);void uart-init(void);void display(void);void delay20ms(void);void settime(void);void t1-init(void);/*/;時鐘主函數(shù):main();定時器T0工作與中斷方式;一旦走時開始,無法進行設(shè)置。如果重新設(shè)置,則必須復位;24小時制;如果某74LS164的1,2腳與其他74LS164的1,2腳錯連了,則會出現(xiàn)同現(xiàn)實的

46、狀態(tài);帶編輯設(shè)定位閃爍功能和走時誤差自動糾正功能,于于此相關(guān)的函數(shù)是;settime(),位閃爍標志ss;timerl (),在settime()中啟動,每一秒將標志ss求反,達到閃爍目的;*;*/Void main (void)sys-init(); t0-init(); t1-init(); uart-init();buf0=OX0a;buf1=OX0b;buf2=OX0b;buf3=OX0b;display();settime();display();TR0=1;ET0=1;while(1) if(fresh); buf0=hourh; buf1=hourl; buf2=miunh; b

47、uf3=miunl; display(); if(sec) sec=0; L1=!L1; L2=!L2; delay20ms(); else if(sec) sec=0; L1=!L1; L2=!L2; delay20ms(); /*;*/void display(void) uchar out; DISPCON=1; out=segbuf0; SBUF=out; while(!TI); TI=0; out=segbuf1; out&=0 xfe; SBUF=out; while(!TI); TI=0; out=segbuf2; SBUF=out; while(!TI); TI=0; out=

48、segbuf3; SBUF=out; while(!TI); TI=0; DISPCON=0;/*;*/void timer0(void) interrupt 1 using 1 uchar x; fresh=0; sec=0; TH0=0 x3c; TL0=0 xb0;count+;/*/ if(tfix) x=N; else x=10;/*/ if(count!=x) return; else /*/ tfix=0; /*修正完后清修正標志*/*/ sec=1; count=0; scond+; if(second!=60) return; else fresh=1; second=0 m

49、inul+; if(miunl!=10) return; else miunl=0; miunh+; if(miunh!=6) return; else miunh=0; hourl+; if(hourh=0) if(hourl!=10) return; else hourl=0; hourh+; if(hourh!=2) return; else hourh=1; return; else if(hourl!=3) return; else hourl=0; hourh+; if(hourh!=2) return; else hourl=1; hourh=0; tfix=1; return; /*;*/ void t0_init(void) TMOD=0 x11;

溫馨提示

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

評論

0/150

提交評論