畢業(yè)設(shè)計--- 數(shù)碼管電子顯示屏_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  摘 要:本設(shè)計采用的是AT89S52單片機,該單片機采用的MCU51內(nèi)核,因此具有很好的兼容性,內(nèi)部帶有8KB的ROM,能夠存儲大量的程序,最突出特點是具有ISP在系統(tǒng)燒寫功能,使得燒寫程序更加方便。</p><p>  計時芯片采用DALLAS公司的涓細充電時鐘芯片DS1302,該芯片通過簡單的串行通信與單片機進行通信,時鐘/日歷電路能夠?qū)崟r提供年、月、日、時、分、秒、星期信息,采用雙電

2、源供電,當(dāng)外部電源掉電時能夠利用后備電池準確計時。</p><p>  溫度檢測采用DALLAS公司的數(shù)字化溫度傳感器DS18B20,該芯片采用的是獨特的“一線總線”的方式與單片機進行通信,一線總線獨特而且經(jīng)濟的特點,是用戶可以輕松的組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新的概念。實時溫度采用一線總線的方式傳輸大大的提高了信號的抗干擾性,分辨率可通過軟件設(shè)置,其小巧的體積為各種環(huán)境下測量溫度提供了方便。</

3、p><p>  綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,更符合我們實際生活的需要,對我們大學(xué)生來說也更加有用,具有廣闊的市場前景。</p><p>  關(guān)鍵詞:時鐘電鐘;DS1302;動態(tài)掃描;單片機</p><p>  Abstract:This design USES the AT89S52 SCM

4、 is adopted, the SCM MCU51 kernel, therefore has the very good compatibility with 8KB ROM, internal, able to store huge amounts of program, the most outstanding characteristic is to have the ISP in system burning functio

5、n, causes burning program is more convenient. </p><p>  Timer chip adopt the DALLAS company Juan fine charging clock chip DS1302, this chip through simple serial communication to communicate with MCU, clock/

6、calendar circuit can real-time provide year, month, day, time, seconds, week information, adopt double power supply, when external power off when power will be able to use back-up battery accurate timing.</p><

7、p>  Temperature detection using DALLAS company's digital temperature sensor DS18B20, this chip USES is unique "1-wire bus" way to communicate with MCU, 1-wire bus unique and economic characteristic, is t

8、he user can easily established sensor network for measuring system, the construction of the concept of introducing new. Real-time temperature using 1-wire bus way transmission greatly improve the anti-interference signal

9、 by software Settings, resolution, its small volume for various circumstances mea</p><p>  To sum up the calendar has read convenient, direct display, functional diversity, simple circuit, low cost, and many

10、 other advantages, conform to the trend of the development of electronic instruments, more accord with the need of our actual life, to our university students are more useful, a broad market prospect. </p><p&g

11、t;  Keywords :clock actuated; DS1302; Dynamic scanning; microcontroller </p><p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 課題開發(fā)的背景及意義1</p><

12、;p>  第二章 設(shè)計要求與方案論證3</p><p>  2.1 設(shè)計要求:3</p><p>  2.2 系統(tǒng)基本方案選擇和論證3</p><p>  2.2.1單片機芯片的選擇方案和論證:3</p><p>  2.2.2 顯示模塊選擇方案和論證:3</p><p>  2.2.3時鐘芯片的選擇

13、方案和論證:4</p><p>  2.2.4溫度傳感器的選擇方案與論證:4</p><p>  2.3 電路設(shè)計最終方案決定5</p><p>  第三章 系統(tǒng)的硬件設(shè)計與實現(xiàn)6</p><p>  3.1 電路設(shè)計框圖6</p><p>  3.2 系統(tǒng)硬件概述6</p><p&g

14、t;  3.3 主要單元電路的設(shè)計6</p><p>  3.3.1單片機主控制模塊的設(shè)計6</p><p>  3.3.2時鐘電路模塊的設(shè)計8</p><p>  3.3.3溫度采集模塊設(shè)計9</p><p>  3.3.4 電路原理及說明9</p><p>  3.3.5顯示模塊的設(shè)計12</p&

15、gt;<p>  第四章 系統(tǒng)的軟件設(shè)計13</p><p>  4.1程序流程框圖13</p><p>  4.2 子程序的設(shè)計15</p><p>  4.2.1 DS18B20溫度子程序15</p><p>  4.2.2 讀、寫DS1302子程序16</p><p>  第五章 系統(tǒng)的硬

16、件設(shè)計18</p><p>  5.1系統(tǒng)硬件電路設(shè)計18</p><p>  5.2系統(tǒng)硬件仿真運行情況圖19</p><p>  5.2.1 顯示日期、時間、實時溫度19</p><p>  第六章 測試分析20</p><p>  6.1軟件測試20</p><p>  6.

17、2測試結(jié)論20</p><p><b>  結(jié)論21</b></p><p><b>  致謝詞22</b></p><p><b>  參考文獻:23</b></p><p>  附錄一:系統(tǒng)程序清單24</p><p>  附錄二:系統(tǒng)電路

18、圖36</p><p><b>  第一章 緒論</b></p><p>  1.1 課題開發(fā)的背景及意義</p><p>  20世紀末,電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。時間對人們

19、來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時間。忘記了要做的事情,當(dāng)事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。</p><p>  近年來隨著計算機在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應(yīng)用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器

20、,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領(lǐng)域,單片機往往是作為一個核心部件來使用,再根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象的特點與軟件結(jié)合,以作完善。</p><p>  單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。單片機具有體積小、重量輕、抗干擾能力強、環(huán)境要求不高、價格低廉、可靠性高、靈活性好、開發(fā)較為容易。目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難

21、找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,錄象機、攝象機,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器人、智能儀表、醫(yī)療器械了。因此,單片機的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機應(yīng)用與智能化控制的科學(xué)家、工程師。電子鐘是一種利用數(shù)字電路來顯示年、月、日、秒、分、時、星期的計時裝置,與傳統(tǒng)的機械鐘相

22、比,它具有走時準確、顯示直觀、無機械傳動裝置等優(yōu)點,因而得到廣泛應(yīng)用。隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到數(shù)字電子鐘。在城市的主要營業(yè)場所、車站、碼頭等公共場所使用數(shù)字電子鐘已經(jīng)成為一種時尚。但目前市場上各式各樣的數(shù)字電子鐘大多數(shù)用全硬件電路實現(xiàn),電路結(jié)構(gòu)復(fù)雜,功率損耗大等缺點。因此有必要對數(shù)字電子鐘進</p><p>  單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方

23、法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。</p><p>  數(shù)字電子鐘一個無處不在的電子產(chǎn)品,經(jīng)過多年的發(fā)展技術(shù)已經(jīng)相當(dāng)成熟了。目前應(yīng)用廣泛的數(shù)字鐘大多用AT89S52單片機為核心控制部件制作的,可以實現(xiàn)對年、月、日、時、分、秒的數(shù)字顯示,通過擴展還可實現(xiàn)對電子鐘所在地點的溫度顯示等,廣泛用于車

24、站、醫(yī)院、機場、廁所等公共場所的時間顯示。與機械鐘表和3V電源半機械鐘相比,數(shù)字電子鐘具有時間精確、停電不用校準、減少汞電池的使用等優(yōu)點?,F(xiàn)代社會,守時已不僅關(guān)系到一個人的職業(yè)生涯,還成了衡量一個人道德的標準。手表為人解決了在沒有時鐘情況下的時間概念,然而,手表對于忙碌的生活顯然已不太適應(yīng),設(shè)計一款電子數(shù)字手表勢在必行。本課題將通過對目前市場上的數(shù)字電子鐘的研究,制作一個以AT89S52單片機為核心控制部件的數(shù)字式電子顯示屏,該屏具有顯

25、示年、月、日、時、分、秒,星期,智能實時溫度等功能。因此,研究電子萬年歷及擴大其應(yīng)用,有著非常現(xiàn)實的意義。</p><p>  第二章 設(shè)計要求與方案論證</p><p><b>  2.1 設(shè)計要求:</b></p><p>  具有年、月、日、星期、時、分、秒等顯示功能;</p><p>  具有當(dāng)前環(huán)境溫度檢測顯

26、示功能 </p><p>  具備年、月、日、星期、時、分、秒校準調(diào)時功能;</p><p>  2.2 系統(tǒng)基本方案選擇和論證</p><p>  2.2.1單片機芯片的選擇方案和論證:</p><p><b>  方案一: </b></p><p>  采用AT89C51芯片作為硬件核心,采用

27、Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,但是運用于電路設(shè)計中時由于不具備ISP在線編程技術(shù), 當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。</p><p><b>  方案二:</b></p><p>  采用AT89S52,

28、片內(nèi)ROM全都采用Flash ROM;能以3V的超底壓工作;同時也與MCS-51系列單片機完全該芯片內(nèi)部存儲器為8KB ROM 存儲空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會對芯片造成損壞。</p><p>  所以選擇采用AT89S52作為主控制系統(tǒng)。</p><p>

29、  2.2.2 顯示模塊選擇方案和論證:</p><p><b>  方案一:</b></p><p>  采用LCD液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字,圖形,顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設(shè)計中不采用LCD液晶顯示屏。</p><p><b>  方案二:</b></p

30、><p>  采用8×8點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。</p><p><b>  方案三:</b></p><p>  采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機連

31、接時,占用的單片機口線少。</p><p>  所以采用了LED數(shù)碼管作為顯示。</p><p>  2.2.3時鐘芯片的選擇方案和論證:</p><p><b>  方案一:</b></p><p>  直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)

32、約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。</p><p><b>  方案二:</b></p><p>  采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的RAM作為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時耗電小于300nA。</p&

33、gt;<p>  所以選擇DS1302作為時鐘芯片用于計時。</p><p>  2.2.4溫度傳感器的選擇方案與論證:</p><p><b>  方案一:</b></p><p>  使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行A/D

34、轉(zhuǎn)換。此設(shè)計方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產(chǎn)生較大的測量誤差。</p><p><b>  方案二:</b></p><p>  采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以去除A/D模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有

35、測量精度高、測量范圍廣等優(yōu)點。</p><p>  所以采用數(shù)字式溫度傳感器DS18B20來檢測環(huán)境溫度。</p><p>  2.3 電路設(shè)計最終方案決定</p><p>  綜上各方案所述,對此次作品的方案選定: 采用AT89S52作為主控制系統(tǒng); DS1302提供時鐘;數(shù)字式溫度傳感器DS18B20檢測;LED數(shù)碼管動態(tài)掃描作為顯示。</p>&

36、lt;p>  第三章 系統(tǒng)的硬件設(shè)計與實現(xiàn)</p><p>  3.1 電路設(shè)計框圖</p><p>  3.2 系統(tǒng)硬件概述</p><p>  本電路是由AT89S52單片機為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;時鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有

37、閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31*8的用于臨時性存放數(shù)據(jù)的RAM寄存器??僧a(chǎn)生年、月、日、周、時、分、秒,具有使用壽命長,精度高和低功耗等特點,同時具有掉電自動保存功能;溫度的采集由DS18B20構(gòu)成;顯示部份由1個7SEG-MPX4-CC、6個7SEG-MPX2-CC和一個7SEG-MPX1-CC數(shù)碼管、74

38、HC373鎖存構(gòu)成。使用動態(tài)掃描顯示方式對數(shù)字的顯示。</p><p>  3.3 主要單元電路的設(shè)計</p><p>  3.3.1單片機主控制模塊的設(shè)計</p><p>  AT89S52單片機為40引腳雙列直插芯片,有四個I/O口P0,P1,P2,P3, MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨立地作輸出或輸入。

39、</p><p>  單片機的主控系統(tǒng)如下圖所示,18引腳和19引腳接時鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端. 如圖-1 所示</p><p>  圖-1 主控制系統(tǒng) </

40、p><p>  3.3.2時鐘電路模塊的設(shè)計</p><p>  圖-2示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2>Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2< Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KH

41、z晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc≥2.5V之前,RST必須保持低電平。中有在SCLK 為

42、低電平時,才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p>  圖-2 DS1302的引腳圖</p><p>  3.3.3溫度采集模塊設(shè)計</p><p>  如圖-3所示。采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測量精度高,電路連接簡單特點,此類傳感器僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,使用P3.7與

43、DS18B20的I/O口連接加一個上拉電阻,Vcc接電源,Vss(GND)接地。</p><p>  圖-3 DS18B20溫度采集</p><p>  3.3.4 電路原理及說明</p><p>  (1) 時鐘芯片DS1302的工作原理:</p><p>  DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把

44、RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖4所示。表-1為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表-2為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標志

45、位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運行?!癢P”</p><p>  是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時,寫保護位防止對任一寄存器的寫操作。</p><p>  (2) DS1302的控制字節(jié)</p><p>  DS1302的控制字如表-1所示??刂谱止?jié)的高有效位(位7)

46、必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出</p><p>  表-1 DS1302的控制字格式</p><p>  (3) 數(shù)據(jù)輸入輸出(I/O)</p><p>  

47、在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖-4所示</p><p>  圖-4 DS1302讀/寫時序圖</p><p>  (4) DS1302的寄存器</p><p>  DS1302有

48、12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表-2。</p><p>  表-2 DS1302的日歷、時間寄存器 </p><p>  此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存

49、器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 </p><p>  3.3.5顯示模塊的設(shè)計</p><p>  如圖-5所示,采用動態(tài)掃描顯示,由1個7SEG-MPX4-CC、6

50、個7SEG-MPX2-CC和一個7SEG-MPX1-CC數(shù)碼管、74HC373鎖存構(gòu)成接2K限流電阻,再接9013三極管接到共陰數(shù)碼管的COM端作為選通位碼,每位選擇相應(yīng)的列。另一個74HC373接4.7K限流電阻,再接并行的LED數(shù)碼管的斷碼。</p><p>  圖-5 LED動態(tài)掃描顯示</p><p>  第四章 系統(tǒng)的軟件設(shè)計</p><p>  軟件設(shè)計

51、是本設(shè)計的關(guān)鍵,軟件程序編寫的好壞直接影響著系統(tǒng)運行情況的良好。因本程序涉及的模塊較多,所以程序編寫也采用模塊化設(shè)計,C語言具有編寫靈活、移植方便、便于模塊化設(shè)計的特點,所以本系統(tǒng)的軟件采用C51編寫。</p><p><b>  4.1程序流程框圖</b></p><p>  圖-A 主程序流程圖</p><p>  圖-B 時間調(diào)整程序流程

52、圖</p><p>  4.2 子程序的設(shè)計</p><p>  4.2.1 DS18B20溫度子程序</p><p>  Init_DS18B20(void)</p><p><b>  {</b></p><p>  DQ = 1; </p><p>  dela

53、y(1); </p><p>  DQ = 0; </p><p>  delay(60); </p><p>  DQ = 1; </p><p>  delay(15);</p><p><b>  }</b></p><p><b>  //讀

54、一個字節(jié)</b></p><p>  ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>

55、0;i--)</p><p><b>  {</b></p><p><b>  DQ = 0; </b></p><p><b>  dat>>=1;</b></p><p><b>  DQ = 1; </b></p><

56、;p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay(10);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b>

57、</p><p><b>  //寫一個字節(jié)</b></p><p>  WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  for (i=8;

58、i>0; i--)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p>  delay(10);</p><p><b>  DQ = 1;<

59、;/b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //讀取溫度</b></p><p>  

60、ReadTemperature(void)</p><p><b>  {</b></p><p>  unsigned char a=0;</p><p>  unsigned char b=0;</p><p>  unsigned int t=0;</p><p>  float tt=0;

61、</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); </p><p>  WriteOneChar(0x44); </p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); </p><

62、;p>  WriteOneChar(0xBE);</p><p>  a=ReadOneChar();</p><p>  b=ReadOneChar();</p><p><b>  t=b;</b></p><p><b>  t<<=8;</b></p><

63、;p><b>  t=t|a;</b></p><p>  tt=t*0.0625; </p><p>  t= tt*10+0.5; </p><p>  return(t);</p><p><b>  }</b></p><p>  4.2

64、.2 讀、寫DS1302子程序</p><p>  unsigned int temp;</p><p>  //1302寫入一字節(jié)</p><p>  void write_byte(uchar dat)</p><p><b>  {</b></p><p><b>  uchar

65、a;</b></p><p><b>  ACC=dat;</b></p><p>  for(a=8;a>0;a--)</p><p><b>  {</b></p><p><b>  IO=ACC0;</b></p><p>&l

66、t;b>  SCLK=0;</b></p><p>  //delayus(10);</p><p><b>  SCLK=1;</b></p><p>  ACC=ACC>>1;</p><p><b>  }</b></p><p><

67、b>  }</b></p><p>  //向1302讀出一字節(jié)</p><p>  uchar read_byte()</p><p><b>  {</b></p><p><b>  uchar a;</b></p><p>  for(a=8;a&g

68、t;0;a--)</p><p><b>  {</b></p><p><b>  ACC7=IO;</b></p><p><b>  SCLK=1;</b></p><p><b>  SCLK=0;</b></p><p>

69、  ACC=ACC>>1;</p><p><b>  }</b></p><p>  return(ACC);</p><p><b>  }</b></p><p>  //向1302寫入數(shù)據(jù)</p><p>  void Write1302(uchar ad

70、d,uchar dat)</p><p><b>  {</b></p><p><b>  RST=0;</b></p><p><b>  SCLK=0;</b></p><p>  //delayus(5);</p><p><b>  

71、RST=1;</b></p><p>  write_byte(add);</p><p>  //write_byte((dat)/10*16+(dat)%10);</p><p>  write_byte((dat/10<<4)|(dat%10));</p><p>  //delayus(5);</p>

72、;<p><b>  SCLK=1;</b></p><p><b>  RST=0;</b></p><p><b>  }</b></p><p>  //向1302讀出數(shù)據(jù)</p><p>  uchar Read1302(uchar add)</p&

73、gt;<p><b>  {</b></p><p>  uchar temp,d,d1,d2;</p><p><b>  RST=0;</b></p><p><b>  SCLK=0;</b></p><p>  //delayus(5);</p>

74、;<p><b>  RST=1;</b></p><p>  write_byte(add);</p><p>  temp=read_byte();</p><p>  //delayus(5);</p><p><b>  SCLK=1;</b></p><p

75、><b>  RST=0;</b></p><p><b>  /*</b></p><p>  Decimal=temp>>4;</p><p>  Decimal=Decimal*10+(temp&=0x0F);</p><p><b>  */</b&

76、gt;</p><p>  d1=temp/16;</p><p>  d2=temp%16;</p><p>  d=d1*10+d2;</p><p>  return (d);</p><p><b>  }</b></p><p>  //初始化DS1302<

77、/p><p>  void Initial_DS1302(void) </p><p><b>  { </b></p><p>  Write1302(WRITE_PROTECT,0X80); </p><p>  Write1302(WRITE_SEC,0x56); //秒位初始化&

78、lt;/p><p>  Write1302(WRITE_MIN,0x34); //分鐘初始化</p><p>  Write1302(WRITE_HOUR,0x12); //小時初始化</p><p>  Write1302(WRITE_PROTECT,0x00); </p><p><

79、;b>  }</b></p><p>  第五章 系統(tǒng)的硬件設(shè)計</p><p>  5.1系統(tǒng)硬件電路設(shè)計</p><p>  5.2系統(tǒng)硬件仿真運行情況圖</p><p>  5.2.1 顯示日期、時間、實時溫度</p><p><b>  第六章 測試分析</b><

80、/p><p><b>  6.1軟件測試</b></p><p>  電子萬年歷是多功能的數(shù)字型時鐘,可以看當(dāng)前日期、時間,還有溫度的儀器。電子萬年歷功能很多,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:</p><p>

81、;  1.燒入程序后,LED數(shù)碼管顯示閃動,而且亮度不均勻。</p><p>  解決:首先對調(diào)用的延時進行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時,如果不在返回時屏蔽掉最后的附值,則會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。</p><p>  2.燒入溫度的程序后,進行修改

82、時間、日期時相應(yīng)的數(shù)碼管位沒有按要求閃動。</p><p>  解決:由于DS18B20是串行通信數(shù)據(jù),只用一個口線傳輸,在處理采集的模擬信號時需要一定的時間,當(dāng)把萬年歷的程序相接入時,會對延時有很大的影響。所以在調(diào)用溫度子程序時,先關(guān)閉定時器1中斷允許,在溫度子程序返回時再打開定時器1中斷允許。最終解決了此問題。</p><p><b>  6.2測試結(jié)論</b>&

83、lt;/p><p>  經(jīng)過多次的反復(fù)測試仿真與分析,可以對電路的原理及功能更加熟悉,同時提高了設(shè)計能力與及對電路的分析能力.同時在軟件的編程方面得到更到的提高,對編程能力得到加強.同時對所學(xué)的知識得到很大的提高與鞏固.</p><p><b>  結(jié)論</b></p><p>  通過本次畢業(yè)設(shè)計我不僅加深了對單片機理論的理解,將理論很好地應(yīng)用到

84、實際當(dāng)中去,而且我還學(xué)會了如何去培養(yǎng)創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進行改進,使之功能不斷完善,成為真己的東西。</p><p>  在課題選擇和設(shè)計電路的過程中,加強了我思考問題的完整性和實際生活聯(lián)系的可行性。在方案設(shè)計選擇和芯片的選擇上,培養(yǎng)了我們綜合應(yīng)用單片機的能力,對單片機的各個管腳的功能也有了進一步的認識。還鍛煉我們個人的查閱技術(shù)資料的能力,動手能力,發(fā)現(xiàn)問題,解決問題的

85、能力。并且我們熟練掌握了有關(guān)器件的性能及測試方法。</p><p>  在整個設(shè)計過程中,分期分時工作,充分發(fā)揮我的主觀能動性,自主學(xué)習(xí),學(xué)到了許多課本上沒有學(xué)到的知識。較好的完成了作品。達到了預(yù)期的目的,在最初的設(shè)計中,發(fā)揮“三個臭皮匠,頂個諸葛亮”的作用。相互學(xué)習(xí)、相互討論、研究。完了最初的設(shè)想。對電路的設(shè)計、布局要先有一個好的構(gòu)思,才顯得電路版圖美觀、大方。程序編寫中,由于思路不清晰,開始時遇到了很多的問題

86、,經(jīng)過靜下心來思考,和同學(xué)的討論,通過老師的指導(dǎo),理清了思路。在此次設(shè)計中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都要有耐心。此次設(shè)計中學(xué)到了很多很多東西,這是最重要的??傊@是一次對我們?nèi)陙硭鶎W(xué)專業(yè)的全方面考核,對我們以后進入社會融入社會有很大幫助。</p><p><b>  致謝詞</b></p><p>  

87、從論文選題到搜集資料,從提綱的完成到正文的反復(fù)修改,我經(jīng)歷了喜悅、聒噪、痛苦和彷徨,在寫作論文的過程中,心情是如此復(fù)雜。如今,伴隨著這篇畢業(yè)論文的最終成稿,復(fù)雜的心情煙消云散,自己甚至還有一點成就感。 感謝學(xué)校系部給我們提供了一個展現(xiàn)自己的舞臺,給我們一次難得煅煉的機會,使得我們的動手能力和專業(yè)技能都有了很大的提高。</p><p>  在做畢業(yè)設(shè)計的日子里得到了xx老師的悉心指導(dǎo),在此向我的指導(dǎo)教師致以

88、誠摯的謝意。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵使我對這次的設(shè)計完成有了信心和動力,也給了我很多無私的幫助和支持,我在此深表謝意。</p><p>  我還要感謝大學(xué)中給我們授課的所有老師們,是他們讓我學(xué)到了很多很多知識,讓我看到了世界的精彩,讓我學(xué)會了做人做事。 最后感謝陪伴我的同學(xué)、朋友們,有了你們我的人生才豐富,有了你們我在奮斗的路上才不孤獨,謝謝你們。</p><

89、p><b>  參考文獻:</b></p><p>  [1]周立功單片機開發(fā)網(wǎng)</p><p>  [2]ATMEL公司AT89S52單片機中文PDF資料</p><p>  [3]維納電子DS18B20溫度傳感器中文PDF資料</p><p>  [4]古玉年 編 單片機實驗指導(dǎo)書 蘇州市職業(yè)大學(xué) 200

90、6 </p><p>  [5]楊子文 編 單片機原理及應(yīng)用 西安電子科技大學(xué)出版社 2006</p><p>  [6]陳正振 編 電子電路設(shè)計與制作 廣西交通職業(yè)技術(shù)學(xué)院信息工程系 2007</p><p>  [7]劉娟 編 單片機C語言與Protues仿真技能實訓(xùn) 中國電力出版社 2010</p><p>  [8]廣州

91、周立功單片機發(fā)展有限公司DS1302涓流式時鐘芯片原理及應(yīng)用中文PDF資料</p><p>  [9]周潤景 編 基于PROTEUS的51單片機設(shè)計與仿真 北京航空航天大學(xué)出版社 2010</p><p>  附錄一:系統(tǒng)程序清單</p><p>  1.頭文件(相關(guān)定義)</p><p>  sfr P0 = 0x80;</p&

92、gt;<p>  sfr P1 = 0x90;</p><p>  sfr P2 = 0xA0;</p><p>  sfr P3 = 0xB0;</p><p>  sfr PSW = 0xD0;</p><p>  sfr ACC = 0xE0;</p><p>  sfr B

93、= 0xF0;</p><p>  sfr SP = 0x81;</p><p>  sfr DPL = 0x82;</p><p>  sfr DPH = 0x83;</p><p>  sfr PCON = 0x87;</p><p>  sfr TCON = 0x88;</p><p&

94、gt;  sfr TMOD = 0x89;</p><p>  sfr TL0 = 0x8A;</p><p>  sfr TL1 = 0x8B;</p><p>  sfr TH0 = 0x8C;</p><p>  sfr TH1 = 0x8D;</p><p>  sfr IE = 0xA8;<

95、/p><p>  sfr IP = 0xB8;</p><p>  sfr SCON = 0x98;</p><p>  sfr SBUF = 0x99;</p><p>  sbit CY = 0xD7;</p><p>  sbit AC = 0xD6;</p><p>  sbit

96、 F0 = 0xD5;</p><p>  sbit RS1 = 0xD4;</p><p>  sbit RS0 = 0xD3;</p><p>  sbit OV = 0xD2;</p><p>  sbit P = 0xD0;</p><p>  /* TCON */</p>

97、<p>  sbit TF1 = 0x8F;</p><p>  sbit TR1 = 0x8E;</p><p>  sbit TF0 = 0x8D;</p><p>  sbit TR0 = 0x8C;</p><p>  sbit IE1 = 0x8B;</p><p>  sbit IT1

98、 = 0x8A;</p><p>  sbit IE0 = 0x89;</p><p>  sbit IT0 = 0x88;</p><p>  /* IE */</p><p>  sbit EA = 0xAF;</p><p>  sbit ES = 0xAC;</p><p&

99、gt;  sbit ET1 = 0xAB;</p><p>  sbit EX1 = 0xAA;</p><p>  sbit ET0 = 0xA9;</p><p>  sbit EX0 = 0xA8;</p><p>  /* IP */ </p><p>  sbit PS = 0xBC;<

100、;/p><p>  sbit PT1 = 0xBB;</p><p>  sbit PX1 = 0xBA;</p><p>  sbit PT0 = 0xB9;</p><p>  sbit PX0 = 0xB8;</p><p>  /* P3 */</p><p>  sbit RD

101、 = 0xB7;</p><p>  sbit WR = 0xB6;</p><p>  sbit T1 = 0xB5;</p><p>  sbit T0 = 0xB4;</p><p>  sbit INT1 = 0xB3;</p><p>  sbit INT0 = 0xB2;</p>

102、<p>  sbit TXD = 0xB1;</p><p>  sbit RXD = 0xB0;</p><p>  /* SCON */</p><p>  sbit SM0 = 0x9F;</p><p>  sbit SM1 = 0x9E;</p><p>  sbit SM2 =

103、0x9D;</p><p>  sbit REN = 0x9C;</p><p>  sbit TB8 = 0x9B;</p><p>  sbit RB8 = 0x9A;</p><p>  sbit TI = 0x99;</p><p>  sbit RI = 0x98;</p><

104、;p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit p30=P3^0;</p><p>  sbit p31=P3^1;</p><p>  sbit p32=P3^2;</p><p>  uc

105、har sec;</p><p>  uchar min;</p><p>  uchar hou;</p><p>  uchar day;</p><p>  uchar month;</p><p>  uchar year;</p><p>  uchar week;</p>

106、<p>  uchar Seg[]={0x3F,0x06,0x5B,0x4F,0x66, </p><p>  0x6D,0x7D,0x07,0x7F,0x6F};</p><p>  #define WRITE_SEC 0x80</p><p>  #define WRITE_MIN 0x82&l

107、t;/p><p>  #define WRITE_HOUR 0x84</p><p>  #define WRITE_DATA 0x86</p><p>  #define WRITE_MONTH 0x88</p><p>  #define WRITE_YEAR 0x8c&l

108、t;/p><p>  #define SEC 0x81</p><p>  #define MIN 0x83</p><p>  #define HOUR 0x85</p><p>  #define DATA 0x87</p><p> 

109、 #define MONTH 0x89</p><p>  #define DAY 0x8b</p><p>  #define YEAR 0x8d</p><p>  #define WRITE_PROTECT 0x8e</p><p>  sbit A8 =P2^0;</

110、p><p>  sbit A9 =P2^1;</p><p>  sbit A10=P2^2;</p><p>  sbit A11=P2^3;</p><p>  sbit A12=P2^4;</p><p>  sbit A13=P2^5;</p><p>  sbit A14=P2^6;<

111、;/p><p>  sbit A15=P2^7;</p><p>  sbit S0 =P1^0;</p><p>  sbit S1 =P1^1;</p><p>  sbit S2 =P1^2;</p><p>  sbit S3 =P1^3;</p><p>  sbit S4 =P1^4;&

112、lt;/p><p>  sbit S5 =P1^5;</p><p>  sbit S6 =P1^6;</p><p>  sbit S7 =P1^7;</p><p>  sbit S8=P3^3;</p><p>  //位尋址寄存器定義</p><p>  sbit ACC0=ACC^0;&l

113、t;/p><p>  sbit ACC7=ACC^7; //管腳定義</p><p>  sbit RST = P3^4; // DS1302片選 </p><p>  sbit SCLK = P3^5; // DS1302時鐘信號 </p><p>  sbit IO= P3^6;

114、 // DS1302數(shù)據(jù)信號 </p><p>  sbit DQ=P3^7;</p><p>  void delay(int n)</p><p><b>  {</b></p><p>  while(n--);</p><p><b>  }</b&g

115、t;</p><p><b>  #endif</b></p><p>  2.DS18B20讀寫子程序</p><p>  Init_DS18B20(void)</p><p><b>  {</b></p><p>  DQ = 1; </p><

116、;p>  delay(1); </p><p>  DQ = 0; </p><p>  delay(60); </p><p>  DQ = 1; </p><p>  delay(15);</p><p><b>  }</b></p><p>&l

117、t;b>  //讀一個字節(jié)</b></p><p>  ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  fo

118、r (i=8;i>0;i--)</p><p><b>  {</b></p><p><b>  DQ = 0; </b></p><p><b>  dat>>=1;</b></p><p><b>  DQ = 1; </b><

119、;/p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay(10);</p><p><b>  }</b></p><p>  return(dat);</p><p><b> 

120、 }</b></p><p><b>  //寫一個字節(jié)</b></p><p>  WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>

121、  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p>  delay(10);</p><p><b>

122、  DQ = 1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //讀取溫度</b></p>

123、<p>  ReadTemperature(void)</p><p><b>  {</b></p><p>  unsigned char a=0;</p><p>  unsigned char b=0;</p><p>  unsigned int t=0;</p><p> 

124、 float tt=0;</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); </p><p>  WriteOneChar(0x44); </p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); <

125、;/p><p>  WriteOneChar(0xBE);</p><p>  a=ReadOneChar();</p><p>  b=ReadOneChar();</p><p><b>  t=b;</b></p><p><b>  t<<=8;</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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論