基于dsb數(shù)字溫度計(jì)最終修改畢業(yè)論文_第1頁(yè)
基于dsb數(shù)字溫度計(jì)最終修改畢業(yè)論文_第2頁(yè)
基于dsb數(shù)字溫度計(jì)最終修改畢業(yè)論文_第3頁(yè)
基于dsb數(shù)字溫度計(jì)最終修改畢業(yè)論文_第4頁(yè)
基于dsb數(shù)字溫度計(jì)最終修改畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、畢 業(yè) 設(shè) 計(jì)題 目:基于DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名:屈志喬學(xué) 號(hào):系 (院):電子與信息工程系專(zhuān) 業(yè):電子信息科學(xué)與技術(shù)專(zhuān)業(yè)班 級(jí):2011級(jí) 指導(dǎo)教師姓名及職稱(chēng):起止時(shí)間:年 月 年 月目 錄1 緒論11.1 溫度計(jì)的介紹11.2選題的目的和意義、11.2.1選題的目的11.2.2選題的意義22 數(shù)字溫度計(jì)的設(shè)計(jì)方案22.1 設(shè)計(jì)方案的確立及論證22.1.1 溫度傳感器DS18B20的選擇22.1.2 單片機(jī)STC89C52的選擇33 系統(tǒng)硬件電路的設(shè)計(jì)33.1 主控制器33.1.1 STC89C52的介紹43.1.2 DS18B20的介紹103.1.3 DS18B20

2、使用的注意事項(xiàng)173.2 DS18B20與單片機(jī)接口電路的設(shè)計(jì)173.3 顯示電路的設(shè)計(jì)183.3.1方案一:數(shù)碼管顯示183.3.2方案二:液晶顯示193.3.3 顯示電路224 系統(tǒng)程序的設(shè)計(jì)224.1 系統(tǒng)設(shè)計(jì)內(nèi)容224.1.1主程序234.1.2 讀出溫度子程序234.1.3 溫度轉(zhuǎn)換命令子程序244.1.4 計(jì)算溫度子程序244.1.5 顯示數(shù)據(jù)刷新子程序254.1.6 溫度數(shù)據(jù)的計(jì)算處理方法264.2 匯編源程序264.2.1 DS18B20的各條ROM命令265 調(diào)試及性能分析285.1 系統(tǒng)的調(diào)試285.2 性能分析28致 謝30參考文獻(xiàn)31附錄32基于DS18B20的數(shù)字溫度

3、計(jì)的設(shè)計(jì)與實(shí)現(xiàn)自動(dòng)化2008級(jí)1班:羅文釗指導(dǎo)老師:彭昕昀 講師1 緒論1.1 溫度計(jì)的介紹溫度計(jì)是測(cè)溫儀器的總稱(chēng)。根據(jù)所用測(cè)溫物質(zhì)的不同和測(cè)溫范圍的不同,有煤油溫度計(jì)、酒精溫度計(jì)、水銀溫度計(jì)、氣體溫度計(jì)、電阻溫度計(jì)、溫差電偶溫度計(jì)、輻射溫度計(jì)和光測(cè)溫度計(jì)等。隨著科學(xué)技術(shù)的發(fā)展和現(xiàn)代工業(yè)技術(shù)的需要,測(cè)溫技術(shù)也不斷地改進(jìn)和提高。由于測(cè)溫范圍越來(lái)越廣,根據(jù)不同的要求,又制造出不同需要的測(cè)溫儀器。下面介紹幾種。氣體溫度計(jì)多用氫氣和氦氣作測(cè)溫物質(zhì),因?yàn)闅錃夂秃獾囊夯瘻囟群艿?,接近于絕對(duì)零度,故它的測(cè)溫范圍很廣。這種溫度計(jì)精確度很高,多用于精密測(cè)量。電阻溫度計(jì)分為金屬電阻溫度計(jì)和半導(dǎo)體電阻溫度計(jì),都是

4、根據(jù)電阻值隨溫度的變化這一特性制成的。金屬溫度計(jì)主要有用鉑、金、銅、鎳等純金屬的及銠鐵、磷青銅合金的;半導(dǎo)體溫度計(jì)主要用碳、鍺等。電阻溫度計(jì)使用方便可靠,已廣泛應(yīng)用。它的測(cè)量范圍為-260至600左右。溫差電偶溫度計(jì)是一種工業(yè)上廣泛應(yīng)用的測(cè)溫儀器。利用溫差電現(xiàn)象制成。兩種不同的金屬絲焊接在一起形成工作端,另兩端與測(cè)量?jī)x表連接,形成電路。把工作端放在被測(cè)溫度處,工作端與自由端溫度不同時(shí),就會(huì)出現(xiàn)電動(dòng)勢(shì),因而有電流通過(guò)回路。通過(guò)電學(xué)量的測(cè)量,利用已知處的溫度,就可以測(cè)定另一處的溫度。這種溫度計(jì)多用銅康銅、鐵康銅、鎳銘康銅、金鉆銅、鉑銠等組成。它適用于溫差較大的兩種物質(zhì)之間,多用于高溫和低濁測(cè)量。有

5、的溫差電偶能測(cè)量高達(dá)3000的高溫。有的能測(cè)接近絕對(duì)零度的低溫。1.2選題的目的和意義1.2.1選題的目的 利用單片機(jī)STC89C52和溫度傳感器DS18B20設(shè)計(jì)一個(gè)設(shè)計(jì)溫度計(jì),能夠測(cè)量-55 +125之間的溫度值,用LCD液晶屏直接顯示,誤差在±0.5以?xún)?nèi),同時(shí)要求使用的元器件數(shù)目最少。通過(guò)這次設(shè)計(jì)能夠更加了解數(shù)字溫度計(jì)的工作原理和熟悉單片機(jī)的發(fā)展和應(yīng)用,鞏固所學(xué)的知識(shí)。1.2.2選題的意義 單片機(jī)是隨著超大規(guī)模集成電路技術(shù)的發(fā)展而誕生的,由于它具有體積小、功能強(qiáng)、性?xún)r(jià)比高等特點(diǎn),所以廣泛應(yīng)用于電子儀表、家用電器、節(jié)能裝置、軍事裝置、機(jī)器人、工業(yè)控制等諸多領(lǐng)域,使產(chǎn)品小型化、智能

6、化,既提高了產(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)中的重要性。2 數(shù)字溫度計(jì)的設(shè)計(jì)方案2.1 設(shè)計(jì)方案的確立及論證功能要求:數(shù)字式溫度計(jì)測(cè)溫范圍在-55+125,誤差在±0.5以?xún)?nèi),采用LCD液晶屏顯示,直接讀取測(cè)溫值。方案論證:2.1.1 溫度傳感器DS18B20的選擇方案一:水銀溫度計(jì) 在生活中我們經(jīng)常看到水銀溫度計(jì),它只能作為就地監(jiān)督的儀表,用它來(lái)測(cè)量溫度時(shí),由于讀數(shù)時(shí)用眼睛觀察,主觀因素

7、大,容易造成誤差大,而且不同是水銀溫度計(jì)量程不同,在讀數(shù)前需要看清它的最小分度值,還有它有熱慣性,需要等到溫度計(jì)達(dá)到穩(wěn)定狀態(tài)后才能讀數(shù),比較麻煩,并且水銀有毒,不小心打破后接觸到水銀,對(duì)人體傷害大,所以危險(xiǎn)性較高。方案二:傳統(tǒng)測(cè)溫元件 傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,其缺點(diǎn)有:硬件電路復(fù)雜;軟件調(diào)試復(fù)雜;制作成本高。方案三:DS18B20傳感器測(cè)溫 本設(shè)計(jì)采用美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件 DS18B20可以直接讀出被測(cè)溫度值,而且采用三線(xiàn)制與

8、單片機(jī)相連,減少了外部的硬件電路,具有成本低和易使用的特點(diǎn)。2.1.2 單片機(jī)STC89C52的選擇 STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器,內(nèi)置看門(mén)狗定時(shí)器,而且STC89C52可降到0Hz靜態(tài)邏輯操作,支持兩種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)存被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到一個(gè)中斷或硬件復(fù)位為止。而且STC89C52的工作電壓為3.3V,因此可以用來(lái)開(kāi)發(fā)三節(jié)5號(hào)電池供電的便攜式產(chǎn)品。和AT89S52單片機(jī)的對(duì)比: STC89C52RC

9、單片機(jī): 8K字節(jié)程序存儲(chǔ)空間; 512字節(jié)數(shù)據(jù)存儲(chǔ)空間; 內(nèi)帶4K字節(jié)EEPROM存儲(chǔ)空間; 可直接使用串口下載。 AT89S52單片機(jī): 8K字節(jié)程序存儲(chǔ)空間; 256字節(jié)數(shù)據(jù)存儲(chǔ)空間; 沒(méi)有內(nèi)帶EEPROM存儲(chǔ)空間。因此選用STC89C52更適合。按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成;主控制器、測(cè)溫電路和顯示電路。 數(shù)字溫度計(jì)總體設(shè)計(jì)電路結(jié)構(gòu)框圖如2.1圖所示:DS18B20STC89C52主控制器顯示電路掃描驅(qū)動(dòng) 圖2.1 數(shù)字溫度計(jì)總體結(jié)構(gòu)框圖3 系統(tǒng)硬件電路的設(shè)計(jì)3.1 主控制器單片機(jī)STC89C52具有高速、低功耗、超強(qiáng)抗干擾的特點(diǎn),指令代碼完全兼容傳統(tǒng)8051單片機(jī),

10、12時(shí)鐘機(jī)器周期和6時(shí)鐘機(jī)器周期可以任意選擇。3.1.1 STC89C52的介紹STC89C52簡(jiǎn)介:STC89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM-Flash Programable and Erasable Read Only Memory)的低電壓,高性能COMOS8的微處理器,俗稱(chēng)單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。實(shí)物如3.1圖所示:STC89C52引腳及特點(diǎn):STC89C52的引腳如圖3.2所示: 圖3.2 芯片引腳功能1. STC89C52引腳功能說(shuō)明Vcc(40引腳):電源電壓。V

11、ss(20引腳):接地。P0端(P0.0P0.7,3932引腳):P0口是一個(gè)漏極開(kāi)路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫(xiě)入“1”時(shí),可以作為高阻抗輸入,在訪(fǎng)問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線(xiàn)。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求外接上拉電阻。 P1端口(P1.0P1.7,18引腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫(xiě)入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸

12、入口。P1口作輸入口使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的引腳會(huì)輸出一個(gè)電流。 此外,P1.0和P1.1還可以作為定時(shí)器/計(jì)數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如表3.1所示:表3.1 P1.0和P1.1引腳復(fù)用功能 P2端口(P2.0P2.7,2128引腳);P2口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口.P2的輸出緩沖器可以驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫(xiě)入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,這時(shí)可用作輸入口。P2作為輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸出一個(gè)電流。 在訪(fǎng)問(wèn)外部程序存儲(chǔ)器和16位地址

13、的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVXDPTR”指令)時(shí),P2送出高8位地址。在訪(fǎng)問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行“MOVXR1”指令)時(shí),P2口引腳上的內(nèi)容,在整個(gè)訪(fǎng)問(wèn)期間不會(huì)改變。 在對(duì)Flash ROM編程和程序校驗(yàn)期間,P2也接收高位地址和一些控制信號(hào)。 P3端口(P3.0P3.7,1017引腳):P3是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口。P3的輸出緩沖器可驅(qū)動(dòng)4個(gè)TTL輸入。對(duì)端口寫(xiě)入1時(shí),通過(guò)內(nèi)部的上拉電阻把端口拉到高電位,這時(shí)可用作輸入口。P3作輸入口使用時(shí),因?yàn)橛袃?nèi)部的上拉電阻,那些被外部信號(hào)拉低的引腳會(huì)輸入一個(gè)電流。 在對(duì)Flash ROM編程或程序校驗(yàn)時(shí),P3還接收一些控制

14、信號(hào)。 P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如表3.2所示:表3.2 P3口引腳復(fù)用功能RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個(gè)機(jī)器周期以上高電平時(shí)為有效,用來(lái)完成單片機(jī)的復(fù)位初始化操作??撮T(mén)狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無(wú)效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG (30引腳):地址鎖存控制信號(hào)(ALE)是訪(fǎng)問(wèn)外部程序存儲(chǔ)器時(shí)鎖存低8位地址的輸出脈沖。在Flash編程時(shí),此引腳(PROG )也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外

15、部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過(guò)。如果需要,通過(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ú)效。 PSEN(29引腳):外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C51RC從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。EA/VPP(31引腳):訪(fǎng)問(wèn)外部程序存儲(chǔ)器控制信號(hào)。

16、為使能從0000H到FFFFH的外部程序存儲(chǔ)器讀取指令, EA必須接GND。注意加密方式1時(shí),EA將內(nèi)部鎖定為RESET。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在Flash編程期間,EA也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。2.特殊功能寄存器 STC89C52除了有定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1之外,還增加了一個(gè)定時(shí)器/計(jì)數(shù)器2.定時(shí)器/計(jì)數(shù)器2的控制與狀態(tài)位位于T2CON,如表3.3所示:表3.3 特殊功能寄存器T2CON的描述T2CON 地址=0C8H 可位尋址 復(fù)位值=00H定時(shí)

17、器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。通過(guò)設(shè)置特殊功能寄存器T2CON中的C/T2位,可將其作為定時(shí)器或計(jì)數(shù)器(特殊功能寄存器T2CON的功能說(shuō)明如表3.4所示)。表3.4 定時(shí)/計(jì)數(shù)器2控制器寄存器各位功能說(shuō)明 定時(shí)器2有3種操作模式:捕獲、自動(dòng)重新裝載(遞增或遞減計(jì)數(shù))和波特率發(fā)生器,這3種模式由T2CON中的位進(jìn)行選擇,如表3.5所示: 表3.5 定時(shí)器2工作方式3.STC89C52單片機(jī)的主要特征(1)增強(qiáng)型8051單片機(jī),6時(shí)鐘/機(jī)器周期和12時(shí)鐘/機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051。(2)工作電壓:5.5V3.3V(5V單片機(jī))/3.8V2.0V(3V單片機(jī))。(3)工作頻

18、率范圍:040MHz,相當(dāng)于普通8051的080MHz,實(shí)際工作頻率可達(dá)48MHz。(4)用戶(hù)應(yīng)用程序空間為8K字節(jié)。(5)片上幾成512字節(jié)RAM。(6)通用I/O口(32個(gè)),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉,P0口是漏極開(kāi)路輸出,作為總線(xiàn)擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。(7)ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專(zhuān)用編程器,無(wú)需專(zhuān)用仿真器,可通過(guò)串口(RxD/P3.0,TxD/P3.1)直接下載用戶(hù)程序,數(shù)秒即可完成一片。(8)具有EEPROM功能。(9)具有看門(mén)狗功能。(10)共有3個(gè)16位定時(shí)器/計(jì)數(shù)器。即定時(shí)器T0、T1、T

19、2。(11)外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒。(12)通用異步串行口(UART),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART。(13)工作溫度范圍;-40+85(工業(yè)級(jí))/075(商業(yè)級(jí))。(14)PDIP封裝。4. STC89C52單片機(jī)的工作模式(1)掉電模式:典型功耗0.1A,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序。(2)空閑模式:典型功耗2mA。(3)正常工作模式:典型功耗4mA7mA。(4)掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統(tǒng)及便攜設(shè)備。3.1.2 DS18B20的介紹1.DS18B20簡(jiǎn)介Dalla

20、s的最新單線(xiàn)數(shù)字溫度傳感器DS18B20簡(jiǎn)稱(chēng)新的“一線(xiàn)器件”體積更小、使用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18b20是世界上第一片支持“一線(xiàn)總線(xiàn)”接口的溫度傳感器。一線(xiàn)總線(xiàn)獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶(hù)可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18b20、DS1822“一線(xiàn)總線(xiàn)”數(shù)字化溫度傳感器同DS1820一樣,DS18B20也支持“一線(xiàn)總線(xiàn)”接口,測(cè)量溫度范圍為-55+125,在-10+85范圍內(nèi),精度為±0.5。DS1822的精度較差為±2?,F(xiàn)場(chǎng)溫度直接以“一線(xiàn)總線(xiàn)”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)

21、場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類(lèi)消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。其實(shí)物圖如3.3圖所示:圖3.3 DS18B20的實(shí)物管腳分布圖2.DS18B20引腳及特點(diǎn) (1)引腳功能說(shuō)明GND是地址信號(hào);DQ是數(shù)據(jù)輸入/輸出引腳,開(kāi)漏單總線(xiàn)接口引腳,當(dāng)被用在寄生電源下,也可以向器件提供電源;VDD為外接供電電源輸入端(在寄生電源接線(xiàn)方式時(shí)接地)。(2)DS18B20功能特點(diǎn)采用單總線(xiàn)技術(shù),與單片機(jī)通信只需要一根I/O線(xiàn),在一根線(xiàn)上可以?huà)旖佣鄠€(gè)DS18B20。每只DS18B20具有一個(gè)獨(dú)有的,不可

22、修改的64位序列號(hào),根據(jù)序列號(hào)訪(fǎng)問(wèn)地應(yīng)的器件。低壓供電,電源范圍從3.05.5V,可以本地供電,也可以直接從數(shù)據(jù)線(xiàn)竊取電源(寄生電源方式)。測(cè)溫范圍為-55+125,在-10+85范圍內(nèi)誤差為±0.5。可編輯數(shù)據(jù)為912位,轉(zhuǎn)換12位溫度時(shí)間為750ms(最大)。用戶(hù)可自設(shè)定報(bào)警上下限溫度。報(bào)警搜索命令可識(shí)別和尋址超過(guò)程序限定溫度(溫度報(bào)警條件)的器件。DS18B20的分辨率由用戶(hù)通過(guò)EEPROM設(shè)置為912位。DS18B20可將檢測(cè)到溫度值直接轉(zhuǎn)化為數(shù)字量,并通過(guò)串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信。負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因?yàn)榘l(fā)熱而燒毀,只是不能正常工作。3.DS1

23、8B20的內(nèi)部結(jié)構(gòu)(1)DS18B20內(nèi)部結(jié)構(gòu)及功能 DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)如3.5圖所示,主要包括:寄生電源,溫度傳感器,64位ROM和單總線(xiàn)接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲(chǔ)用戶(hù)設(shè)定溫度上下限值的TH和TL觸發(fā)器,存儲(chǔ)與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等7部分。如圖3.4所示:圖3.4 DS18B20內(nèi)部結(jié)構(gòu)(2)64位激光ROM 每一個(gè)DS18B20包括一個(gè)唯一個(gè)64位長(zhǎng)的ROM編碼。64位ROM的位結(jié)構(gòu)如下圖3.5所示。開(kāi)始的8位是單線(xiàn)產(chǎn)品系列編碼(DS1820編碼是10h);接著的48位是每個(gè)器件唯一的系列號(hào);最后的8

24、位是開(kāi)始56位CRC檢驗(yàn)碼。64位ROM和ROM操作控制部分允許DS18B20作為一個(gè)單線(xiàn)器件工作并遵循“單線(xiàn)總線(xiàn)系統(tǒng)”一節(jié)中所詳述的單線(xiàn)協(xié)議。知道ROM操作協(xié)議被滿(mǎn)足,DS18B20控制部分的功能是不可訪(fǎng)問(wèn)的。單線(xiàn)總線(xiàn)主機(jī)必須首先操作五種ROM操作命令之一:1、Read ROM(讀ROM),2、Match ROM(匹配(ROM),3、Search ROM(搜索ROM),4、Skip ROM(跳過(guò)ROM),或5、Alarm Search(告警搜索)。在成功地執(zhí)行了ROM操作序列之后DS18B20特定的功能便可訪(fǎng)問(wèn),然后總線(xiàn)上主機(jī)可提供六個(gè)存儲(chǔ)器和控制功能命令之一。8位檢驗(yàn)CRC 48位序列號(hào)

25、8位工廠代碼(10H) MSB LSB MSB LSB MSB LSB圖3.5 64位ROM結(jié)構(gòu)框圖(3)運(yùn)用報(bào)警信號(hào) 在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è)量。如果某處溫度超過(guò)極限,那么可以識(shí)別出正在告警的器件并立即將其讀出而不必讀出非告警的器件。(4)C

26、RC產(chǎn)生 DS18B20有一存貯在64位ROM的最高有效字節(jié)內(nèi)的8位CRC??偩€(xiàn)上的主機(jī)可以根據(jù)64位ROM的前56位計(jì)算機(jī)CRC的值并把它與存貯在DS18B20內(nèi)的值進(jìn)行比較以決定ROM的數(shù)據(jù)是否已被主機(jī)正確地接收。CRC的等效多項(xiàng)式函數(shù)為:CRC=X8+X5+X4+1 (公式3.1) DS18B20也利用與上述相同的多項(xiàng)式函數(shù)產(chǎn)生一個(gè)8位CRC值并把此值提供給總線(xiàn)的主機(jī)以確認(rèn)數(shù)據(jù)字節(jié)的傳送。在使用CRC來(lái)確認(rèn)數(shù)據(jù)傳送的每一種情況中,總線(xiàn)主機(jī)必須使用上面給出的多項(xiàng)式函數(shù)計(jì)算CRC的值并把計(jì)算所得的值或者與存貯在DS18B20的64位ROM部分中的8位CRC值(ROM讀數(shù)),或者與DS18B2

27、0中計(jì)算得到的8位CRC值(在讀暫存存貯器中時(shí),它作為第九個(gè)字節(jié)被讀出),進(jìn)行比較。CRC值的比較和是否繼續(xù)操作都由總線(xiàn)主機(jī)來(lái)決定。當(dāng)存貯在DS18B20內(nèi)或由DS18B20計(jì)算得到的CRC值與總線(xiàn)主機(jī)產(chǎn)生的值不相符合時(shí),在DS18B20內(nèi)沒(méi)有電路來(lái)阻住命令序列的繼續(xù)執(zhí)行。(5)存貯器 DS18B20的存貯器由一個(gè)高速暫存(便箋式)RAM和一個(gè)非易失性、電可擦除EEPROM組成,后者存貯高溫度和低溫度觸發(fā)器TH和TL。暫存存貯器有助于在單線(xiàn)通信時(shí)確保數(shù)據(jù)的完整性。數(shù)據(jù)首先寫(xiě)入暫存存貯器,在那里它可以被讀回。當(dāng)數(shù)據(jù)被校驗(yàn)之后,復(fù)制暫存存貯器的命令把數(shù)據(jù)傳送到非易失性EEPROM。這一過(guò)程確保了更

28、改存貯器時(shí)數(shù)據(jù)的完整性。高速暫存RAM的結(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,用戶(hù)不要去改動(dòng);R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辨率,其定義方法見(jiàn)表3.6:表3.6 DS18B20分辨率R1 R0 分辨率

29、/位 溫度最大轉(zhuǎn)換時(shí)間/ms0 0 9 93.750 1 10 187.51 0 11 3751 1 12 750表3.6 DS18B20分辨率的定義和規(guī)定 由表3.6可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。 圖3.6 高速暫存RAM結(jié)構(gòu)圖 高速暫存的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)是前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。如表3.7所示:表3.7 配置寄存器位定義當(dāng)DS18B20接受到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符

30、號(hào)擴(kuò)張的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在暫存RAM的第1、2字節(jié)中。 單片機(jī)可以通過(guò)單線(xiàn)接口讀出數(shù)據(jù)。讀數(shù)據(jù)是,低位在先,高位在后,數(shù)據(jù)格式以0.0625/LSB形式表示。溫度值格式如圖3.7所示:低字節(jié) 高字節(jié) 圖3.7 溫度數(shù)據(jù)值格式 圖中,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ù)。表3.8 DS18B20溫度與表示值對(duì)應(yīng)表 DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較,若TTH或TTL,則將該器件內(nèi)的報(bào)警標(biāo)志

31、位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多個(gè)DS18B20同時(shí)測(cè)得溫度并進(jìn)行報(bào)警搜索。 在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并與存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。4.DS18B20的測(cè)溫原理 如圖3.8所示,圖中低溫度系數(shù)振蕩器的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖3.8 DS18B20測(cè)溫原理圖 圖中還隱含著計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系

32、數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器和溫度寄存器被預(yù)置在-55所對(duì)應(yīng)的一個(gè)基數(shù)值。 減法計(jì)數(shù)器1對(duì)低溫度系數(shù)振蕩器產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置值將重新被裝入,并重新開(kāi)始對(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ò)程的非線(xiàn)形性,直到溫度寄存器達(dá)到被測(cè)

33、溫度值。另外,DS18B20單線(xiàn)通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)隙概念,因此讀/寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。3.1.3 DS18B20使用的注意事項(xiàng)DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線(xiàn)少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: (1)較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程

34、序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 (2)在DS1820的有關(guān)資料中均未提及單總線(xiàn)上所掛DS1820數(shù)量問(wèn)題,容易使人誤認(rèn)為可以?huà)烊我舛鄠€(gè)DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線(xiàn)上所掛DS1820超過(guò)8個(gè)時(shí),就需要解決微處理器的總線(xiàn)驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。 (3)連接DS1820的總線(xiàn)電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò)50m時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線(xiàn)電纜改為雙絞線(xiàn)帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線(xiàn)帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線(xiàn)分布電容使信號(hào)波形

35、產(chǎn)生畸變?cè)斐傻?。因此,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線(xiàn)分布電容和阻抗匹配問(wèn)題。 (4)在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦某個(gè)DS1820接觸不好或斷線(xiàn),當(dāng)程序讀該DS1820時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。3.2 DS18B20與單片機(jī)接口電路的設(shè)計(jì) DS18B20可以采用兩種供電方式:一種是采用電源供電方式,此時(shí)DS18B20的第1引腳接地,第2引腳作為信號(hào)線(xiàn),第3引腳接電源;另外一種是寄生電源供電方式,如圖3.9所示。單片機(jī)端口接單

36、線(xiàn)總線(xiàn),為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線(xiàn)的上位。圖3.9 DS18B20采用寄生電源的電路圖當(dāng)DS18B20處于寫(xiě)存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線(xiàn)上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最長(zhǎng)為500ms。采用寄生電源供電方式時(shí),VDD和GND端接地。由于單線(xiàn)制只有一根線(xiàn),因此發(fā)送接口必須是三態(tài)的。3.3 顯示電路的設(shè)計(jì)3.3.1方案一:數(shù)碼管顯示數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等

37、等數(shù)碼管。按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(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接到地線(xiàn)GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。LED數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成

38、“8”字型的器件,引線(xiàn)已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃和公共電極。如圖3.10所示:圖3.10 八段數(shù)碼管圖數(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,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線(xiàn)控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮

39、。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺(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端口,而且功耗更低。3.3.2方案二:液晶顯示1602LCD液晶簡(jiǎn)介1602液晶也叫1602字符型液晶,它是一種專(zhuān)門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的

40、間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱耍运荒茱@示圖形。1602LCD是指顯示的內(nèi)容為16×2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。1602LCD的特性(1)+5V電壓,對(duì)比度可調(diào)。(2)內(nèi)含復(fù)位電路。(3)提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能。(4)有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM。(5)內(nèi)建有160個(gè)5×7點(diǎn)陣的字型的字符發(fā)生器CGROM。(6)8個(gè)可由用戶(hù)自定義的5×7的字符發(fā)生器CGROM。(7)字符型LCD1602通常有14條引腳線(xiàn)或16條引腳線(xiàn)的LCD,多出來(lái)的2條線(xiàn)是

41、背光電源線(xiàn)VCC(15腳)和地線(xiàn)(16腳),如表3.9所示:表3.9 液晶1602引腳表1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表3.10所示:表3.10 1602的控制指令 指令1:清顯示,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍

42、。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。R/L,高向左,低向右。指令6:功能設(shè)置命令 DL:高電平時(shí)為8位總線(xiàn),低電平時(shí)為4位總線(xiàn) N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。(有些模塊是 DL:高電平時(shí)為8位總線(xiàn),低電平時(shí)為4位總線(xiàn))指令7:字符發(fā)生器RAM地址設(shè)置,地址:字符地址*8+字符行數(shù)。(將一個(gè)字符分成5*8點(diǎn)陣,一次寫(xiě)入一行,8行就組成一個(gè)字符)指令8:置顯示地址,第一行為:80H8FH,第二行為:C0HCFH。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊

43、不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。指令11:讀數(shù)據(jù)。3.3.3 顯示電路設(shè)計(jì)顯示電路如圖3.11所示:圖3.11 1602液晶接線(xiàn)圖液晶屏的軟件編程控制操作主要包含初始化,寫(xiě)指令和寫(xiě)數(shù)據(jù)三個(gè)部分。凡是寫(xiě)到液晶屏內(nèi)部,用來(lái)控制液晶屏顯示的內(nèi)容都屬于指令。寫(xiě)入到液晶屏后能直接顯示出來(lái)的結(jié)果就屬于數(shù)據(jù)。兩種方案相比較,硬件方面方案二明顯比方案一簡(jiǎn)單,而且手工制作容易實(shí)現(xiàn),而且液晶顯示具有穩(wěn)定性,不容易出現(xiàn)硬件出錯(cuò)。軟件方面,兩種方案的軟件設(shè)計(jì)都比較容易實(shí)現(xiàn)。綜上所述,方案二適合本設(shè)計(jì),所以采用方案二。4 系統(tǒng)程序的設(shè)計(jì)4.1 系統(tǒng)設(shè)計(jì)內(nèi)容系統(tǒng)程序主要包括主程序、讀出溫度子

44、程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序和顯示數(shù)據(jù)刷新子程序等。4.1.1主程序 主程序主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出處理DS18B20的測(cè)量溫度值。溫度測(cè)量每1秒進(jìn)行一次。主程序流程圖如圖4.1所示:開(kāi)始調(diào)用顯示子程序是否到一秒是否初次上電讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新初始化發(fā)出溫度轉(zhuǎn)換開(kāi)始命令圖4.1 主程序流程圖4.1.2 讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié)。在讀出時(shí)須進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。讀出溫度子程序流程圖如圖4.2所示:圖4.2 讀出溫度子程序流程圖4.1.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,

45、當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖4.3所示:發(fā)DS18B20復(fù)位命令發(fā)跳過(guò)ROM命令發(fā)溫度轉(zhuǎn)換開(kāi)始命令結(jié)束圖4.3 溫度轉(zhuǎn)換命令子程序流程圖4.1.4 計(jì)算溫度子程序 計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定。計(jì)算溫度子程序流程圖如圖4.4所示:圖4.4 計(jì)算溫度子程序流程圖4.1.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為0時(shí),將符號(hào)顯示位移入下一位。顯示數(shù)據(jù)刷新子程序流程圖如圖4.5所示:圖4.5 顯示

46、數(shù)據(jù)刷新子程序流程圖4.1.6 溫度數(shù)據(jù)的計(jì)算處理方法 從DS18B20讀取出的二進(jìn)制值必須轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。DS18B20的轉(zhuǎn)換精度為912位,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0.0625為步進(jìn)的,即溫度值為寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。 通過(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)制值范圍是0F,轉(zhuǎn)換成十進(jìn)制小數(shù)就是0.0625的倍數(shù)(015倍)。這樣需要4位的數(shù)

47、碼管來(lái)表示小數(shù)部分。實(shí)際應(yīng)用不必這么高的精度,采用1位數(shù)碼管來(lái)顯示小數(shù),可以精確到0.1。表4.1 二進(jìn)制與十進(jìn)制的近似對(duì)應(yīng)關(guān)系表4.2 源程序4.2.1 DS18B20的各條ROM命令 (1)Read ROM33H。這條命令允許總線(xiàn)控制器獨(dú)到DS18B20的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只要在總線(xiàn)上存在單只DS18B20時(shí),才能使用該命令。如果總線(xiàn)上有不止一個(gè)從機(jī),則當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路連在一起形成相“與”的效果)。(2)Match ROM55H.這是一條匹配ROM命令,后跟64位ROM序列,讓總線(xiàn)控制器在多點(diǎn)總線(xiàn)上定位一只特定的DS18B20.

48、只有與64位ROM序列完全匹配的DS18B20才能響應(yīng)隨后的存儲(chǔ)器操作.所有與64位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖.這條命令在總線(xiàn)上有單個(gè)或多個(gè)器件時(shí)都可以使用.(3)Skip ROM0CCH.這條命令允許總線(xiàn)控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線(xiàn)情況下,可以節(jié)省時(shí)間.如果總線(xiàn)上不止一個(gè)從機(jī),則在Skip ROM命令之后跟著發(fā)一條讀命令.由于多個(gè)從機(jī)同時(shí)傳送信號(hào),所以總線(xiàn)上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路下拉效果相當(dāng)于相“與”)。(4)Search ROM0F0H。當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線(xiàn)控制器可能并不知道單線(xiàn)總線(xiàn)上有多少個(gè)器件或它們的64位ROM編碼。搜索ROM命

49、令允許總線(xiàn)控制器用排除法識(shí)別總線(xiàn)上的所有從機(jī)的64位編碼。(5)Alarm Search0ECH。這條命令的流程與Search ROM相同。然而,只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況下,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。(6)Write Scratchpad4EH。這條命令向DS18B20的暫存器TH和TL中寫(xiě)入數(shù)據(jù)??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來(lái)中止寫(xiě)入。(7)Read Scratchapad0BEH。這條命令讀取暫存器的內(nèi)容。讀取將從第一字節(jié)開(kāi)始,一直進(jìn)行下去,知道第

50、九字節(jié)(CRC)讀完。如果不想讀完所有字節(jié),則控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。(8)Copy Scratchpad48H。這條命令把暫存器的內(nèi)容拷貝到DS18B20的E²PROM存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線(xiàn)控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于把暫存器拷貝到E²PROM存儲(chǔ)器,則DS18B20就會(huì)輸出一個(gè)0;如果拷貝結(jié)束,則DS18B20輸出1。如果使用寄生電源,則總線(xiàn)控制器必須在這條命令發(fā)出后立即啟動(dòng)強(qiáng)上拉,并最少保持10ms。(9)Convert T44H。這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無(wú)需其他數(shù)據(jù)。溫度轉(zhuǎn)換

51、命令被執(zhí)行后DS18B20保持等待狀態(tài)。如果總線(xiàn)控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于做時(shí)間轉(zhuǎn)換,則DS18B20將在總線(xiàn)上輸出0;如果溫度轉(zhuǎn)換成功,則輸出1。如果使用寄生電源,則總線(xiàn)控制器必須在發(fā)出這條命令后立即啟動(dòng)強(qiáng)上拉,并保持500ms以上時(shí)間。(10)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表示完成。(11)Read Power Supply0B4H。若把這條命令發(fā)

52、給DS18B20后發(fā)出讀時(shí)間隙,器件會(huì)返回它的電源模式0:0表示寄生電源;1表示外部電源。5 調(diào)試及性能分析5.1 系統(tǒng)的調(diào)試硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后可以用萬(wàn)用表測(cè)試或通電檢測(cè)。軟件程序使用keil2軟件進(jìn)行編程與編譯,Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。下載軟件使用的是STC-ISP,STC-ISP是一款單片機(jī)下載編程燒錄軟件,是針對(duì)STC系列單片機(jī)而設(shè)計(jì)的,可下載到STC89系列和12C2052型單片機(jī)。如下圖5.1所示:圖

53、5.1 STC-ISP的操作界面圖5.2 性能分析 性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)同時(shí)進(jìn)行測(cè)量比較。由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在±0.5以?xún)?nèi)。 另外,-55+125的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低壓供電特性可以做成電池供電的手持電子溫度計(jì)。 DS18B20溫度計(jì)還可以在高低溫報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)溫控制等方面進(jìn)行應(yīng)用開(kāi)發(fā),但在實(shí)際設(shè)計(jì)中應(yīng)注意一下問(wèn)題: DS18B20工作時(shí)電流高達(dá)1.5mA,總線(xiàn)上掛接點(diǎn)數(shù)較多且同時(shí)進(jìn)行轉(zhuǎn)換時(shí)要考慮增加總線(xiàn)驅(qū)動(dòng),可用單片機(jī)端口在溫度轉(zhuǎn)換時(shí)導(dǎo)通一個(gè)MOSFET供電。 連接DS18B20的總線(xiàn)電纜是有長(zhǎng)度限制的,因此在用DS18B20進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線(xiàn)分布電容和阻抗匹配等問(wèn)題。 在DS18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào)。一旦某個(gè)DS18B20接觸不好或短線(xiàn),當(dāng)程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS18B20硬件連接

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論