畢業(yè)設(shè)計(jì)---基于ds18b20的數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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>  題 目:基于DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  學(xué)生姓名: </b></p><p><b>  學(xué) 號(hào): </b></p><p>  系 (院):物理與機(jī)電

2、工程學(xué)院自動(dòng)化系</p><p>  專 業(yè):自動(dòng)化專業(yè)</p><p><b>  班 級(jí): </b></p><p>  指導(dǎo)教師姓名及職稱: </p><p>  起止時(shí)間: 2011 年 10 月—— 2012 年 5 月</p><p>  基于DS18B20的數(shù)字溫度計(jì)的設(shè)

3、計(jì)與實(shí)現(xiàn)</p><p>  摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù)。對(duì)于溫度的測(cè)量方法與裝置的研究就凸顯得非常重要。由單片機(jī)與溫度傳感器構(gòu)成的測(cè)溫系統(tǒng)可廣泛應(yīng)用于很多領(lǐng)域。</p><p>  本設(shè)計(jì)采用51單片機(jī)和DS18B20 數(shù)字溫度傳感器來(lái)進(jìn)行溫度測(cè)量的方法,包括溫度傳感器芯片的選取、單片機(jī)與溫度傳感器接口電路的

4、設(shè)計(jì),以及實(shí)現(xiàn)溫度信息采集和數(shù)據(jù)傳輸?shù)能浖O(shè)計(jì)。DS18B20 數(shù)字溫度傳感器是單總線器件,與51 單片機(jī)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單、體積小等特點(diǎn),而且在一根通信線上,可以掛接很多這樣的測(cè)溫系統(tǒng),十分方便。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī);溫度傳感器;數(shù)字溫度計(jì)</p><p>  Design and implementation of the digital thermomet

5、er based on DS18B20</p><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 re

6、latively mature technology.The 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 fi

7、elds.</p><p>  A practical temperature measuring method based on microcont roller and DS18B20 digital temperature sensor was presented. The selection of temperature sensor chip was discussed and the design o

8、f hardware interface circuit and related sof tware were dealt with in more details. The proposed design is simple in hardware connection lines and small in size. In addition , it is applicable for different temperature m

9、easuring systems based on DS18B20</p><p>  temperature sensors hung on one communication line.</p><p>  Key words:microcontroller;temperature sensor;temperature measurement system</p><

10、;p><b>  目 錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 溫度計(jì)的介紹1</p><p>  1.2選題的目的和意義、1</p><p>  1.2.1選題的目的1</p><p>  1.2.2選題的意義

11、2</p><p>  2 數(shù)字溫度計(jì)的設(shè)計(jì)方案2</p><p>  2.1 設(shè)計(jì)方案的確立及論證2</p><p>  2.1.1 溫度傳感器DS18B20的選擇2</p><p>  2.1.2 單片機(jī)STC89C52的選擇3</p><p>  3 系統(tǒng)硬件電路的設(shè)計(jì)3</p><

12、p>  3.1 主控制器3</p><p>  3.1.1 STC89C52的介紹4</p><p>  3.1.2 DS18B20的介紹10</p><p>  3.1.3 DS18B20使用的注意事項(xiàng)17</p><p>  3.2 DS18B20與單片機(jī)接口電路的設(shè)計(jì)17</p><p>  3

13、.3 顯示電路的設(shè)計(jì)18</p><p>  3.3.1方案一:數(shù)碼管顯示18</p><p>  3.3.2方案二:液晶顯示19</p><p>  3.3.3 顯示電路22</p><p>  4 系統(tǒng)程序的設(shè)計(jì)22</p><p>  4.1 系統(tǒng)設(shè)計(jì)內(nèi)容22</p><p>

14、;  4.1.1主程序23</p><p>  4.1.2 讀出溫度子程序23</p><p>  4.1.3 溫度轉(zhuǎn)換命令子程序24</p><p>  4.1.4 計(jì)算溫度子程序24</p><p>  4.1.5 顯示數(shù)據(jù)刷新子程序25</p><p>  4.1.6 溫度數(shù)據(jù)的計(jì)算處理方法26

15、</p><p>  4.2 匯編源程序26</p><p>  4.2.1 DS18B20的各條ROM命令26</p><p>  5 調(diào)試及性能分析28</p><p>  5.1 系統(tǒng)的調(diào)試28</p><p>  5.2 性能分析28</p><p><b>  致

16、 謝30</b></p><p><b>  參考文獻(xiàn)31</b></p><p><b>  附錄32</b></p><p>  基于DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  自動(dòng)化2008級(jí)1班:羅文釗</p><p>  指導(dǎo)老師

17、:彭昕昀 講師</p><p><b>  1 緒論</b></p><p>  1.1 溫度計(jì)的介紹</p><p>  溫度計(jì)是測(cè)溫儀器的總稱。根據(jù)所用測(cè)溫物質(zhì)的不同和測(cè)溫范圍的不同,有煤油溫度計(jì)、酒精溫度計(jì)、水銀溫度計(jì)、氣體溫度計(jì)、電阻溫度計(jì)、溫差電偶溫度計(jì)、輻射溫度計(jì)和光測(cè)溫度計(jì)等。</p><p>  隨著科

18、學(xué)技術(shù)的發(fā)展和現(xiàn)代工業(yè)技術(shù)的需要,測(cè)溫技術(shù)也不斷地改進(jìn)和提高。由于測(cè)溫范圍越來(lái)越廣,根據(jù)不同的要求,又制造出不同需要的測(cè)溫儀器。下面介紹幾種。</p><p>  氣體溫度計(jì)多用氫氣和氦氣作測(cè)溫物質(zhì),因?yàn)闅錃夂秃獾囊夯瘻囟群艿?,接近于絕對(duì)零度,故它的測(cè)溫范圍很廣。這種溫度計(jì)精確度很高,多用于精密測(cè)量。</p><p>  電阻溫度計(jì)分為金屬電阻溫度計(jì)和半導(dǎo)體電阻溫度計(jì),都是根據(jù)電阻值隨溫

19、度的變化這一特性制成的。金屬溫度計(jì)主要有用鉑、金、銅、鎳等純金屬的及銠鐵、磷青銅合金的;半導(dǎo)體溫度計(jì)主要用碳、鍺等。電阻溫度計(jì)使用方便可靠,已廣泛應(yīng)用。它的測(cè)量范圍為-260℃至600℃左右。</p><p>  溫差電偶溫度計(jì)是一種工業(yè)上廣泛應(yīng)用的測(cè)溫儀器。利用溫差電現(xiàn)象制成。兩種不同的金屬絲焊接在一起形成工作端,另兩端與測(cè)量?jī)x表連接,形成電路。把工作端放在被測(cè)溫度處,工作端與自由端溫度不同時(shí),就會(huì)出現(xiàn)電動(dòng)勢(shì),

20、因而有電流通過(guò)回路。通過(guò)電學(xué)量的測(cè)量,利用已知處的溫度,就可以測(cè)定另一處的溫度。這種溫度計(jì)多用銅—康銅、鐵—康銅、鎳銘—康銅、金鉆—銅、鉑—銠等組成。它適用于溫差較大的兩種物質(zhì)之間,多用于高溫和低濁測(cè)量。有的溫差電偶能測(cè)量高達(dá)3000℃的高溫。有的能測(cè)接近絕對(duì)零度的低溫。</p><p>  1.2選題的目的和意義</p><p>  1.2.1選題的目的</p><p

21、>  利用單片機(jī)STC89C52和溫度傳感器DS18B20設(shè)計(jì)一個(gè)設(shè)計(jì)溫度計(jì),能夠測(cè)量-55 ~+125℃之間的溫度值,用LCD液晶屏直接顯示,誤差在±0.5℃以內(nèi),同時(shí)要求使用的元器件數(shù)目最少。通過(guò)這次設(shè)計(jì)能夠更加了解數(shù)字溫度計(jì)的工作原理和熟悉單片機(jī)的發(fā)展和應(yīng)用,鞏固所學(xué)的知識(shí)。</p><p>  1.2.2選題的意義</p><p>  單片機(jī)是隨著超大規(guī)模集成電路技

22、術(shù)的發(fā)展而誕生的,由于它具有體積小、功能強(qiáng)、性價(jià)比高等特點(diǎn),所以廣泛應(yīng)用于電子儀表、家用電器、節(jié)能裝置、軍事裝置、機(jī)器人、工業(yè)控制等諸多領(lǐng)域,使產(chǎn)品小型化、智能化,既提高了產(chǎn)品的功能和質(zhì)量,又降低了成本,簡(jiǎn)化了設(shè)計(jì)。本設(shè)計(jì)主要利用單片機(jī)和LCD液晶顯示屏設(shè)計(jì)一個(gè)數(shù)字顯示的溫度計(jì)。選題的意義在于通過(guò)這次設(shè)計(jì)可以將平時(shí)在課堂上學(xué)到的關(guān)于單片機(jī)的知識(shí)應(yīng)用與實(shí)踐中,而且更加深入的認(rèn)識(shí)到單片機(jī)在現(xiàn)代生活和生產(chǎn)中的重要性。</p>&

23、lt;p>  2 數(shù)字溫度計(jì)的設(shè)計(jì)方案</p><p>  2.1 設(shè)計(jì)方案的確立及論證</p><p><b>  功能要求:</b></p><p>  數(shù)字式溫度計(jì)測(cè)溫范圍在-55~+125℃,誤差在±0.5℃以內(nèi),采用LCD液晶屏顯示,直接讀取測(cè)溫值。</p><p><b>  方案論

24、證:</b></p><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ù)前需要看清它的最小

25、分度值,還有它有熱慣性,需要等到溫度計(jì)達(dá)到穩(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>

26、<p>  方案三:DS18B20傳感器測(cè)溫</p><p>  本設(shè)計(jì)采用美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件</p><p>  DS18B20可以直接讀出被測(cè)溫度值,而且采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有成本低和易使用的特點(diǎn)。</p><p>  2.1.2 單片機(jī)STC

27、89C52的選擇</p><p>  STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器,內(nèi)置看門狗定時(shí)器,而且STC89C52可降到0Hz靜態(tài)邏輯操作,支持兩種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器∕計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)存被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到一個(gè)中斷或硬件復(fù)位為止。而且STC89C5

28、2的工作電壓為3.3V,因此可以用來(lái)開發(fā)三節(jié)5號(hào)電池供電的便攜式產(chǎn)品。和AT89S52單片機(jī)的對(duì)比: </p><p>  STC89C52RC單片機(jī): ①8K字節(jié)程序存儲(chǔ)空間; ②512字節(jié)數(shù)據(jù)存儲(chǔ)空間; ③內(nèi)帶4K字節(jié)EEPROM存儲(chǔ)空間; ④可直接使用串口下載。 </p><p>  AT89S52單片機(jī): ①8K字節(jié)程序存儲(chǔ)空間; ②256字節(jié)數(shù)據(jù)存儲(chǔ)空間; ③沒(méi)有內(nèi)帶EEPROM

29、存儲(chǔ)空間。</p><p>  因此選用STC89C52更適合。</p><p>  按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成;主控制器、測(cè)溫電路和顯示電路。 </p><p>  數(shù)字溫度計(jì)總體設(shè)計(jì)電路結(jié)構(gòu)框圖如2.1圖所示:</p><p>  圖2.1 數(shù)字溫度計(jì)總體結(jié)構(gòu)框圖</p><p>  3 系統(tǒng)硬

30、件電路的設(shè)計(jì)</p><p><b>  3.1 主控制器</b></p><p>  單片機(jī)STC89C52具有高速、低功耗、超強(qiáng)抗干擾的特點(diǎn),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘∕機(jī)器周期和6時(shí)鐘∕機(jī)器周期可以任意選擇。</p><p>  3.1.1 STC89C52的介紹</p><p>  STC89C

31、52簡(jiǎn)介:</p><p>  STC89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM-Flash Programable and Erasable Read Only Memory)的低電壓,高性能COMOS8的微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。實(shí)物如3.1圖所示:</p><p>

32、  圖3.1 STC89C52 實(shí)物圖</p><p>  STC89C52引腳及特點(diǎn)</p><p>  STC89C52的引腳如圖3.2所示:</p><p>  圖3.2 芯片引腳功能</p><p>  STC89C52引腳功能說(shuō)明</p><p>  Vcc(40引腳):電源電壓。</p>

33、<p>  Vss(20引腳):接地。</p><p>  P0端(P0.0~P0.7,39~32引腳):P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入,在訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí)

34、,則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。</p><p>  P1端口(P1.0~P1.7,1~8引腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流。</p><p>  此外,P1.0和P1.1還可

35、以作為定時(shí)器/計(jì)數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如表3.1所示:</p><p>  表3.1 P1.0和P1.1引腳復(fù)用功能</p><p>  P2端口(P2.0~P2.7,21~28引腳);P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口.P2的輸出緩沖器可以驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高

36、電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。</p><p>  在訪問(wèn)外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX@DPTR”指令)時(shí),P2送出高8位地址。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVX@R1”指令)時(shí),P2口引腳上的內(nèi)容,在整個(gè)訪問(wèn)期間不會(huì)改變。</p><p>  在對(duì)Flash ROM

37、編程和程序校驗(yàn)期間,P2也接收高位地址和一些控制信號(hào)。</p><p>  P3端口(P3.0~P3.7,10~17引腳):P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P3的輸出緩沖器可驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一個(gè)電流。</p><p>  在對(duì)Flas

38、h ROM編程或程序校驗(yàn)時(shí),P3還接收一些控制信號(hào)。</p><p>  P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如表3.2所示:</p><p>  表3.2 P3口引腳復(fù)用功能</p><p>  RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來(lái)完成單片機(jī)的復(fù)位初始化操作。看門狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平

39、。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無(wú)效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p>  ALE/PROG (30引腳):地址鎖存控制信號(hào)(ALE)是訪問(wèn)外部程序存儲(chǔ)器時(shí)鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳(PROG )也用作編程輸入脈沖。</p><p>  在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)

40、器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過(guò)。</p><p>  如果需要,通過(guò)將地址位8EH的SFR的第0位置“1”,ALE操作將無(wú)效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOV指令時(shí)有效。否則,ALE將被微弱拉高。這個(gè)ALE使能標(biāo)志位(地址位8EH的SFR的第0位)的設(shè)置對(duì)微控制器在外部執(zhí)行模式下無(wú)效。</p><p>  PSEN(29引腳):外

41、部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C51RC從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。</p><p>  EA/VPP(31引腳):訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令, EA必須接GND。注意加密方式1時(shí),EA將內(nèi)部鎖定為RESET。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)

42、該接VCC。在Flash編程期間,EA也接收12伏VPP電壓。</p><p>  XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p>  XTAL2(18引腳):振蕩器反相放大器的輸入端。</p><p>  2.特殊功能寄存器 </p><p>  STC89C52除了有定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器

43、1之外,還增加了一個(gè)定時(shí)器/計(jì)數(shù)器2.定時(shí)器/計(jì)數(shù)器2的控制與狀態(tài)位位于T2CON,如表3.3所示:</p><p>  表3.3 特殊功能寄存器T2CON的描述</p><p>  T2CON 地址=0C8H 可位尋址 復(fù)位值=00H</p><p>  定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。通過(guò)設(shè)置特殊功能寄存器

44、T2CON中的C/T2位,可將其作為定時(shí)器或計(jì)數(shù)器(特殊功能寄存器T2CON的功能說(shuō)明如表3.4所示)。</p><p>  表3.4 定時(shí)/計(jì)數(shù)器2控制器寄存器各位功能說(shuō)明</p><p>  定時(shí)器2有3種操作模式:捕獲、自動(dòng)重新裝載(遞增或遞減計(jì)數(shù))和波特率發(fā)生器,這3種模式由T2CON中的位進(jìn)行選擇,如表3.5所示:

45、 </p><p>  表3.5 定時(shí)器2工作方式</p><p>  3.STC89C52單片機(jī)的主要特征</p><p>  (1)增強(qiáng)型8051單片機(jī),6時(shí)鐘/機(jī)器周期和12時(shí)鐘/機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051。</p><p> ?。?)工作電壓:5.5V~3.3V(5V單片機(jī))/3.8V~2.0V(3V單片機(jī))

46、。</p><p> ?。?)工作頻率范圍:0~40MHz,相當(dāng)于普通8051的0~80MHz,實(shí)際工作頻率可達(dá)48MHz。</p><p> ?。?)用戶應(yīng)用程序空間為8K字節(jié)。</p><p> ?。?)片上幾成512字節(jié)RAM。</p><p>  (6)通用I/O口(32個(gè)),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉,P0口

47、是漏極開路輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。</p><p> ?。?)ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片。</p><p> ?。?)具有EEPROM功能。</p><p> ?。?)具有看門狗功能。

48、</p><p>  (10)共有3個(gè)16位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T2。</p><p> ?。?1)外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒。</p><p> ?。?2)通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART。</p><p> ?。?3)工作

49、溫度范圍;-40~+85℃(工業(yè)級(jí))/0~75℃(商業(yè)級(jí))。</p><p> ?。?4)PDIP封裝。</p><p>  4. STC89C52單片機(jī)的工作模式</p><p> ?。?)掉電模式:典型功耗<0.1μA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序。</p><p>  (2)空閑模式:典型功耗2mA。</p>

50、<p>  (3)正常工作模式:典型功耗4mA~7mA。</p><p>  (4)掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統(tǒng)及便攜設(shè)備。</p><p>  3.1.2 DS18B20的介紹</p><p>  1.DS18B20簡(jiǎn)介</p><p>  Dallas的最新單線數(shù)字溫度傳感器DS18B20簡(jiǎn)稱新的

51、“一線器件”體積更小、使用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18b20是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18b20、DS1822“一線總線”數(shù)字化溫度傳感器同DS1820一樣,DS18B20也支持“一線總線”接口,測(cè)量溫度范圍為-55℃~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃。D

52、S1822的精度較差為±2℃。現(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。其實(shí)物圖如3.3圖所示:</p><p>  圖3.3 DS18B20的實(shí)物管腳分布圖</p>&

53、lt;p>  2.DS18B20引腳及特點(diǎn) </p><p><b>  (1)引腳功能說(shuō)明</b></p><p><b>  GND是地址信號(hào);</b></p><p>  DQ是數(shù)據(jù)輸入/輸出引腳,開漏單總線接口引腳,當(dāng)被用在寄生電源下,也可以向器件提供電源;</p><p>  VDD

54、為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。</p><p> ?。?)DS18B20功能特點(diǎn)</p><p>  ①采用單總線技術(shù),與單片機(jī)通信只需要一根I/O線,在一根線上可以掛接多個(gè)DS18B20。</p><p> ?、诿恐籇S18B20具有一個(gè)獨(dú)有的,不可修改的64位序列號(hào),根據(jù)序列號(hào)訪問(wèn)地應(yīng)的器件。</p><p> ?、鄣?/p>

55、壓供電,電源范圍從3.0~5.5V,可以本地供電,也可以直接從數(shù)據(jù)線竊取電源(寄生電源方式)。</p><p> ?、軠y(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi)誤差為±0.5℃。</p><p> ?、菘删庉嫈?shù)據(jù)為9~12位,轉(zhuǎn)換12位溫度時(shí)間為750ms(最大)。</p><p> ?、抻脩艨勺栽O(shè)定報(bào)警上下限溫度。</p>

56、<p> ?、邎?bào)警搜索命令可識(shí)別和尋址超過(guò)程序限定溫度(溫度報(bào)警條件)的器件。</p><p> ?、郉S18B20的分辨率由用戶通過(guò)EEPROM設(shè)置為9~12位。</p><p> ?、酓S18B20可將檢測(cè)到溫度值直接轉(zhuǎn)化為數(shù)字量,并通過(guò)串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信。</p><p>  ⑩負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因?yàn)榘l(fā)熱而燒毀,

57、只是不能正常工作。</p><p>  3.DS18B20的內(nèi)部結(jié)構(gòu)</p><p>  (1)DS18B20內(nèi)部結(jié)構(gòu)及功能</p><p>  DS18B20采用3腳PR—35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)如3.5圖所示,主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲(chǔ)用戶設(shè)定溫度上下限值的TH和TL觸發(fā)器,存

58、儲(chǔ)與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等7部分。如圖3.4所示:</p><p>  圖3.4 DS18B20內(nèi)部結(jié)構(gòu)</p><p> ?。?)64位激光ROM</p><p>  每一個(gè)DS18B20包括一個(gè)唯一個(gè)64位長(zhǎng)的ROM編碼。64位ROM的位結(jié)構(gòu)如下圖3.5所示。開始的8位是單線產(chǎn)品系列編碼(DS1820編碼是10h);接著的48位是每個(gè)器件

59、唯一的系列號(hào);最后的8位是開始56位CRC檢驗(yàn)碼。64位ROM和ROM操作控制部分允許DS18B20作為一個(gè)單線器件工作并遵循“單線總線系統(tǒng)”一節(jié)中所詳述的單線協(xié)議。知道ROM操作協(xié)議被滿足,DS18B20控制部分的功能是不可訪問(wèn)的。單線總線主機(jī)必須首先操作五種ROM操作命令之一:1、Read ROM(讀ROM),2、Match ROM(匹配(ROM),3、Search ROM(搜索ROM),4、Skip ROM(跳過(guò)ROM),或5、A

60、larm Search(告警搜索)。在成功地執(zhí)行了ROM操作序列之后DS18B20特定的功能便可訪問(wèn),然后總線上主機(jī)可提供六個(gè)存儲(chǔ)器和控制功能命令之一。</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) &

61、lt;/p><p>  在DS18B20完成溫度變換之后,溫度值與貯存在TH和TL內(nèi)的觸發(fā)值相比較。因?yàn)檫@些寄存器僅僅是8位,所以0.5℃位在比較時(shí)被忽略。TH或TL的最高比較位直接對(duì)應(yīng)于16位溫度寄存器的符號(hào)位。如果溫度測(cè)量的結(jié)果高于TH或低于TL,那么器件內(nèi)告警標(biāo)志將置位。每次溫度測(cè)量更新此標(biāo)志。只要告警標(biāo)志置位,DS18B20將對(duì)告警搜索命令做出響應(yīng)。這允許并聯(lián)接許多DS18B20,同時(shí)進(jìn)行溫度測(cè)量。如果某處溫

62、度超過(guò)極限,那么可以識(shí)別出正在告警的器件并立即將其讀出而不必讀出非告警的器件。</p><p> ?。?)CRC產(chǎn)生 </p><p>  DS18B20有一存貯在64位ROM的最高有效字節(jié)內(nèi)的8位CRC。總線上的主機(jī)可以根據(jù)64位ROM的前56位計(jì)算機(jī)CRC的值并把它與存貯在DS18B20內(nèi)的值進(jìn)行比較以決定ROM的數(shù)據(jù)是否已被主機(jī)正確地接收。C

63、RC的等效多項(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ù)據(jù)字節(jié)的傳送。在使用CRC來(lái)確認(rèn)數(shù)據(jù)傳送的每一種情況中,總線主機(jī)必須使用上面給出的多項(xiàng)式函數(shù)計(jì)算CRC的值并把計(jì)算所得的值或者與

64、存貯在DS18B20的64位ROM部分中的8位CRC值(ROM讀數(shù)),或者與DS18B20中計(jì)算得到的8位CRC值(在讀暫存存貯器中時(shí),它作為第九個(gè)字節(jié)被讀出),進(jìn)行比較。CRC值的比較和是否繼續(xù)操作都由總線主機(jī)來(lái)決定。當(dāng)存貯在DS18B20內(nèi)或由DS18B20計(jì)算得到的CRC值與總線主機(jī)產(chǎn)生的值不相符合時(shí),在DS18B20內(nèi)沒(méi)有電路來(lái)阻住命令序列的繼續(xù)執(zhí)行。</p><p> ?。?)存貯器 &l

65、t;/p><p>  DS18B20的存貯器由一個(gè)高速暫存(便箋式)RAM和一個(gè)非易失性、電可擦除EEPROM組成,后者存貯高溫度和低溫度觸發(fā)器TH和TL。暫存存貯器有助于在單線通信時(shí)確保數(shù)據(jù)的完整性。數(shù)據(jù)首先寫入暫存存貯器,在那里它可以被讀回。當(dāng)數(shù)據(jù)被校驗(yàn)之后,復(fù)制暫存存貯器的命令把數(shù)據(jù)傳送到非易失性EEPROM。這一過(guò)程確保了更改存貯器時(shí)數(shù)據(jù)的完整性。</p><p>  高速暫存RAM的

66、結(jié)構(gòu)為9字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如3.6圖所示。前2字節(jié)包含測(cè)得的溫度信息。第3和第4字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)刷新。第5字節(jié)為配置寄存器,其內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。該字節(jié)個(gè)位的定義如3.7圖所示,其中,低5位一直為1;TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,在DS18B20出廠時(shí),該位被設(shè)置為0,用戶不要去改動(dòng);R

67、1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辨率,其定義方法見表3.6:</p><p>  表3.6 DS18B20分辨率</p><p>  表3.6 DS18B20分辨率的定義和規(guī)定</p><p>  由表3.6可見,DS18B20溫度轉(zhuǎn)換的時(shí)間較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。&l

68、t;/p><p>  圖3.6 高速暫存RAM結(jié)構(gòu)圖</p><p>  高速暫存的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)是前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。如表3.7所示:</p><p>  表3.7 配置寄存器位定義</p><p>  當(dāng)DS18B20接受到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)

69、換完成后的溫度值就以16位帶符號(hào)擴(kuò)張的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在暫存RAM的第1、2字節(jié)中。</p><p>  單片機(jī)可以通過(guò)單線接口讀出數(shù)據(jù)。讀數(shù)據(jù)是,低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。溫度值格式如圖3.7所示:</p><p><b>  低字節(jié) </b></p><p><b>  高字節(jié) <

70、;/b></p><p>  圖3.7 溫度數(shù)據(jù)值格式</p><p>  圖中,S表示符號(hào)位。當(dāng)S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制值。表3.8是部分溫度值對(duì)應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。</p><p>  表3.8 DS18B20溫度與表示值對(duì)應(yīng)表</p&

71、gt;<p>  DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較,若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多個(gè)DS18B20同時(shí)測(cè)得溫度并進(jìn)行報(bào)警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并與存入DS18B20的CRC值

72、作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p>  4.DS18B20的測(cè)溫原理 </p><p>  如圖3.8所示,圖中低溫度系數(shù)振蕩器的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。</p><p>  圖3.8 D

73、S18B20測(cè)溫原理圖</p><p>  圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p>  減法計(jì)數(shù)器1對(duì)低溫度系數(shù)振蕩器產(chǎn)生的

74、脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置值將重新被裝入,并重新開始對(duì)低溫度系數(shù)振蕩器產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù)。如此循環(huán),知道減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度計(jì)數(shù)器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖3.9中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程的非線形性,直到溫度寄存器達(dá)到被測(cè)溫度值。</p><p>  另外,DS18B20單線通信功能是分時(shí)完成的,有

75、嚴(yán)格的時(shí)隙概念,因此讀/寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。</p><p>  3.1.3 DS18B20使用的注意事項(xiàng)</p><p>  DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: </p&

76、gt;<p>  (1)較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 </p><p>  (2)在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問(wèn)題,容易使人誤認(rèn)為

77、可以掛任意多個(gè)DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過(guò)8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。 </p><p>  (3)連接DS1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),

78、正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問(wèn)題。 </p><p>  (4)在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連

79、接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。</p><p>  3.2 DS18B20與單片機(jī)接口電路的設(shè)計(jì) </p><p>  DS18B20可以采用兩種供電方式:一種是采用電源供電方式,此時(shí)DS18B20的第1引腳接地,第2引腳作為信號(hào)線,第3引腳接電源;另外一種是寄生電源供電方式,如圖3.9所示。單片機(jī)端口接單線總線,為保證在有

80、效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上位。</p><p>  圖3.9 DS18B20采用寄生電源的電路圖</p><p>  當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最長(zhǎng)為500ms。采用寄生電源供電方式時(shí),VDD和GND端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。</p&

81、gt;<p>  3.3 顯示電路的設(shè)計(jì)</p><p>  3.3.1方案一:數(shù)碼管顯示</p><p>  數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管。按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。

82、共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就

83、不亮。LED數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃和公共電極。如圖3.10所示:</p><p>  圖3.10 八段數(shù)碼管圖</p><p>  數(shù)碼管的動(dòng)態(tài)顯示:數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,

84、d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯

85、示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p>  3.3.2方案二:液晶顯示</p><p>  1602LCD液晶簡(jiǎn)介</p><

86、p>  1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱?,所以它不能顯示圖形。</p><p>  1602LCD是指顯示的內(nèi)容為16×2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)

87、字)。</p><p>  1602LCD的特性</p><p>  (1)+5V電壓,對(duì)比度可調(diào)。</p><p>  (2)內(nèi)含復(fù)位電路。</p><p> ?。?)提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能。</p><p>  (4)有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM。</p>

88、;<p> ?。?)內(nèi)建有160個(gè)5×7點(diǎn)陣的字型的字符發(fā)生器CGROM。</p><p> ?。?)8個(gè)可由用戶自定義的5×7的字符發(fā)生器CGROM。</p><p> ?。?)字符型LCD1602通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線VCC(15腳)和地線(16腳),如表3.9所示:</p><p>

89、;  表3.9 液晶1602引腳表</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表3.10所示:</p><p>  表3.10 1602的控制指令 </p><p>  指令1:清顯示,光標(biāo)復(fù)位到地址00H位置。</p><p>  指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p>

90、;  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。</p><p>  指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光

91、標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。R/L,高向左,低向右。</p><p>  指令6:功能設(shè)置命令 DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。(有些模塊是 DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線)</p><p>  指令7:字符發(fā)生器R

92、AM地址設(shè)置,地址:字符地址*8+字符行數(shù)。(將一個(gè)字符分成5*8點(diǎn)陣,一次寫入一行,8行就組成一個(gè)字符)</p><p>  指令8:置顯示地址,第一行為:80H——8FH,第二行為:C0H——CFH。</p><p>  指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b&

93、gt;  指令10:寫數(shù)據(jù)。</b></p><p><b>  指令11:讀數(shù)據(jù)。</b></p><p>  3.3.3 顯示電路</p><p>  設(shè)計(jì)顯示電路如圖3.11所示:</p><p>  圖3.11 1602液晶接線圖</p><p>  液晶屏的軟件編程控制操作主

94、要包含初始化,寫指令和寫數(shù)據(jù)三個(gè)部分。凡是寫到液晶屏內(nèi)部,用來(lái)控制液晶屏顯示的內(nèi)容都屬于指令。寫入到液晶屏后能直接顯示出來(lái)的結(jié)果就屬于數(shù)據(jù)。</p><p>  兩種方案相比較,硬件方面方案二明顯比方案一簡(jiǎn)單,而且手工制作容易實(shí)現(xiàn),而且液晶顯示具有穩(wěn)定性,不容易出現(xiàn)硬件出錯(cuò)。軟件方面,兩種方案的軟件設(shè)計(jì)都比較容易實(shí)現(xiàn)。綜上所述,方案二適合本設(shè)計(jì),所以采用方案二。</p><p><b

95、>  4 系統(tǒng)程序的設(shè)計(jì)</b></p><p>  4.1 系統(tǒng)設(shè)計(jì)內(nèi)容</p><p>  系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和顯示數(shù)據(jù)刷新子程序等。</p><p>  4.1.1主程序 </p><p>  主程序主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出處理DS18B20的測(cè)量溫

96、度值。溫度測(cè)量每1秒進(jìn)行一次。主程序流程圖如圖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ù)的改寫。</p><p>  讀出溫度子程序流程圖如圖4.2所示:<

97、;/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)換命令子程序流程圖如圖4.3所示:</p><p>  圖4.3 溫度

98、轉(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>  圖4.4 計(jì)算溫度子程序流程圖</p><p&g

99、t;  4.1.5 顯示數(shù)據(jù)刷新子程序</p><p>  顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為0時(shí),將符號(hào)顯示位移入下一位。顯示數(shù)據(jù)刷新子程序流程圖如圖4.5所示:</p><p>  圖4.5 顯示數(shù)據(jù)刷新子程序流程圖</p><p>  4.1.6 溫度數(shù)據(jù)的計(jì)算處理方法</p><p>

100、  從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)制溫度值。</p><p>  通過(guò)觀察表4.1可以發(fā)現(xiàn),一個(gè)十進(jìn)制與二進(jìn)制間有很明顯的關(guān)系,就是把二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié)

101、,這個(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><p>  表4.1 二進(jìn)制與十進(jìn)制的近似對(duì)應(yīng)關(guān)系表</p><p><b>  4.2 源程序</b>&

102、lt;/p><p>  4.2.1 DS18B20的各條ROM命令</p><p> ?。?)Read ROM[33H]。這條命令允許總線控制器獨(dú)到DS18B20的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只要在總線上存在單只DS18B20時(shí),才能使用該命令。如果總線上有不止一個(gè)從機(jī),則當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開路連在一起形成相“與”的效果)。</p>

103、<p> ?。?)Match ROM[55H].這是一條匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS18B20.只有與64位ROM序列完全匹配的DS18B20才能響應(yīng)隨后的存儲(chǔ)器操作.所有與64位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖.這條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用.</p><p>  (3)Skip ROM[0CCH].這條命令允許總線控制器不用提

104、供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> ?。?)Search ROM[0F0H]。當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總線上有多少個(gè)器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排

105、除法識(shí)別總線上的所有從機(jī)的64位編碼。</p><p> ?。?)Alarm Search[0ECH]。這條命令的流程與Search ROM相同。然而,只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況下,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。</p><p> ?。?)Write

106、Scratchpad[4EH]。這條命令向DS18B20的暫存器TH和TL中寫入數(shù)據(jù)??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來(lái)中止寫入。</p><p>  (7)Read Scratchapad[0BEH]。這條命令讀取暫存器的內(nèi)容。讀取將從第一字節(jié)開始,一直進(jìn)行下去,知道第九字節(jié)(CRC)讀完。如果不想讀完所有字節(jié),則控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。</p><p> ?。?)Copy

107、 Scratchpad[48H]。這條命令把暫存器的內(nèi)容拷貝到DS18B20的E²PROM存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于把暫存器拷貝到E²PROM存儲(chǔ)器,則DS18B20就會(huì)輸出一個(gè)0;如果拷貝結(jié)束,則DS18B20輸出1。如果使用寄生電源,則總線控制器必須在這條命令發(fā)出后立即啟動(dòng)強(qiáng)上拉,并最少保持10ms。</p>

108、<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)換成功,則輸出1。如果使用寄生電源,則總線控制器必須在發(fā)出這條命令后立即啟動(dòng)強(qiáng)上拉,并保持500ms以上時(shí)間。</p><p> ?。?0)R

109、ecall 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><p>  (11)Read Power Supply[0B4H]。若把這條命令發(fā)給DS18B20后發(fā)出讀時(shí)間隙,器件會(huì)返回它的電源模式0:0表示寄生電

110、源;1表示外部電源。</p><p><b>  5 調(diào)試及性能分析</b></p><p><b>  5.1 系統(tǒng)的調(diào)試</b></p><p>  硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后可以用萬(wàn)用表測(cè)試或通電檢測(cè)。</p><p>  軟件程序使用keil2軟件進(jìn)行編程與編譯,Ke

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論