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