版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)</b></p><p> 題目 八路溫度采集顯示系統(tǒng)設(shè)計(jì) </p><p> 選題性質(zhì):設(shè)計(jì)□報(bào)告□其他</p><p> 院 系 電子工程學(xué)院 </p><p> 專 業(yè) 電子信息工程技術(shù) </p><p> 班 級(jí) 20
2、10 級(jí) (2) 班 </p><p> 學(xué) 號(hào) </p><p> 學(xué)生姓名 X X X </p><p> 指導(dǎo)教師 X X </p><p><b> 畢業(yè)設(shè)計(jì)選題審批單</b></p><p> 年級(jí) 10
3、 專業(yè) 電子工程信息技術(shù) 班級(jí) 2班 </p><p> 2013 屆 電子工程 學(xué)院</p><p> 畢業(yè)設(shè)計(jì)開題報(bào)告及進(jìn)度要求</p><p> 年級(jí) 2010 班級(jí) 2班 </p><p><b> 摘 要</b></p><p>
4、 在實(shí)際生產(chǎn)和生活等各個(gè)領(lǐng)域中,溫度是環(huán)境因素不可或缺的一部分,對(duì)溫度進(jìn)行及時(shí)精確的控制和檢測(cè)顯得尤為重要。</p><p> 本次設(shè)計(jì)在控制成本的前提下,設(shè)計(jì)了一款高精度、可同時(shí)檢測(cè)八路溫度并由液晶顯示器對(duì)各路溫度值進(jìn)行顯示的溫度檢測(cè)顯示系統(tǒng)。該系統(tǒng)以AT89S51為控制核心,采用可編程單總線數(shù)字式溫度傳感器DS18B20進(jìn)行溫度采集,八路溫度值由六位LED顯示器顯示。系統(tǒng)正常運(yùn)行時(shí),其測(cè)溫范圍為-55℃~
5、+125℃,該系統(tǒng)在現(xiàn)代電子工業(yè)飛速發(fā)展的時(shí)期有良好的應(yīng)用前景。</p><p> 關(guān)鍵詞:AT89S51、多路溫度檢測(cè)、LED顯示、 DS18B20</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p><b> 目 錄I
6、I</b></p><p><b> 第1章 緒論1</b></p><p> 1.1課題的來源1</p><p> 1.2 課題的目的1</p><p> 1.3 課題的意義1</p><p> 第2章 八路溫度采集顯示系統(tǒng)總體方案設(shè)計(jì)3</p>
7、<p> 2.1 確定設(shè)計(jì)流程圖3</p><p> 2.2 八路溫度采集顯示系統(tǒng)方案論證3</p><p> 2.2.1 單片機(jī)的選取4</p><p> 2.2.2 溫度傳感器的選取4</p><p> 2.2.3 顯示器的選取6</p><p> 2.3 確定總體設(shè)計(jì)方案7<
8、;/p><p> 第3章 八路溫度采集顯示系統(tǒng)硬件設(shè)計(jì)8</p><p> 3.1 AT89S51單片機(jī)的特點(diǎn)及引腳說明8</p><p> 3.1.1 AT89S51單片機(jī)的特點(diǎn)8</p><p> 3.1.2 AT89S51單片機(jī)引腳功能說明9</p><p> 3.2溫度采集模塊硬件設(shè)計(jì)11<
9、;/p><p> 3.2.1 DS18B20傳感器的結(jié)構(gòu)11</p><p> 3.2.2 DS18B20的特點(diǎn)13</p><p> 3.2.3 DS18B20與單片機(jī)連接15</p><p> 3.3 顯示模塊硬件設(shè)計(jì)15</p><p> 3.3.1數(shù)碼管顯示器的結(jié)構(gòu)及其特點(diǎn)15</p>
10、;<p> 第4章八路溫度采集軟件設(shè)計(jì)17</p><p> 4.1 溫度采集程序設(shè)計(jì)17</p><p> 4.2 數(shù)據(jù)處理程序設(shè)計(jì)18</p><p> 4.3 顯示程序設(shè)計(jì)20</p><p> 4.4 主程序22</p><p> 第5章 仿真測(cè)試25</p>
11、<p> 5.1 溫度顯示25</p><p> 5.2 控制需要顯示第幾路溫度25</p><p><b> 結(jié) 論26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 附錄29</b></p>
12、<p> 1、 系統(tǒng)程序29</p><p> 2、 系統(tǒng)電路圖39</p><p><b> 第1章 緒論</b></p><p><b> 1.1課題的來源</b></p><p> 在實(shí)際生產(chǎn)、生活等各個(gè)領(lǐng)域中,溫度是環(huán)境因素的不可或缺的一部分,對(duì)溫度進(jìn)行及時(shí)精確的
13、控制和檢測(cè)顯得尤為重要。比如消防電氣的非破壞性溫度檢測(cè),電力、電訊設(shè)備的過熱故障預(yù)知檢測(cè),空調(diào)系統(tǒng)的溫度檢測(cè),在醫(yī)院的監(jiān)護(hù)中也用到溫度的測(cè)量,化工、機(jī)械等設(shè)備溫度過熱檢測(cè),土壤各個(gè)層面上的溫度將會(huì)影響植物的生長(zhǎng),以及熱處理中工件各個(gè)部位的溫度對(duì)工件形成后的性能至關(guān)重要等等??傊?,現(xiàn)代電子工業(yè)的飛速發(fā)展對(duì)溫度檢測(cè)的智能化精確度要求越來越高。</p><p><b> 1.2 課題的目的</b>
14、;</p><p> 通過本次設(shè)計(jì),我們對(duì)大學(xué)三年所學(xué)課程將做出一個(gè)總結(jié),對(duì)各門課程均將有更深入的了解,更加熟練的掌握設(shè)計(jì)方案的提出,設(shè)計(jì)流程的規(guī)劃以及各器件的硬件連和軟件編程,并且能夠更加熟練的操作Proteus仿真軟件,真正培養(yǎng)出科學(xué)的思維方式和靈活解決問題的能力,為以后實(shí)際工作奠定良好的基礎(chǔ)。</p><p> 在本次設(shè)計(jì)結(jié)束后,我們將得到一款能夠同時(shí)檢測(cè)顯示八路溫度的多點(diǎn)智能測(cè)
15、溫系統(tǒng),當(dāng)某一路或某幾路溫度值超過設(shè)定的上限值或者下限值時(shí),報(bào)警電路中的蜂鳴器鳴響且提示閃亮,使操作者能夠及時(shí)發(fā)現(xiàn)問題并控制溫度回到額定溫度范圍內(nèi)。該系統(tǒng)運(yùn)行穩(wěn)定,操作簡(jiǎn)便,應(yīng)用靈活,能夠在當(dāng)代農(nóng)業(yè)、工業(yè)、醫(yī)療以及日常生活中得到良好的應(yīng)用。</p><p><b> 1.3 課題的意義</b></p><p> 溫度控制系統(tǒng)在國(guó)內(nèi)各行各業(yè)的應(yīng)用雖然已經(jīng)十分廣泛,但
16、從生產(chǎn)的溫度控制器來講,總體發(fā)展水平仍然不高,同日本、美國(guó)、德國(guó)等先進(jìn)國(guó)家相比有著較大差距。目前,我國(guó)在這方面總體技術(shù)水平處于20世紀(jì)80年代中后期水平,成熟產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的PID控制器為主。它只能適應(yīng)一般溫度系統(tǒng)控制,難于控制滯后、復(fù)雜、時(shí)變溫度系統(tǒng)控制。而適應(yīng)于較高控制場(chǎng)合的智能化、自適應(yīng)控制儀表,國(guó)內(nèi)技術(shù)還不十分成熟,形成商品化并在儀表控制參數(shù)的自整定方面,國(guó)外已有較多的成熟產(chǎn)品。但由于國(guó)外技術(shù)保密及我國(guó)開發(fā)工作的滯
17、后,還沒有開發(fā)出性能可靠的自整定軟件。控制參數(shù)大多靠人工經(jīng)驗(yàn)及現(xiàn)場(chǎng)調(diào)試確定。</p><p> 國(guó)外溫度控制系統(tǒng)發(fā)展迅速,并在智能化、自適應(yīng)、參數(shù)自整定等方面取得成果。日本、美國(guó)、德國(guó)、瑞典等技術(shù)領(lǐng)先,都生產(chǎn)出了一批商品化的、性能優(yōu)異的溫度控制器及儀器儀表,并在各行業(yè)廣泛應(yīng)用。它們主要具有如下的特點(diǎn):一是適應(yīng)于大慣性、大滯后等復(fù)雜溫度控制系統(tǒng)的控制;二是能夠適應(yīng)于受控系統(tǒng)數(shù)學(xué)模型難以建立的溫度控制系統(tǒng)的控制;三
18、是能夠適應(yīng)于受控系統(tǒng)過程復(fù)雜、參數(shù)時(shí)變的溫度控制系統(tǒng)的控制;四是溫度控制系統(tǒng)普遍采用自適應(yīng)控制、自校正控制、模糊控制、人工智能等理論及計(jì)算機(jī)技術(shù),運(yùn)用先進(jìn)的算法,適應(yīng)的范圍廣泛;五是溫控器普遍具有參數(shù)自整定功能。借助計(jì)算機(jī)軟件技術(shù),溫控器具有對(duì)控制對(duì)象控制參數(shù)及特性進(jìn)行自動(dòng)整定的功能。有的還具有自學(xué)習(xí)功能,能夠根據(jù)歷史經(jīng)驗(yàn)及控制對(duì)象的變化情況,自動(dòng)調(diào)整相關(guān)控制參數(shù),以保證控制效果的最優(yōu)化;六是具有控制精度高、抗干擾力強(qiáng)、魯棒性好的特點(diǎn)。
19、</p><p> 目前,國(guó)內(nèi)外溫度控制系統(tǒng)及儀表正朝著高精度、智能化、小型化等方面快速發(fā)展。本課題設(shè)計(jì)的系統(tǒng)符合當(dāng)代科學(xué)發(fā)展的趨勢(shì),能夠滿足現(xiàn)代生產(chǎn)生活的需要,其測(cè)溫效率高,具有較強(qiáng)的穩(wěn)定性和靈活性。方便快捷的實(shí)現(xiàn)了多路溫度采集并顯示,該系統(tǒng)用液晶顯示器節(jié)省了空間且顯示效果好,報(bào)警電路同時(shí)包含了蜂鳴器和提示燈,能更好的引起操作者的警覺,在實(shí)際生產(chǎn)中能夠降低由于溫度超過額定范圍引發(fā)的事故,有良好的實(shí)用性,在國(guó)內(nèi)
20、外都具備良好的應(yīng)用前景。</p><p> 第2章 八路溫度采集顯示系統(tǒng)總體方案設(shè)計(jì)</p><p> 2.1 確定設(shè)計(jì)流程圖</p><p> 在熟悉課題,明確任務(wù)的基礎(chǔ)上,查閱相關(guān)資料,理清設(shè)計(jì)思路,綜合考慮總的設(shè)計(jì)時(shí)間和各部分設(shè)計(jì)所需時(shí)間,最終決定將本次設(shè)計(jì)分五大步進(jìn)行。</p><p> ?。?)熟悉課題,明確任務(wù),查閱相關(guān)資料
21、,確定總體設(shè)計(jì)方案;</p><p> (2)根據(jù)各部分的功能劃分功能模塊,確定每一模塊的硬件組成,合理選取具有相應(yīng)功能的器件;</p><p> (3)進(jìn)行硬件設(shè)計(jì),把各器件組成相應(yīng)功能的模塊,并把各功能模塊進(jìn)行電氣連接,形成總的功能系統(tǒng);</p><p> ?。?)進(jìn)行軟件設(shè)計(jì),編寫程序,實(shí)現(xiàn)各模塊功能,使整個(gè)系統(tǒng)能夠良好的運(yùn)行;</p>&l
22、t;p> (5)進(jìn)行仿真調(diào)試,檢查各模塊功能能否完全實(shí)現(xiàn),綜合考慮系統(tǒng)的靈活性、穩(wěn)定性、誤差大小及測(cè)溫效率調(diào)整各器件的各項(xiàng)參數(shù)。使系統(tǒng)的處在最佳性能狀態(tài)。</p><p> 經(jīng)分析總結(jié),確定總的設(shè)計(jì)流程如圖2.1所示。</p><p> 圖2.1 設(shè)計(jì)流程圖</p><p> 2.2 八路溫度采集顯示系統(tǒng)方案論證</p><p>
23、; 2.2.1 單片機(jī)的選取</p><p> 若采用8031芯片,其內(nèi)部沒有程序存儲(chǔ)器,需要進(jìn)行外部擴(kuò)展,這給電路增加了復(fù)雜度,且占用空間增大。</p><p> 但是如果采用AT89S51單片機(jī)為控制核心優(yōu)點(diǎn)凸顯,51系列微處理器基于簡(jiǎn)化的嵌入式控制系統(tǒng)結(jié)構(gòu),被廣泛應(yīng)用于從軍事到自動(dòng)控制再到PC機(jī)上的鍵盤上的各種應(yīng)用系統(tǒng)上,僅次于Motorola 68HC11在8位微控制器市場(chǎng)上
24、的銷量,很多制造商都可提供51系列單片機(jī),像Intel Philips Siemens等,這些制造商給51系列單片機(jī)加入了大量的性能和外部功能,像I2C總線接口,模擬量到數(shù)字量的轉(zhuǎn)換,看門狗,PWM輸出等,不少芯片的工作頻率達(dá)到40M,工作電壓下降到1.5V?;谝粋€(gè)內(nèi)核的這些功能使得51系列單片機(jī)很適合作為廠家產(chǎn)品的基本構(gòu)架,它能夠運(yùn)行各種程序而且開發(fā)者只需要學(xué)習(xí)這一個(gè)平臺(tái)[1]。</p><p> 比較這兩
25、種方案,綜合考慮單片機(jī)的各部分資源,因此此次設(shè)計(jì)選用第二種方案,選用AT89S51單片機(jī)為核心處理器。</p><p> 2.2.2 溫度傳感器的選取</p><p> 傳感器是信號(hào)輸入通道的第一道環(huán)節(jié),也是決定整個(gè)測(cè)試系統(tǒng)性能的關(guān)鍵環(huán)節(jié)之一。由于傳感技術(shù)的發(fā)展非常迅速,各種各樣的傳感器應(yīng)運(yùn)而生,所以對(duì)傳感器的正確選用顯得尤為重要。而眾多傳感器對(duì)微機(jī)化測(cè)控系統(tǒng)有較大的影響。當(dāng)今應(yīng)用較多
26、的傳感器大致可以分為以下幾種[2]:</p><p> ?。?)大信號(hào)輸出傳感器。為了與A/D輸入要求相適應(yīng),傳感器廠家設(shè)計(jì)制造一些專門與A/D相配套的大號(hào)輸出傳感器。通常是把放大電路與傳感器做成一體,使傳感器能直接輸出0~5V、0~10V或0~2.5V要求的信號(hào)電壓,把傳感器與相應(yīng)的變送器電路做成一體,構(gòu)成能輸出4~20mA直流標(biāo)準(zhǔn)信號(hào)的變送器。對(duì)于大電流輸出,只要經(jīng)過簡(jiǎn)單I/V轉(zhuǎn)換即可變?yōu)榇蛐盘?hào)電壓輸出。對(duì)于
27、大信號(hào)電壓可以經(jīng)A/D轉(zhuǎn)換,也可以經(jīng)V/F轉(zhuǎn)換送入微機(jī),但后者響應(yīng)速度較慢。</p><p> ?。?)集成傳感器。集成傳感器是將傳感器與信號(hào)調(diào)理電路做成一體。例如,將應(yīng)變片、應(yīng)變電橋、線性化處理、電橋放大等做成一體,構(gòu)成集成壓力傳感器。采用集成傳感器可以減輕輸入通道的信號(hào)調(diào)理任務(wù),簡(jiǎn)化通道結(jié)構(gòu)。</p><p> ?。?)光纖傳感器。這種傳感器其信號(hào)拾取、變換、傳輸都是通過光導(dǎo)纖維實(shí)現(xiàn)的
28、,避免了電路系統(tǒng)的電磁干擾。在信號(hào)輸入通道中采用光纖傳感器可以從根本上解決由現(xiàn)場(chǎng)通過傳感器引入的干擾。</p><p> ?。?)數(shù)字式傳感器。數(shù)字式傳感器一般都采用頻率敏感效應(yīng)器件構(gòu)成,也可以是由敏感參數(shù)RLC構(gòu)成的振蕩器,或模擬電壓輸入經(jīng)V/F轉(zhuǎn)換等,因此,數(shù)字量傳感器一般都是輸出頻率參量,具有測(cè)量精度高、抗干擾能力強(qiáng),便于遠(yuǎn)距離傳送等優(yōu)點(diǎn)。此外,采用數(shù)字量傳感器時(shí),傳感器輸出如果滿足TTL電平標(biāo)準(zhǔn),則可直接
29、接入計(jì)算機(jī)的I/O口或中斷入口。</p><p> 如何根據(jù)具體的測(cè)量目的、測(cè)量對(duì)象以及測(cè)量環(huán)境合理地選用傳感器,是在進(jìn)行某個(gè)量的測(cè)量時(shí)首先要解決的問題。當(dāng)傳感器確定之后,與之相配套的測(cè)量方法和測(cè)量設(shè)備也就可以確定了。測(cè)量結(jié)果的成敗,在很大程度上取決于傳感器的選用是否合理,因此在設(shè)計(jì)過程中選取溫度傳感器要注意一下幾點(diǎn):</p><p> (1)根據(jù)測(cè)量對(duì)象與測(cè)量環(huán)境確定傳感器的類型&l
30、t;/p><p> 要進(jìn)行—項(xiàng)具體的測(cè)量工作,首先要考慮采用何種原理的傳感器,這需要分析多方面的因素之后才能確定。因?yàn)?,即使是測(cè)量同一物理量,也有多種原理的傳感器可供選用,哪一種原理的傳感器更為合適,則需要根據(jù)被測(cè)量的特點(diǎn)和傳感器的使用條件考慮以下一些具體問題:量程的大小;被測(cè)位置對(duì)傳感器體積的要求;測(cè)量方式為接觸式還是非接觸式;信號(hào)的引出方法,有線或是非接觸測(cè)量;傳感器的來源,國(guó)產(chǎn)還是進(jìn)口,價(jià)格能否承受,還是自行
31、研制。</p><p><b> (2)靈敏度的選擇</b></p><p> 通常,在傳感器的線性范圍內(nèi),希望傳感器的靈敏度越高越好。因?yàn)橹挥徐`敏度高時(shí),與被測(cè)量變化對(duì)應(yīng)的輸出信號(hào)的值才比較大,有利于信號(hào)處理。但要注意的是,傳感器的靈敏度高,與被測(cè)量無(wú)關(guān)的外界噪聲也容易混入,也會(huì)被放大系統(tǒng)放大,影響測(cè)量精度。因此,要求傳感器本身應(yīng)具有較高的信噪比,盡量減少?gòu)耐饨?/p>
32、引入的串?dāng)_信號(hào)</p><p><b> (3)頻率響應(yīng)特性</b></p><p> 傳感器的頻率響應(yīng)特性決定了被測(cè)量的頻率范圍,必須在允許頻率范圍內(nèi)保持不失真的測(cè)量條件,實(shí)際上傳感器的響應(yīng)總有—定延遲,希望延遲時(shí)間越短越好。傳感器的頻率響應(yīng)高,可測(cè)的信號(hào)頻率范圍就寬,而由于受到結(jié)構(gòu)特性的影響,機(jī)械系統(tǒng)的慣性較大,因有頻率低的傳感器可測(cè)信號(hào)的頻率較低。</
33、p><p><b> ?。?)線性范圍</b></p><p> 傳感器的線形范圍是指輸出與輸入成正比的范圍。以理論上講,在此范圍內(nèi),靈敏度保持定值。傳感器的線性范圍越寬,則其量程越大,并且能保證一定的測(cè)量精度。在選擇傳感器時(shí),當(dāng)傳感器的種類確定以后首先要看其量程是否滿足要求。但實(shí)際上,任何傳感器都不能保證絕對(duì)的線性,其線性度也是相對(duì)的。當(dāng)所要求測(cè)量精度比較低時(shí),在一定
34、的范圍內(nèi),可將非線性誤差較小的傳感器近似看作線性的,這會(huì)給測(cè)量帶來極大的方便。</p><p><b> ?。?)穩(wěn)定性</b></p><p> 傳感器使用一段時(shí)間后,其性能保持不變化的能力稱為穩(wěn)定性。影響傳感器長(zhǎng)期穩(wěn)定性的因素除傳感器本身結(jié)構(gòu)外,主要是傳感器的使用環(huán)境。因此,要使傳感器具有良好的穩(wěn)定性,傳感器必須要有較強(qiáng)的環(huán)境適應(yīng)能力。在選擇傳感器之前,應(yīng)對(duì)其使
35、用環(huán)境進(jìn)行調(diào)查,并根據(jù)具體的使用環(huán)境選擇合適的傳感器,或采取適當(dāng)?shù)拇胧?,減小環(huán)境的影響。</p><p><b> ?。?)精度</b></p><p> 精度是傳感器的一個(gè)重要的性能指標(biāo),它是關(guān)系到整個(gè)測(cè)量系統(tǒng)測(cè)量精度的一個(gè)重要環(huán)節(jié)。傳感器的精度越高,其價(jià)格越昂貴,因此,傳感器的精度只要滿足整個(gè)測(cè)量系統(tǒng)的精度要求就可以,不必選得過高。這樣就可以在滿足同一測(cè)量目的的
36、諸多傳感器中選擇比較便宜和簡(jiǎn)單的傳感器。</p><p> 如果測(cè)量目的是定性分析的,選用重復(fù)精度高的傳感器即可,不宜選用絕對(duì)量值精度高的;如果是為了定量分析,必須獲得精確的測(cè)量值,就需選用精度等級(jí)能滿足要求的傳感器。對(duì)某些特殊使用場(chǎng)合,無(wú)法選到合適的傳感器,則需自行設(shè)計(jì)制造傳感器。自制傳感器的性能應(yīng)滿足使用要求。</p><p> 顯而易見,數(shù)字式溫度傳感器在本設(shè)計(jì)中的應(yīng)用優(yōu)點(diǎn)突出,
37、綜合考慮以上選取注意事項(xiàng),本設(shè)計(jì)采用DS18B20單總線數(shù)字式溫度傳感器對(duì)溫度信號(hào)進(jìn)行采集。</p><p> 2.2.3 顯示器的選取</p><p> 顯示系統(tǒng)是單片機(jī)控制系統(tǒng)的重要組成部分,主要用于顯示各種參數(shù)的值,以便使現(xiàn)場(chǎng)工作人員能夠及時(shí)掌握生產(chǎn)過程。</p><p> 工業(yè)控制系統(tǒng)中常用的顯示器件有CRT、LED、LCD等,CRT不僅可以進(jìn)行字符顯
38、示,而且可以進(jìn)行畫面顯示,和計(jì)算機(jī)配合使用,可十分方便地實(shí)現(xiàn)生產(chǎn)過程的管理和監(jiān)視,但由于CRT體積大,價(jià)格昂貴,所以只適用于大型微機(jī)控制系統(tǒng)。在中小型的控制過程中,為了使工作人員能夠在現(xiàn)場(chǎng)直接看到生產(chǎn)情況和報(bào)警信號(hào),經(jīng)常選用LED和LCD作為顯示器件。LED具有體積小,功耗低,響應(yīng)速度快,易于匹配,可靠性高和壽命高等優(yōu)點(diǎn),是一種功耗極低的顯示元件,在儀表和低功耗應(yīng)用系統(tǒng)中的使用較多.所以,本系統(tǒng)采用LED作顯示。</p>
39、<p> 2.3 確定總體設(shè)計(jì)方案</p><p> 通過對(duì)設(shè)計(jì)任務(wù)及相關(guān)芯片的深入了解,最終決定本設(shè)計(jì)采用AT89S51單片機(jī)作為控制器,選用單總線數(shù)字溫度傳感器DS18B20對(duì)溫度進(jìn)行采集,采用16×4字符的LCD顯示器一起構(gòu)成八路溫度采集與顯示系統(tǒng),使得系統(tǒng)可以檢測(cè)-55℃~+125℃范圍內(nèi)的溫度,選擇分辨率為12位,使用液晶顯示器對(duì)八路溫度進(jìn)行循環(huán)顯示,考慮到測(cè)溫精度,設(shè)置顯示數(shù)值
40、精確到0.1℃,并且設(shè)置溫度上下限,當(dāng)某一路或幾路溫度值超過上下限溫度時(shí),報(bào)警電路中的蜂鳴器鳴響,提示燈亮。根據(jù)各模塊要實(shí)現(xiàn)的功能及其各模塊的結(jié)構(gòu)特點(diǎn),設(shè)計(jì)其總體結(jié)構(gòu)如圖2.2所示。</p><p> 圖2.2 八路溫度采集與顯示系統(tǒng)結(jié)構(gòu)圖</p><p> 第3章 八路溫度采集顯示系統(tǒng)硬件設(shè)計(jì)</p><p> 3.1 AT89S51單片機(jī)的特點(diǎn)及引腳說明&
41、lt;/p><p> 3.1.1 AT89S51單片機(jī)的特點(diǎn)</p><p> AT89S51是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片,內(nèi)含4Kbytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(EPROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Fla
42、sh存儲(chǔ)單元,功能強(qiáng)大的AT89S51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域,該芯片外形結(jié)構(gòu)及引腳如圖3.1所示[4]。</p><p> 圖3.1 AT89S51外形結(jié)構(gòu)及引腳</p><p> AT89S51單片機(jī)主要性能參數(shù)為:</p><p> (1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容;(2)4K字節(jié)可重擦寫Flash閃速存儲(chǔ)器;
43、(3)1000次擦寫周期;(4)全靜態(tài)操作:0Hz—24Hz;(5)三級(jí)加密程序存儲(chǔ)器;(6)128×8字節(jié)內(nèi)部RAM;(7)32個(gè)可編程I/O口線;(8)2個(gè)16位定時(shí)/計(jì)數(shù)器;(9)6個(gè)中斷源;(10)可編程串行UART通道;(11)低功耗空閑和掉電模式[8]。</p><p> AT89S51提供4K字節(jié)Flash閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5
44、向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。</p><p> 3.1.2 AT89S51單片機(jī)引腳功能說明</p><p&
45、gt; ?。?)Vcc:電源電壓;</p><p><b> (2)GND:地;</b></p><p> ?。?)P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用
46、,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。</p><p> (4)P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉倒高電平,此時(shí)可做輸入口。做輸入口輸入時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(
47、IIL)。Flash編程和程序校驗(yàn)期間,P1接收低8位地址。</p><p> ?。?)P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路,對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉倒高電平,此時(shí)可做輸入口,做輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸入一個(gè)電流(IIL)。在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)
48、行MOVX@DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8為地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX@R1指令)時(shí),P2口線上的內(nèi)容(也即特殊功能寄存器SFR區(qū)中R2寄存器的內(nèi)容),在整個(gè)訪問期間不改變。Flash編程或校驗(yàn)時(shí),P2亦接受高位地址和其它控制信號(hào)。</p><p> (6)P3口:P3口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P3口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端
49、口寫“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端。作輸入端時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表3.1所示。</p><p> 表3.1 P3口第二功能</p><p> (7)RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。</p><p>
50、; (8)ALE/ :當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖可用于鎖存地址的低八位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖( )。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位
51、置置位后,只有一條MOVX和MOVC指令A(yù)LE才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效[8]。</p><p> ?。?) :程序儲(chǔ)存允許( )輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的 信號(hào)不出現(xiàn)。</p><p> (1
52、0)EA/VPP:外部訪問允許。欲使CPU僅訪問外部數(shù)據(jù)存儲(chǔ)器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編成,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件使用12V編程電壓Vpp。</p><p> ?。?0)XTAL1:振蕩器反
53、相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> ?。?1)XTAL2:振蕩器反相放大器的輸出端。</p><p> 3.2溫度采集模塊硬件設(shè)計(jì)</p><p> 3.2.1 DS18B20傳感器的結(jié)構(gòu)</p><p> DS18B20溫度傳感器是美國(guó)Dallas半導(dǎo)體公司生產(chǎn)的總線式智能數(shù)字溫度傳感器。DS18B20可根據(jù)實(shí)際要求
54、通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的分辨率數(shù)字值讀數(shù)方式。其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。多個(gè)DS18B20可以并聯(lián)到三根或者兩根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路?,F(xiàn)場(chǎng)溫度直接以單線的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量。DS18B20引腳排列及定義如圖3.2所示[3]。</p><p> 圖
55、3.2 DS18B20的TO-92封裝</p><p> DS18B20的三個(gè)引腳布局合理,結(jié)構(gòu)簡(jiǎn)單,功能明確。DQ:數(shù)據(jù)輸入輸出;VCC:可選的電源電壓腳;GND:接地。</p><p> DS18B20內(nèi)部主要由64位ROM、高溫傳感器、非易失性溫度報(bào)警觸發(fā)器TH和TL、高速緩存4個(gè)數(shù)據(jù)部分組成。64位ROM用于存儲(chǔ)序列號(hào)。開始8位是產(chǎn)品類型編號(hào)。接著是每個(gè)器件唯一的序列號(hào),共有6
56、個(gè)字節(jié)48位,在出廠前已寫入片內(nèi)ROM中。最后8位是前面56位的CRC校驗(yàn)碼。非易失性溫度報(bào)警觸發(fā)器TH和TL,可以由用戶通過軟件寫入報(bào)警上下限值。高速緩存由9個(gè)字節(jié)組成。DS18B20的內(nèi)部結(jié)構(gòu)功能框圖如圖3.3所示[1]。</p><p> 圖3.3 DS18B20內(nèi)部結(jié)構(gòu)框圖</p><p> 主機(jī)在進(jìn)入操作程序前必須逐一讀入DS18B20,用讀ROM命令將該DS18B20序列號(hào)
57、讀出并登錄該主機(jī)。需要對(duì)眾多在線DS18B20的某一個(gè)進(jìn)行操作時(shí)首先要發(fā)出匹配ROM命令,緊接著主機(jī)提供64位序列(包括該DS18B20的48位序列號(hào))。</p><p> DS18B20的存儲(chǔ)器結(jié)構(gòu)如表3.2所示。存儲(chǔ)器由一個(gè)暫存RAM和一個(gè)存儲(chǔ)高低位報(bào)警觸發(fā)值TH和TL的非易失性電可擦除EERAM組成。當(dāng)在單總線上通信時(shí),暫存器幫助確保數(shù)據(jù)的完整性。數(shù)據(jù)先被寫入暫存器,這里的數(shù)據(jù)可被讀回。數(shù)據(jù)經(jīng)過校驗(yàn)后,用
58、一個(gè)拷貝暫存器命令把數(shù)據(jù)傳到非易失性EERAM中。這一個(gè)過程確保更改存儲(chǔ)器數(shù)據(jù)時(shí)的完整性。</p><p> 表3.2 存儲(chǔ)器結(jié)構(gòu)</p><p> 暫存器的結(jié)構(gòu)為8個(gè)字節(jié)的存儲(chǔ)器。頭兩個(gè)字節(jié)包含測(cè)得的溫度信號(hào)。第3和第4字節(jié)的兩個(gè)字節(jié)沒有使用,但是在讀回?cái)?shù)據(jù)時(shí),他們?nèi)繛檫壿?。還有一個(gè)第9字節(jié),可以用讀暫存器命令讀出。這個(gè)字節(jié)是以上8個(gè)字節(jié)的CRC碼。</p><
59、;p> 暫存器第5個(gè)字節(jié)是配置寄存器,用于確定溫度值轉(zhuǎn)換為數(shù)字值的分辨率。該配置寄存器字節(jié)各位的定義如表3.3所示。</p><p> 表3.3 配置寄存器各位的定義</p><p> TM是測(cè)試模式位。R0、R1決定溫度轉(zhuǎn)換的分辨率位數(shù),其定義如表3.4所示。</p><p> 表3.4 DS18B20的分辨率</p><p>
60、; 3.2.2 DS18B20的特點(diǎn)</p><p> ?。?)1—Wire系統(tǒng)</p><p> 1—Wire系統(tǒng)也稱為單總線系統(tǒng)。單總線系統(tǒng)包括一個(gè)總線控制器和一個(gè)或多個(gè)從機(jī),DS18B20是從機(jī)。關(guān)于這種總線分三部分討論:硬件配置、執(zhí)行序列和單線信號(hào)(信號(hào)類型和時(shí)序)。</p><p><b> ?。?)硬件配置</b></p&
61、gt;<p> 單總線只有一條定義的信號(hào)線。重要的是每一個(gè)掛在總線上的器件都能在適當(dāng)?shù)臅r(shí)間驅(qū)動(dòng)它。為此每一個(gè)總線上的器件都必須是漏極開路或者三態(tài)輸出。DS18B20的單總線端口(I/O引腳)是漏極開路式的。一個(gè)多點(diǎn)總線由一個(gè)單總線或多個(gè)掛于其上的從機(jī)構(gòu)成。單總線需要一個(gè)約5kΩ的上拉電阻[10]。</p><p> 單總線的空閑狀態(tài)是高電平。無(wú)論任何理由需要暫停某一執(zhí)行過程時(shí),如果還想恢復(fù)執(zhí)行的
62、話,總線必須停留在空閑狀態(tài)。在恢復(fù)期間,如果單總線處于非活動(dòng)(高電平)狀態(tài),位與位之間的恢復(fù)時(shí)間可以無(wú)限長(zhǎng)。如果單總線停留在低電平超過480μs,總線上的所有器件都被復(fù)位[10]。</p><p><b> ?。?)執(zhí)行序列</b></p><p> 通過單線總線端口訪問DS18B20的協(xié)議如下:</p><p> ?、俪跏蓟?;②ROM操作指
63、令;③存儲(chǔ)器操作指令;④執(zhí)行/數(shù)據(jù)。</p><p><b> (4)初始化</b></p><p> 通過單線總線的所有執(zhí)行(處理)都從一個(gè)初始化序列開始。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和跟在其后從機(jī)發(fā)出的存在脈沖。存在脈沖讓總線控制器知道DS18B20在總線上且已準(zhǔn)備就緒[12]。</p><p><b> ?。?/p>
64、5)I/O信號(hào)</b></p><p> DS18B20需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括幾種單線信號(hào)類型:復(fù)位脈沖、存在脈沖、寫0、寫1、讀0和讀1。所有這些信號(hào),除存在脈沖外,都是由總線控制器發(fā)出的。</p><p> 和DS18B20間的任何通信都需要以初始化序列開始,初始化序列由一個(gè)復(fù)位脈沖和一個(gè)存在脈沖表示。一個(gè)復(fù)位脈沖跟著一個(gè)存在脈沖表明DS18B20已
65、經(jīng)準(zhǔn)備好發(fā)送和接受數(shù)據(jù)(適當(dāng)?shù)腞OM命令和存儲(chǔ)器操作命令)。</p><p> 總線控制器發(fā)出(TX)一個(gè)復(fù)位脈沖(一個(gè)最少保持480μs的低電平信號(hào)),然后釋放總線,進(jìn)入接收狀態(tài)(RX)。單總線由5kΩ上拉電阻拉倒高電平。探測(cè)到I/O引腳上的上升沿后,DS18B20等待15~60μs,然后發(fā)出存在脈沖(一個(gè)60~240μs的低電平信號(hào))。</p><p><b> (6)讀
66、/寫時(shí)間隙</b></p><p> DS18B20的數(shù)據(jù)讀寫是通過時(shí)間隙處理位和命令字來確認(rèn)信息交換的。</p><p><b> ?、賹憰r(shí)間隙</b></p><p> 當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉倒邏輯低電平的時(shí)候,寫時(shí)間隙開始。有兩種寫時(shí)間隙;寫1時(shí)間隙和寫0時(shí)間隙。所有寫時(shí)間隙必須最少持續(xù)60μs,包括兩個(gè)寫周期間至少
67、1μs的恢復(fù)時(shí)間。</p><p> I/O線電平變低后,DS18B20在一個(gè)15μs到60μs的窗口內(nèi)對(duì)I/O線采樣。如果線上是高電平,就是寫1,如果線上是低電平,就是寫0。</p><p> 主機(jī)要生成一個(gè)寫時(shí)間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時(shí)間隙開始后的15μs內(nèi)允許數(shù)據(jù)線拉倒高電平。</p><p> 主機(jī)要生成一個(gè)寫0時(shí)間隙,必須把數(shù)據(jù)線拉
68、到低電平并保持60μs。R/ </p><p><b> ?、谧x時(shí)間隙</b></p><p> 當(dāng)從DS18B20讀取數(shù)據(jù)時(shí),主機(jī)生成讀時(shí)間隙。當(dāng)主機(jī)把數(shù)據(jù)線從高電平拉到低電平時(shí),寫時(shí)間隙開始。數(shù)據(jù)線必須保持至少1μs;從DS18B20輸出的數(shù)據(jù)在讀時(shí)間隙的下降沿出現(xiàn)后15μs內(nèi)有效。因此,主機(jī)在讀時(shí)間隙開始后必須停止把I/O腳驅(qū)動(dòng)為低電平15μs,以讀取I/O腳
69、狀態(tài)。在讀時(shí)間隙的結(jié)尾,I/O引腳將被外部上拉電阻拉倒高電平。所有讀時(shí)間隙必須至少60μs,包括兩個(gè)讀周期間至少1μs的恢復(fù)時(shí)間。</p><p> 3.2.3 DS18B20與單片機(jī)連接</p><p> 由于DS18B20是但總線數(shù)字式溫度傳感器,內(nèi)置了模數(shù)轉(zhuǎn)換模塊,所以只需按照前面介紹其三個(gè)端口各自的功能將其掛在單總線上即可,即VCC端口接電源,DQ端口接單片機(jī)的P3.2端口,作
70、為數(shù)據(jù)傳送端口,并接一個(gè)5kΩ的上拉電阻,GND端口則接地,其硬件連接如圖3.4所示。</p><p> 圖3.4 DS18B20與單片機(jī)硬件連接圖</p><p> 當(dāng)系統(tǒng)正常運(yùn)行時(shí),對(duì)DS18B20進(jìn)行初始化后開始采集到溫度,采集溫度后通過內(nèi)置的模數(shù)轉(zhuǎn)換模塊對(duì)采集到的模擬量進(jìn)行模數(shù)轉(zhuǎn)換,轉(zhuǎn)換成數(shù)字量之后通過DQ端口將其送到單片機(jī)進(jìn)行處理,處理之后送往顯示。</p>&
71、lt;p> 3.3 顯示模塊硬件設(shè)計(jì)</p><p> 3.3.1數(shù)碼管顯示器的結(jié)構(gòu)及其特點(diǎn)</p><p> 七段數(shù)碼管是數(shù)碼的一種是半島體發(fā)光器件,數(shù)碼管可分為七段數(shù)碼管和八段數(shù)碼管,區(qū)別在于八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元,其基本單元是發(fā)光二極管。</p><p> 數(shù)碼管是一類價(jià)格便宜 使用簡(jiǎn)單,通過隊(duì)其不同的管腳輸入相對(duì)的電流,使其
72、發(fā)亮,從而顯示出數(shù)字能夠顯示 時(shí)間、日期、溫度等所有可用數(shù)字表示的參數(shù)的器件。</p><p> 在電器特別是家電領(lǐng)域應(yīng)用極為廣泛,如顯示屏、空調(diào)、熱水器、冰箱等等。絕大多數(shù)熱水器用的都是數(shù)碼管,其他家電也用液晶屏與熒光屏。</p><p> 需要使其具有恒定的工作電流采用恒流驅(qū)動(dòng)電路后可防止短時(shí)間的電流過載也可能對(duì)發(fā)光管造成永久性的損壞, 以此避免電流故障所引起的七段數(shù)碼管的大面積損
73、壞。</p><p> 超大規(guī)模集成電路還具有熱保護(hù)功能,當(dāng)任何一片的溫度超過一定值時(shí)可自動(dòng)關(guān)閉, 并且可在控制室內(nèi)看到故障顯示。</p><p> 直流驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每個(gè)段碼都由一個(gè)單片機(jī)的 I/O 端口進(jìn)行驅(qū)動(dòng), 或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用 I/O端口多。</p><p> 動(dòng)態(tài)顯示驅(qū)動(dòng)是將
74、所有數(shù)碼管通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示。將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯
75、示出字形,沒有選通的數(shù)碼管就不亮。</p><p> 圖3.5 LED顯示模塊</p><p> 第4章八路溫度采集軟件設(shè)計(jì)</p><p> 4.1 溫度采集程序設(shè)計(jì)</p><p><b> 流程圖如下:</b></p><p><b> 程序:</b><
76、;/p><p> void Init_DS18B20_1(void)//初始化ds1820</p><p><b> {</b></p><p> DQ_0 = 1; //DQ復(fù)位</p><p> Delay(8); //稍做延時(shí)</p><p> DQ_0 = 0; /
77、/單片機(jī)將DQ拉低</p><p> Delay(80); //精確延時(shí) 大于 480us</p><p> DQ_0 = 1; //拉高總線</p><p> Delay(14);</p><p> Delay(20);</p><p><b> }</b></p>
78、;<p> unsigned char ReadOneChar_1(void)//讀一個(gè)字節(jié)</p><p><b> {</b></p><p> unsigned char i=0;</p><p> unsigned char dat = 0;</p><p> for (i=8;i>
79、0;i--)</p><p><b> {</b></p><p> DQ_0 = 0; // 給脈沖信號(hào)</p><p><b> dat>>=1;</b></p><p> DQ_0 = 1; // 給脈沖信號(hào)</p><p><b> i
80、f(DQ_0)</b></p><p> dat|=0x80;</p><p><b> Delay(4);</b></p><p><b> }</b></p><p> return(dat);</p><p><b> }</b&g
81、t;</p><p> void WriteOneChar_1(unsigned char dat)//寫一個(gè)字節(jié)</p><p><b> {</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p>
82、<b> {</b></p><p><b> DQ_0 = 0;</b></p><p> DQ_0 = dat&0x01;</p><p><b> Delay(5);</b></p><p><b> DQ_0 = 1;</b>&l
83、t;/p><p><b> dat>>=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.2 數(shù)據(jù)處理程序設(shè)計(jì)</p><p><b> 流程圖:</b>
84、;</p><p><b> 程序:</b></p><p> unsigned int ReadTemperature(void)//讀取溫度</p><p><b> {</b></p><p> unsigned char a=0;</p><p> unsi
85、gned char b=0;</p><p> unsigned int t=0;</p><p> float tt=0;</p><p><b> switch(i)</b></p><p> { case 0 : Init_DS18B20_1();</p><p> Writ
86、eOneChar_1(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_1(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_1();</p><p> WriteOneChar_1(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_1(
87、0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_1(); //讀低8位</p><p> b=ReadOneChar_1(); //讀高8位</p><p><b> break;</b></p><p> case 1 : Init_DS18B20_2();&l
88、t;/p><p> WriteOneChar_2(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_2(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_2();</p><p> WriteOneChar_2(0xCC); //跳過讀序號(hào)列號(hào)的操作</p>&
89、lt;p> WriteOneChar_2(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_2(); //讀低8位</p><p> b=ReadOneChar_2(); //讀高8位</p><p><b> break;</b></p><p> case
90、2 : Init_DS18B20_3();</p><p> WriteOneChar_3(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_3(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_3();</p><p> WriteOneChar_3(0xCC);
91、//跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_3(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_3(); //讀低8位</p><p> b=ReadOneChar_3(); //讀高8位</p><p><b> break;</b><
92、/p><p> case 3 : Init_DS18B20_4();</p><p> WriteOneChar_4(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_4(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_4();</p><p>
93、; WriteOneChar_4(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_4(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_4(); //讀低8位</p><p> b=ReadOneChar_4(); //讀高8位</p><p><b&
94、gt; break;</b></p><p> case 4 : Init_DS18B20_5();</p><p> WriteOneChar_5(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_5(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20
95、_5();</p><p> WriteOneChar_5(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_5(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_5(); //讀低8位</p><p> b=ReadOneChar_5(); //讀高8位&l
96、t;/p><p><b> break;</b></p><p> case 5 : Init_DS18B20_6();</p><p> WriteOneChar_6(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_6(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p>
97、<p> Init_DS18B20_6();</p><p> WriteOneChar_6(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_6(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_6(); //讀低8位</p><p> b=Rea
98、dOneChar_6(); //讀高8位</p><p><b> break;</b></p><p> case 6 : Init_DS18B20_7();</p><p> WriteOneChar_7(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_7(0
99、x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_7();</p><p> WriteOneChar_7(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_7(0xBE); //讀取溫度寄存器</p><p> a=ReadOneChar_7(); //讀低8位<
100、;/p><p> b=ReadOneChar_7(); //讀高8位</p><p><b> break;</b></p><p> case 7 : Init_DS18B20_8();</p><p> WriteOneChar_8(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p>&l
101、t;p> WriteOneChar_8(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p> Init_DS18B20_8();</p><p> WriteOneChar_8(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar_8(0xBE); //讀取溫度寄存器</p><p> a=Read
102、OneChar_8(); //讀低8位</p><p> b=ReadOneChar_8(); //讀高8位</p><p><b> break;</b></p><p> default : break;</p><p> } //end switch(i)</p><p
103、><b> t=b;</b></p><p><b> t<<=8;</b></p><p><b> t=t|a;</b></p><p> tt=t*0.0625;</p><p> t= tt*10+0.5; //放大10倍輸出并四舍五入<
104、;/p><p> return(t);</p><p><b> }</b></p><p> 4.3 顯示程序設(shè)計(jì)</p><p><b> 流程圖:</b></p><p><b> 程序:</b></p><p>
105、#include <AT89X52.h></p><p> #include <string.h></p><p> #include <led.h></p><p> uchar dis_buf[led_number]; //定義顯示數(shù)據(jù)寄存</p><p> typedef struct t
106、ypNumber//------字符字模顯示數(shù)據(jù)結(jié)構(gòu)------</p><p><b> {</b></p><p> uchar Index[1];</p><p> uchar Msk[1];</p><p><b> };</b></p><p> str
107、uct typNumber code duanma[] = { //段碼數(shù)據(jù)</p><p> "0",0x3f, // 0 00</p><p> "1",0x06, // 1 01</p><p> "2",0x5b, //
108、 2 02</p><p> "3",0x4f, // 3 03</p><p> "4",0x66, // 4 04</p><p> "5",0x6d, // 5 05</p><p>
109、"6",0x7d, // 6 06</p><p> "7",0x07, // 7 07</p><p> "8",0x7f, // 8 08</p><p> "9",0x6F, //
110、 9 09</p><p> "A",0x77, // A 0A</p><p> "B",0x7c, // b 0B</p><p> "C",0x39, // C 0C</p><p>
111、 "D",0x5e, // d 0D</p><p> "E",0x79, // E 0E</p><p> "F",0x71, // F 0F</p><p> "-",0x40, //
112、 - 10</p><p> "r",0x50, // r 11</p><p> "o",0x63, // o 12</p><p> " ",0x00, // " " 13</p>
113、<p><b> };</b></p><p> uchar code Bit_Led[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位碼數(shù)據(jù)</p><p> void delay_1(uchar x)</p><p> { uchar i,j;</p>
114、<p> for(i=0;i<x;i++)</p><p> for(j=0;j<20;j++);</p><p><b> }</b></p><p> void Led_Disp(uchar *num)</p><p> { uchar i,j,uLen;
115、 //變量定義</p><p> uLen=strlen(num); //得到要顯示的數(shù)字的個(gè)數(shù)</p><p> if(uLen > led_number)</p><p> { dis_buf[0]=0x50;dis_buf[1]=0x50;dis_buf[2]=0x79; //顯示“Err”</p>&l
116、t;p> for ( i=3;i<led_number;i++ )</p><p> { dis_buf[i]=0x00; }</p><p><b> }</b></p><p><b> else</b></p><p> { for ( i=0;i<uLen;i+
117、+ )</p><p><b> {</b></p><p> for(j=0;j<sizeof(duanma)/sizeof(duanma[0]);j++)</p><p><b> {</b></p><p> if(num[(uLen-1)-i] == duanma[j].Ind
118、ex[0])</p><p><b> break;</b></p><p><b> }</b></p><p> dis_buf[i] = duanma[j].Msk[0];</p><p><b> }</b></p><p> for
119、( i=uLen;i<led_number;i++ )</p><p> { dis_buf[i]=0x00; }</p><p><b> }</b></p><p> for (j=0;j<50;j++) //刷新100次</p><p><b> {</b><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì) 兩路溫度采集顯示系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----八路搶答器設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----八路搶答器設(shè)計(jì)
- 八路搶答器畢業(yè)設(shè)計(jì)
- 八路搶答器的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 八路搶答器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--八路搶答器的設(shè)計(jì)
- 八路電子搶答器畢業(yè)設(shè)計(jì)
- 信息工程畢業(yè)設(shè)計(jì)---八路搶答器設(shè)計(jì)
- 電子課程設(shè)計(jì)---八路彩燈循環(huán)顯示
- 八路數(shù)字搶答器畢業(yè)設(shè)計(jì)
- 八路搶答器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 經(jīng)典八路智能搶答器畢業(yè)設(shè)計(jì)
- 八路數(shù)字搶答器畢業(yè)設(shè)計(jì)
- 八路彩燈課程設(shè)計(jì)--循環(huán)八路彩燈設(shè)計(jì)
- 八路彩燈課程設(shè)計(jì)--循環(huán)八路彩燈設(shè)計(jì)
- 八路溫度巡檢儀課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于八路搶答器的設(shè)計(jì)
- 八路搶答器單片機(jī)畢業(yè)設(shè)計(jì)
- 多路溫度采集系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
評(píng)論
0/150
提交評(píng)論