版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> DS18B20數(shù)字溫度計的設計</p><p><b> 摘 要</b></p><p> 溫度是一種最基本的環(huán)境參數(shù),人們生活與環(huán)境溫度息息相關,在工業(yè)生產(chǎn)過程中需要實時測量溫度,在工業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和控制具有重要的意義。</p><p> 本論文介紹了一種以單片機為主要控制器件,
2、以DS18B20為溫度傳感器的新型數(shù)字溫度計。主要包括硬件電路的設計和系統(tǒng)程序的設計。硬件電路主要包括主控制器,測溫控制電路和顯示電路等,主控制器采用單片機AT89C52,溫度傳感器采用美國DALLAS半導體公司生產(chǎn)的DS18B20,顯示電路采用8位共陰極LED數(shù)碼管,ULN2803A為驅(qū)動的動態(tài)掃描直讀顯示。測溫控制電路由溫度傳感器和預置溫度值比較報警電路組成,當實際測量溫度值大于預置溫度值時,發(fā)出報警信號,即發(fā)光二極管亮。系統(tǒng)程序主
3、要包括主程序,測溫子程序和顯示子程序等。DS18B20新型單總線數(shù)字溫度傳感器是DALLAS 公司生產(chǎn)的單線數(shù)字溫度傳感器, 集溫度測量和 A /D轉(zhuǎn)換于一體 ,直接輸出數(shù)字量,具有接口簡單、精度高、抗干擾能力強、工作穩(wěn)定可靠等特點。</p><p> 由于采用了改進型智能溫度傳感器DS18B20作為檢測元件,與傳統(tǒng)的溫度計相比,本數(shù)字溫度計減少了外部的硬件電路,具有低成本和易使用的特點。DS18B20溫度計還
4、可以在高溫報警、遠距離多點測溫控制等方面進行應用開發(fā),具有很好的發(fā)展前景。此外,還介紹了系統(tǒng)的調(diào)試和性能分析。</p><p> 關鍵詞:顯示電路,單片機,AT89C52,溫度傳感器,DS18B20 ,單總線</p><p> The Design of DS18B20 Digit Thermometer</p><p><b> ABSTRACT&
5、lt;/b></p><p> Temperature is a basic parameters of the environment, people's lives and the environment are closely related to temperature. in the course of industrial production immediate need for t
6、emperature measurement in industrial production has to do with temperature measurement, The study of the temperature measurement and control is of great significance. The paper introduced one kind ne
7、w digital thermometer that take the Micro Controller Unit as the primary control component and take DS18B20 as </p><p> Because used the advanced version intelligence temperature sensor
8、 DS18B20 as the examine part, compared with the traditional thermometer, this digital thermometer reduced the exterior hardware electric circuit, has characteristic that the low cost and was easy to use. The DS18B
9、20 thermometer also may used to the high temperature warning, the long-distance range multi- spots temperature measured aspect and so on temperature control carries on the application develo
10、pment, has the very good pros</p><p> KEY WORDS: Display Circuit, Microcontroller Unit , AT89C52,</p><p> Temperature Sensor, DS18B20,1-Wire</p><p><b> 目 錄</b></p
11、><p><b> 前 言1</b></p><p> 第1章 設計任務及方案分析2</p><p> §1.1 設計任務及要求2</p><p> §1.2 設計總體方案及方案論證2</p><p> §1.3 溫度測量的方案與分析2</p&g
12、t;<p> §1.3.1 芯片選擇2</p><p> §1.3.2 實現(xiàn)方法簡介3</p><p> §1.3.3 測溫流程圖3</p><p> 第2章 芯片功能簡介4</p><p> §2.1 AT89C52的功能簡介4</p><p>
13、; §2.1.1 AT89C52芯片簡介4</p><p> §2.1.2 引腳功能說明4</p><p> §2.2 DS18B20的功能簡介7</p><p> §2.2.1 芯片簡介7</p><p> §2.2.2 DS18B20外形和內(nèi)部結(jié)構(gòu)8</p>
14、<p> §2.2.3 DS18B20的工作時序11</p><p> §2.2.4 DS18B20與單片機的典型接口設計12</p><p> §2.2.5 DS18B20的各個ROM命令13</p><p> 第3章 系統(tǒng)硬件電路的設計15</p><p> §3.1
15、 主控制電路和測溫控制電路原理圖15</p><p> §3.2 驅(qū)動電路模塊原理圖16</p><p> §3.3 顯示模塊原理圖17</p><p> 第4章 軟件編程調(diào)試及性能分析18</p><p> §4.1 主程序流程圖18</p><p> §4
16、.2 主程序19</p><p> §4.3 溫度子程序21</p><p> §4.3.1 DS18B20復位子程序22</p><p> §4.3.2 讀DS18B20子程序23</p><p> §4.3.3 寫DS18B20子程序25</p><p>
17、 §4.3.4 比較報警子程序26</p><p> §4.3.5 按鍵子程序27</p><p> §4.4 顯示子程序27</p><p> §4.5 調(diào)試性能分析和注意事項29</p><p> §4.5.1 調(diào)試性能分析29</p><p>
18、 §4.5.2 DS18B20使用中的注意事項30</p><p><b> 結(jié) 論31</b></p><p><b> 參考文獻32</b></p><p><b> 致 謝33</b></p><p><b> 附 錄34</b
19、></p><p><b> 前 言</b></p><p> 日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測及控制,在冶金、食品加工、化工等工業(yè)生產(chǎn)過程中,廣泛使用的各種加熱爐、熱處理爐、反應爐等,都要求對溫度進行嚴格控制。在日常生活中,電烤箱、微波爐、電熱水器、烘干箱等電器也需要進行溫度檢測與控制。傳統(tǒng)的測溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測出的一般是
20、電壓,再轉(zhuǎn)換成對應的溫度,需要比較多的外部硬件支持,硬件電路復雜,軟件調(diào)試復雜,制作成本高。而采用單片機對溫度進行控制,不僅具有控制方便,簡單和靈活等優(yōu)點,而且可以大幅度提高溫度控制的技術指標。</p><p> 測量溫度的關鍵是溫度傳感器,溫度傳感器正從模擬式向數(shù)字式、從集成化向智能化、網(wǎng)絡化的方向發(fā)展。在測溫電路中,可以使用熱敏電阻之類的器件利用其感溫效應,將隨被測溫度變化的電壓或電流采集過來,先進行A/D
21、轉(zhuǎn)換,然后用單片機進行數(shù)據(jù)的處理,再在顯示電路上,將被測溫度顯示出來。這種設計需要用到A/D轉(zhuǎn)換電路,因此感溫電路的設計比較復雜。</p><p> 進而想到采用智能溫度傳感器來設計數(shù)字溫度計。本數(shù)字溫度計的設計采用美國DALLAS半導體公司繼DS1820之后推出的一種改進型智能溫度傳感器DS18B20作為檢測元件,其溫度值可以直接被讀出來,通過核心器件單片機AT89C52控制溫度的讀寫和顯示,用LED數(shù)碼管顯
22、示。測溫范圍為-55℃~+125℃,最大分辨率可達0.0625℃。而且采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。 </p><p> 按照系統(tǒng)設計功能的要求,確定系統(tǒng)有5個模塊組成:主控制器、溫度傳感器DS18B20、報警電路、按鍵預置溫度值電路及顯示電路。控制器使用AT89C52,溫度傳感器使用DS18B20,用8位共陰極LED數(shù)碼管以動態(tài)掃描法實現(xiàn)溫度顯示。系統(tǒng)程序主要包括主程
23、序、溫度控制子程序及顯示子程序等等。</p><p> 綜上所述,本設計以智能集成溫度傳感器DS18B20為例,介紹基于DS18B20傳感器的數(shù)字溫度計的設計,該設計適用于人們的日常生活及工農(nóng)業(yè)生產(chǎn)中用于溫度的檢測及控制。</p><p><b> 設計任務及方案分析</b></p><p><b> 設計任務及要求</b
24、></p><p> 設計一個以單片機為核心的溫度測量系統(tǒng),可實現(xiàn)的功能為:</p><p> ?。?)測量溫度值精度為±1℃。</p><p> ?。?)系統(tǒng)允許的誤差范圍為1℃以內(nèi)。(3)系統(tǒng)可由用戶預設溫度值,測溫范圍為-55℃~+125℃。(4)超出預置值時系統(tǒng)會自動報警,即發(fā)光二極管亮。</p><p> ?。?/p>
25、5)系統(tǒng)具有數(shù)碼顯示功能,能實時顯示設定溫度值和測得的實際溫度值。</p><p> 設計總體方案及方案論證</p><p> 在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測及控制,傳統(tǒng)的測溫元件有熱電偶和熱點阻。而熱電偶和熱電阻測出的一般都是電壓,再轉(zhuǎn)換成對應的溫度,需要比較多的外部硬件支持,硬件電路復雜,軟件調(diào)試復雜,制作成本高。 本數(shù)字溫度計設計采用美國DALLAS半導體公
26、司繼DS1820之后推出的一種改進智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55℃~+125℃,最大分辨率可達0.0625℃。DS18B20可以直接讀出被測量的溫度值,而采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。 按照系統(tǒng)設計功能的要求,確定系統(tǒng)由5個模塊組成:主控制器AT89C52,溫度傳感器DS18B20,報警電路,按鍵電路及驅(qū)動顯示電路。數(shù)字溫度計總體電路框圖如圖1-1所示。<
27、;/p><p> 溫度測量的方案與分析</p><p><b> 芯片選擇</b></p><p> 本設計的測溫系統(tǒng)采用芯片DS18B20, DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它的體積更小、適用電壓更寬、更經(jīng)濟,DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器,具有一線總線獨特而且經(jīng)濟的特點。采用智能溫度
28、傳感器DS18B20作為檢測元件,測溫范圍為-55℃~+125℃,最大分辨率可達0.0625℃。DS18B20可以直接讀出被測量的溫度值,而且采用3線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。</p><p><b> 實現(xiàn)方法簡介</b></p><p> DS18B20采用外接電源方式工作,一線測溫的一線與AT89C52的P3.7連接并加
29、上上拉電阻使其工作,測出的數(shù)據(jù)存放在寄存器10H--12H中,將數(shù)據(jù)經(jīng)過BCD碼轉(zhuǎn)換后送LED顯示。具體實現(xiàn)步驟見軟件設計章節(jié)。</p><p> 圖1-1 總體電路框圖</p><p><b> 測溫流程圖</b></p><p> 圖1-2 測溫流程圖</p><p><b> 芯片功能簡介<
30、/b></p><p> AT89C52的功能簡介</p><p> AT89C52芯片簡介</p><p> AT89C52是美國ATMEL公司生產(chǎn)的低電平,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的只讀程序存儲器(PEROM)和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM ),器件采用ATMEL公司的高密度、非易失性存儲技術生
31、產(chǎn),與標準MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,32個可編程I/O口線, 3個16位定時/計數(shù)器, 低功耗空閑和掉電模式。功能強大的AT89C52單片機適合于許多較為復雜控制應用場合。</p><p><b> 引腳功能說明</b></p><p> ?。?)VCC:電源電壓</p><
32、;p><b> (2)GND:地</b></p><p> ?。?) P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時可作為高阻抗輸入端用。</p><p> 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復位,在訪問期間
33、激活內(nèi)部上拉電阻。</p><p> ?。?)P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTE邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(ILL)。</p><p> 與AT89C51不同之處是,P1.0和P1.1還可分別
34、作為定時/計數(shù)器2的外部計數(shù)輸入(P 1.0/T2)和輸入(P 1.1/T2EX ),參見表4-1。</p><p> Flash編程和程序校驗期間,P1接收低8位地址。</p><p> 表4-1 P1.0和P1.1的第二功能</p><p> ?。?)P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏
35、輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(ILL)。</p><p> 在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX @RI指令)時,P2口輸出P2鎖存器的內(nèi)容。</p>
36、;<p> ?。?)P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流(ILL)。</p><p> P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表4-2所示。</p><p>
37、(7)RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。</p><p> 表4-2 P3口的第二功能</p><p> ?。?)/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH ) 。端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存端狀態(tài)。</p><p>
38、 如端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。</p><p> Flash存儲器編程時,該引腳加上+12V的編程允許電源VPP,當然這必須是該器件是使用12V編程電壓VCC 。</p><p> ?。?)XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。</p><p> ?。?0)XTAL2:振蕩器反相放大器的輸出端。</p&g
39、t;<p> ?。?1)數(shù)據(jù)存儲器:</p><p> AT89C52有256個字節(jié)的內(nèi)部RAM,80H-FFH高128個字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128。</p><p> 字節(jié)的RAM和特殊功能寄存器的地址是相同的,但在物理上它們是分開的。</p><p> 當一條指令訪問7FH以上的內(nèi)部地址單元時,指令中使用的尋址
40、方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)。</p><p> RAM還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。</p><p><b> ?。?2)中斷:</b></p><p> AT89C52共有6個中斷向量:兩個外中斷(INT0和INT1),3個定時器中斷(定時器0, 1, 2)和串行口中斷。<
41、;/p><p> (13)時鐘振蕩器:</p><p> AT89C52中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。</p><p> 這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器,振蕩電路參見圖4-1(a)圖所示。</p><p> 外接石英晶體(或陶瓷
42、諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路,對外接電容C1、C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用30pF士10pF,而如果使用陶瓷諧振器,建議選擇40pF士l0pF。</p><p> 用戶也可以采用外部時鐘。采用外部時鐘的電路如圖4-1(b)圖所示。這種情況下,外部時鐘脈沖接
43、到XTAL1端,即內(nèi)部時鐘發(fā)生器的輸入端,XTAL2則懸空。 </p><p> ?。╝)內(nèi)部振蕩電路 (b)外部振蕩電路</p><p> 圖4-1 振蕩電路</p><p> 由于外部時鐘信號是通過一個2分頻觸發(fā)器后作
44、為內(nèi)部時鐘信號的,所以對外部時鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時間和最大的低電平持續(xù)時間應符合產(chǎn)品技術條件的要求。</p><p> DS18B20的功能簡介</p><p><b> 芯片簡介</b></p><p> 適應電壓范圍更寬,電壓范圍:3.0 V~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。</p>
45、<p> 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。</p><p> DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。</p><p> 測溫范圍-55℃~+125℃,在-10℃~+85℃時精度為±0.5℃。</p><p&g
46、t; 可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫。</p><p> 在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。</p><p> 測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾
47、錯能力。</p><p> 負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p> DS18B20外形和內(nèi)部結(jié)構(gòu)</p><p> DS18B20內(nèi)部結(jié)構(gòu)如圖4-2所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的外形及管腳排列如圖4-3和表4-3所示。</p>
48、;<p><b> I/O</b></p><p><b> C</b></p><p><b> VDD</b></p><p> 圖4-2 DS18B20的內(nèi)部結(jié)構(gòu)</p><p> 圖4-3 DS18B20的管腳排列</p>&l
49、t;p> 表4-3 DS18B20引腳定義:</p><p><b> 64位ROM </b></p><p> ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就
50、可以實現(xiàn)一根總線上掛接多個DS18B20的目的。 DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達,其中S為符號位。DS18B20溫度
51、值格式表4-4如下所示。</p><p> 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。例如+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH。 &l
52、t;/p><p> 表4-4 DS18B20溫度值格式表</p><p> bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0</p><p> bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 </p><p> ?。?)高低溫報警觸發(fā)器
53、TH和TL</p><p> DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。 </p><p><b> ?。?)配置寄存器 </b></p><p> 該字節(jié)各位的意義如下表4-5所示。</p><p> 表4
54、-5:配置寄存器結(jié)構(gòu)</p><p> 低五位一直都是“1”,TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。R1和R0用來設置分辨率,如下表4-6所示(DS18B20出廠時被設置為12位)。</p><p> ?。?)高速暫存器是一個9字節(jié)的存儲器。開始兩個字節(jié)包含被測溫度的數(shù)字量信息;第3、4、5字節(jié)分別是TH、
55、TL、配置寄存器的臨時拷貝,每一次上電復位時被刷新;第6、7、8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個字節(jié)的CRC碼,可用來保證通信正確。高速暫存器RAM結(jié)構(gòu)圖如下表4-7所示。</p><p> 表4-6: 溫度分辨率設置表</p><p> DS18B20的工作時序</p><p> DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指
56、令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖4-4 (a)(b)(c)所示。</p><p> 表4-7: DS18B20暫存寄存器分布</p><p> DS18B20等待 DS18B20Tx產(chǎn)生</p><p> 15us—16us 脈沖60--240</p><p>
57、 主機復位脈沖 </p><p> VCC 480us<TX<960us 主機Rx min480us </p><p> 1-Wire Bus</p><p><b> GND</b></p><p>
58、; 圖4-4 (a)初始化時序</p><p> 主機控制DS18B20完成任何操作之前必須先初始化,即主機發(fā)一復位脈沖(最短為480us的低電平),接著主機釋放總線進入接收狀態(tài),DS18B20在檢測到I/O引腳上的上升沿之后,等待15-60us然后發(fā)出存在脈沖(60-240us的低電平)。 </p><p> 寫時間片:將數(shù)據(jù)從高電平拉至低電平,產(chǎn)生寫起始信號。在15us之內(nèi)將所需
59、寫的位送到數(shù)據(jù)線上,在15us到60us之間對數(shù)據(jù)線進行采樣,如果采樣為高電平,就寫1,如果為低電平,寫0就發(fā)生。在開始另一個寫周期前必須有1us以上的高電平恢復期。</p><p> 讀時間片:主機將數(shù)據(jù)線從高電平拉至低電平1us以上,再使數(shù)據(jù)線升為高電平,從而產(chǎn)生讀起始信號。主機在讀時間片下降沿之后15us內(nèi)完成讀位。每個讀周期最短的持續(xù)期為60us,各個讀周期之間也必須有1us以上的高電平恢復期。<
60、/p><p> 主機寫“0”時隙 主機寫“1”時隙</p><p> VCC 60us<TX<120us 1us<txcc<∞</p><p> 1-Wire Bus</p><p> GND DS18B20采樣 >
61、;1us DS18B20采樣</p><p> 15us MIN TYP MAX MIN TYP MAX</p><p> 15us 30us 15us 15us 30us</p><p> 圖4-4(b)寫時序</p><p> VCC 主機讀“0”時隙
62、 主機讀“1”時隙</p><p> 1-Wire Bus</p><p> GND 主機采樣 1us</p><p> 15us 15us 30us 主機采樣 </p><p><b> 1
63、5us</b></p><p> 圖4-4(c)讀時序</p><p> DS18B20與單片機的典型接口設計</p><p> 圖4-5以MCS-51系列單片機為例,畫出了DS18B20與微處理器的典型連接。圖4-5(a)中DS18B20采用寄生電源方式,其VDD和GND端均接地,圖4-5(b)中DS18B20采用外接電源方式,其VDD端用3V~
64、5.5V電源供電。</p><p> (a) 寄生電源工作方式 (b) 外接電源工作方式</p><p> 圖4-5 電源工作方式圖</p><p> DS18B20的各個ROM命令</p><p> Read ROM [33H]</p><p> 這個命令允許總線控制器
65、讀到DS18B20的8位系列編碼,惟一的序列號的8位CRC碼。只有在總線上存在單只DS18B20的時候才能用這個命令。如果總線上有不止一個從機,當所有從機試圖同時傳送信號時就會發(fā)生數(shù)據(jù)沖突(漏極開路連在一起形成“與”的效果)。</p><p> ?。?)Match ROM [55H]</p><p> 這是個匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點總線上定位一只特定的DS
66、18B20。只有和64位ROM序列完全匹配的DS18B20才能響應隨后的存儲器操作。所有和64位ROM序列不匹配的從機都將等待復位脈沖。這條命令在總線上有單個或多個器件時都可以使用。</p><p> Skip ROM [0CCH] </p><p> 這個命令允許總線控制器不用提供64位ROM編碼就使用存儲器操作命令,在單點總線情況下,可以節(jié)省時間。如果總線上不止一個從機,在命令之后
67、緊跟著發(fā)一條讀命令,由于多個從機同時傳信號??偩€上發(fā)生數(shù)據(jù)沖突(漏極開路連在一起形成“與”的效果)。</p><p> Search ROM [0F0H]</p><p> 當一個系統(tǒng)初次啟動時,總線控制器并不知道單線總線上有多少個器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識別總線上的所有從機的64位編碼。</p><p> Alarm
68、 Search [0ECH]</p><p> 這條命令的流程和Search ROM相同。然而,只有在最近一次測溫后遇到符合報警條件的情況,DS18B20才會響應這條命令。報警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報警狀態(tài)將一直保持,直到再一次測得的溫度值達不到報警條件。</p><p> Write Scratchpad[4EH]</p><
69、p> 這個命令向DS18B20的暫存器TH和TL中寫入數(shù)據(jù)??梢栽谌魏螘r刻發(fā)出復位命令來中止寫入。</p><p> Read Scratchpad[0BEH] </p><p> 這個命令讀取暫存器的內(nèi)容。讀取將從第1字節(jié)開始,一直進行下去,直到第9(CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時刻發(fā)出復位命令來中止讀取。</p><p>
70、 Copy Scratchpad[48H]</p><p> 這個命令把暫存器的內(nèi)容拷貝到DS18B20的EROM存儲器里,即把溫度報警觸發(fā)器字節(jié)存入非易失性存儲器里。如果控制器在這條命令之后跟著發(fā)出讀時間隙,而DS18B20又忙于把暫存器拷貝到E存儲器,DS18B20就會輸出一個0,如果拷貝結(jié)束的話,DS18B20輸出1。如果使用寄生電源,總線控制器必須在這條命令后立即啟動強上拉,并最少保持10ms。<
71、;/p><p> Convert T[44H] </p><p> 這個命令啟動一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS18B20保持等待狀態(tài)。如果控制器在這條命令之后跟著發(fā)出時間隙,而DS18B20有忙于做時間轉(zhuǎn)換的話,DS18B20將在總線上輸出一個0,若溫度轉(zhuǎn)換完,則輸出1。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即啟動強上拉,并最少保持500ms以上時間。
72、</p><p> Read E[0B8H]</p><p> 這條命令把 觸發(fā)器里的值拷貝回暫存器。這種拷貝操作在DS18B20上電時自動執(zhí)行,這樣一上電暫存器里馬上存在有效的數(shù)據(jù)了。若在這條命令之后發(fā)出讀數(shù)據(jù)隙,器件會輸出溫度轉(zhuǎn)換忙的標識:0為忙,1為完成。</p><p> Read Power Supply[0B4H]</p><p
73、> 若把這條命令發(fā)給DS18B20后發(fā)出讀時間隙,器件會返回它的電源模式:0為寄生電源,1為外部電源。</p><p><b> 系統(tǒng)硬件電路的設計</b></p><p> 主控制電路和測溫控制電路原理圖</p><p> 主控制電路由AT89C52及外圍元件構(gòu)成,測溫電路由DS18B20、預置數(shù)電路和報警電路組成。AT89C5
74、2是此硬件電路設計的核心,通過AT89C52的管腳P3.7與DS18B20相連,控制溫度的讀出和顯示。預置數(shù)電路由兩個按鍵和兩個數(shù)碼管組成,兩個按鍵分別與AT89C52的管腳P3.2和P3.6相連。報警電路很簡單,只有一個發(fā)光二極管,與AT89C52的P3.0管腳相連,若實際測量的溫度值大于預置溫度值,則發(fā)光二極管亮,即為報警標志。硬件電路的功能都是與軟件編程相結(jié)合而實現(xiàn)的。具體電路原理圖如下圖2-1所示。</p><
75、;p> 圖2-1主控制電路和測溫控制電路原理圖</p><p><b> 驅(qū)動電路模塊原理圖</b></p><p> 驅(qū)動電路由ULN2803A組成,通過網(wǎng)絡標號P20-P27與單片機相連,通過網(wǎng)絡標號C0-C7與顯示電路數(shù)碼管相連,實現(xiàn)位控制功能。具體電路如下圖2-2所示。</p><p> 圖2-2 驅(qū)動電路原理圖</
76、p><p> 圖2-3 顯示電路原理圖</p><p><b> 顯示模塊原理圖</b></p><p> 采用動態(tài)顯示方案,設計中使用八個共陰極數(shù)碼管作為顯示載體,通過八路并口傳輸,共使用了十六個I/O口。顯示時采用循環(huán)移位法,即八位數(shù)碼管依次循環(huán)點亮,利用人眼睛的視覺暫留效果達到連續(xù)顯示,主程序每運行一遍便調(diào)用一次顯示子程序,將數(shù)據(jù)顯示出
77、來。</p><p> 顯示電路由八位共陰極的數(shù)碼管組成,通過網(wǎng)絡標號A、B、C、D、E、F、G、DP等與AT89C52的P1口相連,由八個136歐的電阻驅(qū)動,實現(xiàn)段控制功能。通過網(wǎng)絡標號C0-C7與驅(qū)動芯片ULN2803A相連,以此為橋梁與AT89C52相連,實現(xiàn)位控制功能。具體電路原理圖,如圖2-3所示。</p><p> 軟件編程調(diào)試及性能分析</p><p&
78、gt;<b> 主程序流程圖</b></p><p> 圖3-1 主程序流程圖</p><p><b> 主程序</b></p><p> ORG 0000H</p><p> LJMP START</p><p> START: MOV DISBUF4,
79、#00H ;開始,初始化</p><p> MOV DISBUF5, #00H</p><p> MAIN: ;主程序 </p><p> LCAAL KEY ;調(diào)按鍵預置數(shù)子程序</p><p><b> CLR RS1</b></
80、p><p><b> CLR RS0</b></p><p> LCALL RESET ;調(diào)復位子程序</p><p> MOV A,#0CCH ;跳過ROM匹配---0CCH</p><p> LCALL WRITE ;調(diào)DS18B20寫子程序</p><p&
81、gt; MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令</p><p> LCALL WRITE ;調(diào)DS18B20寫子程序</p><p> LCALL RESET ;調(diào)復位子程序</p><p> MOV A,#0CCH ;跳過ROM匹配</p><p> LCALL WRITE
82、 ;調(diào)DS18B20寫子程序</p><p> MOV A,#0BEH ;發(fā)出讀取溫度值命令</p><p> LCALL WRITE ;調(diào)DS18B20寫子程序</p><p> LCALL READ ;調(diào)DS18B20讀子程序</p><p> MOV A, 3DH</p>
83、<p><b> MOV 29H,A</b></p><p> LCALL READ</p><p> MOV A, 3DH</p><p> MOV 28H, A</p><p> MOV R0, #34H</p><p> MOV A, 28H</p>
84、<p><b> RLC A</b></p><p> MOV 47H, C </p><p> JNB 47H, BTOD1 ;28H中的最高位是否為1(溫度<0)</p><p> ??;小于0的溫度值不處理,大于0順序執(zhí)行</p><p> BTOD1: MOV A,
85、 28H</p><p><b> RRC A</b></p><p> MOV 40H, C</p><p><b> RRC A</b></p><p> MOV 41H, C</p><p><b> RRC A</b></p>
86、;<p> MOV 42H, C</p><p><b> RRC A</b></p><p> MOV 43H, C</p><p> MOV A, 29H </p><p> MOV 27H, A</p><p> MOV C,40H ;將28H中的
87、最低位移入C,40H41H42H</p><p> ??;43H為28H中的位地址</p><p> RRC A ;將28H中的低4位移到A的高4位</p><p> MOV C, 41H</p><p><b> RRC A</b></p><p> MOV C,
88、 42H</p><p><b> RRC A</b></p><p> MOV C, 43H</p><p><b> RRC A</b></p><p> MOV 29H,A ;將28H中的低4位放入29H中</p><p> MOV A, 2
89、9H ;將29H中的十六進制數(shù)轉(zhuǎn)換成10進制 </p><p> MOV B, #100 </p><p><b> DIV AB </b></p><p> MOV @R0, A ;百位存于34H</p><p> MOV @R0, #11H ;百位不顯示</p&
90、gt;<p><b> DEC R0</b></p><p> MOV A, #10</p><p><b> XCH A, B</b></p><p><b> DIV AB</b></p><p> MOV @R0, A ;十位存于3
91、3H </p><p><b> DEC R0 </b></p><p> MOV @R0, B ;個位存于32H</p><p><b> DEC R0</b></p><p> ANL 27H, #0FH ;小數(shù)點后一位進制轉(zhuǎn)換</p><
92、p> MOV A, 27H</p><p> MOV B, #06H </p><p><b> MUL AB</b></p><p> MOV B, #10</p><p><b> DIV AB</b></p><p> MOV @R0, A
93、 ;小數(shù)點后一位存于31H</p><p> MOV DISBUF0,33H ;十位</p><p> MOV DISBUF1,32H ;個位</p><p> MOV DISBUF2,31H ;小數(shù)位</p><p> MOV DISBUF3, #0H ;置0</p><p> MOV
94、DISBUF6, #0H</p><p> MOV DISBUF7, #0H</p><p> LCALL CMP ;調(diào)比較報警子程序</p><p> LCALL DISPLAY ;調(diào)用顯示子程序</p><p> LJMP MAIN ;轉(zhuǎn)到MAIN</p><p>&
95、lt;b> 溫度子程序</b></p><p> 由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作都是按時序進行的。DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。</p><p> DS18B20復位子程序</p><p> DS18B
96、20復位時序圖參看后面芯片功能部分有詳細的介紹。在這一部分只給出程序流程圖,然后給出根據(jù)流程圖所編寫的DS18B20復位子程序。</p><p><b> N</b></p><p><b> Y</b></p><p> Y </p><p><b>
97、N</b></p><p> 圖3-2 DS18B20復位子程序流程圖</p><p><b> 程序如下:</b></p><p> RESET: NOP</p><p> L0: CLR P3.7 ;拉低數(shù)據(jù)線</p><p> MOV
98、R2,#200 ;發(fā)出600us的復位脈沖</p><p> L1: NOP</p><p> DJNZ R2, L1</p><p> SETB P3.7 ;主機釋放數(shù)據(jù)線</p><p> MOV R2,#30 ;DS18B20等待60us</p>&l
99、t;p> L4: DJNZ R2, L4</p><p> CLR C </p><p> ORL C,P3.7 ;DS18B20數(shù)據(jù)變低(存在脈沖)嗎?</p><p> JC L3 ;DS18B20準備好,結(jié)束</p><p> MOV R6, #80
100、 </p><p> L5: ORL C, P3.7</p><p> JC L3 ;DS18B20數(shù)據(jù)變高,初始化成功</p><p> DJNZ R6,L5 ;數(shù)據(jù)線低電平可持續(xù)3us*80=240us</p><p> SJMP L0 ;初始化失
101、敗,重新初始化</p><p> L3: MOV R2, #250</p><p> L2: DJNZ R2,L2 ;DS18B20應答500us</p><p><b> RET</b></p><p> 讀DS18B20子程序</p><p> RE
102、AD: MOV R6,#8 ;循環(huán)8次,讀一個字節(jié)</p><p> RE1: CLR P3.7</p><p> MOV R4, #6</p><p><b> NOP</b></p><p><b> NOP</b></p><p>&
103、lt;b> SETB P3.7</b></p><p> RE2: DJNZ R4,RE2 ;等待8US</p><p> MOV C,P3.7 ;讀DS18B20的數(shù)據(jù)</p><p> RRC A ;讀取的數(shù)據(jù)移入A</p><p> MOV
104、R5, #30</p><p> DJNZ R6,RE1 ;讀完一個字節(jié)的數(shù)據(jù)</p><p> MOV 3DH,A ;數(shù)據(jù)存入3DH中</p><p> SETB P3.7 ;把數(shù)據(jù)線拉高</p><p><b> RET</b></p>&
105、lt;p><b> N</b></p><p> Y </p><p> 圖3-3讀DS18B20子程序流程圖</p><p> 寫DS18B20子程序 </p><p><b> N</b></p><p><b> Y<
106、;/b></p><p> 圖3-4 寫DS18B20子程序流程圖</p><p> ?。粚慏S18B20的子程序, 從DS18B20中寫出一個字節(jié)的數(shù)據(jù)</p><p> WRITE: MOV R3,#8 ;循環(huán)8次,寫一個字節(jié)</p><p> WR1: SETB P3.7
107、;拉高數(shù)據(jù)線</p><p> MOV R4, #8</p><p> RRC A ;寫入位從A中移到CY</p><p><b> CLR P3.7</b></p><p> WR2: DJNZ R4,WR2 ;等待16US</p><p>
108、 MOV P3.7,C ;命令字按位依次送給DS18B20</p><p> MOV R4, #20 </p><p> WR3: DJNZ R4,WR3 ;保證寫過程持續(xù)40US</p><p> DJNZ R3,WR1 ;未寫完一個字節(jié)轉(zhuǎn)WR1繼續(xù)</p><p>
109、; SETB P3.7 ;寫完一個字節(jié),數(shù)據(jù)線置高</p><p><b> RET</b></p><p><b> 比較報警子程序</b></p><p> CMP: MOV A,DISBUF0 ;實際測量溫度值放在DISBUF8中</p><p>&l
110、t;b> SWAP A</b></p><p> MOV DISBUF8, A</p><p> MOV A, DISBUF1</p><p> ORL A, DISBUF8</p><p> MOV DISBUF8, A</p><p> MOV A,DISBUF4 ;預置溫度值
111、放在DISBUF9中</p><p><b> SWAP A</b></p><p> MOV DISBUF9, A</p><p> MOV A, DISBUF5</p><p> ORL A, DISBUF9</p><p> MOV DISBUF9, A</p>&l
112、t;p><b> CLR C</b></p><p> MOV A, DISBUF8</p><p> SUBB A, DISBUF9</p><p> JNC KK ;沒有借位,即實際溫度值大于</p><p><b> ;預置溫度值轉(zhuǎn)KK</b></
113、p><p> CLR P3.0 ;有借位,即實際溫度值小于預置溫度值</p><p> ;P3.0置0,不發(fā)報警信號</p><p><b> RET</b></p><p> KK: SETB P3.0 ;P3.0置1,即發(fā)出報警標志發(fā)光二極管亮</p>
114、<p><b> RET</b></p><p><b> 按鍵子程序</b></p><p> KEY: JNB P3.6, YZBW </p><p> JNB P3.2, YZSW </p><p> LJMP KEYRET
115、</p><p> YZBW: LCALL DELAY1</p><p> JB P3.6, KEYRET</p><p> JNB P3.6, $</p><p> INC DISBUF5</p><p> MOV A, DISBUF4</p><p> CJNE A, #1
116、0, KEYRET</p><p> MOV DISBUF4, #0</p><p> LJMP KEYRET</p><p> YZSW: LCALL DELAY1</p><p> JB P3.2, KEYRET</p><p> JNB p3.2, $</p><p>
117、 INC DISBUF5</p><p> MOV A, DISBUF5</p><p> CJNE A, #10, KEYRET</p><p> MOV DISBUF5, #0 </p><p> KEYRET: RET</p><p><b> 顯示子程序</b>
118、;</p><p> DISPLAY: MOV A, DISBUF0</p><p> MOV DPTR, #SEG</p><p> MOVC A, @A+DPTR</p><p><b> MOV P1, A</b></p><p> MOV P2, #00000001B</p
119、><p> LCALL DELAY1</p><p> MOV P2, #00000000B</p><p> MOV A, DISBUF1</p><p> MOV DPTR, #SEG</p><p> MOVC A, @A+DPTR</p><p> ORL A, #80H<
120、/p><p><b> MOV P1, A</b></p><p> MOV P2, #00000010B</p><p> LCALL DELAY1</p><p> MOV P2, #00000000B</p><p> MOV A, DISBUF2</p><p&g
121、t; MOV DPTR, #SEG</p><p> MOVC A, @A+DPTR</p><p><b> MOV P1, A</b></p><p> MOV P2, #00000100B</p><p> LCALL DELAY1</p><p> MOV P2, #00000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ds18b20 數(shù)字溫度計外文翻譯
- 外文翻譯---ds18b20 數(shù)字溫度計
- ds18b20 數(shù)字溫度計外文資料翻譯
- 畢業(yè)設計----ds18b20數(shù)字溫度計論文
- 畢業(yè)設計---ds18b20數(shù)字溫度計的設計
- 外文翻譯---ds18b20單總線數(shù)字溫度計
- ds18b20數(shù)字溫度計的設計
- 課程設計--ds18b20數(shù)字溫度計
- 基于ds18b20的單總線數(shù)字溫度計畢業(yè)設計
- ds18b20數(shù)字溫度計設計課程設計
- 畢業(yè)設計---ds18b20做溫度傳感器的數(shù)字溫度計
- 基于ds18b20溫度傳感器的數(shù)字溫度計設計畢業(yè)設計
- 基于ds18b20溫度傳感器的數(shù)字溫度計設計畢業(yè)設計
- ds18b20溫度計課程設計
- 基于ds18b20的溫度計設計
- 基于c51,ds18b20溫度計畢業(yè)設計
- 畢業(yè)設計---基于ds18b20的數(shù)字溫度計的設計與實現(xiàn)
- 基于ds18b20的數(shù)字溫度計設計與實現(xiàn)
- 課程設計-基于ds18b20數(shù)字溫度計的設計
- 數(shù)字溫度計ds18b20課程設計報告
評論
0/150
提交評論