畢業(yè)論文-基于單片機的數(shù)字鐘設(shè)計【精校排版】_第1頁
已閱讀1頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p>  基于單片機的數(shù)字鐘設(shè)計</p><p>  專 業(yè): 電子信息科學(xué)與技術(shù) </p><p>  指導(dǎo)教師: </p><p>  學(xué)生姓名:

2、 </p><p>  學(xué)生學(xué)號: </p><p><b>  目錄</b></p><p><b>  摘要III</b></p><p>  AbstractIV</p><p>&

3、lt;b>  第一章 緒論1</b></p><p>  1.1 數(shù)字電子鐘的背景1</p><p>  1.2 數(shù)字電子鐘的意義1</p><p>  1.3 數(shù)字電子鐘的應(yīng)用1</p><p>  第二章 主要工具和器件2</p><p>  2.1 單片機的選擇2<

4、/p><p>  2.1.1 多功能2</p><p>  2.1.2 高效率和高性能3</p><p>  2.1.3 低電壓和低功耗3</p><p>  2.1.4 低價格3</p><p>  2.2 仿真軟件Proteus3</p><p>  2.2.1 概述3&

5、lt;/p><p>  2.2.2 Proteus主要功能3</p><p>  2.2.3 Proteus的用途及其在本系統(tǒng)中的作用4</p><p>  2.3 調(diào)試軟件Keil C514</p><p>  2.4 液晶顯示屏4</p><p><b>  2.5 晶振5</b&g

6、t;</p><p>  2.6 蜂鳴器5</p><p>  2.7 DS12C8876</p><p><b>  2.8 鍵盤7</b></p><p>  第三章 系統(tǒng)總體設(shè)計與分析8</p><p>  3.1 系統(tǒng)整體設(shè)計8</p><p>

7、  3.2 鍵盤控制電路模塊8</p><p>  3.3 時鐘周期設(shè)計模塊9</p><p>  3.4 復(fù)位電路設(shè)計模塊10</p><p>  3.5 顯示器模塊11</p><p>  3.6 蜂鳴器模塊12</p><p>  3.7 DS12C887鬧鐘模塊12</p>

8、<p>  3.8 電阻模塊14</p><p>  3.9 硬件的總體設(shè)計15</p><p>  3.10 系統(tǒng)的軟件設(shè)計16</p><p>  3.10.1 主程序模塊圖16</p><p>  3.10.2 時間調(diào)整與顯示流程圖17</p><p>  3.10.3 鬧鐘定時

9、流程圖18</p><p>  第四章 系統(tǒng)調(diào)試20</p><p>  4.1 軟件調(diào)試20</p><p>  4.2 硬件部分21</p><p>  4.3 軟硬聯(lián)調(diào)23</p><p><b>  總結(jié)26</b></p><p><b&

10、gt;  參考文獻(xiàn)27</b></p><p><b>  附錄28</b></p><p><b>  致謝33</b></p><p>  基于單片機的數(shù)字鐘設(shè)計</p><p><b>  摘要</b></p><p>  現(xiàn)代生

11、活的人們越來越重視起了時間的觀念,可以說時間和金錢劃上了等號。對于那些對時間把握非常嚴(yán)格和準(zhǔn)確的人或事來說,時間的不準(zhǔn)確會帶來非常大的麻煩,所以以LCD為顯示器的時鐘比指針式的時鐘表現(xiàn)出了很大的優(yōu)勢,LCD顯示的時間簡單明了而且讀數(shù)快、時間準(zhǔn)確顯示到秒。</p><p>  數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時分秒數(shù)字顯示的計時裝置。數(shù)字鐘的精度穩(wěn)定度遠(yuǎn)遠(yuǎn)超出老式機械鐘。在這次設(shè)計中我們采用了AT89C51作為主控機器,

12、采用DS12C887來實現(xiàn)鬧鐘的功能,采用了一個按鍵進(jìn)行復(fù)位時使用,三個按鍵來隨時隨地的調(diào)節(jié)逆隋需要的時間,平且使用了LCD液晶顯示時、分、秒,以24小時計時方式,用12MHZ的晶振產(chǎn)生脈沖,定時器計數(shù)。在此次設(shè)計中,電路除了具有顯示時間的基本功能外,還可以實現(xiàn)對時間的調(diào)整以及鬧鐘提醒功能,數(shù)字鐘是其小巧,價格低廉,走時精度高,使用方便,多功能,便于集成化而受到廣大消費的喜愛,因此得到了廣泛的使用。</p><p&g

13、t;  關(guān)鍵詞:單片機;數(shù)字鐘;液晶顯示</p><p>  Clock Design Of Based On SCM Digital </p><p><b>  Abstract</b></p><p>  Modern life of people pay more and more attention to up the concept

14、 of time, can say time and money off of equality. For those very strict to time and accurate grasp the person or thing for, time is not accurate will bring very big trouble, so the clock with LCD for display than the clo

15、ck pointer type showed a lot of advantage, LCD display time reading simple and quick, time accurately display to seconds.</p><p>  A digital clock is adopting digital circuit implementation provides the diff

16、culties digital display timer. A digital clock precision stability far beyond old mechanical clock. In this design we adopted AT89C51 as the master machine, using DS12C887 to achieve the alarm clock function, adopted a b

17、utton to reset use anytime and anywhere, three button to adjust the time required to inverse sui, flat and USES the LCD display, minutes and seconds, with 24 hours, with the way 12MHZ clock crystals produ</p><

18、p>  Keywords: SCM, A Digital Cclock,Liquid Crystal Display</p><p><b>  第一章 緒論</b></p><p>  1.1 數(shù)字電子鐘的背景</p><p>  21世紀(jì),社會生產(chǎn)力的發(fā)展和社會信息化程度的有了很大程度上的提高。 時間對人們來說總是那么寶貴,工作的

19、忙碌性和繁雜性容易使人忘記當(dāng)前的時間。忘記了要做的事情,當(dāng)事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦有重要事情,一時的耽誤可能釀成大禍,而鬧鐘就可以在關(guān)鍵時刻起到提醒的作用。</p><p>  目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進(jìn)一步向著低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。單片機應(yīng)用的重要還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由

20、模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。</p><p>  數(shù)字鐘模塊中最常見的是單片機,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。</p><p>  1.2 數(shù)字電子鐘的意

21、義</p><p>  數(shù)字鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實的意義。</p><p

22、>  1.3 數(shù)字電子鐘的應(yīng)用</p><p>  數(shù)字鐘已成為人們生活中必不可少的一部分,廣泛用于生活的各個方面和公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時、自動控制等各個領(lǐng)域。</p><p>  第二章 主要工具和器件</p><p

23、>  2.1 單片機的選擇</p><p>  單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。</p><p>  通常,單片機由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。</p><p>  因此,單片機只需要和外部設(shè)備及

24、適當(dāng)?shù)能浖嘟Y(jié)合,便可成為一個單片機控制系統(tǒng)。在此,我們采用型號為AT89C51的單片機。AT89C51是一個低電壓,高性能CMOS 8位單片機帶有4K字節(jié)的可反復(fù)擦寫的程序存儲器和128字節(jié)的存取數(shù)據(jù)存儲器(RAM),這種器件采用ATMEL公司的高密度、不容易丟失存儲技術(shù)生產(chǎn),并且能夠與MCS-51系列的單片機兼容。片內(nèi)含有8位中央處理器和閃存,有較強的功能的AT89C51單片機能夠被應(yīng)用到控制領(lǐng)域中,AT89C51單片機實物圖如圖

25、2.1所示:</p><p>  圖2.1 AT89C51實物圖</p><p>  單片機經(jīng)過前幾代的發(fā)展,正朝著多功能、高性能、低電壓、低功耗、低價格、大存儲容量、強I/O功能及較好的結(jié)構(gòu)兼容性方向發(fā)展。其發(fā)展趨勢不外乎以下幾個方面。</p><p>  2.1.1 多功能</p><p>  單片機中盡可能地把所需要的存儲器和I/O

26、口都集成在一塊芯片上,使得單片機可以實現(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總線控制器等,LED、LCD或

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

28、數(shù)量和限制。</p><p>  由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開始使用高級語言(如C語言)來開發(fā)單片機的程序。使用高級語言可以降低開發(fā)難度,縮短開發(fā)周期,增強軟件的可讀性和可移植性,便于改進(jìn)和擴(kuò)充功能。</p><p>  2.1.3 低電壓和低功耗</p><p>  單片機的嵌入式應(yīng)用決定了低電壓和低功耗的特性十分重要。由于CMOS等工藝的大量采用,很多

29、單片機可以在更低的電壓下工作(1.2V或0.9V),功耗已經(jīng)降低到uA級。這些特性使得單片機系統(tǒng)可以在更小電源的支持下工作更長的時間。</p><p>  2.1.4 低價格</p><p>  單片機應(yīng)用面廣,使用數(shù)量大,帶來的直接好處就是成本的降低。目前世界各大公司為了提高競爭力,在提高單片機性能的同時,十分注意降低其產(chǎn)品的價格。 </p><p>  2

30、.2 仿真軟件Proteus</p><p><b>  2.2.1 概述</b></p><p>  Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機</p><p>  與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿

31、真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、KeilC和MPLAB等多種編譯器[2]。</p><p>  2.2.2 Proteus主要功能</p><p>  Pro

32、teus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:</p><p><b>  原理布圖;</b></p><p>  PCB自動或人工布線;</p><p>  SPICE電路仿真。</p><p><b>  革命性的特點:</b></p><p&

33、gt;<b>  互動的電路仿真</b></p><p>  用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。</p><p>  仿真處理器及其外圍電路</p><p>  可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合

34、顯示及輸出,能看到運行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計開發(fā)環(huán)境。</p><p>  2.2.3 Proteus的用途及其在本系統(tǒng)中的作用</p><p>  單片機在很多產(chǎn)品中得到廣泛的應(yīng)用,無論是51 系列、AVR、還是PIC 系列,他們各有各的特點,學(xué)習(xí)者也是逐年增加,但是在學(xué)習(xí)開發(fā)過程中,我們往往在確定方案后做試驗的開支

35、往往比較大,尤其是對于一些學(xué)生或者初學(xué)者這就可能成為他們學(xué)習(xí)的障礙。我們使用Proteus 軟件進(jìn)行模擬仿真,這樣大大節(jié)省了時間和開發(fā)費。尤其將此軟件用在單片機開發(fā)中是一個不錯的選擇。</p><p>  2.3 調(diào)試軟件Keil C51</p><p>  Keil C51是德國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性

36、、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻[3]。</p><p>  Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。</p><p>  在本設(shè)計中Keil C51主要是實現(xiàn)程序的編譯、與Proteus的聯(lián)合調(diào)試。</p><p>  2.

37、4 液晶顯示屏</p><p>  液晶顯示器具有功耗低, 壽命長的特點。是目前單片機應(yīng)用的重要領(lǐng)域,無論機器,儀表,等都可以看到他的身影,然而,想要找一個適合于自己玩的液晶還真的比較困難,在這里我們選用了1602液晶顯示器 ,因為它具有使用簡單,容易掌握的特點,更適合初始實踐者使用。</p><p>  1602液晶顯示屏實物圖如圖2.2所示:</p><p>

38、  圖2.2 1602液晶顯示屏實物</p><p><b>  2.5 晶振</b></p><p>  沒有晶振,就沒有時鐘周期,沒有時鐘周期,就無法執(zhí)行程序代碼,單片機就無法工作。 </p><p>  單片機工作時,是一條一條地從RoM中取指令,然后一步一步地執(zhí)行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準(zhǔn)。—

39、個機器周期包括12個時鐘周期。如果一個單片機選擇了12MHz晶振,它的時鐘周期是1/12us,它的一個機器周期是12×(1/12)us,也就是1us。</p><p>  所以我們這里采用的是12MHZ晶振,他正好滿足我們整個實驗的要求。12MHZ晶振實物圖如圖2.3所示:</p><p>  圖2.3 12MHZ晶振實物</p><p><b&g

40、t;  2.6 蜂鳴器</b></p><p>  蜂鳴器是一種機電轉(zhuǎn)換裝置, 它可將交流或直流電能轉(zhuǎn)變成振動,該振動往往產(chǎn)生音域的嗡嗡聲,體化結(jié)構(gòu)的電子訊響器[4],而我們采用的直流電壓供電,廣泛應(yīng)用于計算機、打印機、復(fù)印機、報警器、電子玩具、汽車電子設(shè)備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器的分類 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器的電路圖形符號 蜂鳴器在電路中用字

41、母“H”或“HA”(舊標(biāo)準(zhǔn)用“FM”、“LB”、“JD”等)表示。</p><p>  蜂鳴器也分為有源蜂鳴器和無源蜂鳴器,由于該程序自身的設(shè)計我們選擇使用有源蜂鳴器。下面是一個有源蜂鳴器實物圖如圖2.4所示:   </p><p>  圖2.4 有源蜂鳴器</p><p>  2.7 DS12C887</p>

42、;<p>  在2000年時,“千年蟲”問題成為困擾當(dāng)時世界的一大難題。當(dāng)時采用兩位數(shù)表示年度的日歷系統(tǒng)將要用四位數(shù)來表示,因此有關(guān)的計算機操作系統(tǒng)和應(yīng)用軟件都要作相應(yīng)的修改。據(jù)此,美國Dallas公司推出兩款數(shù)字時鐘芯DS12887/DS12C887,兩款時鐘芯片都將在1999年12月31日23時59分59秒時順利地跳到2000年1月1日零時,并能實現(xiàn)2000年2月29日的閏年提示,是時鐘芯片DS1287的增強品種,結(jié)構(gòu)

43、上相當(dāng)于MC146818的改進(jìn)型。芯片都采用24引腳雙列直插式封裝,其引腳接口邏輯和內(nèi)部操作方式與MC146818基本一致,所不同的DS12887/DS12C887芯片的晶體振蕩、振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片的上方,組成一個加厚的集成電路模塊,因此,DS12C887時鐘片無需MC146818的電源電位檢測端(PS),電路通電時其充電電路便自動對可充電電池充電,充足一次電可供芯片時鐘運行半年之久,正常工作時可保證時鐘數(shù)

44、據(jù)十年內(nèi)不會丟失。此外,片內(nèi)通用的RAM為MC146818的兩倍以上[5]。 </p><p>  DS12C887內(nèi)部有專門的接口電路,從而使得外部電路的時序要求十分簡單,使它與各種微處理器的接口大大簡化。使用時無需外圍電路元件,只要選擇引腳MOT電平,即可和不同計算機總線連接。</p><p>  DS12C887實物如圖2.5所示: </p><p>  圖

45、2.5 DS12C887實物</p><p><b>  2.8 鍵盤</b></p><p>  該設(shè)計用了三個鍵盤,實現(xiàn)了比較完善的功能,鍵盤中的一個可以調(diào)節(jié)到要調(diào)節(jié)的小時、分鐘和秒位置,另一個按鍵可以實現(xiàn)小時、分鐘和秒的累加,每按一次加一,以達(dá)到調(diào)節(jié)時間的功效,另外還可以對鬧鐘進(jìn)行設(shè)置,當(dāng)鬧鐘響時可以按任意鍵停止,使用很方便,鍵盤實物如圖2.6所示:<

46、/p><p>  圖2.6 鍵盤實物</p><p>  第三章 系統(tǒng)總體設(shè)計與分析</p><p>  3.1 系統(tǒng)整體設(shè)計</p><p>  我們可以采取的設(shè)計思路是:首先,整個系統(tǒng)應(yīng)該圍繞單片機進(jìn)行處理,單片機每一個不同端口都有一個不同的功能,我們先利用晶振,來控制時鐘周期,再通過單片機的復(fù)位功能設(shè)計一個復(fù)位功能鍵,最后通過LCD顯

47、示屏與單片各個端口連接來,在設(shè)計一個蜂鳴器通過單片機進(jìn)行報時,最終通過加載程序來實現(xiàn)時間的顯示和報時功能,系統(tǒng)的總體結(jié)構(gòu)框如圖3.1所示:</p><p>  圖3.1 系統(tǒng)的總體結(jié)構(gòu)框圖</p><p>  3.2 鍵盤控制電路模塊</p><p>  該設(shè)計需要校對時間,所以用三個按鍵來實現(xiàn)。按S1鍵產(chǎn)生低電平啟動按鍵功能來調(diào)節(jié)要調(diào)節(jié)的時間,第一次按是秒的位

48、置,再按一次是分鐘,再按一次是時鐘位置,在調(diào)整好位置后,再按S2產(chǎn)生進(jìn)位加時間,按S3鍵產(chǎn)生退位減時間,每按一次加一或減一,當(dāng)用手按下一個鍵時,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也回會出現(xiàn)類似的情況。這就是抖動。抖動的持續(xù)時間隨鍵盤材料和操作員而異,很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以很容易地解決抖動問題,這就是通過延遲一定的時間來等待抖動消失,這之后,在讀入鍵盤碼

49、[6]。按鍵硬件連接如圖3.2所示:</p><p>  圖3.2 按鍵硬件連接</p><p>  3.3 時鐘周期設(shè)計模塊 </p><p>  AT89C51片內(nèi)設(shè)有一個由反向放大器所構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入端和輸出端。時鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部時鐘電路方式,在XTAL1和XTAL2引腳上外接定時元件,

50、內(nèi)部振蕩電路就產(chǎn)生自激振蕩。定時元件經(jīng)常采用石英晶體和電容組成的并聯(lián)諧振電路。晶體可以在1.2MHZ~12MHZ之間選擇,電容值在50PF~30PF之間選擇,電容的大小可以起頻率微調(diào)的作用。外部方式的時鐘電路,XTAL1接地,XTAL2接外部振蕩器。對外部震蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHZ的方波信號。此系統(tǒng)選用內(nèi)部時鐘電路方式[7]。 </p><p>  電路圖如圖3.3所示:&l

51、t;/p><p>  圖3.3 時鐘振蕩電路</p><p>  3.4 復(fù)位電路設(shè)計模塊 </p><p>  在振蕩器運行時,單片機的復(fù)位電路原理是在RESET輸入端出現(xiàn)高電平來實現(xiàn)復(fù)位和初始化。在振蕩器運行的情況下,要實現(xiàn)復(fù)位操作,必須使RST引腳至少保持兩個機器周期(24個振蕩器周期)的高電平。CPU在第二個機器周期內(nèi)執(zhí)行復(fù)位操作,以后每一個機器周期重

52、復(fù)一次,直至RST端電平變低。當(dāng)RST引腳返回低電平以后,CPU從0地址開始執(zhí)行程序。</p><p>  在加電瞬間,RST端的電平與VCC相同,隨著RC電路充電電流的減小,RST端的電位逐漸下降。只要RST端保持兩個機器周期的高電平,單片機就能有效復(fù)位。本方案中電路系統(tǒng)采用的是上電與按鈕復(fù)位電路。當(dāng)時鐘頻率選用12MHz時,C1取10μF,R9為1k,R10為10K。復(fù)位操作不會對內(nèi)部RAM有所影響[8]。&

53、lt;/p><p>  單片機系統(tǒng)自動復(fù)位如圖3.4所示:</p><p>  圖3.4 單片機系統(tǒng)自動復(fù)位</p><p>  3.5 顯示器模塊</p><p>  VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,我們選用的是1602字符型14條引腳線的LCD,其中D0—D7與單片機相連來實現(xiàn)數(shù)據(jù)的傳送,E與單

54、片機連是使能端,VSS一般接地為寫信號線,RW與VEE通過滑動變阻器相連來調(diào)節(jié)顯示屏的亮度,通過以上功能配合來完成顯示屏的顯示[9]。顯示屏如圖3.5所示:</p><p>  圖3.5 1062液晶顯示屏</p><p>  3.6 蜂鳴器模塊</p><p>  蜂鳴器模塊由蜂鳴器驅(qū)動電路和一個三極管組成。我們選擇了有源蜂鳴器,它具有體積小,耗電流小,使用時

55、間長,聲壓值達(dá)到理想效果等特點,同時選擇的是一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要驅(qū)動電流。通過電源給蜂鳴器提供高電平,再與利用三極管的產(chǎn)生的低電平協(xié)作一到設(shè)定時間,就產(chǎn)生一短脈沖,驅(qū)動蜂鳴器報警,蜂鳴器模塊如圖3.6所示:</p><p>  圖3.6 蜂鳴器模塊</p><p>  3.7 DS12C887鬧鐘模塊</p><p>  DS12C887共

56、有3個鬧鐘單元,分別為時、分、秒鬧鐘單元。在其中寫入鬧鐘時間值并且在時鐘中斷允許的情況下每天到時就會產(chǎn)生中斷申請信號。這種方式可以每天通過設(shè)置隨時提供中斷信號,從而在你需要的任意時刻(可以定確到秒以內(nèi))提供鬧鐘服務(wù),這種方式能在整點、整分或整秒產(chǎn)生一次中斷。假如控制系統(tǒng)要求的定時間隔不是整數(shù)時,則可以很方便的通過軟件來調(diào)整實現(xiàn)。</p><p>  MOT(模式選擇):MOT管腳為兩種總線類型的選擇提供了方便,當(dāng)

57、聯(lián)接到VCC時,選擇MOTORLA時序.當(dāng)聯(lián)接到GND時,選擇INTEL時序,此管腳有一約20K內(nèi)部下拉電阻。</p><p>  SQW(方波信號輸出):SQW管腳能從實時時鐘的內(nèi)15級分頻提供的13個抽頭中選擇輸出信號。SQW管腳的頻率可通過對寄存器A編程來改變。</p><p>  AD0一AD7(雙向地址/資料復(fù)用總線):復(fù)用總線減少管腳。因為地址信息與資料信息分時共享相同的信號通

58、路。</p><p>  AS(地址選通輸入):地址選通脈沖用于實現(xiàn)總線信號分離,AS/ALE的下降沿使得地址鎖入DSl2C887。</p><p>  CS(片選輸入):在訪問DSl2C887的總線周期片選信號必須保持為低,在MOTOROLA時序的DS和AS期間或INTEL時序RD和WR期間,CS須保持有效狀態(tài)。</p><p>  RESET(復(fù)位輸入):RES

59、ET管腳對時鐘、日歷或RAM無效.上電時RESET可保持一段時問低電平以允許電源穩(wěn)定.RESET保持低電平的時間取決于實際應(yīng)用[10]。</p><p>  下面是DS12C887鬧鐘模塊如圖3.7所示:</p><p>  圖3.7 DS12C887鬧鐘模塊</p><p><b>  3.8 電阻模塊</b></p>&l

60、t;p>  電阻雖說不能和單片機像其他硬件一樣起到主要作用,但在本次設(shè)計中卻是必不可少的一部分,我們這次一次用了8個的10k大小相同的電阻,為了防止電流過大而起到電流限流的作用來保護(hù)液晶顯示屏不受損害。</p><p>  電阻模塊如圖3.8。</p><p>  圖3.8 電阻模塊</p><p>  3.9 硬件的總體設(shè)計</p><

61、;p>  根據(jù)硬件系統(tǒng)的各個模塊的設(shè)計,我們最終可以完成了整個系統(tǒng)硬件的總體設(shè)計。</p><p>  硬件的總體設(shè)計如圖3.9所示:</p><p>  圖3.9 硬件的總體設(shè)計</p><p>  3.10 系統(tǒng)的軟件設(shè)計</p><p>  單片機的程序設(shè)計有其自身的特點。在單片機系統(tǒng)中,硬件與軟件緊密結(jié)合,由于硬件電路的設(shè)計

62、不具有通用性,所以必須根據(jù)具體的硬件電路來設(shè)計對應(yīng)的軟件,硬件設(shè)計的優(yōu)劣直接影響到軟件設(shè)計的難易,軟件設(shè)計的優(yōu)劣又直接影響到硬件的發(fā)揮。在很多時候,軟件可以替代硬件的功能,當(dāng)然,需要付出額外占用CPU時間的代價。</p><p>  軟件程序的設(shè)計是根據(jù)硬件電路圖的連接和各個元器件的功能進(jìn)行設(shè)計。在編寫軟件時,可以按各個程序的功能將軟件細(xì)分為各個功能模塊,再通過主程序的調(diào)用來實現(xiàn)整個軟件系統(tǒng)。而一般編寫的程序都是

63、根據(jù)事前所用的流程圖來編寫的,而且,流程圖中也包含了對設(shè)計所得結(jié)果的要求,因此,流程圖的設(shè)計直接影響到源程序的設(shè)計。</p><p>  3.10.1 主程序模塊圖</p><p>  該程序主要是對單片機兩種功能的實現(xiàn),其一是時間功能,時鐘可以通過按鍵隨意更改到當(dāng)前的時間,在不做調(diào)整時,時間是正常走動,其二鬧鐘控制,可以隨時隨地調(diào)整你所需要的鬧鐘。該系統(tǒng)包括:AT89C51最小系統(tǒng)、L

64、CD顯示電路及DS12C887、按鍵控制及蜂鳴器。其主要模塊由五個部分組成。具體關(guān)系如下圖3.10所示:</p><p>  圖3.10 主流程</p><p>  3.10.2 時間調(diào)整與顯示流程圖</p><p>  該部分主要是程序開始并初始化函數(shù)后LCD正常顯示,執(zhí)行while循環(huán)并進(jìn)行時間運算,并掃描鍵盤,當(dāng)鍵盤無響應(yīng)時,執(zhí)行原函數(shù),繼續(xù)LCD正常顯示

65、,當(dāng)發(fā)現(xiàn)鍵盤有響應(yīng)時,則進(jìn)入時間調(diào)整程序,并進(jìn)行調(diào)整,調(diào)整后執(zhí)行調(diào)整響應(yīng)函數(shù),并在LCD進(jìn)行相應(yīng)顯示。</p><p>  這個過程如圖3.11所示:</p><p>  圖3.11 時間調(diào)整與顯示流程</p><p>  3.10.3 鬧鐘定時流程圖</p><p>  該部分主要是程序開始并初始化后,進(jìn)行執(zhí)行while循環(huán)從而執(zhí)行時間

66、運算,并檢查DS12C887是否有中斷申請信號時,假如沒有到時則繼續(xù)執(zhí)行時間運算,假如到時則蜂鳴器響,這時可以按任意鍵停止蜂鳴器響,假如沒有按任意鍵則一直響,從而實現(xiàn)鬧鐘的功能。</p><p>  這個過程如圖3.12所示:</p><p>  圖3.12 鬧鐘定時流程</p><p><b>  第四章 系統(tǒng)調(diào)試</b></p&g

67、t;<p>  系統(tǒng)調(diào)試分為硬件調(diào)試、軟件調(diào)試和軟硬件聯(lián)調(diào)。電路按模塊調(diào)試,各模塊逐個調(diào)試通過后再聯(lián)調(diào)。</p><p><b>  4.1 軟件調(diào)試</b></p><p>  Keil C51主要是實現(xiàn)程序的編譯[11],在這部分我們就采用了Keil C51來進(jìn)行實現(xiàn),由于系統(tǒng)的軟件系統(tǒng)很大,全部用C語言來編寫,所以軟件調(diào)試比較復(fù)雜,我們事先把各個

68、模塊分成部分一一進(jìn)行調(diào)試,發(fā)現(xiàn)每個模塊都有不同的錯誤,經(jīng)過不斷的改進(jìn)終于使每個模塊基本上都沒有大的問題,然后再把各個模塊一一連接到一起成一個整體, 在經(jīng)過不斷的調(diào)試修改終于可以使整個程序的問題得到最終的解決。以下是調(diào)試時出現(xiàn)的問題中的一部分。程序錯誤如圖4.1所示:</p><p>  圖4.1 程序引腳編寫錯誤</p><p>  經(jīng)過檢查發(fā)現(xiàn)原來是端口重復(fù)造成的,經(jīng)過修改解決了問題。

69、</p><p>  調(diào)整后的如圖4.2。</p><p>  圖4.2 程序引腳改正后正確</p><p><b>  4.2 硬件部分</b></p><p>  在硬件部分我們主要采用了Proteus進(jìn)行電路分析與實物仿真,首先我們我們把各個模塊所需要的各部分硬件一次找到并按合理的位置把它們放好,然后把各個電路

70、線進(jìn)行了連接,但是發(fā)現(xiàn)不能仿真,最后檢查發(fā)現(xiàn)有些電路線的位置沒有連接正確。</p><p>  問題中的一部分:由于顯示屏中的E和AS單片機中位置連錯,造成不能顯示。如圖4.3所示:</p><p>  圖4.3 E和AS單片機中位置連錯</p><p>  E和AS單片機中位置連接改后如圖4.4所示:</p><p>  圖4.4 E和

71、AS單片機中位置連接改后 </p><p>  4.3 軟硬聯(lián)調(diào) </p><p>  該系統(tǒng)的軟件和硬件之間的聯(lián)系不是十分緊密,一般是軟件計算完畢之后,將程序下載到單片機,從而進(jìn)行顯示。因此在軟硬件都基本調(diào)通的情況下系統(tǒng)的軟硬件聯(lián)調(diào)難度不是很大。</p><p>  完全成功的仿真圖如圖4.5所示:</p><p>  圖4.5 完整

72、成功圖</p><p>  并驚進(jìn)行了調(diào)試一切正常如圖4.6所示:</p><p>  圖4.6 調(diào)試后一切正常</p><p><b>  總結(jié)</b></p><p>  經(jīng)過將近這些天的單片機畢業(yè)設(shè)計,終于完成了我的數(shù)字鐘的設(shè)計,看著調(diào)試結(jié)果,真的很高興,至少這次設(shè)計把我自己所想的都做了出來,但是高興之余不得不深

73、思呀!在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計但這次設(shè)計真的讓我長進(jìn)了很多,我覺得寫好一個程序并不是一件簡單的事,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。 </p><p>  這次的畢業(yè)設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能

74、提高,這就是我在這次畢業(yè)設(shè)計中的最大收獲。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]黃慶進(jìn),高榮威.單片機原理與應(yīng)用課程設(shè)計[D]. 廣東:廣東科技職業(yè)技術(shù)學(xué)院,2010.</p><p>  [2]張杰.基于Proteus 軟件的單片機數(shù)字時鐘系統(tǒng)開發(fā)[D]. 天津:天津輕工職業(yè)技術(shù)學(xué)院,2010.</p

75、><p>  [3]劉同法,陳忠平,睦仁武.單片機基礎(chǔ)與最小系統(tǒng)實踐[M].北京:北京航空航天大學(xué)出版社, </p><p>  2009.12~23.</p><p>  [4]于治會.調(diào)試儀表用蜂鳴器振動規(guī)范問題[J].電子工業(yè)專用設(shè)備,2002,31(1):54~55</p><p>  [5]彭希南.跨越2000年的時鐘芯片DS1288

76、7/DS12C887[J].電子技術(shù),1999,08(2):34.</p><p>  [6]張?zhí)旆?51單片機C語言開發(fā)詳解[M].北京:電子工業(yè)出版社,2008.179~182.</p><p>  [7]蔡美琴,張為民,何金兒,等.MCS-51系列單片機系統(tǒng)及其應(yīng)用[M]第二版.北京:高等教育出</p><p>  版社,2004.12~13.</p&g

77、t;<p>  [8]樓然苗,李光飛.單片機課程設(shè)計指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2007.196~207.</p><p>  [9]朱飛,楊平.AVR單片機C語言開發(fā)入門與典型實例[M].北京:人民郵電出版社,2009.203~216.</p><p>  [10]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009.312~345.<

78、;/p><p>  [11]夏繼強,沈德金,邢春香.單片機實驗與實踐教程[M].北京:北京航空航天大學(xué)出版社,</p><p>  2006.5~11.</p><p><b>  附錄 </b></p><p>  void write_com(uchar com)//向Lcd寫入控制指令</p><p

79、><b>  {</b></p><p><b>  rs=0;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(5);</b&

80、gt;</p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p> 

81、 void write_date(uchar date)//向LCD寫入數(shù)據(jù)</p><p><b>  {</b></p><p><b>  rs=1;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=date;&l

82、t;/b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p>

83、;<p><b>  }</b></p><p>  void init()//定時器、LCD、鬧鐘設(shè)置初始化</p><p><b>  {</b></p><p>  uchar num;</p><p><b>  EA=1;</b></p>

84、<p><b>  EX0=1;</b></p><p><b>  IT0=1</b></p><p><b>  lcden=0;</b></p><p>  set_alarm(14,13,10);</p><p>  write_ds(0x0B,0x26);&

85、lt;/p><p>  read_ds(0x0c);</p><p>  write_com(0x38);</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write

86、_com(0x80);</p><p>  for(num=0;num<15;num++)</p><p><b>  {</b></p><p>  write_date(table[num]);</p><p><b>  delay(5);</b></p><p>

87、;<b>  }</b></p><p>  write_com(0x80+0x40);</p><p>  for(num=0;num<12;num++)</p><p><b>  {</b></p><p>  write_date(table1[num]);</p>&l

88、t;p><b>  delay(5);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void write_sfm(uchar add,uchar date)//顯示時分秒程序</p><p><b>

89、;  {</b></p><p>  uchar shi,ge;</p><p>  shi=date/10;</p><p>  ge=date%10;</p><p>  write_com(0x80+0x40+add);</p><p>  write_date(0x30+shi);</p>

90、;<p>  write_date(0x30+ge);</p><p><b>  }</b></p><p>  void keyscan()//按鍵掃描程序</p><p><b>  {</b></p><p>  if(flag1==1) </p><p&g

91、t;<b>  {</b></p><p><b>  if(s2==0)</b></p><p><b>  {</b></p><p><b>  delay(5);</b></p><p><b>  if(s2==0)</b>

92、;</p><p><b>  {</b></p><p>  while(!s2);</p><p><b>  flag1=0;</b></p><p><b>  }</b></p><p><b>  }</b></p

93、><p><b>  if(s3==0)</b></p><p><b>  {</b></p><p><b>  delay(5);</b></p><p><b>  if(s3==0)</b></p><p><b>

94、;  {</b></p><p>  while(!s3);</p><p><b>  flag1=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

95、;/b></p><p>  if(s1==0)//功能鍵按下</p><p><b>  {</b></p><p>  delay(5);//按鍵消抖</p><p><b>  if(s1==0)</b></p><p>  {s1num++;</p&g

96、t;<p><b>  flag=1;</b></p><p><b>  flag1=0;</b></p><p>  while(!s1);//等待釋放按鍵</p><p>  if(s1num==1) //功能鍵按下一次,光標(biāo)在秒處閃爍</p><p><b>  {

97、</b></p><p><b>  TR0=0;</b></p><p>  write_com(0x80+0x40+10);</p><p>  write_com(0x0f);</p><p><b>  }</b></p><p><b>  }

98、</b></p><p>  if(s1num==2)//功能鍵按下二次,光標(biāo)在分處閃爍</p><p><b>  {</b></p><p>  write_com(0x80+0x40+7);</p><p><b>  }</b></p><p>  if(

99、s1num==3)//功能鍵按下三次,光標(biāo)在時處閃爍</p><p><b>  {</b></p><p>  write_com(0x80+0x40+4);</p><p><b>  }</b></p><p>  if(s1num==4)//功能鍵按下四次,光標(biāo)不閃爍,時鐘繼續(xù)計時顯示<

100、;/p><p><b>  {</b></p><p><b>  s1num=0;</b></p><p>  write_com(0x0c);</p><p><b>  flag=0;</b></p><p>  write_ds(0,miao);&l

101、t;/p><p>  write_ds(2,fen);</p><p>  write_ds(4,shi);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(s1num!=0)//功能鍵按下</p><

102、p><b>  {</b></p><p>  if(s2==0)//加時、分、秒鍵按下判定</p><p><b>  {</b></p><p>  delay(1);//按鍵消抖</p><p><b>  if(s2==0)</b></p><

103、p><b>  {</b></p><p>  while(!s2);//等待釋放按鍵</p><p>  if(s1num==1)//功能鍵按下一次,光標(biāo)在秒處閃爍,等待S2鍵加值</p><p><b>  {</b></p><p><b>  miao++;</b>

104、;</p><p>  if(miao==60)</p><p><b>  miao=0;</b></p><p>  write_sfm(10,miao);</p><p>  write_com(0x80+0x40+10);</p><p><b>  }</b><

105、;/p><p>  if(s1num==2)//功能鍵按下二次,光標(biāo)在分處閃爍,等待S2鍵加值</p><p><b>  {</b></p><p><b>  fen++;</b></p><p>  if(fen==60)</p><p><b>  fen=0;

106、</b></p><p>  write_sfm(7,fen);</p><p>  write_com(0x80+0x40+7);</p><p><b>  }</b></p><p>  if(s1num==3)//功能鍵按下三次,光標(biāo)在時處閃爍,等待S2鍵加值</p><p>

107、<b>  {</b></p><p><b>  shi++;</b></p><p>  if(shi==24)</p><p><b>  shi=0;</b></p><p>  write_sfm(4,shi);</p><p>  write

108、_com(0x80+0x40+4);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(s3==0)//減時、分、秒鍵按下判定</p><p><b&g

109、t;  {</b></p><p>  delay(1);//按鍵延時</p><p><b>  if(s3==0)</b></p><p><b>  {</b></p><p>  while(!s3);//等待釋放按鍵</p><p>  if(s1num

110、==1)//功能鍵按下一次,光標(biāo)在秒處閃爍,等待S2鍵減值</p><p><b>  {</b></p><p>  /*if(miao==0)</p><p><b>  {</b></p><p><b>  miao=59;</b></p><p&

111、gt;  write_sfm(10,miao);</p><p>  write_com(0x80+0x40+10);</p><p><b>  }*/</b></p><p><b>  miao--;</b></p><p>  if(miao==-1)</p><p>

112、;<b>  miao=59;</b></p><p>  write_sfm(10,miao);</p><p>  write_com(0x80+0x40+10);</p><p><b>  }</b></p><p>  if(s1num==2)//功能鍵按下二次,光標(biāo)在分處閃爍,等待S2鍵

113、減值</p><p><b>  {</b></p><p><b>  fen--;</b></p><p>  if(fen==-1)</p><p><b>  fen=59;</b></p><p>  write_sfm(7,fen);<

114、/p><p>  write_com(0x80+0x40+7);</p><p><b>  }</b></p><p>  if(s1num==3)//功能鍵按下三次,光標(biāo)在時處閃爍,等待S2鍵減值</p><p><b>  {</b></p><p><b>  

115、shi--;</b></p><p>  if(shi==-1)</p><p><b>  shi=23;</b></p><p>  write_sfm(4,shi);</p><p>  write_com(0x80+0x40+4);</p><p><b>  }&l

116、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  致謝</b

溫馨提示

  • 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

提交評論