

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p> 基于單片機的數字鐘設計</p><p> 專 業(yè): 電子信息科學與技術 </p><p> 指導教師: </p><p> 學生姓名:
2、 </p><p> 學生學號: </p><p><b> 目錄</b></p><p><b> 摘要III</b></p><p> AbstractIV</p><p>&
3、lt;b> 第一章 緒論1</b></p><p> 1.1 數字電子鐘的背景1</p><p> 1.2 數字電子鐘的意義1</p><p> 1.3 數字電子鐘的應用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 調試軟件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)總體設計與分析8</p><p> 3.1 系統(tǒng)整體設計8</p><p>
7、 3.2 鍵盤控制電路模塊8</p><p> 3.3 時鐘周期設計模塊9</p><p> 3.4 復位電路設計模塊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 硬件的總體設計15</p><p> 3.10 系統(tǒng)的軟件設計16</p><p> 3.10.1 主程序模塊圖16</p><p> 3.10.2 時間調整與顯示流程圖17</p><p> 3.10.3 鬧鐘定時
9、流程圖18</p><p> 第四章 系統(tǒng)調試20</p><p> 4.1 軟件調試20</p><p> 4.2 硬件部分21</p><p> 4.3 軟硬聯調23</p><p><b> 總結26</b></p><p><b&
10、gt; 參考文獻27</b></p><p><b> 附錄28</b></p><p><b> 致謝33</b></p><p> 基于單片機的數字鐘設計</p><p><b> 摘要</b></p><p> 現代生
11、活的人們越來越重視起了時間的觀念,可以說時間和金錢劃上了等號。對于那些對時間把握非常嚴格和準確的人或事來說,時間的不準確會帶來非常大的麻煩,所以以LCD為顯示器的時鐘比指針式的時鐘表現出了很大的優(yōu)勢,LCD顯示的時間簡單明了而且讀數快、時間準確顯示到秒。</p><p> 數字鐘是采用數字電路實現對時分秒數字顯示的計時裝置。數字鐘的精度穩(wěn)定度遠遠超出老式機械鐘。在這次設計中我們采用了AT89C51作為主控機器,
12、采用DS12C887來實現鬧鐘的功能,采用了一個按鍵進行復位時使用,三個按鍵來隨時隨地的調節(jié)逆隋需要的時間,平且使用了LCD液晶顯示時、分、秒,以24小時計時方式,用12MHZ的晶振產生脈沖,定時器計數。在此次設計中,電路除了具有顯示時間的基本功能外,還可以實現對時間的調整以及鬧鐘提醒功能,數字鐘是其小巧,價格低廉,走時精度高,使用方便,多功能,便于集成化而受到廣大消費的喜愛,因此得到了廣泛的使用。</p><p&g
13、t; 關鍵詞:單片機;數字鐘;液晶顯示</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 數字電子鐘的背景</p><p> 21世紀,社會生產力的發(fā)展和社會信息化程度的有了很大程度上的提高。 時間對人們來說總是那么寶貴,工作的
19、忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦有重要事情,一時的耽誤可能釀成大禍,而鬧鐘就可以在關鍵時刻起到提醒的作用。</p><p> 目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著低功耗、小體積、大容量、高性能、低價格和外圍電路內裝化等幾個方面發(fā)展。單片機應用的重要還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須由
20、模擬電路或數字電路實現的大部分功能,現在已能用單片機通過軟件方法來實現了。這種軟件代替硬件的控制技術也稱為微控制技術,是傳統(tǒng)控制技術的一次革命。</p><p> 數字鐘模塊中最常見的是單片機,數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。</p><p> 1.2 數字電子鐘的意
21、義</p><p> 數字鐘是采用數字電路實現對.時,分,秒.數字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度,遠遠超過老式鐘表, 鐘表的數字化給人們生產生活帶來了極大的方便,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。</p><p
22、> 1.3 數字電子鐘的應用</p><p> 數字鐘已成為人們生活中必不可少的一部分,廣泛用于生活的各個方面和公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。由于數字集成電路技術的發(fā)展和采用了先進的石英技術,使數字鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時、自動控制等各個領域。</p><p> 第二章 主要工具和器件</p><p
23、> 2.1 單片機的選擇</p><p> 單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。</p><p> 通常,單片機由單塊集成電路芯片構成,內部包含有計算機的基本功能部件:中央處理器、存儲器和I/O接口電路等。</p><p> 因此,單片機只需要和外部設備及
24、適當的軟件相結合,便可成為一個單片機控制系統(tǒng)。在此,我們采用型號為AT89C51的單片機。AT89C51是一個低電壓,高性能CMOS 8位單片機帶有4K字節(jié)的可反復擦寫的程序存儲器和128字節(jié)的存取數據存儲器(RAM),這種器件采用ATMEL公司的高密度、不容易丟失存儲技術生產,并且能夠與MCS-51系列的單片機兼容。片內含有8位中央處理器和閃存,有較強的功能的AT89C51單片機能夠被應用到控制領域中,AT89C51單片機實物圖如圖
25、2.1所示:</p><p> 圖2.1 AT89C51實物圖</p><p> 單片機經過前幾代的發(fā)展,正朝著多功能、高性能、低電壓、低功耗、低價格、大存儲容量、強I/O功能及較好的結構兼容性方向發(fā)展。其發(fā)展趨勢不外乎以下幾個方面。</p><p> 2.1.1 多功能</p><p> 單片機中盡可能地把所需要的存儲器和I/O
26、口都集成在一塊芯片上,使得單片機可以實現更多的功能。比如A/D、PWM、PCA(可編程計數器陣列)、WDT(監(jiān)視定時器---看家狗)、高速I/O口及計數器的捕獲/比較邏輯等。</p><p> 有的單片機針對某一個應用領域,集成了相關的控制設備,以減少應用系統(tǒng)的芯片數量。例如,有的芯片以51內核為核心,集成了USB控制器、SMART CARD接口、MP3解碼器、CAN或者I*I*C總線控制器等,LED、LCD或
27、VFD顯示驅動器也開始集成在8位單片機中[1]。</p><p> 2.1.2 高效率和高性能</p><p> 為了提高執(zhí)行速度和執(zhí)行效率,單片機開始使用RISC、流水線和DSP的設計技術,使單片機的性能有了明顯的提高,表現為:單片機的時鐘頻率得到提高;同樣頻率的單片機運行效率也有了很大的提升;由于集成度的提高,單片機的尋址能力、片內ROM(FLASH)和RAM的容量都突破了以往的
28、數量和限制。</p><p> 由于系統(tǒng)資源和系統(tǒng)復雜程度的增加,開始使用高級語言(如C語言)來開發(fā)單片機的程序。使用高級語言可以降低開發(fā)難度,縮短開發(fā)周期,增強軟件的可讀性和可移植性,便于改進和擴充功能。</p><p> 2.1.3 低電壓和低功耗</p><p> 單片機的嵌入式應用決定了低電壓和低功耗的特性十分重要。由于CMOS等工藝的大量采用,很多
29、單片機可以在更低的電壓下工作(1.2V或0.9V),功耗已經降低到uA級。這些特性使得單片機系統(tǒng)可以在更小電源的支持下工作更長的時間。</p><p> 2.1.4 低價格</p><p> 單片機應用面廣,使用數量大,帶來的直接好處就是成本的降低。目前世界各大公司為了提高競爭力,在提高單片機性能的同時,十分注意降低其產品的價格。 </p><p> 2
30、.2 仿真軟件Proteus</p><p><b> 2.2.1 概述</b></p><p> Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機</p><p> 與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿
31、真軟件三合一的設計平臺,其處理器模型支持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,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。</p><p> 仿真處理器及其外圍電路</p><p> 可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合
34、顯示及輸出,能看到運行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發(fā)環(huán)境。</p><p> 2.2.3 Proteus的用途及其在本系統(tǒng)中的作用</p><p> 單片機在很多產品中得到廣泛的應用,無論是51 系列、AVR、還是PIC 系列,他們各有各的特點,學習者也是逐年增加,但是在學習開發(fā)過程中,我們往往在確定方案后做試驗的開支
35、往往比較大,尤其是對于一些學生或者初學者這就可能成為他們學習的障礙。我們使用Proteus 軟件進行模擬仿真,這樣大大節(jié)省了時間和開發(fā)費。尤其將此軟件用在單片機開發(fā)中是一個不錯的選擇。</p><p> 2.3 調試軟件Keil C51</p><p> Keil C51是德國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性
36、、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻[3]。</p><p> Keil C51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現高級語言的優(yōu)勢。</p><p> 在本設計中Keil C51主要是實現程序的編譯、與Proteus的聯合調試。</p><p> 2.
37、4 液晶顯示屏</p><p> 液晶顯示器具有功耗低, 壽命長的特點。是目前單片機應用的重要領域,無論機器,儀表,等都可以看到他的身影,然而,想要找一個適合于自己玩的液晶還真的比較困難,在這里我們選用了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í)行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準?!?/p>
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> 蜂鳴器是一種機電轉換裝置, 它可將交流或直流電能轉變成振動,該振動往往產生音域的嗡嗡聲,體化結構的電子訊響器[4],而我們采用的直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發(fā)聲器件。蜂鳴器的分類 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器的電路圖形符號 蜂鳴器在電路中用字
41、母“H”或“HA”(舊標準用“FM”、“LB”、“JD”等)表示。</p><p> 蜂鳴器也分為有源蜂鳴器和無源蜂鳴器,由于該程序自身的設計我們選擇使用有源蜂鳴器。下面是一個有源蜂鳴器實物圖如圖2.4所示: </p><p> 圖2.4 有源蜂鳴器</p><p> 2.7 DS12C887</p>
42、;<p> 在2000年時,“千年蟲”問題成為困擾當時世界的一大難題。當時采用兩位數表示年度的日歷系統(tǒng)將要用四位數來表示,因此有關的計算機操作系統(tǒng)和應用軟件都要作相應的修改。據此,美國Dallas公司推出兩款數字時鐘芯DS12887/DS12C887,兩款時鐘芯片都將在1999年12月31日23時59分59秒時順利地跳到2000年1月1日零時,并能實現2000年2月29日的閏年提示,是時鐘芯片DS1287的增強品種,結構
43、上相當于MC146818的改進型。芯片都采用24引腳雙列直插式封裝,其引腳接口邏輯和內部操作方式與MC146818基本一致,所不同的DS12887/DS12C887芯片的晶體振蕩、振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片的上方,組成一個加厚的集成電路模塊,因此,DS12C887時鐘片無需MC146818的電源電位檢測端(PS),電路通電時其充電電路便自動對可充電電池充電,充足一次電可供芯片時鐘運行半年之久,正常工作時可保證時鐘數
44、據十年內不會丟失。此外,片內通用的RAM為MC146818的兩倍以上[5]。 </p><p> DS12C887內部有專門的接口電路,從而使得外部電路的時序要求十分簡單,使它與各種微處理器的接口大大簡化。使用時無需外圍電路元件,只要選擇引腳MOT電平,即可和不同計算機總線連接。</p><p> DS12C887實物如圖2.5所示: </p><p> 圖
45、2.5 DS12C887實物</p><p><b> 2.8 鍵盤</b></p><p> 該設計用了三個鍵盤,實現了比較完善的功能,鍵盤中的一個可以調節(jié)到要調節(jié)的小時、分鐘和秒位置,另一個按鍵可以實現小時、分鐘和秒的累加,每按一次加一,以達到調節(jié)時間的功效,另外還可以對鬧鐘進行設置,當鬧鐘響時可以按任意鍵停止,使用很方便,鍵盤實物如圖2.6所示:<
46、/p><p> 圖2.6 鍵盤實物</p><p> 第三章 系統(tǒng)總體設計與分析</p><p> 3.1 系統(tǒng)整體設計</p><p> 我們可以采取的設計思路是:首先,整個系統(tǒng)應該圍繞單片機進行處理,單片機每一個不同端口都有一個不同的功能,我們先利用晶振,來控制時鐘周期,再通過單片機的復位功能設計一個復位功能鍵,最后通過LCD顯
47、示屏與單片各個端口連接來,在設計一個蜂鳴器通過單片機進行報時,最終通過加載程序來實現時間的顯示和報時功能,系統(tǒng)的總體結構框如圖3.1所示:</p><p> 圖3.1 系統(tǒng)的總體結構框圖</p><p> 3.2 鍵盤控制電路模塊</p><p> 該設計需要校對時間,所以用三個按鍵來實現。按S1鍵產生低電平啟動按鍵功能來調節(jié)要調節(jié)的時間,第一次按是秒的位
48、置,再按一次是分鐘,再按一次是時鐘位置,在調整好位置后,再按S2產生進位加時間,按S3鍵產生退位減時間,每按一次加一或減一,當用手按下一個鍵時,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也回會出現類似的情況。這就是抖動。抖動的持續(xù)時間隨鍵盤材料和操作員而異,很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以很容易地解決抖動問題,這就是通過延遲一定的時間來等待抖動消失,這之后,在讀入鍵盤碼
49、[6]。按鍵硬件連接如圖3.2所示:</p><p> 圖3.2 按鍵硬件連接</p><p> 3.3 時鐘周期設計模塊 </p><p> AT89C51片內設有一個由反向放大器所構成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入端和輸出端。時鐘可以由內部方式產生或外部方式產生。內部時鐘電路方式,在XTAL1和XTAL2引腳上外接定時元件,
50、內部振蕩電路就產生自激振蕩。定時元件經常采用石英晶體和電容組成的并聯諧振電路。晶體可以在1.2MHZ~12MHZ之間選擇,電容值在50PF~30PF之間選擇,電容的大小可以起頻率微調的作用。外部方式的時鐘電路,XTAL1接地,XTAL2接外部振蕩器。對外部震蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHZ的方波信號。此系統(tǒng)選用內部時鐘電路方式[7]。 </p><p> 電路圖如圖3.3所示:&l
51、t;/p><p> 圖3.3 時鐘振蕩電路</p><p> 3.4 復位電路設計模塊 </p><p> 在振蕩器運行時,單片機的復位電路原理是在RESET輸入端出現高電平來實現復位和初始化。在振蕩器運行的情況下,要實現復位操作,必須使RST引腳至少保持兩個機器周期(24個振蕩器周期)的高電平。CPU在第二個機器周期內執(zhí)行復位操作,以后每一個機器周期重
52、復一次,直至RST端電平變低。當RST引腳返回低電平以后,CPU從0地址開始執(zhí)行程序。</p><p> 在加電瞬間,RST端的電平與VCC相同,隨著RC電路充電電流的減小,RST端的電位逐漸下降。只要RST端保持兩個機器周期的高電平,單片機就能有效復位。本方案中電路系統(tǒng)采用的是上電與按鈕復位電路。當時鐘頻率選用12MHz時,C1取10μF,R9為1k,R10為10K。復位操作不會對內部RAM有所影響[8]。&
53、lt;/p><p> 單片機系統(tǒng)自動復位如圖3.4所示:</p><p> 圖3.4 單片機系統(tǒng)自動復位</p><p> 3.5 顯示器模塊</p><p> VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,我們選用的是1602字符型14條引腳線的LCD,其中D0—D7與單片機相連來實現數據的傳送,E與單
54、片機連是使能端,VSS一般接地為寫信號線,RW與VEE通過滑動變阻器相連來調節(jié)顯示屏的亮度,通過以上功能配合來完成顯示屏的顯示[9]。顯示屏如圖3.5所示:</p><p> 圖3.5 1062液晶顯示屏</p><p> 3.6 蜂鳴器模塊</p><p> 蜂鳴器模塊由蜂鳴器驅動電路和一個三極管組成。我們選擇了有源蜂鳴器,它具有體積小,耗電流小,使用時
55、間長,聲壓值達到理想效果等特點,同時選擇的是一只壓電式蜂鳴器,壓電式蜂鳴器工作時約需要驅動電流。通過電源給蜂鳴器提供高電平,再與利用三極管的產生的低電平協(xié)作一到設定時間,就產生一短脈沖,驅動蜂鳴器報警,蜂鳴器模塊如圖3.6所示:</p><p> 圖3.6 蜂鳴器模塊</p><p> 3.7 DS12C887鬧鐘模塊</p><p> DS12C887共
56、有3個鬧鐘單元,分別為時、分、秒鬧鐘單元。在其中寫入鬧鐘時間值并且在時鐘中斷允許的情況下每天到時就會產生中斷申請信號。這種方式可以每天通過設置隨時提供中斷信號,從而在你需要的任意時刻(可以定確到秒以內)提供鬧鐘服務,這種方式能在整點、整分或整秒產生一次中斷。假如控制系統(tǒng)要求的定時間隔不是整數時,則可以很方便的通過軟件來調整實現。</p><p> MOT(模式選擇):MOT管腳為兩種總線類型的選擇提供了方便,當
57、聯接到VCC時,選擇MOTORLA時序.當聯接到GND時,選擇INTEL時序,此管腳有一約20K內部下拉電阻。</p><p> SQW(方波信號輸出):SQW管腳能從實時時鐘的內15級分頻提供的13個抽頭中選擇輸出信號。SQW管腳的頻率可通過對寄存器A編程來改變。</p><p> AD0一AD7(雙向地址/資料復用總線):復用總線減少管腳。因為地址信息與資料信息分時共享相同的信號通
58、路。</p><p> AS(地址選通輸入):地址選通脈沖用于實現總線信號分離,AS/ALE的下降沿使得地址鎖入DSl2C887。</p><p> CS(片選輸入):在訪問DSl2C887的總線周期片選信號必須保持為低,在MOTOROLA時序的DS和AS期間或INTEL時序RD和WR期間,CS須保持有效狀態(tài)。</p><p> RESET(復位輸入):RES
59、ET管腳對時鐘、日歷或RAM無效.上電時RESET可保持一段時問低電平以允許電源穩(wěn)定.RESET保持低電平的時間取決于實際應用[10]。</p><p> 下面是DS12C887鬧鐘模塊如圖3.7所示:</p><p> 圖3.7 DS12C887鬧鐘模塊</p><p><b> 3.8 電阻模塊</b></p>&l
60、t;p> 電阻雖說不能和單片機像其他硬件一樣起到主要作用,但在本次設計中卻是必不可少的一部分,我們這次一次用了8個的10k大小相同的電阻,為了防止電流過大而起到電流限流的作用來保護液晶顯示屏不受損害。</p><p> 電阻模塊如圖3.8。</p><p> 圖3.8 電阻模塊</p><p> 3.9 硬件的總體設計</p><
61、;p> 根據硬件系統(tǒng)的各個模塊的設計,我們最終可以完成了整個系統(tǒng)硬件的總體設計。</p><p> 硬件的總體設計如圖3.9所示:</p><p> 圖3.9 硬件的總體設計</p><p> 3.10 系統(tǒng)的軟件設計</p><p> 單片機的程序設計有其自身的特點。在單片機系統(tǒng)中,硬件與軟件緊密結合,由于硬件電路的設計
62、不具有通用性,所以必須根據具體的硬件電路來設計對應的軟件,硬件設計的優(yōu)劣直接影響到軟件設計的難易,軟件設計的優(yōu)劣又直接影響到硬件的發(fā)揮。在很多時候,軟件可以替代硬件的功能,當然,需要付出額外占用CPU時間的代價。</p><p> 軟件程序的設計是根據硬件電路圖的連接和各個元器件的功能進行設計。在編寫軟件時,可以按各個程序的功能將軟件細分為各個功能模塊,再通過主程序的調用來實現整個軟件系統(tǒng)。而一般編寫的程序都是
63、根據事前所用的流程圖來編寫的,而且,流程圖中也包含了對設計所得結果的要求,因此,流程圖的設計直接影響到源程序的設計。</p><p> 3.10.1 主程序模塊圖</p><p> 該程序主要是對單片機兩種功能的實現,其一是時間功能,時鐘可以通過按鍵隨意更改到當前的時間,在不做調整時,時間是正常走動,其二鬧鐘控制,可以隨時隨地調整你所需要的鬧鐘。該系統(tǒng)包括:AT89C51最小系統(tǒng)、L
64、CD顯示電路及DS12C887、按鍵控制及蜂鳴器。其主要模塊由五個部分組成。具體關系如下圖3.10所示:</p><p> 圖3.10 主流程</p><p> 3.10.2 時間調整與顯示流程圖</p><p> 該部分主要是程序開始并初始化函數后LCD正常顯示,執(zhí)行while循環(huán)并進行時間運算,并掃描鍵盤,當鍵盤無響應時,執(zhí)行原函數,繼續(xù)LCD正常顯示
65、,當發(fā)現鍵盤有響應時,則進入時間調整程序,并進行調整,調整后執(zhí)行調整響應函數,并在LCD進行相應顯示。</p><p> 這個過程如圖3.11所示:</p><p> 圖3.11 時間調整與顯示流程</p><p> 3.10.3 鬧鐘定時流程圖</p><p> 該部分主要是程序開始并初始化后,進行執(zhí)行while循環(huán)從而執(zhí)行時間
66、運算,并檢查DS12C887是否有中斷申請信號時,假如沒有到時則繼續(xù)執(zhí)行時間運算,假如到時則蜂鳴器響,這時可以按任意鍵停止蜂鳴器響,假如沒有按任意鍵則一直響,從而實現鬧鐘的功能。</p><p> 這個過程如圖3.12所示:</p><p> 圖3.12 鬧鐘定時流程</p><p><b> 第四章 系統(tǒng)調試</b></p&g
67、t;<p> 系統(tǒng)調試分為硬件調試、軟件調試和軟硬件聯調。電路按模塊調試,各模塊逐個調試通過后再聯調。</p><p><b> 4.1 軟件調試</b></p><p> Keil C51主要是實現程序的編譯[11],在這部分我們就采用了Keil C51來進行實現,由于系統(tǒng)的軟件系統(tǒng)很大,全部用C語言來編寫,所以軟件調試比較復雜,我們事先把各個
68、模塊分成部分一一進行調試,發(fā)現每個模塊都有不同的錯誤,經過不斷的改進終于使每個模塊基本上都沒有大的問題,然后再把各個模塊一一連接到一起成一個整體, 在經過不斷的調試修改終于可以使整個程序的問題得到最終的解決。以下是調試時出現的問題中的一部分。程序錯誤如圖4.1所示:</p><p> 圖4.1 程序引腳編寫錯誤</p><p> 經過檢查發(fā)現原來是端口重復造成的,經過修改解決了問題。
69、</p><p> 調整后的如圖4.2。</p><p> 圖4.2 程序引腳改正后正確</p><p><b> 4.2 硬件部分</b></p><p> 在硬件部分我們主要采用了Proteus進行電路分析與實物仿真,首先我們我們把各個模塊所需要的各部分硬件一次找到并按合理的位置把它們放好,然后把各個電路
70、線進行了連接,但是發(fā)現不能仿真,最后檢查發(fā)現有些電路線的位置沒有連接正確。</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 軟硬聯調 </p><p> 該系統(tǒng)的軟件和硬件之間的聯系不是十分緊密,一般是軟件計算完畢之后,將程序下載到單片機,從而進行顯示。因此在軟硬件都基本調通的情況下系統(tǒng)的軟硬件聯調難度不是很大。</p><p> 完全成功的仿真圖如圖4.5所示:</p><p> 圖4.5 完整
72、成功圖</p><p> 并驚進行了調試一切正常如圖4.6所示:</p><p> 圖4.6 調試后一切正常</p><p><b> 總結</b></p><p> 經過將近這些天的單片機畢業(yè)設計,終于完成了我的數字鐘的設計,看著調試結果,真的很高興,至少這次設計把我自己所想的都做了出來,但是高興之余不得不深
73、思呀!在本次設計的過程中,我發(fā)現很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多,我覺得寫好一個程序并不是一件簡單的事,有好多的東西,只有我們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。 </p><p> 這次的畢業(yè)設計中,我真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能
74、提高,這就是我在這次畢業(yè)設計中的最大收獲。</p><p><b> 參考文獻</b></p><p> [1]黃慶進,高榮威.單片機原理與應用課程設計[D]. 廣東:廣東科技職業(yè)技術學院,2010.</p><p> [2]張杰.基于Proteus 軟件的單片機數字時鐘系統(tǒng)開發(fā)[D]. 天津:天津輕工職業(yè)技術學院,2010.</p
75、><p> [3]劉同法,陳忠平,睦仁武.單片機基礎與最小系統(tǒng)實踐[M].北京:北京航空航天大學出版社, </p><p> 2009.12~23.</p><p> [4]于治會.調試儀表用蜂鳴器振動規(guī)范問題[J].電子工業(yè)專用設備,2002,31(1):54~55</p><p> [5]彭希南.跨越2000年的時鐘芯片DS1288
76、7/DS12C887[J].電子技術,1999,08(2):34.</p><p> [6]張?zhí)旆?51單片機C語言開發(fā)詳解[M].北京:電子工業(yè)出版社,2008.179~182.</p><p> [7]蔡美琴,張為民,何金兒,等.MCS-51系列單片機系統(tǒng)及其應用[M]第二版.北京:高等教育出</p><p> 版社,2004.12~13.</p&g
77、t;<p> [8]樓然苗,李光飛.單片機課程設計指導[M].北京:北京航空航天大學出版社,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].北京:北京航空航天大學出版社,</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寫入數據</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、鬧鐘設置初始化</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) //功能鍵按下一次,光標在秒處閃爍</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)//功能鍵按下二次,光標在分處閃爍</p><p><b> {</b></p><p> write_com(0x80+0x40+7);</p><p><b> }</b></p><p> if(
99、s1num==3)//功能鍵按下三次,光標在時處閃爍</p><p><b> {</b></p><p> write_com(0x80+0x40+4);</p><p><b> }</b></p><p> if(s1num==4)//功能鍵按下四次,光標不閃爍,時鐘繼續(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)//功能鍵按下一次,光標在秒處閃爍,等待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)//功能鍵按下二次,光標在分處閃爍,等待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)//功能鍵按下三次,光標在時處閃爍,等待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)//功能鍵按下一次,光標在秒處閃爍,等待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)//功能鍵按下二次,光標在分處閃爍,等待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)//功能鍵按下三次,光標在時處閃爍,等待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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-基于at89c51單片機數字鐘【精校排版】
- 畢業(yè)論文-基于單片機的數字電子鐘【精校排版】
- 畢業(yè)論文--基于單片機的數字鐘設計
- 畢業(yè)論文-基于單片機的數字秒表設計【精校排版】
- 畢業(yè)論文-基于veriloghdl的數字鐘系統(tǒng)設計【精校排版】
- 畢業(yè)論文-基于單片機倒車系統(tǒng)設計【精校排版】
- 單片機多功能數字鐘畢業(yè)論文
- 單片機畢業(yè)論文----多功能數字鐘
- 畢業(yè)論文-基于單片機的數字溫度計的設計【精校排版】
- 單片機數字鐘畢業(yè)設計---單片機設計數字鐘
- 畢業(yè)論文-基于單片機的電子門鈴設計【精校排版】
- 基于單片機的數字鐘的設計與制作-畢業(yè)論文
- 畢業(yè)論文-基于單片機的多點數字測溫系統(tǒng)(設計)【精校排版】
- 畢業(yè)論文范文——基于單片機的數字鐘設計 (2)
- 基于單片機的液晶顯示數字鐘設計【畢業(yè)論文】
- 畢業(yè)論文范文——基于單片機的數字鐘設計 (2)
- 畢業(yè)論文-基于單片機數據采集系統(tǒng)設計【精校排版】
- 基于單片機的數字鐘設計
- 畢業(yè)論文-基于單片機的密碼鎖設計【精校排版】
- 畢業(yè)論文-基于單片機的音樂流水燈設計【精校排版】
評論
0/150
提交評論