2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)論文(設計)</p><p>  題 目 數(shù)字溫度計的設計 </p><p>  指導教師 職稱 講師 </p><p><b>  數(shù)字溫度計的設計</b></p><p><b>  摘

2、要</b></p><p>  本文綜述了數(shù)字溫度計的設計與制作過程,詳細介紹了設計制作一個完整的數(shù)字溫度計需要做的前期準備和制作過程。通過對題目的透徹理解以及所要設計的產(chǎn)品的各項性能功能,決定用單片機作為控制內(nèi)核,其次主要用溫度傳感器DS18B20,及其他主要電路配合下設計出一套完整的硬件系統(tǒng)和一套滿足設計要求的軟件系統(tǒng),最后得到了一款基于AT89S52單片機控制的數(shù)字溫度計。本溫度計屬于多功能溫度

3、計,設計不僅實現(xiàn)了用LCD1602顯示器顯示溫度,而且可以同步顯示時間日歷,日期和時間都可通過按鍵校整,以及可以設置上下報警溫度,當溫度不再設置范圍內(nèi)時,可以報警。</p><p>  關鍵詞:AT89S52 單片機;數(shù)字溫度傳感器 DS18B20;顯示器LCD1602;</p><p>  THE DIGITAL THERMOMETER DESIGN</p><p&g

4、t;<b>  Abstract</b></p><p>  Digital thermometer was reviewed in this paper the design and manufacture process, detailed introduces the design of a complete digital thermometer need to do prepara

5、tion and production process. Through the thorough understanding of subject and the design products of various performance function, decided to use single chip microcomputer as control core, second main use temperature se

6、nsor DS18B20, and other main circuit design with a complete set of hardware system and a set of software system to</p><p>  KEY WORDS:AT89S52 single-chip microcomputer; Digital temperature sensor DS18B20; Di

7、splay LCD1602.</p><p><b>  目錄</b></p><p>  中文摘要……………………………………………………………………………Ⅰ</p><p>  Abstract ……………………………………………………………………………Ⅱ </p><p>  第一章 緒論…………………………………

8、………………………………………1</p><p>  選題背景…………………………………………………………………………1</p><p>  數(shù)字溫度計簡介…………………………………………………………………2</p><p>  1.2.1數(shù)字溫度計的特征…………………………………………………………2</p><p>  1.2.2設計實現(xiàn)的

9、目標……………………………………………………………2</p><p>  第二章 數(shù)字溫度計的設計方案……………………………………………………2</p><p>  2.1 設計方案論證與比較……………………………………………………………2</p><p>  2.1.1 顯示電路方案………………………………………………………………2</p><

10、p>  2.1.2 測溫電路方案………………………………………………………………3</p><p>  2.2 系統(tǒng)總體方案……………………………………………………………………3</p><p>  第三章 數(shù)字溫度計的硬件電路的設計……………………………………………4</p><p>  3.1 系統(tǒng)硬件框圖…………………………………………………………………

11、….4</p><p>  32 控制電路…………………………………………………………………………4</p><p>  3.2.1 單片機AT89S52芯片的功能特性…………………………………………4 </p><p>  3.2.2 最小系統(tǒng)模塊………………………………………………………………6</p><p>  3.2.3 系統(tǒng)模塊

12、分析………………………………………………………………6</p><p>  3.2.4 單片機的復位電路…………………………………………………………7</p><p>  3.2.5單片機的晶振電路…………………………………………………………8</p><p>  3.2 溫度傳感器設計…………………………………………………………………9</p>&l

13、t;p>  3.2.1 DS18B20 簡介……………………………………………………………9</p><p>  3.2.2 溫度傳感器與單片機的連接……………………………………………12</p><p>  3.3 單片機與報警電路……………………………………………………………12</p><p>  3.4 顯示電路……………………………………………………

14、…………………13</p><p>  3.4.1 LCD液晶顯示模塊………………………………………………………13</p><p>  3.4.2LCD1602液晶顯示屏………………………………………………………14</p><p>  3.4.3液晶顯示器的工作原理…………………………………………………15</p><p>  3.5 掉

15、電充電電路…………………………………………………………………16</p><p>  3.6系統(tǒng)整體硬件電路………………………………………………………………17</p><p>  第四章 軟件設計…………………………………………………………………18</p><p>  4.1主程序設計……………………………………………………………………18</p>

16、<p>  4.2 鍵盤子程序設計………………………………………………………………20</p><p>  4.3 溫度子程序……………………………………………………………………22</p><p>  4.4 顯示子程序設計……………………………………………………………… 24</p><p>  第五章 數(shù)據(jù)測試…………………………………………………

17、………………25</p><p>  結束語………………………………………………………………………………25</p><p>  致謝…………………………………………………………………………………26</p><p>  參考文獻……………………………………………………………………………26</p><p>  附錄一 源程序代碼………………

18、………………………………………………27</p><p><b>  緒論</b></p><p><b>  1.1選題背景</b></p><p>  國際上從20世紀70年代開始,國內(nèi)自80年代開始,單片機的應用十分廣泛。</p><p>  目前單片機滲透到我們生活的各個領域,幾乎很難找到哪

19、個領域沒有單片機的蹤跡,對各個行業(yè)的技術改造和產(chǎn)品智能化的更新?lián)Q代起著重要的推動作用,而現(xiàn)在最受關注的是單片機廣泛用于各種實時測控系統(tǒng)中,對于控制過程中的各種物理參數(shù)(如轉速,位移,壓力,流量,溫度等)進行測量和控制.將測量技術,自動控制技術和計算機技術相結合,充分發(fā)揮數(shù)據(jù)處理和實時控制功能,使系統(tǒng)工作在最佳狀態(tài),提高系統(tǒng)的生產(chǎn)效率和產(chǎn)品的質量。所以日常生活中各種控制系統(tǒng)都可以使用單片機作為控制器。例如近年來家用電器涉及千家萬戶,生產(chǎn)規(guī)

20、模大。如全自動洗牙機,熱水器,高級音響設備和電子游戲機等,配上微電腦后其身價更是提高百倍,深得用戶的歡迎。廉價的單片機微機在家用電器中應用前途十分廣闊。此外,單片機在工商,金融,科研,教育,國防航天等領域都有著十分廣泛的用途。綜上所述單片機的應用從根本上改變了傳統(tǒng)的控制系統(tǒng),以前必須由模擬電路和數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在能用單片機通過軟件方法實現(xiàn)了。</p><p>  隨著現(xiàn)代信息技術的飛速發(fā)展和傳統(tǒng)工業(yè)改

21、造的逐步實現(xiàn)。能夠獨立工作的溫度檢測和顯示系統(tǒng)應用于諸多領域。傳統(tǒng)的溫度檢測以熱敏電阻作為溫度敏感元件。熱敏電阻的成本低,但需后續(xù)信號處理電路,而且可靠性相對較差,測溫準確度低,檢測系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計相比,該設計的數(shù)字溫度計具有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,適用范圍寬等特點。選用AT89S52單片機作為主控制器件,DS18B20作為溫度傳感器通過LCD1602并行傳送數(shù)據(jù),實現(xiàn)溫度顯示。通過DS18B20直接

22、讀取被測溫度值,進行數(shù)據(jù)轉換,該器件的物理化學性能穩(wěn)定,線性度較好,在-55℃~125℃最大線性偏差小于0.1℃。該器件可以直接向單片機傳輸數(shù)字信號,便于單片機處理及控制。另外,該溫度計還能直接采用測溫器件測量溫度,從而簡化數(shù)據(jù)傳輸與處理過程。</p><p>  1.2 數(shù)字溫度計簡介</p><p>  1.2.1 數(shù)字溫度計的特征</p><p>  溫度是我

23、們?nèi)粘Ia(chǎn)和生活中實時接觸到的物理量,但是它是看不到的,僅憑感覺只能感覺到大概的溫度值。數(shù)字溫度計的出現(xiàn)可以讓人們直觀的了解自己想知道的溫度到底是多少度。數(shù)字溫度計采用溫度敏感元件也就是溫度傳感器(如鉑電阻,熱電偶,半導體,熱敏電阻等),將溫度的變化轉換成電信號的變化,如電壓和電流的變化,溫度變化和電信號的變化有一定的關系,如線性關系,一定的曲線關系等,這個電信號可以使用模數(shù)轉換的電路即AD轉換電路將模擬信號轉換為數(shù)字信號,數(shù)字信號再送

24、給處理單元,如單片機或者PC機等,處理單元經(jīng)過內(nèi)部的軟件計算將這個數(shù)字信號和溫度聯(lián)系起來,成為可以顯示出來的溫度數(shù)值,如25.0攝氏度,然后通過顯示單元,如LED,LCD或者電腦屏幕等顯示出來給人觀察。這樣就完成了數(shù)字溫度計的基本測溫。</p><p>  1.2.2 設計實現(xiàn)的目標</p><p>  1) 測溫基本范圍-55℃~125℃。</p><p>  

25、2) 測溫精度誤差小于或等于0.5℃。</p><p>  3) 超溫報警(20℃~30℃)。</p><p>  4) LCD屏幕顯示實時溫度,時間,日期。</p><p>  5) 四個按鍵可以對時間,日期進行調(diào)整。</p><p>  第二章 數(shù)字溫度計的設計方案</p><p>  2.1 設計方案論證和比

26、較</p><p>  2.1.1 顯示電路方案</p><p>  方案一: 用動態(tài)數(shù)碼管顯示</p><p>  采用七段LED數(shù)碼管,采用動態(tài)顯示的方法來顯示各項指標,該方案價格成本低,但是顯示單一,不具有靈活性,且功耗較大。</p><p>  方案二:采用1602LCD液晶顯示</p><p>  采用該液晶

27、顯示,此方案顯示內(nèi)容豐富,靈活性較好,價格不貴,且功耗相對較小。</p><p>  綜合上述原因,采用方案二。</p><p>  2.1.2 測溫電路方案</p><p>  方案一: 采用模擬溫度傳感器測溫</p><p>  本設計是測溫電路,可以使用熱敏電阻之類的器件利用它們的感溫效應,把被測溫度的電壓或電流采集過來,進行A/D轉換

28、后,用單片機進行數(shù)據(jù)處理,被測溫度就能夠在顯示電路中顯示出來。但是這種設計需要用到A/D轉化電路,感溫電路比較麻煩。</p><p>  方案二:采用數(shù)字溫度傳感器</p><p>  在單片機的設計電路中,大多都是使用傳感器,所以可以采用溫度傳感器DS18B20,此傳感器可以很容易直接讀取被測溫度值,進行轉換,電路簡單,軟件設計也比較簡單,滿足設計要求。</p><p

29、>  綜合上述原因,采用方案二</p><p>  2.2 系統(tǒng)總體方案</p><p>  根據(jù)上述方案之間的比較,結合題目可以將系統(tǒng)分文主控模塊,溫度采集模塊,顯示模塊,其框圖如下:</p><p>  數(shù)字溫度計的硬件電路的設計</p><p>  3.1 系統(tǒng)硬件框圖</p><p><b> 

30、 3.2 控制電路</b></p><p>  3.2.1單片機AT89S52芯片的功能特性</p><p><b>  主要性能</b></p><p>  1)與Mcs-51單片機兼容 2)8k字節(jié)在系統(tǒng)可編程Flash存儲器 </p><p>  3)

31、1000次擦寫周期 </p><p>  4)全靜態(tài)操作:0Hz~33Hz </p><p>  5)三級加密程序存儲器 </p><p>  6)32個可編程I/O口線 </p><p&g

32、t;  7)三個16位定時器/計數(shù)器 </p><p>  8) 八個中斷源9) 全雙工UART串行通道</p><p>  10)低功耗空閑掉電模式</p><p>  11) 掉電后中斷可喚醒</p><p><b>  12)看門狗定時器</b></p><p><b>  1

33、3) 雙數(shù)據(jù)指針</b></p><p><b>  14) 掉電標識符</b></p><p>  AT89S52是一種低功耗,高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程flash存儲器。使用ATMEL公司高密度非易失性存儲器技術制造,與工業(yè)80c51產(chǎn)品指令和引腳完全兼容。片上flash允許程序存儲器在系統(tǒng)中可編程,亦適用于常規(guī)編程器。在單芯片

34、上,擁有靈巧的8位CPU和在系統(tǒng)可編程flash,使得ATS89S52位眾多嵌入式控制應用系統(tǒng)提供高靈活,有效的解決方案。</p><p>  ATS89S52具有以下功能標準功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內(nèi)晶振及實時時鐘。另外,ATS89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇

35、節(jié)電模式。空閑模式下,CPU停止工作,允許RAM,定時器/計數(shù)器,串口,中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。</p><p>  3.2.2 最小系統(tǒng)模塊</p><p>  3.2.3系統(tǒng)模塊分析</p><p>  在本系統(tǒng)中,最小系統(tǒng)模塊居于非常重要的地位。它是整個系統(tǒng)的中樞,系統(tǒng)運行

36、所需的每個操作指令都要由其發(fā)出。它一方面控制著測溫模塊進行溫度信息的采集和時鐘信息,另一方面也控制著顯示模塊的工作。最重要的是,由測溫模塊所采集到的溫度信息必須經(jīng)由主控模塊的處理才能在顯示模塊上顯示,從而使整個系統(tǒng)進行正常的運轉和工作。針對以上分析本系統(tǒng)主控模塊中的單片機芯片采用了AT89S52芯片,此芯片功能強大,能夠完全滿足系統(tǒng)運行的需求。</p><p>  3.2.4 單片機的復位電路</p>

37、<p>  單片機復位時RESET需要保持96個晶振周期的高電平(即需8個機器周期)。復位以后P0─P3口輸出高電平,堆棧指針SP指向07H,其他特殊功能寄存器和程序計數(shù)器PC清零。只要RESET保持高電平,AT89S52就會循環(huán)復位。RESET當由高電平變?yōu)榈碗娖胶?,單片機從程序存儲器0地址開始執(zhí)行程序。但單片機復位不影響內(nèi)部RAM的狀態(tài),包括工作寄存器R0─R7。</p><p>  常見的復位

38、電路有:上電復位電路和上電按鈕復位電路,在本設計中均采用上電復位電路,對于微型單片機而言,復位是一項很重要的歸零調(diào)整操作。該復位就是將高電平加到RESET引腳上,并保持時間超過兩個機器周期以上,也就是2μS如圖2.3所示。</p><p><b>  復位電路</b></p><p>  3.2.5 單片機的晶振電路</p><p>  所謂的

39、晶振電路即指單片機的時鐘電路。該電路通常有內(nèi)部時鐘電路和外部時鐘電路。一般選用前者。單片機芯片內(nèi)部有一個反相放大器構成的振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,把XTAL1和XTAL2與外部石英晶體及兩個電容連接起來可構成一個石英晶體振蕩器如圖2.4所示。時鐘發(fā)生器是一個2分頻電路。它把晶體振蕩器的頻率2分頻后供給片內(nèi)其他電路。一般電容C1和C2起到穩(wěn)定振蕩頻率、快速起振的作用。</p><p&g

40、t;<b>  晶振電路</b></p><p>  3.2 溫度傳感器設計</p><p>  3.2.1 DS18B20 簡介</p><p><b>  引腳說明</b></p><p>  1)DS18B20簡介</p><p> ?。?)獨特的單線接口方式:DS18

41、B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。</p><p>  (2)在使用中不需要任何外圍元件。</p><p> ?。?)可用數(shù)據(jù)線供電,電壓范圍:+3.0 ~ +5.5 V。</p><p> ?。?)測溫范圍:-55 ~ +125 ℃。固有測溫分辨率為0.5 ℃。</p><p>  (5)通過編

42、程可實現(xiàn)9~12位的數(shù)字讀數(shù)方式。</p><p> ?。?)用戶可自設定非易失性的報警上下限值。</p><p>  (7)支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。</p><p> ?。?)負壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。</p><p>  2)DS18B20的測溫原理

43、</p><p>  DS18B20內(nèi)部結構圖</p><p>  DS18B20內(nèi)部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面5

44、6位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 </p><p>  DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達,其中S為符號位。 這是12位轉化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中

45、,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。 例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。 </p><p>  DS18B20溫度傳感器的內(nèi)部存儲器

46、包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結構寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結構寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié)。該字節(jié)各位的意義如下:TM R1

47、 R0 1 1 1 1 1低五位一直都是1 ,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如表所示(DS18B20出廠時被設置為12位)DS18B20溫度轉換時間表:</p><p>  根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復位,

48、復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。</p><p>  3.2.2 溫度傳感器與單片機的連接</p><p>  溫度傳感器的單總線(1-Wire)與單片機的P3.7連接

49、,P3.7是單片機的高位地址線A8。P3端口是一個帶內(nèi)部上拉電阻的8位雙向I/O,其輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對該端口寫“1”,可通過內(nèi)部上拉電阻將其端口拉至高電平,此時可作為輸入口使用,這是因為內(nèi)部存在上拉電阻,某一引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時。如執(zhí)行MOVX DPTR指令,則表示P3端口送出高8位的地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器時,可執(zhí)

50、行MOVX RI指令,P3端口內(nèi)容即為特殊功能寄存器(SFR)區(qū)中R2寄存器內(nèi)容,整個訪問期間不改變。在Flash編程和程序校驗時,P3端口也接收高位地址和其他控制信號。內(nèi)部結構。</p><p>  3.3單片機與報警電路</p><p>  系統(tǒng)中的報警電路是由發(fā)光二極管和限流電阻組成,并與單片機的P2.7端口連接。當溫度不再所設定的上下溫度范圍的時候,發(fā)光二極管工作報警。</p

51、><p><b>  3.4 顯示電路</b></p><p>  3.4.1 LCD液晶顯示模塊</p><p>  3.4.2 LCD1602液晶顯示屏</p><p>  1)LCD1602液晶顯示屏主要技術參數(shù)</p><p><b>  主要參數(shù)</b></p&g

52、t;<p> ?。?)LCD1602液晶顯示屏引腳說明</p><p>  SMC1602A是LCD1602中的一種,它共有16個引腳,各引腳接口信號說明如下。 </p><p><b>  引腳說明</b></p><p><b>  狀態(tài)字說明 </b></p>&l

53、t;p>  SMC1602A狀態(tài)字說明表</p><p>  SMC1602狀態(tài)字功能表</p><p>  其基本操作時序共有4個狀態(tài)分別是:</p><p>  1讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0~D7=狀態(tài)字</p><p>  2 寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出

54、:無</p><p>  3 讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0~D7=數(shù)據(jù)</p><p>  4 寫數(shù)據(jù):輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖 輸出:無 </p><p>  3.4.3液晶顯示器的工作原理</p><p>  液晶顯示器的英文縮寫為LCD(Liquid Crystal Di

55、splay),它是一種數(shù)字顯示技術,內(nèi)部有LCD面板、驅動和控制電路組合而成,可以通過液晶和彩色過濾器過濾光源,在平面面板上產(chǎn)生圖像。</p><p>  液晶是一種呈液體狀的化學物質,像磁場中的金屬一樣,當受到外界電場影響時,其分子會產(chǎn)生精確有序的排列。如果對分子的排列進行適當?shù)目刂?,光線就可以穿越液晶分子。位于最后面得一層是由熒光物質組成的可以發(fā)射光線的背光層。當LCD中的電極產(chǎn)生電場時,液晶分子就會產(chǎn)生扭曲

56、,從而將穿越其中的光線進行有規(guī)則的折射,然后通過第二層過濾層的過濾在屏幕上顯示出來。</p><p>  在單片機應用系統(tǒng)中,液晶顯示器主要分為段位式LCD,字符式LCD,和點陣式LCD。而本設計用的是字符式LCD只能顯示字符和數(shù)字。字符式LCD模塊是由字符LCD顯示器和專用的行列驅動器、控制器及必要的連接、結構件裝配而成,可以顯示數(shù)字和英文字符,這種字符LCD模塊本身具有字符發(fā)生器,顯示容量大,功能豐富,常用1

57、6字×2行。</p><p><b>  3.5掉電充電電路</b></p><p>  實時時鐘電路DS1302是一種具有涓細電流充電能力的電路,采用32.768kHz晶振,可為掉電保護電源提供可編程的充電功能。DS1302實時時鐘電路如圖所示。</p><p>  3.6 系統(tǒng)整體硬件電路</p><p>

58、<b>  第四章 軟件設計</b></p><p><b>  4.1主程序設計</b></p><p>  程序才用模塊化設計,流程圖如圖1所示。</p><p>  從上面主程序看出,主程序的組成是通過分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤完成時間,日歷

59、,時鐘的初始化和時間數(shù)據(jù)的讀寫,調(diào)用溫度子程序完成溫度芯片的初始化和讀寫,調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉到鍵盤程序來回循環(huán)。</p><p>  初始化部分主要有初始化定時器部分和和一些寄存器、標志位、初始化時間等對定時器T0初始化時,首先置初值,CPU開中斷,定時器T0開中斷,并且開始計數(shù),而對定時器T1初始化時,首先置初值,,定時器T1關中斷,并且停止計數(shù),只有收到命令時才能產(chǎn)生中斷。</p>

60、<p>  寄存器的初始化主要是初始化執(zhí)行程序時用到的部分RAM空間,防止程序執(zhí)行時帶來混亂。</p><p>  標志位初始化是對時間調(diào)整時判斷是調(diào)分還是調(diào)時等而專設的位標志,初始化過程中標志位全部置0,即開始時是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點在程序中相當明了。</p><p>  初始化時間是開機時顯示的時間,并通過調(diào)用日歷時鐘的寫程序來完成時間的置初值。</p

61、><p><b>  圖 1主程序流程圖</b></p><p>  4.2 鍵盤子程序設計</p><p>  多功能鍵盤程序的設計是本設計的難點,也是完成本設計的重點,當有鍵按下時,調(diào)用10ms延時程序,再判斷是否有鍵按下無則返回,若有先調(diào)用顯示程序再判斷是否松開,否則再轉到顯示程序,這樣避免了在按鍵松開之前能正常顯示。 K1鍵按下后對應的位置

62、閃爍。當判斷鍵值為1時則為調(diào)秒狀態(tài),對應的秒低位閃爍,為2時為調(diào)分狀態(tài)并分閃爍,為3時為調(diào)時狀態(tài)并時閃爍,為4時為調(diào)日狀態(tài)并日閃爍,為5時為調(diào)月狀態(tài)并月閃爍,為6時為調(diào)年狀態(tài)并年閃爍,為7時為調(diào)星期狀態(tài)并星期閃爍。K2為加1鍵,K3為減1鍵,K4為總返回鍵,即在調(diào)時間時不用只有按下K1鍵值為8才返回,而通過按下K4鍵即可返回。鍵盤子程序流程圖如圖2所示。</p><p>  在鍵盤子程序中當判斷鍵值為1~7時是對

63、時間秒、分、時、日、月、年、星期調(diào)整原理和調(diào)秒相同,由于鍵盤流程圖非常復雜,在此省略了調(diào)分時等。</p><p><b>  4.3 溫度子程序</b></p><p>  由于DS18B20采用的是單總線協(xié)議方式,即在一根數(shù)據(jù)線上實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS

64、18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數(shù)據(jù)的傳輸都是從主機啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。&l

65、t;/p><p>  輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20轉換后的溫度值以2字節(jié)16位補碼形式存放在高速暫存存儲器的第1、2個字節(jié)里,高位在前,低位在后。所以讀取溫度時,要分兩次進行。讀溫度子程序如圖4所示。</p><p>  4.4顯示子程序設計</p><p>  電子產(chǎn)品是否實用其中顯示占了很重要的地位,很多

66、數(shù)人都渴求用視覺效果好,范圍廣,直觀明了,LCD符合以上的要求,但相應的硬件設計相對復雜。</p><p>  本設計的顯示部分具有消隱和閃爍功能,當時分秒等高位為0時顯示消隱, </p><p>  此時在讀時間時更加明了,但低位不能顯示消隱。閃爍功能也是本設計的一個難點,本設計采用8個位標志位,其中一個標志位通過用定時器0產(chǎn)生一個周期大約為每秒1.5次,使閃爍時效果達到最好。此時定時器

67、采用定時中斷的工作方式,這樣可以充分利用CPU資源。另外7個標志位是時分秒等的位標志位,當秒標志位置1時即秒開閃爍,與用中斷產(chǎn)生的標志位相結合,即在一個周期內(nèi)為0時此時消隱為1時開顯示,這樣就使在調(diào)時間時對應的位閃爍。</p><p><b>  第五章 數(shù)據(jù)測試</b></p><p>  用手觸屏溫度傳感器,可以發(fā)現(xiàn)溫度大概顯示為32度左右。將溫度傳感器與塑料袋裝

68、的冰水混合物接觸,觀察液晶顯示的溫度是否為零度。</p><p><b>  結束語</b></p><p>  本論文重點介紹了單片機和數(shù)字溫度傳感器DS18B20的原理和功能,并用DS18B20與AT89S52單片機、LCD1602組成數(shù)字溫度計,有超溫報警,日期時間顯示功能。</p><p>  在這次課程設計的整個過程中,我做了一次全面

69、、較規(guī)范的設計練習,全面地溫習了以前所學過的知識,理論聯(lián)系實際并結合單片機原理課程來解決實際問題,鞏固、加深和擴展了有關單片機設計方面的知識。尤其重要的是讓我養(yǎng)成了科學的習慣,在設計過程中一定要注意掌握設計進度,按預定計劃完成階段性的目標,在底圖設計階段,注意設計計算與結構設計畫圖交替進行,采用正確的設計方法。在整個設計過程中注意對設計資料和計算數(shù)據(jù)的保存和積累,保持記錄的完整性。在課程設計的實踐中進行了設計基本技能的訓練,掌握了查閱和

70、使用標準、規(guī)范、手冊、圖冊、及相關技術資料的基本技能以及計算、數(shù)據(jù)處理等方面的能力。</p><p>  在本次設計的過程中,我發(fā)現(xiàn)了很多的問題,雖然以前還做過類似這樣的設計但這次設計真的讓我長進了很多,讓我深刻體會到了單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事。</p><p>  通過對通用89C52單片

71、機、常用元器件的設計,掌握了一般單片機設計的程序和方法,讓我對整個單片機程序的設計,C語言有了一個比較深的理解。通過這次的課程設計,讓我我真正的意識到,在學習過程中理論聯(lián)系實際的重要性。只有把所學的理論知識用到實際當中,所學的知識才會有價值,學習單機片機更是如此,軟件編程能力只有在經(jīng)常的寫與讀的過程中才能得到提高,這是我在這次課程設計中的最大收獲。</p><p><b>  致謝</b>&

72、lt;/p><p>  經(jīng)過一段時間的努力,畢業(yè)設計基本完成了。在畢業(yè)設計的實踐中,我學到了很多有用的知識,也積累了很多寶貴的經(jīng)驗。</p><p>  在此要特別感謝白銀生老師,本論文是在老師的全面指導中完成的,老師對我非常的嚴格,畢業(yè)設計的順利完成離不開老師的幫助,老師認真負責的工作態(tài)度促使我更好的完成了本畢業(yè)設計,和老師相處的時間不多,但老師對專業(yè)的態(tài)度非常值得我學習,讓我對本專業(yè)有了更

73、大的學習興趣。同時感謝身邊的同學,他們?yōu)槲姨峁┝撕芏鄬氋F的資料。在論文完成之際,向他們致以最真摯的感謝和最崇高的敬意!</p><p>  由于自己本身對一些知識的掌握不是很深刻,設計難免會出現(xiàn)一些漏洞,雖然設計做的不是很完美,但是畢竟是自己認認真真做出來的,希望各位老師給予指正。同時感謝母校對我四年來的教育和關心,在這里我不僅學到了專業(yè)知識,而且學到了很多做人做事的道理,是我明確了以后發(fā)展的方向,樹立了良好的價

74、值觀,所學到的一切都將使我終身受益。</p><p>  再次衷心感謝所有關心和幫助過我的老師和同學,謝謝你們!</p><p><b>  參考文獻</b></p><p>  [1] 陳永真.全國大學生電子設計競賽試題精解選.北京: 電子工業(yè)出版社,2007</p><p>  [2] 李朝青.單片機原理及

75、接口技術.北京: 北京航空航天大學出版社,1998</p><p>  [3] 張琳娜,劉武發(fā).傳感檢測技術及應用.北京: 中國計量出版社,1999</p><p>  [4] 李廣弟.單片機基礎.北京: 北京航空航天大學出版社,1994</p><p>  [5] 謝自美. 電子線路綜合設計[M]. 武漢:華中科技大學出版社, 200

76、7.</p><p>  [6] 康華光. 電子技術基礎(模擬部分)(第五版)[M]. 武漢:華中科技大學出版社, 2007.</p><p>  [7] 吳微,文軍.單片機原理與制作[M].武漢:武漢大學出版社,1991.3</p><p>  [8] 梅開鄉(xiāng).數(shù)字邏輯電路(第2版).北京:電子工業(yè)出版社,2005</p><p>  [9

77、] 馬忠梅.單片機的C語言應用程序設計(第3版) .北京:航空航天大學出版社,2003</p><p>  [10] 吉 雷.Protel99從入門到精通.西安:西安電子科技大學出版社,2004</p><p>  [11] 趙負圖.傳感器集成電路手冊.北京:化學工業(yè)出版社,2002</p><p>  [12] 李 華.MCS-51單片機實用接口技術.北京:北

78、京航空航天出版社,1997</p><p><b>  附錄一 源程序代碼</b></p><p>  #include <reg52.h></p><p>  #include <intrins.h></p><p>  #define uint unsigned int</p>

79、<p>  #define uchar unsigned char</p><p>  sbit DS1302_CLK = P3^6; //實時時鐘時鐘線引腳 </p><p>  sbit DS1302_IO = P3^4; //實時時鐘數(shù)據(jù)線引腳 </p><p>  sbit DS1302

80、_RST = P3^5; //實時時鐘復位線引腳</p><p>  sbit ACC0 = ACC^0;</p><p>  sbit ACC7 = ACC^7;</p><p>  char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /

81、/秒,分,時到日,月,年位閃的計數(shù)</p><p>  sbit Set = P2^3; //模式切換鍵</p><p>  sbit Up = P2^4; //加法按鈕</p><p>  sbit Down = P2^5; //減法按鈕</p><p>  sbit out = P2^6;

82、//立刻跳出調(diào)整模式按鈕</p><p>  sbit DQ = P3^7; //溫度傳送數(shù)據(jù)IO口</p><p>  sbit led=P2^7;</p><p>  uchar dat[4]={0,0,0,0};</p><p>  char done,count,temp,flag,up_flag,down_flag;

83、 //</p><p>  uchar temp_value; //溫度值</p><p>  uchar TempBuffer[5],week_value[2]; //</p><p>  void show_time(); //液晶顯示程序</p><p>  /***********1602液

84、晶顯示部分子程序****************/</p><p>  //Port Definitions**********************************************************</p><p>  sbit LcdRs= P2^0;</p><p>  sbit LcdRw= P2^1;</p>

85、<p>  sbit LcdEn = P2^2;</p><p>  sfr DBPort = 0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口</p><p>  //內(nèi)部等待函數(shù)**************************************************************************&

86、lt;/p><p>  unsigned char LCD_Wait(void)</p><p><b>  {</b></p><p><b>  LcdRs=0;</b></p><p>  LcdRw=1;_nop_();</p><p>  LcdEn=1;_nop_

87、();</p><p><b>  LcdEn=0;</b></p><p>  return DBPort;</p><p><b>  }</b></p><p>  //向LCD寫入命令或數(shù)據(jù)*************************************************

88、***********</p><p>  #define LCD_COMMAND0 // Command</p><p>  #define LCD_DATA1 // Data</p><p>  #define LCD_CLEAR_SCREEN0x01 // 清屏</p><p>  #defi

89、ne LCD_HOMING 0x02 // 光標返回原點</p><p>  void LCD_Write(bit style, unsigned char input)</p><p><b>  {</b></p><p><b>  LcdEn=0;</b></p><p> 

90、 LcdRs=style;</p><p>  LcdRw=0;_nop_();</p><p>  DBPort=input;_nop_();//注意順序</p><p>  LcdEn=1;_nop_();//注意順序</p><p>  LcdEn=0;_nop_();</p><p>  LCD_

91、Wait();</p><p><b>  }</b></p><p>  //設置顯示模式************************************************************</p><p>  #define LCD_SHOW0x04 //顯示開</p><p>  

92、#define LCD_HIDE0x00 //顯示關 </p><p>  #define LCD_CURSOR0x02 //顯示光標</p><p>  #define LCD_NO_CURSOR0x00 //無光標 </p><p>  #define LCD_FLASH0x01 //光標閃動</p

93、><p>  #define LCD_NO_FLASH0x00 //光標不閃動</p><p>  void LCD_SetDisplay(unsigned char DisplayMode)</p><p><b>  {</b></p><p>  LCD_Write(LCD_COMMAND, 0x08|Dis

94、playMode);</p><p><b>  }</b></p><p>  //設置輸入模式************************************************************</p><p>  #define LCD_AC_UP0x02</p><p>  #defi

95、ne LCD_AC_DOWN0x00 // default</p><p>  #define LCD_MOVE0x01 // 畫面可平移</p><p>  #define LCD_NO_MOVE0x00 //default</p><p>  void LCD_SetInput(unsigned char Inpu

96、tMode)</p><p><b>  {</b></p><p>  LCD_Write(LCD_COMMAND, 0x04|InputMode);</p><p><b>  }</b></p><p>  //初始化LCD***********************************

97、*************************</p><p>  void LCD_Initial()</p><p><b>  {</b></p><p><b>  LcdEn=0;</b></p><p>  LCD_Write(LCD_COMMAND,0x38);

98、 //8位數(shù)據(jù)端口,2行顯示,5*7點陣</p><p>  LCD_Write(LCD_COMMAND,0x38);</p><p>  LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開啟顯示, 無光標</p><p>  LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏&l

99、t;/p><p>  LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC遞增, 畫面不動</p><p><b>  }</b></p><p>  //液晶字符輸入的位置************************</p><p>  void GotoXY(unsigned

100、 char x, unsigned char y)</p><p><b>  {</b></p><p><b>  if(y==0)</b></p><p>  LCD_Write(LCD_COMMAND,0x80|x);</p><p><b>  if(y==1)</b>

101、;</p><p>  LCD_Write(LCD_COMMAND,0x80|(x-0x40));</p><p><b>  }</b></p><p>  //將字符輸出到液晶顯示</p><p>  void Print(unsigned char *str)</p><p><b&g

102、t;  {</b></p><p>  while(*str!='\0')//while(*str!='\0')</p><p><b>  {</b></p><p>  LCD_Write(LCD_DATA,*str);</p><p><b>  str++;&

103、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /***********DS1302時鐘部分子程序******************/</p><p>  typedef struct SYSTEMTIME</p>

104、<p><b>  {</b></p><p>  unsigned char Second;</p><p>  unsigned char Minute;</p><p>  unsigned char Hour;</p><p>  unsigned char Week;</p><

105、;p>  unsigned char Day;</p><p>  unsigned char Month;</p><p>  unsigned char Year;</p><p>  unsigned char DateString[11];</p><p>  unsigned char TimeString[9];</p

106、><p>  }SYSTEMTIME;//定義的時間類型</p><p>  SYSTEMTIME CurrentTime; //</p><p>  #define AM(X)X</p><p>  #define PM(X)(X+12) // 轉成24小時制</p><p>  

107、#define DS1302_SECOND0x80 //時鐘芯片的寄存器位置,存放時間</p><p>  #define DS1302_MINUTE0x82</p><p>  #define DS1302_HOUR0x84 </p><p>  #define DS1302_WEEK0x8A</p><p>

108、  #define DS1302_DAY0x86</p><p>  #define DS1302_MONTH0x88</p><p>  #define DS1302_YEAR0x8C </p><p>  void DS1302InputByte(unsigned char d) //實時時鐘寫入一字節(jié)(內(nèi)部函數(shù))</p><p&

109、gt;<b>  { </b></p><p>  unsigned char i;</p><p><b>  ACC = d;</b></p><p>  for(i=8; i>0; i--)</p><p><b>  {</b></p><p&

110、gt;  DS1302_IO = ACC0; //相當于匯編中的 RRC</p><p>  DS1302_CLK = 1;</p><p>  DS1302_CLK = 0;</p><p>  ACC = ACC >> 1; </p><p><b>  } </b></p&g

111、t;<p><b>  }</b></p><p>  unsigned char DS1302OutputByte(void) //實時時鐘讀取一字節(jié)(內(nèi)部函數(shù))</p><p><b>  { </b></p><p>  unsigned char i;</p><p>  f

112、or(i=8; i>0; i--)</p><p><b>  {</b></p><p>  ACC = ACC >>1; //相當于匯編中的 RRC </p><p>  ACC7 = DS1302_IO;</p><p>  DS1302_CLK = 1;</p>

113、<p>  DS1302_CLK = 0;</p><p><b>  } </b></p><p>  return(ACC); </p><p><b>  }</b></p><p>  void Write1302(unsigned char ucAddr, unsigned

114、char ucDa)//ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)</p><p><b>  {</b></p><p>  DS1302_RST = 0;</p><p>  DS1302_CLK = 0;</p><p>  DS1302_RST = 1;</p><p&g

115、t;  DS1302InputByte(ucAddr); // 地址,命令 </p><p>  DS1302InputByte(ucDa); // 寫1Byte數(shù)據(jù)</p><p>  DS1302_CLK = 1;</p><p>  DS1302_RST = 0;</p><p><b>  } &

116、lt;/b></p><p>  unsigned char Read1302(unsigned char ucAddr)//讀取DS1302某地址的數(shù)據(jù)</p><p><b>  {</b></p><p>  unsigned char ucData;</p><p>  DS1302_RST = 0;&l

117、t;/p><p>  DS1302_CLK = 0;</p><p>  DS1302_RST = 1;</p><p>  DS1302InputByte(ucAddr|0x01); // 地址,命令 </p><p>  ucData = DS1302OutputByte(); // 讀1Byte數(shù)據(jù)</p

溫馨提示

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

評論

0/150

提交評論