版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 畢 業(yè) 設 計(論 文)</p><p> 基于DS18B20溫度傳感器的數(shù)字溫度計設計</p><p> 學生姓名:</p><p> 學 號:</p><p> 所在系部:電氣信息系</p><p> 專業(yè)班級:電氣工程及其自動化</p><p> 指導教師:講
2、師</p><p> 日 期:二○一二年五月</p><p> The design of temperature sensor based on DS18B20 digital thermometer</p><p><b> By</b></p><p><b> May 2012</b&
3、gt;</p><p><b> 摘 要</b></p><p> 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展本文介紹了一種基于DS1
4、8B20的數(shù)字溫度計設計方案。本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用方案。利用AT89S52單片機控制DS18B20進行數(shù)據(jù)采集并由HS1602液晶顯示模塊顯示結果,另外,采集結果可由RS-232-C接口送入計算機顯示并存儲。按鍵控制實現(xiàn)過界報警溫度設定和實時監(jiān)控,利用AT24C08芯片進行存儲,實現(xiàn)溫度測量存儲與再現(xiàn)。<
5、;/p><p> 關鍵字:溫度采集 存儲再現(xiàn) 過界報警 串行通信</p><p><b> Abstract</b></p><p> With the continuous improvement of people's living standard, single-chip control is undoubtedly one
6、of the people to pursue the goal, it brings the convenience is undeniable, which is a typical example of the digital thermometer is required of it, but it is increasingly the higher is the modern, scientific research, li
7、fe and provide better more convenient facilities will need to start from several single-chip technology, all toward the digital control, intelligent control of the direction. In th</p><p> Keywords: Tempera
8、ture collection Storing to reappear Over the boundary to alarm Serial communication.</p><p><b> 目 錄</b></p><p><b> 摘 要i</b></p><p> Abstractii</
9、p><p><b> 1 引言1</b></p><p> 1.1選題目的和意義1</p><p> 1.2國內外目前的研究進展和成果1</p><p> 1.3本課題研究的內容2</p><p><b> 2 總體設計3</b></p><
10、;p> 2.1 方案論證3</p><p> 2.1.1 溫度傳感器3</p><p> 2.1.2 單片機系統(tǒng)3</p><p> 2.1.3 電源模塊4</p><p> 2.1.4 顯示模塊4</p><p> 2.1.5 確定方案4</p><p> 2.
11、2 總體設計5</p><p><b> 3 硬件設計6</b></p><p> 3.1 單片機系統(tǒng)6</p><p> 3.2 溫度傳感器模塊6</p><p> 3.2.1 DS18B20原理7</p><p> 3.2.2 DS18B20電路連接11</p>
12、;<p> 3.3 液晶顯示模塊11</p><p> 3.4存儲模塊14</p><p> 3.4.1 AT24C08結構14</p><p> 3.4.2 AT24C08工作原理16</p><p> 3.4.3 AT24C08的連接電路16</p><p> 3.5 串口通信模
13、塊17</p><p> 3.6 電源模塊18</p><p><b> 4 軟件設計19</b></p><p> 4.1 主程序流程19</p><p> 4.2 DS18B20模塊程序設計19</p><p> 4.2.1 程序流程19</p><p
14、> 4.2.2 程序源碼20</p><p> 4.3 HS1602驅動程序設計20</p><p> 4.3.1 程序流程20</p><p> 4.3.2 程序源碼21</p><p> 4.4 AT24C08存儲模塊程序設計21</p><p> 4.4.1 程序流程21</p
15、><p> 4.4.2 程序源碼21</p><p> 4.5 單片機端通信程序設計21</p><p> 4.5.1 程序流程21</p><p> 4.5.2 程序源碼22</p><p> 4.6 PC端通信程序設計22</p><p> 4.6.1 程序流程22<
16、;/p><p> 4.6.2 程序源碼23</p><p> 5 測試及結果分析24</p><p><b> 結 論25</b></p><p><b> 致 謝26</b></p><p><b> 參考文獻27</b></
17、p><p> 附錄A 程序源碼28</p><p> 附錄B總體完全電路圖41</p><p><b> 1 引言</b></p><p> 1.1選題目的和意義</p><p> 隨著電子技術的發(fā)展,人們的生活日趨數(shù)字化,多功能的數(shù)字溫度計可以給我們的生活帶來很大的方便;支持“一線總線
18、”接口的溫度傳感器簡化了數(shù)字溫度計的設計,降低了成本;以美國MAXIM/DALLAS半導體公司的單總線溫度傳感器DS18B20為核心,以ATMEL公司的AT89S52為控制器設計的DS18B20溫度控制器結構簡單、測溫準確、具有一定控制功能的智能溫度控制器。</p><p> 那么,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,
19、要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p> 1.2國內外目前的研究進展和成果</p><p> 測量溫度的關鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了3個階段:傳統(tǒng)的分立式溫度傳感器、模擬集成溫度傳感器、智能集成溫度傳感器。目前,國際上新型溫度傳感器正從模擬式向數(shù)字式、從集成化向智能化、網(wǎng)絡化的方向
20、發(fā)展。</p><p> 在這個信息技術的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實現(xiàn)的時代。能夠獨立工作的溫度檢測和顯示系統(tǒng)應用于諸多領域。傳統(tǒng)的溫度檢測以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,但需后續(xù)信號處理電路,而且可靠性相對較差,測溫準確度低,檢測系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計相比,這里設計的數(shù)字溫度計具有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,適用范圍寬等特點。選用AT89C52型單片機作為主控制器件,
21、DSl8B20作為測溫傳感器通過HS1602液晶顯示模塊顯示結果,實現(xiàn)溫度顯示。通過DSl8B20直接讀取被測溫度值,進行數(shù)據(jù)轉換,該器件的物理化學性能穩(wěn)定,線性度較好,在0℃~100℃最大線性偏差小于0.1℃。該器件可直接向單片機傳輸數(shù)字信號,便于單片機處理及控制。另外,該溫度計還能直接采用測溫器件測量溫度,從而簡化數(shù)據(jù)傳輸與處理過程。</p><p> 1.3本課題研究的內容</p><
22、p> 本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準確的場所,或科研實驗室使用,該設計控制器使用8086系統(tǒng)AT89S52,測溫傳感器使用DS18B20,由HS1602液晶顯示模塊顯示結果,能準確達到以上要求。</p><p><b> 2 總體設計</b></p><p><
23、;b> 2.1 方案論證</b></p><p> 2.1.1 溫度傳感器</p><p> 方案一:采用熱敏電阻可滿足測溫要求,但熱敏電阻精度低,重復性和可靠性較差,對于精度要求較高的測溫不適用,而且采用熱敏電阻要求復雜的電路和算法,增加了設計復雜度。</p><p> 方案二:采用專用的集成溫度傳感器(如AD590、LM35/LM45)
24、和數(shù)字化溫度傳感器(DS18B20、DS1620)測溫,數(shù)字化溫度傳感器具有接口簡單、直接數(shù)字量輸出、精確度高等優(yōu)點。DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫
25、度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數(shù)字測溫和控制領域。</p><p> DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡,它的測量溫度范圍為-55~+125℃,在-10~+85℃范圍內,精度為±0.5℃,現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大
26、大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類消費電子產品等,DS18B20支持3~5.5V的電壓范圍,使系統(tǒng)設計更靈活、更方便、更便宜、體積更小。DS18B20可以程序設定9~12位的分辨率,精度為±0.5℃,分辨率設定及用戶設定的報警溫度存儲在E2PROM中,掉電后依然保存。因此,本方案選用DS18B20作為溫度測量傳感器。</p><p> 2.1.2
27、 單片機系統(tǒng)</p><p> 目前比較流行51系列單片機和凌陽單片機。 AT89C51單片機需要用仿真器來實現(xiàn)軟硬件的調試,較為繁瑣;AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8
28、位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應用系統(tǒng)中得到廣泛應用。</p><p> AT89S52八位單片機除具有AT89C51單片機所有的優(yōu)點外,具有更大的程序存儲空間,可在線仿真的功能,方便調試。凌陽十六位單片機雖然可以更好的完成控制功能,但較AT89S52八位單片機價格昂貴,而且編程以及外圍功能電路的設計都不及AT89S52成熟。因此,選用AT89S52八位單片機作為溫度采集
29、的控部分。</p><p> 2.1.3 電源模塊</p><p> 采用普通的直流電源實現(xiàn)電路簡單,而且采用集成電源芯片設計的直流電源電壓比較穩(wěn)定,完全滿足系統(tǒng)各模塊的供電要求,但是普通直流電源體積比較大,變壓器的散熱對測溫精度也有影響,所以,選用鋰離子手機充電電池和配套的鋰電池充電器作為系統(tǒng)的供電模塊。手機用的鋰電池電壓范圍是3.6V到4.2V,限定充電電壓是4.25V,完全滿足A
30、T89S52和DS18B20等各模塊的工作電壓范圍。</p><p> 2.1.4 顯示模塊</p><p> 由于系統(tǒng)要求實現(xiàn)測量環(huán)境溫度、測量體溫、過界報警設置、溫度存儲再現(xiàn)等多種功能,要顯示的信息不僅僅是溫度值,所以采用數(shù)碼管顯示幾乎不可能。另外,手機電池電量有限,而數(shù)碼管耗電較大,不符合設計要求。因此,選用常見的HS1602液晶顯示模塊顯示測溫結果。</p>&l
31、t;p> 2.1.5 確定方案</p><p> 為了不失通用性和智能性,本方案采用AT89S52單片機作為控制器,單總線溫度傳感器DS18B20進行溫度采集。電源部分沒有采用普通的直流電源而利用鋰離子手機充電電池和配套的鋰電池充電器,手機用的鋰電池電壓范圍是3.6V到4.2V,限定充電電壓是4.25V,完全滿足AT89S52和DS18B20等各模塊的工作電壓范圍。由于手機電池電量有限,所以顯示模塊使用
32、HS1602液晶顯示模塊而沒有使用數(shù)碼管。</p><p><b> 2.2 總體設計</b></p><p> 本方案設計的系統(tǒng)由按鍵控制模塊、單片機系統(tǒng)、溫度傳感器模塊、液晶顯示模塊、存儲模塊、串口通信模塊和電源模塊組成,其總體架構如圖2-1。</p><p> 圖2-1 系統(tǒng)總體設計</p><p><
33、;b> 3 硬件設計</b></p><p><b> 3.1 單片機系統(tǒng)</b></p><p> 該方案采用AT89S52單片機作為控制器,完成所有的控制功能,包括:</p><p> ??溫度傳感器DS18B20的初始化和讀取溫度值</p><p> ??HS1602液晶模塊驅動<
34、/p><p><b> ??按鍵識別和控制</b></p><p><b> ??溫度存儲及讀取</b></p><p> ??和PC機的串口通信</p><p> 單片機系統(tǒng)的電路如圖3-1。</p><p> 圖3-1 單片機系統(tǒng)電路</p><
35、;p> 3.2 溫度傳感器模塊</p><p><b> 溫度傳感器模塊</b></p><p> 如下圖,使用外部電源,可以減少程序復雜程度。</p><p> DS18B20特性:</p><p> ??獨特的單線接口僅需一個端口進行通訊</p><p> ??簡單的多點分布
36、應用</p><p><b> ??無需外部器件</b></p><p> ??可通過數(shù)據(jù)線供電</p><p><b> ??零待機功耗</b></p><p> ??測溫范圍-55~+125℃</p><p> ??溫度以12位數(shù)字量讀出</p>
37、<p> ??溫度數(shù)字量轉換時間750ms(12位)</p><p> ??用戶可定義的非易失性溫度警報設置</p><p> ??報警搜索命令識別并超過程序限定溫度(溫度報警條件)的器件</p><p> ??應用包括溫度控制、工業(yè)系統(tǒng)、消費品、溫度計或任何熱感測系統(tǒng)</p><p> 3.2.1 DS18B20原理&l
38、t;/p><p> DS18B20 采用3 腳PR-35 封裝或8 腳SOIC 封裝,管腳排列如圖3-2所示。圖中GND 為地,DQ 為數(shù)據(jù)輸入/輸出端(即單線總線),該腳為漏極開路輸出,常態(tài)下呈高電平,Vcc 是外部+5V 電源端,不用時應接地,NC 為空腳。</p><p> 圖3-2 DS18B20的外部結構</p><p> DS18B20內部主要包括寄
39、生電源、溫度傳感器、64 位激光ROM 單線接口、存放中間數(shù)據(jù)的高速暫存器(內含便箋式RAM),用于存儲用戶設定的溫度上下限值的TH 和TL 解發(fā)器存儲與控制邏輯、8 位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分,內部結構如圖3-3。</p><p> 圖3-3 DS18B20內部結構</p><p> 寄生電源由二極管VD1、VD2 和寄生電容C 組成,電源檢測電路用于判定供電方式,寄
40、生電源供電時,VDD 端接地,器件從單線總線上獲取電源,在DQ 線呈低電平時,改由C上的電壓Vc繼續(xù)向器件供電。該寄生電源有兩個優(yōu)點:第一,檢測遠程溫度時無需本地電源;第二,缺少正常電源時也能讀ROM。若采用外部電源VDD,則通過VD2 向器件供電。</p><p> 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,如圖3-4所示。</p><p>
41、; 圖3-4 64 位ROM 的結構</p><p> 開始8位(28H)是產品類型標號,接著的48位是DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。主機操作ROM 的命令有五種,如表3-1 所示。</p><p> 表3-1
42、 DS18B20的ROM命令</p><p> DS18B20 測量溫度時使用特有的溫度測量技術。其內部的低溫度系數(shù)振蕩器能產生穩(wěn)定的頻率信號f0,高溫度系數(shù)振蕩器則將被測溫度轉換成頻率信號f。當計數(shù)門打開時,DS18B20 對f0 計數(shù),計數(shù)門開通時間由高溫度系數(shù)振蕩器決定。芯片內部還有斜率累加器,可對頻率的非線性予以被償。測量結果存入溫度寄存器中。一般情況下的溫度值應為9 位(符號點1位),但因符號位擴展
43、成高8 位,故以16 位被碼形式讀出,表3-2 給出了溫度和數(shù)字量的關系。</p><p> 表3-2 DS18B20 溫度數(shù)字對應關系表</p><p> DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結構寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內容是溫
44、度的低8位,第二個字節(jié)是溫度的高8位,第三個和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結構寄存器的易失性拷貝,這三個字節(jié)的內容在每一次上電復位時被刷新,第六、七、八個字節(jié)用于內部計算,第九個字節(jié)是冗余檢驗字節(jié),如表3-3所示。</p><p> 表3-3 DS18B20暫存器分布</p><p> 該字節(jié)各位的意義為TM R1 R0 1 1 1 1 1 ,低五位一直都是1 ,
45、TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式,在DS18B20出廠時該位被設置為0,用戶不用改動,R1和R0用來設置分辨率,DS18B20出廠時被設置為12位,分辨率設置如表3-4所示。 </p><p> 表3-4 分辨率設置表</p><p> 根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20
46、進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。ROM命令令和暫存器的命令如表3-1和表3-5。</p><p> 表3-5 DS18B20暫存器的命令</p><p>
47、 3.2.2 DS18B20電路連接</p><p> 由于DS18B20 工作在單總線方式,其硬件接口非常簡單,僅需利用系統(tǒng)的一條I/ O線與DS18B20的數(shù)據(jù)總線相連即可,如圖3-5所示。</p><p> 圖3-5 DS18B20電路</p><p> 3.3 液晶顯示模塊</p><p> HS1602采用標準的16腳接
48、口,其引腳如表3-6所示,其中VSS為地電源,VDD接5V正電源,V0為液晶顯示模塊對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,可以通過一個10K的電位器調整對比度。RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器,低電平時選擇指令寄存器。RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作,當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。
49、E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。LEDA和LEDK為背光電源,LEDA接5V正電源,LEDK接GND。D0~D7為8位雙向數(shù)據(jù)線。</p><p> 表3-6 接口信號說明</p><p> 用HS1602液晶顯示模塊顯示字符或字符串之前必須對其進行初始化,HS1602液晶顯示模塊的初始化流程如下:</p><p> ??5.0
50、 初始化過程(復位過程)</p><p> ??5.1 延時15ms</p><p> ??5.2 寫指令38H(不檢測忙信號)</p><p> ??5.3 延時5ms</p><p> ??5.4 寫指令38H(不檢測忙信號)</p><p> ??5.5 延時5ms</p><p&g
51、t; ??5.6 寫指令38H(不檢測忙信號)</p><p> ??5.7(以后每次寫指令、讀/寫數(shù)據(jù)之前均需檢測忙信號)</p><p> ??5.8 寫指令38H:顯示模式設置</p><p> ??5.9 寫指令38H:顯示關閉</p><p> ??5.10 寫指令01H:顯示清屏</p><p>
52、 ??5.11 寫指令06H:顯示光標移動設置</p><p> ??5.12 寫指令0CH:顯示開關及光標位置</p><p> HS1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了128個不同的點陣字符圖形,如表3-7所示。 </p><p> 表3-7 CGROM 中的字符代碼與圖形對應關系</p><p> H
53、S1602液晶模塊內部的控制器共有11條控制指令,如表3-8所示。它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。</p><p> 表3-8 HS1602液晶模塊內部的控制器控制指令</p><p> HS1602液晶顯示模塊可以和單片機AT89C51直接接口,電路如圖3-6所示。</p><p> 圖3-6 AT89S52和HS1602液晶模塊連接
54、電路</p><p> 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表3-9是HS1602的內部顯示地址。即第1行的顯示地址應為80H+顯示位置,第2行的顯示地址應為C0H+顯示位置。</p><p> 表3-9 HS1602的內部顯示地址</p&g
55、t;<p><b> 3.4存儲模塊</b></p><p> 3.4.1 AT24C08結構</p><p> 本方案利用AT24C08芯片進行存儲,實現(xiàn)溫度測量存儲與再現(xiàn)。AT24C08是ATMEL公司生產的串行EEPROM(8K,1024×8),直接通過I2C總線的SDA中的器件地址碼變更來變換讀寫功能,當從串行時鐘線SCL輸入正邊
56、緣時鐘信號時,數(shù)據(jù)進入每一個EEPROM器件,在負邊緣時數(shù)據(jù)從每個器件中輸出,串行數(shù)據(jù)線SDA雙向輸送時,該腳用漏極開路驅動,1、2、3腳作器件地址輸入。其外部引腳及引腳功能如圖3-7所示。</p><p> 圖3-7 AT24C08外部引腳及引腳功能</p><p> AT24C08內部主要由EEPROM存儲陣列及其行和列譯碼電路、電源泵/定時、串行多路調制器、數(shù)據(jù)寄存器、I2C總
57、線控制邏輯電路組成,如圖3-8所示。電源泵的設置免除外設置的寫入高壓電源;數(shù)據(jù)寄存器保證了頁寫數(shù)據(jù)的裝載空間;器件地址比較器用于辯識自己的從地址。</p><p> 圖3-8 AT24C08內部結構圖</p><p> 3.4.2 AT24C08工作原理</p><p><b> 從地址選擇</b></p><p&g
58、t; AT24C08片內的存儲空間地址采用了一個字地址(WORDADR)字節(jié)的尋址,故片內尋址范圍為256字節(jié)。</p><p><b> 頁寫功能</b></p><p> EEPROM寫入時,總需要一定的寫入時間(5~15ms),因此,在寫入時無法連續(xù)寫入多個數(shù)據(jù)字節(jié),在E2PROM器件中設有一定容量的數(shù)據(jù)寄存器,用戶一次寫入EEPROM的數(shù)據(jù)字節(jié)不大于頁寫
59、字節(jié)數(shù)時可按通常RAM的寫入速度裝載至EEPROM中的數(shù)據(jù)寄存器中,隨后啟動自動寫入定時控制邏輯,經(jīng)過5~10ms自動將數(shù)據(jù)寄存器中的數(shù)據(jù)同步寫入EEPROM的指定單元中。AT24C08的頁寫字節(jié)數(shù)為16。</p><p> 頁地址空間的“翻卷”</p><p> 對應于頁寫字節(jié)數(shù),數(shù)據(jù)寄存器分別有2、3、4位頁地址,為字地址的低位部分。在寫入時,寫入數(shù)據(jù)按照字地址(WORDADR)的
60、最低部分,定為在數(shù)據(jù)寄存器的頁地址空間、數(shù)據(jù)寄存器地址的低位部分,溢出時不會向字地址的高位部分進位,這就造成寫入數(shù)據(jù)在地址的“翻卷”。</p><p> EEPROM的寫周期時序</p><p> 由于頁寫功能的設置,I2C總線對AT24C08的操作只體現(xiàn)在對其數(shù)據(jù)寄存器的裝載,在數(shù)據(jù)裝載完畢,E2PROM接收到I2C總線發(fā)送的停止位后,自動啟動一個內部同步的寫周期,將數(shù)據(jù)寄存器中的數(shù)
61、據(jù)寫入EEPROM陣列中,在這個內部寫入周期中所有輸入皆無效。寫周期結束后AT24C08才允許對總線響應。</p><p> 3.4.3 AT24C08的連接電路</p><p> AT24CO8連接電路如圖3-9 </p><p> 圖3-9 AT24C08連接電路</p><p> 3.5 串口通信模塊</p
62、><p> RS-232C標準(協(xié)議)的全稱是EIA-RS-232C標準,其中EIA(Electronic Industry Association)代表美國電子工業(yè)協(xié)會,RS(recommended standard)代表推薦標準,232是標識號,C代表RS232的最新一次修改,在這之前,有RS232B、RS232A,它規(guī)定連接電纜和機械、電氣特性、信號功能及傳送過程。RS-232C適合于數(shù)據(jù)傳輸速率在0~200
63、00b/s范圍內的通信。</p><p> PC機常用DB-9連接器作為提供多功能I/O卡或主板上COM1和COM2兩個串行接口的連接器,它只提供異步通信的9個信號,9針串口功能見表3-10,并且對電纜長度也有要求: RS-232C標準規(guī)定,若不使用MODEM,在碼元畸變小于4%的情況下,DTE和DCE之間最大傳輸距離為15m(50英尺)??梢娺@個最大的距離是在碼元畸變小于4%的前提下給出的,為了保證碼元畸變小
64、于4%的要求,接口標準在電氣特性中規(guī)定,驅動器的負載電容應小于2500pF。 </p><p> 表3-10 9針串口功能一覽表</p><p> 本方案對RS-232-C接口采用3線制(RXD、TXD、GND)軟握手的零MODEM方式進行單片機和PC之間的數(shù)據(jù)通信,即PC機和單片機的發(fā)送數(shù)據(jù)線(TXD)與接收數(shù)據(jù)(RXD)交叉連接,二者的地線(GND)直接相連,其它信號線如握手信號
65、線均不用,而采用軟件握手。但由于RS-232-C的邏輯電對地是對稱的,與TTL、MOS 邏輯電平完全不同,邏輯0電平規(guī)定為+5~ +15V之間,邏輯1是電平為-5~ -15V之間,因此利用MAX232芯片進行電平轉換,電路連接如圖3-10。</p><p> 圖3-10 RS-232-C通信連接電路</p><p><b> 3.6 電源模塊</b></p
66、><p> 本方案采用鋰離子手機充電電池和配套的鋰電池充電器作為電源,手機用的鋰電池電壓范圍是3.6V到4.2V,限定充電電壓是4.25V,完全滿足各模塊的工作電壓范圍。充電器在作為電源的同時也可以對鋰電池進行充電,所以系統(tǒng)在離開市電時可正常工作。充電器電路如圖3-11所示。</p><p> 圖3-11 充電電路</p><p><b> 4 軟件設
67、計</b></p><p><b> 4.1 主程序流程</b></p><p> 軟件部分包括五個部分,對應著系統(tǒng)的五種模式,程序流程如圖4-1所示。</p><p><b> 圖4-1程序流程圖</b></p><p> 4.2 DS18B20模塊程序設計</p>
68、<p> 4.2.1 程序流程</p><p> DS18B20模塊程序主要完成DS18B20的初始化和溫度的讀去操作,程序流程如圖4-2所示。</p><p> 圖4-2 DS18B20模塊程序流程圖</p><p> 4.2.2 程序源碼</p><p> 見附錄A DS18B20程序源碼</p>
69、<p> 4.3 HS1602驅動程序設計</p><p> 4.3.1 程序流程</p><p> HS1602液晶驅動主要完成HS1602的初始化以及字符和字符串的顯示,程序流程如圖4-3所示。</p><p> 圖4-3 HS1602液晶驅動程序流程圖</p><p> 4.3.2 程序源碼</p>
70、<p> 見附錄A HS1602程序源碼</p><p> 4.4 AT24C08存儲模塊程序設計</p><p> 4.4.1 程序流程</p><p> 程序流程如圖4-4所示。</p><p> 圖4-4 AT24C08存儲模塊程序流程圖</p><p> 4.4.2 程序源碼</p&
71、gt;<p> 見附錄A AT24C08程序源碼</p><p> 4.5 單片機端通信程序設計</p><p> 4.5.1 程序流程</p><p> AT89S52單片機串行口是全雙工串行通信口,有4 種工作方式:方式0作移位寄存器使用;方式1是波特率可變的8位UART;方式2是波特率固定為兩種的9位UART;方式3是波特率可變的9位UA
72、RT。在與PC機通信時我們選用方式1來循環(huán)向PC機發(fā)送數(shù)據(jù),程序流程如圖4-5所示。</p><p> 圖4-5 單片機串口通信程序流程圖</p><p> 4.5.2 程序源碼</p><p> 見附錄A 單片機通信模塊源碼</p><p> 4.6 PC端通信程序設計</p><p> 4.6.1 程序流
73、程</p><p> PC機端串口通信程序主要完成串口的設置、數(shù)據(jù)的接收和顯示,用Microsoft 的Visual Basic 6.0編寫,本方案采用Microsoft的ActiveX組件,Microsoft推出的ActiveX技術提供了另外一種實現(xiàn)串行通信的方法,這種方法不僅相對較為簡單,而且非常實用。程序流程如圖4-6所示。</p><p> 圖4-6 PC端串口接收程序流程圖
74、</p><p> 4.6.2 程序源碼</p><p> 見附錄A PC通信模塊源碼</p><p><b> 5 測試及結果分析</b></p><p> DS18B20在12位轉化時每一位的精度為0.0625度,我們取小數(shù)點后兩位進行顯示,即兩位整數(shù)溫度和兩位小數(shù)溫度數(shù)據(jù),這樣已經(jīng)達到了很高的精度。在測試過
75、程中,我們將家庭用的寒暑表和設計完成的數(shù)字溫度計做比較發(fā)現(xiàn),寒暑表反應速度比較快,但經(jīng)過讀數(shù)后的結果存在較大的誤差,而我們設計完成的數(shù)字溫度計測溫然后顯示的反應不及寒暑表,但是測溫的精度遠比寒暑表高,因為DS18B20測溫精度可達0.0625度,并且經(jīng)電子器件顯示只存在取舍誤差。</p><p><b> 結 論</b></p><p> DS18B20本身就是
76、一種數(shù)字溫度傳感器,它會把溫度轉換成數(shù)字量以后存貯在自身內部,由單片機把DS18B20里面存貯的數(shù)字量讀出來,然后在數(shù)碼管上顯示出來,當四位數(shù)碼管顯示的溫度超過上限值時,DS18B20可以實現(xiàn)報警功能;DS18B20與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測量溫度,并且可跟就實際需要要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方法??梢苑謩e在93.75ms和750ms內完成9位和12位的數(shù)字量,且從DS18B20讀出的信息或寫入DS18B
77、20的信息只需要一根口線讀寫;溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電。而無需額外電源,因而使用DS18B20可使系統(tǒng)結構更趨簡單,可靠性高。</p><p><b> 致 謝</b></p><p> 本課題的研究是在我的導師xx老師的悉心指導下完成的,xx老師學識淵博、治學態(tài)度嚴謹、工作一絲不茍,更有誨人不倦的師者風范,在此謹向
78、xx老師致以誠摯的謝意和崇高的敬意!</p><p> 此外,衷心感謝給予我?guī)椭耐瑢W,若是沒有他們,也就不會有這篇論文的產生。</p><p> 畢業(yè)在即,衷心感謝指導過我的各位老師,四年的成長離不開他們的諄諄教誨;感謝湖北工業(yè)大學工程技術學院,大學生涯是人生中的一筆寶貴財富;感謝我們08電氣班的xx老師,四年的大學生活對我們關懷備至;感謝相伴度過四年的舍友、感謝同窗四年的同學、感謝
79、幫助關心過我的學長,感謝默默關心我支持我的朋友們,祝大家在今后的生活中幸福快樂!</p><p> 最后感謝家人,感謝他們多年來的支持與付出!</p><p><b> 參考文獻</b></p><p> [1]張洪潤等,電子線路與電子技術[M],北京:清華大學出版社,2005.</p><p> [2]王松武等
80、,電子創(chuàng)新設計與實踐[M],北京:國防工業(yè)出版社,2005.</p><p> [3]李建忠,單片機原理及應用[M],西安:西安電子科技大學出版社,2002.</p><p> [4]黃智偉等,全國大學生電子設計競賽訓練教程[M],北京:電子工業(yè)出版社,2004.</p><p> [5]樊昌信等.通信原理[M].北京:國防工業(yè)出版社,2001.</p&
81、gt;<p> [6]何希才,新型集成電路及應用實例[J],北京:科學出版社,2002.</p><p> [7]李朝青.單片機原理及接口技術[M].杭州:北京航空航天大學出版社,1998.</p><p> [8]李廣弟.單片機基礎[M].北京:北京航空航天大學出版社,1994.</p><p> [9]閻石.數(shù)字電子技術基礎[M].北京:高
82、等教育出版社,1989.</p><p> [10]廖常初.現(xiàn)場總線概述[J].電工技術,1999.</p><p> [11]樓然苗.穎電子模塊應用手冊[J]. 北京:機械工業(yè)出版社,2005.</p><p> [12]樓然苗李光飛.單片機課程設計指導[M]. 北京:北京航空航天大學出版社,2007.</p><p> [13]賴
83、壽宏.微型計算機控制技術[M]. 北京:機械工業(yè)出版社.2003.</p><p> [14]馬忠梅.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,1998.</p><p> [15]金凱鵬,胡即明.基于模糊PID 算法遠程溫度控制系統(tǒng)的實現(xiàn)[J].微計算機信息,2006.</p><p> [16]石錦松,賀麗萍,白亮等.基于ARM 的遠
84、程控制溫控系統(tǒng)的設計[J].現(xiàn)代電子技術,2007.</p><p> [17]求是科技.單片機典型模塊設計實例導航[M].人民郵電出版社,2004.</p><p> [18]何力民系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術[M].北京:北京航空航天大學出版社,2000.</p><p> [19]周航慈.單片機應用程序設計技術”(修訂版)[M].北京航空航天
85、大學出版社.</p><p> [20]李華等.單片機實用接口技術[M]. 北京:北京航空航天大學出版社,2002.</p><p><b> 附錄A 程序源碼</b></p><p><b> 函數(shù)變量名</b></p><p> void lcd_init(void); //液晶模塊
86、初始化</p><p> void dis_now_T(void); //環(huán)境溫度測量模式</p><p> void dis_body_T(void); //體溫模式測量模式</p><p> void dis_set_T(void); //溫度上限</p><p> void dis_set_k(void); //溫度下
87、限</p><p> void dis_save_data(void); //數(shù)據(jù)保存</p><p> void Dele_data(void); //數(shù)據(jù)刪除</p><p> void Datashow(unsigned char ddH , unsigned char ddL); //數(shù)據(jù)顯示</p><p> void
88、 lcd_write_command(unsigned char command,unsigned char wait_en); </p><p> void lcd_write_data(unsigned char char_data);</p><p> void wait_enable(void); //使能程序</p><p> void d
89、isplay_a_char(unsigned char position,unsigned char char_data);</p><p> void display_a_string(unsigned char col,unsigned char *ptr);</p><p> void delay_1ms(void);</p><p> void del
90、ay02s(void); //延時</p><p> void delay10ms(void); //延時</p><p> void delay_nms(unsigned int n); //延時</p><p> void dis_chang_number(void); </p><p> void dis_
91、delet_data(void); //刪除數(shù)據(jù)</p><p> void dis_set_datanum(void); //設置</p><p> void dis_data1(void);</p><p> unsigned char ID=8;</p><p> unsigned long temperar
92、ue; //全局變量(溫度)</p><p> unsigned long T=300000; //用于設定上限溫度的變量</p><p> unsigned long K=100000; //用于設定下限溫度的變量</p><p> unsigned long dd=1;</p><p>
93、void ReadSumNum(void); //讀24C08中</p><p> void Read_data(void); //讀數(shù)據(jù)函數(shù)</p><p> unsigned char str1[]=" "; //用于液晶顯示的字符串變量</p><p> unsign
94、ed char str2[]=" "; //用于液晶顯示的字符串變量</p><p> unsigned char temp;</p><p> unsigned char temp1;</p><p> unsigned char Led0,Led1,Led2,LedDot; //全局變量<
95、;/p><p> bit bitReadChange = 0; //標志位</p><p> bit bitChange = 1; //標志位</p><p> bit bitReadFirst = 1; //標志位</p><p> u
96、nsigned char DataH1; //數(shù)據(jù)高8位的變量</p><p> unsigned char DataL1; //數(shù)據(jù)低8位的變量</p><p> unsigned char Point; //全局變量,用于指向顯示保存的數(shù)據(jù)</p><p> u
97、nsigned char Point1; //臨時變量,用于替換Point </p><p> unsigned long DataBuf;</p><p> void sent_data(unsigned char Dat); //發(fā)送數(shù)據(jù) </p><p> void Rs232_int(void
98、); //232初始化</p><p> void dis_start(void);</p><p> DS18D20程序代碼</p><p> uchar DataH;</p><p> uchar DataL;</p><p> unsigned long Data;
99、</p><p> void Delay (uchar us)</p><p><b> {</b></p><p> while (--us);</p><p><b> }</b></p><p> bit init_18b20()//1820初始化</
100、p><p><b> {</b></p><p> uchar n=0;</p><p> bit flag=0;</p><p><b> DQ=1;</b></p><p><b> _nop_();</b></p><p&
101、gt;<b> DQ=0;</b></p><p> Delay(255);</p><p> Delay(20); //550us</p><p><b> DQ=1;</b></p><p> Delay(55);</p><p> if(DQ==0) f
102、lag=1; //detect 1820 success!</p><p> else flag=0; //detect 1820 fail!</p><p> Delay(100);</p><p><b> DQ=1;</b></p><p> return f
103、lag;</p><p><b> }</b></p><p> void write1820_byte (uchar wr) //單字節(jié)寫入</p><p><b> {</b></p><p><b> uchar i;</b></p>
104、<p> for (i=0;i<8;i++)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p><b> _nop_();</b></p><p> DQ=wr&0x01;</p>
105、<p> Delay(20);//45us</p><p><b> DQ=1;</b></p><p><b> wr>>=1;</b></p><p><b> } </b></p><p><b> }</b>&l
106、t;/p><p> uchar read1820_byte (void) //讀取單字節(jié)</p><p><b> {</b></p><p> uchar i,u=0;</p><p> for(i=0;i<8;i++)</p><p><b> {&l
107、t;/b></p><p><b> DQ=0;</b></p><p><b> u>>=1;</b></p><p><b> DQ=1;</b></p><p><b> if(DQ==1)</b></p>&
108、lt;p> u|=0x80; </p><p> Delay(18);//40us</p><p><b> }</b></p><p> return(u); </p><p><b> }</b></p><p> //對從DS18
109、B20讀出的溫度值(ddh,ddl)進行處理,送顯示緩沖區(qū)</p><p> void DataCoding(unsigned char ddH , unsigned char ddL)</p><p><b> {</b></p><p> Data = ddH * 256 + ddL;</p><p> Da
110、ta = Data * 625;</p><p><b> }</b></p><p> void Get_temperarue(void)</p><p><b> {</b></p><p> if (init_18b20 ())</p><p><b>
111、; {</b></p><p> write1820_byte (0xcc); //skip rom</p><p> write1820_byte (0x44); //temp convert</p><p><b> }</b></p><p> Delay(35);<
112、/p><p> if (init_18b20 ())</p><p> { </p><p> write1820_byte (0xcc); //skip rom</p><p> write1820_byte (0xbe); //read temp</p><p&g
113、t; DataL = read1820_byte();</p><p> DataH = (read1820_byte()&0x0f);</p><p> DataCoding( DataH, DataL );</p><p><b> }</b></p><p><b> }</
114、b></p><p> HS1602程序源碼</p><p><b> //液晶初始化</b></p><p> void lcd_init(void)</p><p><b> {</b></p><p> delay_nms(15);</p>
115、<p> lcd_write_command(0x38,0);//顯示模式設置三次(此時不管lcd空閑與否)</p><p> delay_nms(5);</p><p> lcd_write_command(0x38,0);</p><p> delay_nms(5);</p><p> lcd_write_comma
116、nd(0x38,0);</p><p> delay_nms(5);</p><p> lcd_write_command(0x38,1);//顯示模式設置(從此之后均需lcd空閑)</p><p> lcd_write_command(0x08,1);//顯示關閉</p><p> lcd_write_command(0x01,1)
117、;//顯示清屏</p><p> lcd_write_command(0x06,1);//顯示光標移動設置</p><p> lcd_write_command(0x0c,1);//顯示開及光標設置</p><p><b> }</b></p><p> //寫指令函數(shù): E=高脈沖 RS=0 RW=0</
118、p><p> // command為指令,wait_en指定是否要檢測LCD忙信號</p><p> void lcd_write_command(unsigned char command,unsigned char wait_en) </p><p><b> {</b></p><p> uchar xdata
119、 *dig;</p><p> if(wait_en)wait_enable(); //若wait_en為1,則要檢測LCD忙信號,等待其空閑</p><p> dig=&DIGPORT;</p><p> *dig=command;</p><p><b> }</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于ds18b20溫度傳感器的數(shù)字溫度計設計畢業(yè)設計
- 畢業(yè)設計---ds18b20做溫度傳感器的數(shù)字溫度計
- 基于ds18b20溫度傳感器的數(shù)字溫度計設計說明
- 基于ds18b20溫度傳感器的數(shù)字溫度計設計說明
- 畢業(yè)設計---ds18b20數(shù)字溫度計的設計
- 畢業(yè)設計----ds18b20數(shù)字溫度計論文
- 傳感器課程設計-----ds18b20數(shù)字溫度計的設計
- ds18b20數(shù)字溫度計的設計
- 基于ds18b20的單總線數(shù)字溫度計畢業(yè)設計
- 基于ds18b20的溫度計設計
- 畢業(yè)設計---ds18b20數(shù)字溫度計(含外文翻譯)
- 課程設計--ds18b20數(shù)字溫度計
- ds18b20數(shù)字溫度計設計課程設計
- 畢業(yè)設計---基于ds18b20的數(shù)字溫度計的設計與實現(xiàn)
- 課程設計-基于ds18b20數(shù)字溫度計的設計
- ds18b20 數(shù)字溫度計外文翻譯
- 基于c51,ds18b20溫度計畢業(yè)設計
- 基于ds18b20的數(shù)字溫度計設計與實現(xiàn)
- ds18b20溫度計課程設計
- 外文翻譯---ds18b20 數(shù)字溫度計
評論
0/150
提交評論