

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)字測(cè)溫計(jì)設(shè)計(jì)</b></p><p> 摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù)。在工業(yè)生產(chǎn)中溫度是常用的被控參數(shù),而采用單片機(jī)來(lái)對(duì)這些被控參數(shù)進(jìn)行控制已成為當(dāng)今的主流。</p><p> 本文介紹了基于AT89S51單片機(jī)的測(cè)溫系統(tǒng),描述了利用DS18B20開發(fā)測(cè)溫
2、系統(tǒng)的過(guò)程,對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳實(shí)的分析,對(duì)各部分的電路也逐一進(jìn)行了介紹,該系統(tǒng)靈活的實(shí)現(xiàn)了溫度采集和顯示,且可設(shè)定上下限報(bào)警溫度,使用起來(lái)十分方便,適合于我們?nèi)粘I詈蜕a(chǎn)中的溫度測(cè)量,該系統(tǒng)結(jié)構(gòu)相對(duì)簡(jiǎn)單,抗干擾能力較強(qiáng),適合于不同環(huán)境下溫度測(cè)量,有著廣闊的應(yīng)用前景。</p><p> 關(guān)鍵詞:AT89S51單片機(jī) DS18B20 溫度測(cè)量</p>
3、<p> Abstract:With the progress and development of era,microcontroller technology has become popular in our life,in the work,the scientific research and various fields,has become a relatively mature technology.The
4、temperature measurement method and device of the highlights is very important.Posed by the single chip temperature sensor and temperature measurement system can be widely applied in many fields.</p><p><b
5、> 目錄</b></p><p><b> 第1章 緒論1</b></p><p> 1.2 選題的目的和意義2</p><p> 1.2.1選題的目的2</p><p> 1.2.2選題的意義2</p><p> 第2章 數(shù)字溫度計(jì)的設(shè)計(jì)方案4</p
6、><p> 2.1 設(shè)計(jì)方案的確立及論證4</p><p> 2.1.1 溫度傳感器DS18B20的選擇4</p><p> 2.1.2 顯示器的選擇5</p><p> 2.1.3 單片機(jī)STC89C52的選擇5</p><p> 第3章 系統(tǒng)硬件電路的設(shè)計(jì)7</p><p>
7、 3.1 主控制器7</p><p> 3.1.1 AT89S51的介紹7</p><p> 3.1.2 DS18B20的介紹9</p><p> 3.1.3 DS18B20使用的注意事項(xiàng)16</p><p> 3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)17</p><p> 3.2.1 時(shí)鐘電路17</
8、p><p> 3.2.2 復(fù)位電路18</p><p> 3.2.3 最小系統(tǒng)19</p><p> 3.3 DS18B20與單片機(jī)接口電路的設(shè)計(jì)20</p><p> 3.4 顯示電路的設(shè)計(jì)20</p><p> 3.4.1 數(shù)碼管簡(jiǎn)介20</p><p> 第4章 系統(tǒng)程序
9、的設(shè)計(jì)24</p><p> 4.1 系統(tǒng)設(shè)計(jì)內(nèi)容24</p><p> 4.1.1 主程序24</p><p> 4.1.2 讀出溫度子程序24</p><p> 4.1.3 溫度轉(zhuǎn)換命令子程序25</p><p> 4.1.4 計(jì)算溫度子程序25</p><p> 4
10、.1.5 溫度數(shù)據(jù)的計(jì)算處理方法26</p><p> 4.2 源程序27</p><p> 4.2.1 DS18B20的各條ROM命令27</p><p> 第5章 調(diào)試及性能分析29</p><p> 5.1 系統(tǒng)的調(diào)試29</p><p> 5.2 性能分析30</p><
11、;p><b> 結(jié)論31</b></p><p> 社會(huì)經(jīng)濟(jì)效益分析32</p><p><b> 致謝33</b></p><p><b> 參考文獻(xiàn)34</b></p><p><b> 附錄135</b></p>
12、<p> 附錄2錯(cuò)誤!未定義書簽。</p><p><b> 附錄336</b></p><p><b> 附錄437</b></p><p><b> 第1章 緒論</b></p><p> 1.1選題的目的和意義</p><
13、p> 1.1.1選題的目的</p><p> 使用單片機(jī)AT89S51和DS18B20設(shè)計(jì)一個(gè)溫度計(jì),能夠測(cè)量25 ~99℃之間的溫度值,顯示在LCD液晶屏上。溫度計(jì)的測(cè)量精度為0.1℃。通過(guò)這次設(shè)計(jì)能夠更加了解數(shù)字溫度計(jì)的工作原理和熟悉單片機(jī)的發(fā)展和應(yīng)用,鞏固所學(xué)的知識(shí)。</p><p> 1.1.2選題的意義</p><p> 隨著單片機(jī)技術(shù)的不斷
14、發(fā)展,單片機(jī)在日用電子產(chǎn)品中的應(yīng)用越來(lái)越廣泛,溫度傳感器DS18B20具有性能穩(wěn)定、靈敏度高、抗干擾能力強(qiáng)、使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于冰箱、空調(diào)器、糧倉(cāng)等日常生活中溫度的測(cè)量和控制。</p><p> 又隨著電子技術(shù)的發(fā)展,人們的生活日趨數(shù)字化,多功能的數(shù)字溫度計(jì)可以給我們的生活帶來(lái)很大的方便;支持“一線總線”接口的溫度傳感器簡(jiǎn)化了數(shù)字溫度計(jì)的設(shè)計(jì),降低了成本。</p><p> 本課
15、題研究的重要意義在于生產(chǎn)過(guò)程中隨著科技的不斷發(fā)展,現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級(jí)的增長(zhǎng),而如何準(zhǔn)確而又迅速的獲得這些參數(shù),就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是數(shù)字溫度傳感器技術(shù),在我國(guó)各領(lǐng)域已經(jīng)應(yīng)用的非常廣泛可以說(shuō)是滲透到社會(huì)的每一個(gè)領(lǐng)域,與人民的生活和環(huán)境的溫度息息相關(guān)。</p&g
16、t;<p> 第2章 數(shù)字溫度計(jì)的設(shè)計(jì)方案</p><p> 2.1 設(shè)計(jì)方案的確立及論證</p><p><b> 基本功能要求:</b></p><p> (1)溫度測(cè)量范圍:20~100度</p><p> (2)測(cè)量精度:0.5度</p><p> (3)顯示方式
17、:四位顯示</p><p> (4)能夠運(yùn)用Protues仿真</p><p><b> 擴(kuò)展功能要求:</b></p><p> (1)做出實(shí)物并調(diào)試成功</p><p><b> (2)多點(diǎn)測(cè)試</b></p><p> (3)多點(diǎn)溫度同時(shí)顯示</p>
18、;<p> 2.1.1 溫度傳感器DS18B20的選擇</p><p><b> 方案一:水銀溫度計(jì)</b></p><p> 在生活中我們經(jīng)??吹剿y溫度計(jì),它只能作為就地監(jiān)督的儀表,用它來(lái)測(cè)量溫度時(shí),由于讀數(shù)時(shí)用眼睛觀察,主觀因素大,容易造成誤差大,而且不同是水銀溫度計(jì)量程不同,在讀數(shù)前需要看清它的最小分度值,還有它有熱慣性,需要等到溫度計(jì)達(dá)到
19、穩(wěn)定狀態(tài)后才能讀數(shù),比較麻煩,并且水銀有毒,不小心打破后接觸到水銀,對(duì)人體傷害大,所以危險(xiǎn)性較高。</p><p> 方案二:傳統(tǒng)測(cè)溫元件</p><p> 傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,其缺點(diǎn)有:硬件電路復(fù)雜;軟件調(diào)試復(fù)雜;制作成本高。</p><p> 方案三:DS18B2
20、0傳感器測(cè)溫</p><p> 本設(shè)計(jì)采用DS18B20作為檢測(cè)元件</p><p> DS18B20可以直接讀出被測(cè)溫度值,特點(diǎn)是成本低,結(jié)構(gòu)簡(jiǎn)單,便于使用。</p><p> 所以本設(shè)計(jì)采用方案三,用DS18B20作為溫度傳感器。</p><p> 2.1.2 顯示器的選擇</p><p> 數(shù)碼管足以實(shí)
21、現(xiàn)溫度的顯示,所以在本設(shè)計(jì)中采用數(shù)碼管顯示。</p><p> 2.1.3 單片機(jī)AT89S51的選擇</p><p> 對(duì)于單片機(jī)的選擇,可以考慮使用8031與8051系列,由于8031沒有內(nèi)部RAM,系統(tǒng)又需要大量?jī)?nèi)存存儲(chǔ)數(shù)據(jù),因而不適用。單片機(jī)AT89S51 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電
22、池供電,因此選用AT89S51更適合。</p><p> 按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由4個(gè)模塊組成;主控制器、測(cè)溫電路、顯示電路。數(shù)字溫度計(jì)總體設(shè)計(jì)電路結(jié)構(gòu)框圖如圖2-1所示:</p><p> 圖2-1 系統(tǒng)框圖</p><p> 第3章 系統(tǒng)硬件電路的設(shè)計(jì)</p><p><b> 3.1 主控制器</b&
23、gt;</p><p> 單片機(jī)AT89S51是低功耗,高性能 CMOS8 位單片機(jī),片內(nèi)含 4kbytes 的可編程的 Flash 只讀程序存儲(chǔ)器,兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。它集 Flash 程序存儲(chǔ)器既可在線編程(ISP),也可用傳統(tǒng)方法進(jìn)行編程。</p><p> 3.1.1 AT89S51的介紹</p><p> AT89S51主要特性及引腳
24、如下</p><p> ●與MCS-51 兼容</p><p> ●4K字節(jié)可編程閃爍存儲(chǔ)器</p><p> ●全靜態(tài)工作:0Hz-24Hz</p><p> ●三級(jí)程序存儲(chǔ)器鎖定</p><p> ●128*8位內(nèi)部RAM</p><p> ●32可編程I/O線</p>
25、;<p> ●兩個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b> ●5個(gè)中斷源</b></p><p><b> ●可編程串行通道</b></p><p> ●低功耗的閑置和掉電模式</p><p> ●片內(nèi)振蕩器和時(shí)鐘電路 圖 3-2 AT89S51單
26、片機(jī)引腳圖</p><p> AT89S51 單片機(jī)為40 引腳雙列直插式封裝。其引腳排列和邏輯符號(hào)如圖3-2 所示。各引腳功能簡(jiǎn)單介紹如下:</p><p> ●VCC:供電電壓 </p><p> ●GND:接地 </p&g
27、t;<p> ●P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每個(gè)管腳可吸收8TTL門電流。當(dāng)P0口的管腳寫“1”時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部電位必須被拉高。</p><p> ●P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖
28、器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p> ●P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時(shí),P2口的管腳電位被外部
29、拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉的優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p> ●P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3
30、口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入時(shí),由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89S51的一些特殊功能口:</p><p> P3.0 RXD(串行輸入口)</p><p> ??P3.1 TXD(串行輸出口)</p><p> ??P3.2 INT0(外部中斷0)</p>
31、<p> ??P3.3 INT1(外部中斷1)</p><p> ??P3.4 T0(記時(shí)器0外部輸入)</p><p> ??P3.5 T1(記時(shí)器1外部輸入)</p><p> ??P3.6 WR (外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> ??P3.7 RD (外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><
32、p> 同時(shí)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> ●RST、ALE / PROG 、PSEN、XTAL1、XTAL2:等等筆者就不一一贅述,詳細(xì)請(qǐng)參照相關(guān)資料。</p><p> 3.1.2 DS18B20的介紹</p><p> DS18B20數(shù)字溫度傳感器接線方便,耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小
33、空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。</p><p> 圖3-3 DS18B20的實(shí)物管腳分布圖</p><p> DS18B20引腳及特點(diǎn) </p><p><b> ?。?)引腳功能說(shuō)明</b></p><p><b> GND是地址信號(hào);</b></p><p> D
34、Q是數(shù)據(jù)輸入/輸出引腳,開漏單總線接口引腳,當(dāng)被用在寄生電源下,也可以向器件提供電源;</p><p> VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。</p><p> ?。?)DS18B20功能特點(diǎn)</p><p> 1、采用單總線技術(shù),只需一根I/O線,在一根線上能掛接多個(gè)DS18B20。</p><p> 2、每個(gè)DS
35、18B20具有一個(gè)特有的64位序列號(hào),依據(jù)序列號(hào)訪問(wèn)地應(yīng)的器件。</p><p> 3、低壓供電,電源范圍從3.0~5.5V,可以本地供電,也可以直接從數(shù)據(jù)線竊取電源(寄生電源方式)。</p><p> 4、測(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi)誤差為±0.5℃。</p><p> 用戶可自設(shè)定報(bào)警上下限溫度。</p>
36、<p> 5、報(bào)警搜索命令可識(shí)別和尋址超過(guò)程序限定溫度(溫度報(bào)警條件)的器件。</p><p> 6、分辨率由用戶設(shè)置為9~12位。</p><p> 7、D將檢測(cè)到溫度值轉(zhuǎn)化為數(shù)字量,與主控制器進(jìn)行數(shù)據(jù)通信。</p><p> 8、電源極性接反時(shí),溫度計(jì)不能正常工作。</p><p> DS18B20的內(nèi)部結(jié)構(gòu)<
37、;/p><p> ?。?)64位激光ROM</p><p> 每一個(gè)DS18B20包括一個(gè)唯一個(gè)64位長(zhǎng)的ROM編碼。64位ROM的位結(jié)構(gòu)如下圖3-5所示。開始的8位是單線產(chǎn)品系列編碼(DS18B20編碼是10h);接著的48位是每個(gè)器件唯一的系列號(hào);最后的8位是開始56位CRC檢驗(yàn)碼。64位ROM和ROM操作控制部分允許DS18B20作為一個(gè)單線器件工作并遵循“單線總線系統(tǒng)”一節(jié)中所詳述的
38、單線協(xié)議。直到ROM操作協(xié)議被滿足,DS18B20控制部分的功能是不可訪問(wèn)的。</p><p> MSB LSB MSB LSB MSB LSB</p><p> 圖3-5 64位ROM結(jié)構(gòu)框圖</p><p> ?。?)運(yùn)用—報(bào)警信號(hào) </p><p> TH或TL的最高比較位對(duì)
39、應(yīng)于16位溫度寄存器符號(hào)位。若溫度測(cè)量的結(jié)果低于TL或者高于TH,器件內(nèi)告警標(biāo)志將置位。每次溫度測(cè)量更新此標(biāo)志。只要告警標(biāo)志置位,DS18B20將對(duì)告警搜索命令做出響應(yīng)。這允許并聯(lián)接許多DS18B20,同時(shí)進(jìn)行溫度測(cè)量。</p><p> ?。?)CRC產(chǎn)生 </p><p> DS18B20有一存貯在64位ROM的最高有效字節(jié)內(nèi)的8位CRC???/p>
40、線上的主機(jī)可以根據(jù)64位ROM的前56位計(jì)算機(jī)CRC的值并把它與存貯在DS18B20內(nèi)的值進(jìn)行比較以決定ROM的數(shù)據(jù)是否已被主機(jī)正確地接收。CRC的等效多項(xiàng)式函數(shù)為:</p><p> CRC=X8+X5+X4+1 (公式3.1) </p><p> DS18B20也利用與上述相同的多項(xiàng)式函數(shù)產(chǎn)生一個(gè)8位CRC值并把此值提供給總線的主機(jī)以確認(rèn)數(shù)
41、據(jù)字節(jié)的傳送。當(dāng)存貯在DS18B20內(nèi)或由DS18B20計(jì)算得到的CRC值與總線主機(jī)產(chǎn)生的值不相符合時(shí),在DS18B20內(nèi)沒有電路來(lái)阻住命令序列的繼續(xù)執(zhí)行。</p><p> ?。?)存貯器 </p><p> DS18B20的存貯器由一個(gè)高速暫存(便箋式)RAM和一個(gè)非易失性、電可擦除EEPROM組成,后者存貯高溫度和低溫度觸發(fā)器TH和TL。暫存存貯器有助于在單線通信時(shí)確
42、保數(shù)據(jù)的完整性。數(shù)據(jù)首先寫入暫存存貯器,在那里它可以被讀回。當(dāng)數(shù)據(jù)被校驗(yàn)之后,復(fù)制暫存存貯器的命令把數(shù)據(jù)傳送到非易失性EEPROM。這一過(guò)程確保了更改存貯器時(shí)數(shù)據(jù)的完整性。</p><p> DS18B20的測(cè)溫原理 </p><p> 如圖3-11所示,圖中低溫度系數(shù)振蕩器的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫
43、度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。</p><p> 圖3-11 DS18B20測(cè)溫原理圖</p><p> 圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。高溫度系數(shù)振蕩器決定計(jì)數(shù)門的開啟時(shí)間,測(cè)量前,將-55℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器和溫度寄存器中,減法計(jì)數(shù)器和溫度寄存器被預(yù)置在
44、-55℃所對(duì)應(yīng)的基數(shù)值。</p><p> 另外,DS18B20單線通信功能是分時(shí)完成的,所以讀/寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。</p><p> 3.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)</p><p> 單片機(jī)最小系統(tǒng)就是指能使單片機(jī)工作的最少的器件構(gòu)成的系統(tǒng)。因?yàn)閱纹瑱C(jī)已經(jīng)包含了數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,所以只要在其外部加上時(shí)鐘電路和復(fù)位電
45、路就可以構(gòu)成單片機(jī)最小系統(tǒng)。</p><p> 3.2.1 時(shí)鐘電路</p><p> 圖3-12是時(shí)鐘電路的PROTEUS仿真圖。</p><p><b> 圖3-12時(shí)鐘電路</b></p><p> 單片機(jī)允許的振蕩晶體可在1.2~24MHz之間選擇,一般為11.0592MHz。電容C2,C3的取值對(duì)振蕩頻
46、率輸出的穩(wěn)定性、大小及振蕩電路起振速度有一定的影響,可在20~100pF之間選擇,典型值位30pF。</p><p> 3.2.2 復(fù)位電路</p><p> 計(jì)算機(jī)每次開始工作,CPU和系統(tǒng)中的其他部件都必須要有一個(gè)確定的初值,即復(fù)位狀態(tài)。圖3-13是單片機(jī)復(fù)位電路仿真圖。</p><p> 圖3-13 復(fù)位電路</p><p>
47、單片機(jī)RST引腳是高電平有效。單片機(jī)在上電瞬間C1充電,RST引腳端引出正脈沖,只要RST端保持兩個(gè)機(jī)械周期以上的高電平,單片機(jī)就能復(fù)位。在單片機(jī)工作后,如果還想再次復(fù)位,只需按下開關(guān),單片機(jī)就能重新變成復(fù)位狀態(tài)。</p><p> 當(dāng)晶體振蕩頻率為12MHz時(shí),RC的典型值為C=10μF,R=8.2KΩ。</p><p> 3.2.3 最小系統(tǒng)</p><p>
48、; 圖3-14是單片機(jī)最小系統(tǒng)的完整仿真圖。</p><p> 圖3-14 單片機(jī)最小系統(tǒng)</p><p> 3.3 DS18B20與單片機(jī)接口電路的設(shè)計(jì) </p><p> DS18B20可以采用兩種供電方式:一種是電源供電方式,另一種是寄生電源供電。</p><p>
49、 當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最長(zhǎng)為500ms。采用寄生電源供電方式時(shí),VDD和GND端接地。因?yàn)閱尉€制只有一根線,所以發(fā)送接口必需是三態(tài)的。</p><p> 3.4 顯示電路的設(shè)計(jì)</p><p> 3.4.1 2.6.1 LED數(shù)碼管主要技術(shù)參數(shù)</p><p><b> 數(shù)碼管使用
50、條件:</b></p><p> a、段及小數(shù)點(diǎn)上加限流電阻</p><p> b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點(diǎn):根據(jù)發(fā)光顏色決定</p><p> c、使用電流:靜態(tài):總電流 80mA(每段 10mA);動(dòng)態(tài):平均電流 4-5mA 峰值電流 100mA</p
51、><p> 上圖是七段數(shù)碼管引腳圖,其中共陽(yáng)極數(shù)碼管的引腳圖和共陰極的是一模一樣的,4位數(shù)碼管的引腳圖數(shù)碼管的使用注意說(shuō)明:</p><p> (1)數(shù)碼管表面不要用手觸摸,不要用手去弄引角;</p><p> ?。ǎ玻┖附訙囟龋海玻叮岸龋缓附訒r(shí)間:5S</p><p> ?。ǎ常┍砻嬗斜Wo(hù)膜的產(chǎn)品,可以在使用前撕下來(lái)。</p>
52、<p> 2.6.2 LED數(shù)碼管的引腳說(shuō)明</p><p> 分為共陽(yáng)極與共陰極兩種,</p><p> 對(duì)于單個(gè)數(shù)碼管,從正面看進(jìn)去,以左下角那個(gè)腳為1腳,逆時(shí)針方向?yàn)?10腳,左上角那個(gè)腳便是10腳了,上兩個(gè)圖的數(shù)字分別與這10個(gè)管腳對(duì)應(yīng)。注意,3腳和8腳是連通的,這兩個(gè)都是公共腳。</p><p> 另外常用的是四位數(shù)碼管,內(nèi)部的數(shù)碼管共
53、用a~dp這幾根數(shù)據(jù)線,由于里面有4個(gè)數(shù)碼管,加上a~dp,一共有12個(gè)引腳,下圖是一個(gè)共陰四位數(shù)碼管內(nèi)部結(jié)構(gòu)圖(。引腳排列依然是從左下角的那個(gè)腳(1腳)開始,以逆時(shí)針方向依次為1~12腳,下圖中的數(shù)字與之一一對(duì)應(yīng)。</p><p> 圖2-18位共陽(yáng)數(shù)碼管內(nèi)部結(jié)構(gòu)</p><p> 2.6.3數(shù)碼管編碼說(shuō)明</p><p> 4位數(shù)碼管編碼說(shuō)明,如4.5表所
54、示:</p><p> 表4.5 控制命令表</p><p> 第4章 系統(tǒng)程序的設(shè)計(jì)</p><p> 4.1 系統(tǒng)設(shè)計(jì)內(nèi)容</p><p> 系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、測(cè)量序列號(hào)子程序、顯示數(shù)據(jù)刷新子程序等。</p><p> 4.1.1主程序 <
55、/p><p> 主程序主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出處理DS18B20的測(cè)量溫度值。主程序流程圖如圖4-1所示:</p><p> 圖4-1 主程序流程圖</p><p> 4.1.2讀出溫度子程序</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。</
56、p><p> 讀出溫度子程序流程圖如圖4-2所示:</p><p> 圖4-2 讀出溫度子程序流程圖</p><p> 4.1.3 溫度轉(zhuǎn)換命令子程序</p><p> 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖
57、如圖4-3所示:</p><p> 圖4-3 溫度轉(zhuǎn)換命令子程序流程圖</p><p> 4.1.4計(jì)算溫度子程序 </p><p> 計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定。計(jì)算溫度子程序流程圖如圖4-4所示:</p><p>
58、 圖4-4 計(jì)算溫度子程序流程圖</p><p> 4.1.5 溫度數(shù)據(jù)的計(jì)算處理方法</p><p> 從DS18B20讀取出的二進(jìn)制值必須轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。DS18B20的轉(zhuǎn)換精度為9~12位,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0.0625為步進(jìn)的,即溫度值為寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。<
59、/p><p> 通過(guò)觀察表4-1可以發(fā)現(xiàn),一個(gè)十進(jìn)制與二進(jìn)制間有很明顯的關(guān)系,就是把二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)字節(jié)的二進(jìn)制化為十進(jìn)制后,就是溫度值的百、十、個(gè)位字節(jié),所以二進(jìn)制值范圍是0~F,轉(zhuǎn)換成十進(jìn)制小數(shù)就是0.0625的倍數(shù)(0~15倍)。這樣需要4位的數(shù)碼管來(lái)表示小數(shù)部分。實(shí)際應(yīng)用不必這么高的精度,采用1位數(shù)碼管來(lái)顯示小數(shù),可以精確到0.1℃。</p><
60、p> 表4.5 二進(jìn)制與十進(jìn)制的近似對(duì)應(yīng)關(guān)系表</p><p><b> 4.2 源程序</b></p><p> 4.2.1 DS18B20的各條ROM命令</p><p> ?。?)Read ROM[33H]。這條命令允許總線控制器獨(dú)到DS18B20的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只要在總線上存在單只DS18B20
61、時(shí),才能使用該命令。如果總線上有不止一個(gè)從機(jī),則當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路連在一起形成相“與”的效果)。</p><p> ?。?)Match ROM[55H].這是一條匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS18B20.只有與64位ROM序列完全匹配的DS18B20才能響應(yīng)隨后的存儲(chǔ)器操作.所有與64位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖.這
62、條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用.</p><p> (3)Skip ROM[0CCH].這條命令允許總線控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下,可以節(jié)省時(shí)間.如果總線上不止一個(gè)從機(jī),則在Skip ROM命令之后跟著發(fā)一條讀命令.由于多個(gè)從機(jī)同時(shí)傳送信號(hào),所以總線上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路下拉效果相當(dāng)于相“與”)。</p><p> (4)Se
63、arch ROM[0F0H]。當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總線上有多少個(gè)器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64位編碼。</p><p> ?。?)Alarm Search[0ECH]。這條命令的流程與Search ROM相同。然而,只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況下,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于
64、TL。只要DS18B20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。</p><p> ?。?)Write Scratchpad[4EH]。這條命令向DS18B20的暫存器TH和TL中寫入數(shù)據(jù)。可以在任何時(shí)刻發(fā)出復(fù)位命令來(lái)中止寫入。</p><p> (7)Read Scratchapad[0BEH]。這條命令讀取暫存器的內(nèi)容。讀取將從第一字節(jié)開始,一直進(jìn)行下去,直
65、到第九字節(jié)(CRC)讀完。如果不想讀完所有字節(jié),則控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。</p><p> (8)Copy Scratchpad[48H]。這條命令把暫存器的內(nèi)容拷貝到DS18B20的E²PROM存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于把暫存器拷貝到E²PROM存儲(chǔ)器,則DS18B20就會(huì)輸
66、出一個(gè)0;如果拷貝結(jié)束,則DS18B20輸出1。如果使用寄生電源,則總線控制器必須在這條命令發(fā)出后立即啟動(dòng)強(qiáng)上拉,并最少保持10ms。</p><p> ?。?)Convert T[44H]。這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無(wú)需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行后DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于做時(shí)間轉(zhuǎn)換,則DS18B20將在總線上輸出0;如果溫度轉(zhuǎn)換成功,則輸
67、出1。如果使用寄生電源,則總線控制器必須在發(fā)出這條命令后立即啟動(dòng)強(qiáng)上拉,并保持500ms以上時(shí)間。</p><p> ?。?0)Recall E²[0B8H]。這條命令把報(bào)警觸發(fā)器里的值拷貝回暫存器。這種拷貝操作在DS18B20上電時(shí)自動(dòng)執(zhí)行,這樣器件一上電暫存器里馬上就存在有效的數(shù)據(jù)了。若在這條命令發(fā)出之后發(fā)出讀數(shù)據(jù)隙,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí):0表示忙;1表示完成。</p><
68、p> ?。?1)Read Power Supply[0B4H]。若把這條命令發(fā)給DS18B20后發(fā)出讀時(shí)間隙,器件會(huì)返回它的電源模式0:0表示寄生電源;1表示外部電源。</p><p> 第5章 調(diào)試及性能分析</p><p><b> 5.1 系統(tǒng)的調(diào)試</b></p><p> 硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后
69、可以用萬(wàn)用表測(cè)試或通電檢測(cè)。</p><p> 軟件測(cè)試本文利用Proteus與KEIL C51對(duì)單片機(jī)多點(diǎn)溫度測(cè)量系統(tǒng)進(jìn)行了仿真設(shè)計(jì).從本文結(jié)果可以看出,利用Proteus進(jìn)行單片機(jī)系統(tǒng)的仿真設(shè)計(jì)可以極大地簡(jiǎn)化單片機(jī)程序在目標(biāo)硬件上的調(diào)試工作,大幅度節(jié)省制作電路板的時(shí)間,對(duì)于提高產(chǎn)品的開發(fā)效率、降低開發(fā)成本等有重要作用.</p><p> 硬件電路的簡(jiǎn)單是以軟件的復(fù)雜為代價(jià)的,所以在
70、程序編寫和調(diào)試的過(guò)程中稍一粗心就會(huì)出現(xiàn)錯(cuò)誤,包括時(shí)間延時(shí)不夠,設(shè)置參數(shù)的類型有誤等錯(cuò)誤。</p><p> 本課題通過(guò)分析對(duì)比各種不同的溫度傳感器,選定DS18B20,這種單總線數(shù)字溫度傳感器的通信方式比較獨(dú)特,軟件編寫要求的比較新穎,特點(diǎn)突出。用其構(gòu)建的系統(tǒng)有很多優(yōu)點(diǎn):硬件連線簡(jiǎn)單,省去了使用模擬傳感器要進(jìn)行放大、A/D轉(zhuǎn)換等工作,由于它的級(jí)聯(lián)功能,一條總線可掛接多個(gè)傳感器測(cè)量不同位置的溫度,根據(jù)DS18B2
71、0唯一的序號(hào)識(shí)別不同傳感器在各自位置的溫度。</p><p> 需要注意的是, 在系統(tǒng)安裝及工作之前應(yīng)將主機(jī)逐個(gè)與DS18B20 掛接,以讀出其序列號(hào)。另外,由于DS18B20 單線通信功能是分時(shí)完成的,遵循嚴(yán)格的時(shí)隙概念,因此, 系統(tǒng)對(duì)DS18B20 和各種操作必須按協(xié)議進(jìn)行,即:初始化DS18B20 (發(fā)復(fù)位脈沖)—發(fā)ROM功能命令—發(fā)存儲(chǔ)器操作命令—處理數(shù)據(jù)。現(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,每一
72、個(gè)自帶地址,大大減少了系統(tǒng)的電纜數(shù),提高了系統(tǒng)的穩(wěn)定性和抗干擾性。</p><p> 通過(guò)調(diào)試成型系統(tǒng)發(fā)現(xiàn)了DS18B20除了上述優(yōu)點(diǎn)外,還有一些缺點(diǎn),如:簡(jiǎn)單的硬件連接的代價(jià)是復(fù)雜的軟件時(shí)序,DS18B20在測(cè)量溫度的時(shí)候,靈敏度不夠高,溫度快速變化時(shí)無(wú)法迅速顯示出其變化。通過(guò)一系列的實(shí)驗(yàn)發(fā)現(xiàn):由DS18B20構(gòu)建的測(cè)溫小系統(tǒng)適用于環(huán)境溫度監(jiān)控,對(duì)溫度小變化較敏感;不適合應(yīng)用于要求實(shí)時(shí)性強(qiáng)、溫度跨度大的測(cè)溫方
73、式。</p><p><b> 5.2 性能分析</b></p><p> 性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)同時(shí)進(jìn)行測(cè)量比較。由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在±0.1℃以內(nèi)。</p><p> 另外,0~100℃的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低壓供電特性可以做成電池供電的手持電子溫
74、度計(jì)。</p><p> DS18B20溫度計(jì)還可以在高低溫報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)溫控制等方面進(jìn)行應(yīng)用開發(fā),但在實(shí)際設(shè)計(jì)中應(yīng)注意一下問(wèn)題:</p><p> ?、貲S18B20工作時(shí)電流高達(dá)1.5mA,總線上掛接點(diǎn)數(shù)較多且同時(shí)進(jìn)行轉(zhuǎn)換時(shí)要考慮增加總線驅(qū)動(dòng),可用單片機(jī)端口在溫度轉(zhuǎn)換時(shí)導(dǎo)通一個(gè)MOSFET供電。</p><p> ②連接DS18B20的總線電纜是有長(zhǎng)度限
75、制的,因此在用DS18B20進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配等問(wèn)題。</p><p> ?、墼贒S18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào)。一旦某個(gè)DS18B20接觸不好或短線,當(dāng)程序讀該DS18B20時(shí),將沒有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)要給予一定的重視。</p><
76、p><b> 結(jié)論</b></p><p> 該基于DS18B20的多點(diǎn)溫度測(cè)量系統(tǒng)具有硬件結(jié)構(gòu)簡(jiǎn)單、易于制作、價(jià)格低廉、測(cè)量值精確和易于操作等許多優(yōu)點(diǎn),但由于實(shí)驗(yàn)室條件所限,暫時(shí)只做四點(diǎn)的溫度測(cè)量。但在實(shí)際應(yīng)用中可根據(jù)具體情況進(jìn)行更多點(diǎn)的擴(kuò)展和對(duì)多點(diǎn)進(jìn)行控制。隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),基于DS18B20的多點(diǎn)溫度測(cè)量系統(tǒng)已經(jīng)廣泛應(yīng)用于控制、化工等諸多領(lǐng)域
77、??傊?,本次畢業(yè)設(shè)計(jì)順利完成,基本達(dá)到了畢業(yè)設(shè)計(jì)的要求。</p><p> 本文在深入分析多點(diǎn)智能測(cè)溫系統(tǒng)的工作原理基礎(chǔ)上,完成了該系統(tǒng)設(shè)計(jì)和調(diào)試任務(wù),并且系統(tǒng)的性能誤差達(dá)到了任務(wù)書的要求,使之能達(dá)到現(xiàn)場(chǎng)運(yùn)行水平。</p><p> 總結(jié)一個(gè)學(xué)期的論文工作,得到以下結(jié)論: </p><p> 1.針對(duì)現(xiàn)有測(cè)溫系統(tǒng)的特點(diǎn),提出了一套應(yīng)用數(shù)字式溫度傳感器DS81B
78、20組建溫度測(cè)控網(wǎng)絡(luò)新型方案,該方案的突出特點(diǎn)是系統(tǒng)的數(shù)字化、快速化及其經(jīng)濟(jì)實(shí)用性。 </p><p> 2.以單總線為基本結(jié)構(gòu),采用ATMEL公司的 AT89S51單片機(jī)為總線命令,實(shí)現(xiàn)與DSl8B20的總線接口,并提供具體電路設(shè)計(jì)。 </p><p> 3.軟件編程采用模塊化、結(jié)構(gòu)化設(shè)計(jì),易于修改和維護(hù)。 </p><p> 由于時(shí)間和精力的限制,對(duì)后續(xù)的
79、研究還應(yīng)在以下方面逐步完善: </p><p> 1.應(yīng)用軟件的完善。溫度采集方面,一次命令全部單總線上的DS18B20進(jìn)行溫度轉(zhuǎn)換,減少系統(tǒng)所需時(shí)間。 </p><p> 2.進(jìn)一步完善系統(tǒng)的可靠性。由于實(shí)際經(jīng)驗(yàn)的欠缺,設(shè)計(jì)上難免有考慮不周之處。當(dāng)某一個(gè)傳感器出現(xiàn)故障時(shí),雖然系統(tǒng)能發(fā)現(xiàn)該測(cè)溫點(diǎn)故障,但是更換傳感器時(shí)涉及到其序列號(hào)的修改和應(yīng)用程序的修改,這些還需要在今后應(yīng)用時(shí)加以完善。
80、 </p><p> 3.可以增加控制部分,以后在該部分進(jìn)行PID算法控制,以提高控制精度。</p><p> 總之 ,本論文在新型數(shù)字溫度測(cè)控系統(tǒng)方面做了一定的研究工作。該系統(tǒng)初步完成了溫度測(cè)控方案的預(yù)定目標(biāo),為今后實(shí)現(xiàn)數(shù)字化與網(wǎng)絡(luò)化的溫度測(cè)控系統(tǒng)工程提供了一種參考。</p><p><b> 社會(huì)經(jīng)濟(jì)效益分析</b></p>
81、;<p> 本溫度測(cè)控系統(tǒng)可以產(chǎn)生的社會(huì)經(jīng)濟(jì)效益是顯而易見的。在工農(nóng)業(yè)許多場(chǎng)合,溫度測(cè)量和控制對(duì)生產(chǎn)起著非常重要的作用,通過(guò)溫度測(cè)控,可以更好的提高工農(nóng)業(yè)生產(chǎn)的產(chǎn)量和效率。</p><p> 本設(shè)計(jì)利用數(shù)字化的溫度傳感器作為載體,以AT89S51單片機(jī)為控制核心,通過(guò)對(duì)所測(cè)量的溫度值進(jìn)行控制和數(shù)據(jù)上傳,將數(shù)字信息上傳給上位機(jī)進(jìn)行進(jìn)一步的處理,從而可以實(shí)現(xiàn)這套系統(tǒng)的商品化和技術(shù)服務(wù)的穩(wěn)定性。本設(shè)計(jì)
82、所用的DS18B20溫度傳感器價(jià)格在每個(gè)二十元左右,AT89S51單片機(jī)的價(jià)格也不過(guò)十元,再加上其它的元器件和外圍的芯片及端口,總成本完全可以控制在一百元人民幣以內(nèi)。這套系統(tǒng)可以產(chǎn)生的功能強(qiáng)大,擴(kuò)展溫度傳感器端口后,可以同時(shí)對(duì)多個(gè)傳感器進(jìn)行測(cè)量和控制,并且只需添加DS18B20的初始化程序和與本設(shè)計(jì)兩點(diǎn)測(cè)控類似的程序即可以實(shí)現(xiàn),所以程序修改上也比較方便。</p><p> 本系統(tǒng)可以實(shí)現(xiàn)產(chǎn)品的專業(yè)化和工廠化大生
83、產(chǎn),應(yīng)用領(lǐng)域廣泛,例如,可以對(duì)小區(qū)內(nèi)的供暖系統(tǒng)進(jìn)行多點(diǎn)溫度監(jiān)控,實(shí)時(shí)處理DS18B20溫度傳感器上傳的數(shù)據(jù);可以在對(duì)溫度要求比較嚴(yán)格的車間內(nèi)進(jìn)行多點(diǎn)溫度測(cè)控,以保持室內(nèi)的精準(zhǔn)溫度;可以在化學(xué)反應(yīng)爐內(nèi)安裝本系統(tǒng),使化學(xué)反應(yīng)可以在精確的溫度條件下進(jìn)行等等。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 沙占友. 集成溫度傳感器原理與應(yīng)用. 北京
84、:機(jī)械工業(yè)出版社,2002, 84~95.</p><p> [2] 劉君華. 智能傳感器系統(tǒng). 西安:西安電子科技大學(xué)出版社,1999,83~105.</p><p> [3] 沙占友. 智能化傳感器原理與應(yīng)用. 北京:電子工業(yè)出版社,2004,99~108.</p><p> [4] 趙負(fù)圖. 傳感器集成電路手冊(cè). 北京:化學(xué)工業(yè)出版社,2002,692~
85、703.</p><p> [5] 張毅剛. MCS-51單片機(jī)原理及應(yīng)用. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004,81~94</p><p> [6] 李玉峰,倪虹霞 MCS-51系列單片機(jī)原理與接口技術(shù). 北京:人民郵電出版社,2004,187~216.</p><p> [7]胡漢才.單片機(jī)原理及其接口技術(shù)(第2版)[M].北京:清華大學(xué)出版社,200
86、4:49-75.</p><p> [8]樓然苗,胡佳文,李光飛,劉玉良,俞紅杰,李良兒.單片機(jī)實(shí)驗(yàn)與課程設(shè)計(jì)[M].杭州:浙江大學(xué)出版社,2010:127-148</p><p> [9]劉雨剛,洪炳林,郝文慧.基于DS18B20的高精度礦用溫度計(jì)傳感器設(shè)計(jì)[J].國(guó)外電子元器件,2006(12):35-37.</p><p> [10]黃亞,張益維.溫度傳
87、感器DS75LX與單片機(jī)的接口技術(shù)[J].國(guó)外電子元器件,2007(10):47-49.</p><p> [11]胡雪海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2004:59-75.</p><p> [12]談根林,李慧文,汪慶寶,李禮賢.微型計(jì)算機(jī)及其在測(cè)量中的應(yīng)用[M].北京:計(jì)量出版社,1983:89-105.</p><p> [1
88、3] 樓然苗,李光飛</p><p> [14]胡翔駿.電路分.單片機(jī)課程設(shè)計(jì)指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2007:46-55.析(第2版)[M].北京:高等教育出版社,2007:68-80.</p><p> [15] MAXIM NEW Releases Data Book. volum 1998</p><p> [16] omas C.B
89、artee.Computer Architecture and Logic Design[J].McGraw-Hill Inc. 1991.9</p><p> [17] G Jiang M Zhang, X Xie, S Li.Application on temperature control of DS18B2[J].Control Engineering of China, 2003</p>
90、<p><b> 附錄1電路原理圖</b></p><p><b> 數(shù)字溫度計(jì)原理圖</b></p><p> 測(cè)附錄2 溫度計(jì)實(shí)物圖</p><p> 附錄3測(cè)量序列號(hào)實(shí)物圖</p><p><b> 附錄4溫度計(jì)程序</b></p>
91、<p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P1^0; //數(shù)據(jù)傳輸線接單片機(jī)的相應(yīng)的引腳</p><p> sbit
92、smg1=P2^3;//第一位數(shù)碼管</p><p> sbit smg2=P2^2;//第二位數(shù)碼管</p><p> sbit smg3=P2^1;//第三位數(shù)碼管</p><p> sbit smg4=P2^0;//符號(hào)位第四位數(shù)碼管,當(dāng)為負(fù)溫時(shí)候顯示負(fù)號(hào)。</p><p> unsigned char tempL=0;
93、 //臨時(shí)變量低位(無(wú)符號(hào)字符變量)</p><p> unsigned char tempH=0; //臨時(shí)變量高位</p><p> unsigned int tempa; //溫度值(整型變量)</p><p> uchar TH=60; //設(shè)置初始高溫度</p><p> uchar TL=8; //
94、設(shè)置初始低溫度</p><p> uchar num;</p><p> uchar flag=0;//符號(hào)位標(biāo)志,0為正溫度,1為負(fù)溫度</p><p> uchar xianshi=0;</p><p> unsigned int temp,temp1;</p><p> unsigned char co
95、de smg_du[]={0x3f,0x24,0x5d,0x75,0x66,0x73,0x7b,0x25,0x7f,0x77,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};</p><p> unsigned int tt=0;</p><p> void delay_50us(uint t)</p><p><b> {&
96、lt;/b></p><p><b> uchar j;</b></p><p> for(;t>0;t--)</p><p> for(j=19;j>0;j--);</p><p><b> }</b></p><p> ///DS18B20&l
97、t;/p><p> void DS18_delay(int useconds)//延時(shí)函數(shù)</p><p><b> {</b></p><p><b> int s;</b></p><p> for (s=0; s<useconds;s++);</p><p>
98、<b> }</b></p><p> unsigned char Init_DS18B20(void)</p><p><b> {</b></p><p> unsigned char x=0;</p><p> DQ=0; //發(fā)送復(fù)位脈沖</p&g
99、t;<p> DS18_delay(29); //延時(shí)(>480ms)</p><p> DQ=1; //拉高數(shù)據(jù)線</p><p> DS18_delay(3); //等待(15~60ms) 等待存在脈沖</p><p> x=DQ; //獲得存在信號(hào)(用于判斷是否有器件)&
100、lt;/p><p> DS18_delay(25); // 等待時(shí)間隙結(jié)束</p><p> return(x); //返回存在信號(hào),0 = 器件存在, 1 = 無(wú)器件</p><p><b> }</b></p><p> ReadOneChar(void)//讀一個(gè)字節(jié)</p><p>
101、;<b> {</b></p><p> unsigned char i=0; </p><p> unsigned char dat=0;</p><p> for (i=8;i>0;i--) </p><p><b> {</b></p><p>
102、;<b> DQ=1;</b></p><p> DS18_delay(1);</p><p> DQ=0; </p><p> dat>>=1;//復(fù)合賦值運(yùn)算,等效dat=dat>>1(dat=dat右移一位后的值)</p><p><b> DQ=1;</
103、b></p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> DS18_delay(4);</p><p><b> }</b></p><p> return(dat);</p><p&g
104、t;<b> }</b></p><p> WriteOneChar(unsigned char dat)//有參函數(shù),功能是"寫",而寫的內(nèi)容就是括號(hào)內(nèi)的參數(shù)</p><p><b> { </b></p><p> unsigned char i=0; </p><p
105、> for(i=8;i>0;i--) </p><p><b> {</b></p><p> DQ=0; </p><p> DQ=dat&0x01;</p><p> DS18_delay(5);</p><p><b> DQ=1;<
106、;/b></p><p> dat>>=1;//復(fù)合賦值運(yùn)算,等效dat=dat>>1(dat=dat右移一位后的值)</p><p><b> }</b></p><p> DS18_delay(4);</p><p><b> }</b></p>
107、<p> unsigned int ReadTemperature(void)//返回讀取的溫度.</p><p><b> { </b></p><p> unsigned int tt; </p><p> Init_DS18B20(); //初始化,調(diào)用初始化函數(shù)</p><p> Wr
108、iteOneChar(0xcc); //跳過(guò)讀序列號(hào)的操作,調(diào)用寫函數(shù),寫0xcc指令碼(跳過(guò)讀序列號(hào))</p><p> WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換,調(diào)用寫函數(shù),寫0x44指令碼(啟動(dòng)溫度轉(zhuǎn)換)</p><p> DS18_delay(125); //轉(zhuǎn)換需要一點(diǎn)時(shí)間,延時(shí)</p><p> Init_DS
109、18B20(); //初始化,調(diào)用初始化函數(shù)</p><p> WriteOneChar(0xcc); //跳過(guò)讀序列號(hào)的操作,調(diào)用寫函數(shù),寫0xcc指令碼(跳過(guò)讀序列號(hào)?</p><p> WriteOneChar(0xbe); //調(diào)用寫函數(shù),寫0xbe指令碼,讀溫度寄存器(頭兩個(gè)值分別為溫度的低位和高位)</p><p> tempL=R
110、eadOneChar(); //讀出溫度的低位LSB</p><p> tempH=ReadOneChar(); //讀出溫度的高位MSB </p><p> if(tempH>=0x0f)</p><p><b> {</b></p><p> flag=1;tt=tempH;tt=tt<&
111、lt;8;tt=tt+tempL;tt=~tt;tt=tt+1;tempa=tt*6.25;</p><p><b> } </b></p><p> else {tempa=((tempH*256)+tempL)*6.25; flag=0;} //溫度轉(zhuǎn)換,擴(kuò)大100返回</p><p> return(tempa);//運(yùn)算結(jié)果返回到
112、函數(shù) </p><p><b> }</b></p><p> ///DS18B20</p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p
113、><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void display(void)</p><p><b> {</b></p>
114、<p> xianshi=0;</p><p> if(flag==1)//顯示負(fù)號(hào)</p><p><b> {</b></p><p> P2=0XFF;//關(guān)位選</p><p> P0=0X40;//產(chǎn)生負(fù)號(hào)位,</p><p> smg4=0; //開通第四位數(shù)碼
115、管</p><p> delay_50us(20);//數(shù)碼管延時(shí)</p><p><b> }</b></p><p> if((temp/100)!=0)</p><p><b> {</b></p><p><b> P2=0XFF;</b&g
116、t;</p><p> P0=P0=smg_du[temp/100];</p><p><b> smg3=0;</b></p><p> delay_50us(20);</p><p> xianshi=1;</p><p><b> }</b></p>
117、;<p> if((xianshi==1)||((temp%100/10)!=0)) </p><p><b> { </b></p><p><b> P2=0XFF;</b></p><p> P0=smg_du[temp%100/10];</p><p><b&g
118、t; smg2=0;</b></p><p> delay_50us(20);</p><p><b> }</b></p><p><b> P2=0XFF;</b></p><p> P0=smg_du[temp%10];</p><p><b
119、> smg1=0;</b></p><p> delay_50us(20);</p><p><b> P2=0XFF;</b></p><p><b> }</b></p><p> void main()</p><p><b>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)數(shù)字溫度計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)——基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)的數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì) 畢業(yè)設(shè)計(jì)
- 基于單片機(jī)控制的數(shù)字溫度計(jì)----畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的數(shù)字溫度計(jì)-畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì) 畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)--單片機(jī)設(shè)計(jì)數(shù)字溫度計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的數(shù)字語(yǔ)音溫度計(jì)
- 畢業(yè)設(shè)計(jì)(論文)單片機(jī)的數(shù)字溫度計(jì)控制
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 基于5單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論