目 錄 ☆摘要 ……………………………………………………………………………2 ☆課題任務 ………………………………………………………………………4 ☆第1章 總體方案設計 ………………………………………………………5 ☆第2章.智能開發(fā)版部分 2.1. 51系列單片機的原理圖…………………………………………………7 2.1.1. 基本51系列單片機的原理圖及STC12C5A60S2主要性能 …………7 2.1.2. STC12C5A60S2單片機部內部結構……………………………………7 2.2 51系列單片機的引腳功能 ………………………………………………9 2.2.1. I/O端口線輸入輸出引腳………………………………………………9 2.2.2. 控制線控制引腳 ………………………………………………………10 2.2.3. 外接晶體端 ……………………………………………………………10 2.3 51系列單片機的時序 …………………………………………………10 2.4.1 智能最小系統(tǒng)的LED顯示器接口 ……………………………………11 2.4.2 音頻放大電路 …………………………………………………………12 ☆第3章.關于DS18B20的介紹 3.1.DS18B20簡介………………………………………………………………13 3.2單總線數(shù)字溫度計硬件設計原理部分……………………………………13 3.3DS18B20的封裝及內部結構………………………………………………14 3.4DS18B20的測溫原理………………………………………………………14 3.5DS18B20的工作時序………………………………………………………15 3.6DS18B20與單片機的典型接口設計………………………………………15 3.7DS18B20的精確延時問題 ………………………………………………16 3.8DS18B20工作原理及應用…………………………………………………16 3.9控制器對18B20操作流程………………………………………………17 3.10DS18B20芯片與單片機的接口 …………………………………………18 ☆第4章.程序 4.1溫度監(jiān)測51單片機程序 …………………………………………………18 4.2測溫程序流程框圖…………………………………………………………25 ☆第5章.調試過程 軟件、硬件調試 ………………………………………………………………27 ☆第6章效果展示 6.1實現(xiàn)效果……………………………………………………………………27 6.2實物效果圖 ………………………………………………………………27 ☆附一:硬件原理圖……………………………………………………………28 ☆附二:材料清單………………………………………………………………28 ☆致謝……………………………………………………………………………30 ☆參考文獻………………………………………………………………………31 摘 要 溫度是一種最基本的環(huán)境參數(shù),在工農業(yè)生產及日常生活中對溫度的測量及控制具有重要意義。溫度的測量及控制對保證產品質量、提高生產效率、節(jié)約能源、生產安全、促進國民經濟的發(fā)展起到非常重要的作用。由于溫度測量的普遍性,溫度傳感器的數(shù)量在各種傳感器中居首位,約占50%。以往,在實際的溫度控制系統(tǒng)中,多采用熱敏電阻器或熱電偶測量溫度。這種溫度采集電路有時需要冷端補償電路,這樣就增加了電路的復雜性,而且該種電路易受干擾,使采集到的數(shù)據(jù)準確性不高。隨著微電子技術、單片機技術、傳感器技術的不斷發(fā)展,為溫度控制系統(tǒng)測控功能的完善、測控精度的提高和抗干擾能力的增強等提供了條件。本文設計了一種基于AT89C51 單片機與DS18B20 的溫度控制系統(tǒng)。該設計通過AT89S52 單片機驅動數(shù)字溫度傳感器DS18B20,進行溫度數(shù)據(jù)采集、讀取、處理,并通過數(shù)碼管顯示出來。同時,也可通過RS-232 串行口與PC 機連接,將數(shù)據(jù)傳送至PC 機系統(tǒng),從而方便溫度數(shù)據(jù)傳輸和統(tǒng)計工作。該系統(tǒng)還可擴展成為多點溫度采集系統(tǒng)、溫度遠程監(jiān)控系統(tǒng)等。 溫度傳感器是通過物體隨溫度變化而改變某種特性來間接測量的。不少材料、元件的特性都隨溫度的變化而變化,所以能作溫度傳感器的材料相當多。溫度傳感器隨溫度而引起物理參數(shù)變化的有:膨脹、電阻、電容、而電動勢、磁性能、頻率、光學特性及熱噪聲等等。隨著生產的發(fā)展,新型溫度傳感器還會不斷涌現(xiàn)。由于工農業(yè)生產中溫度測量的范圍極寬,從零下幾百度到零上幾千度,而各種材料做成的溫度傳感器只能在一定的溫度范圍內使用。 溫度傳感器與被測介質的接觸方式分為兩大類:接觸式和非接觸式。接觸式溫度傳感器需要與被測介質保持熱接觸,使兩者進行充分的熱交換而達到同一溫度。這一類傳感器主要有電阻式、熱電偶、PN結溫度傳感器等。非接觸式溫度傳感器無需與被測介質接觸,而是通過被測介質的熱輻射或對流傳到溫度傳感器,以達到測溫的目的。 ● 關鍵詞:溫度、控制、監(jiān)測。 Abstract Temperature is a physicalobjects and degree of industrial and agricultural production process, is a veryimportant and universal measuring parameters. Temperature measurement andcontrol to ensure product quality, improve the production efficiency, energysaving, safety, and to promote the development of the national economy play avery important role. Because the universality of measurement temperature,temperature sensors in the number of sensors in the first place, about 50%. The temperature sensor isthrough the object with temperature changes some properties to measureindirectly. Many materials, components, with the characteristics of temperaturechanges, so can make much of the temperature sensor materials. The temperaturesensor with temperature changes caused by physical parameters are: inflation,resistor, capacitor, emf, magnetic, optical properties and frequency, thermalnoise, etc. With the development of production, new temperature sensors willemerge. Due to the industrial and agricultural production in very wide range oftemperature measurement, from below a few baidu to QianDu, and all kinds ofseveral above freezing temperature sensor materials only under certaintemperature range. The temperature sensor andtested medium contact into two categories: touch and non-contact. Contacttemperature sensor and tested medium to keep contact with them, heat exchangerand achieve the same adequately. This kind of sensor are mainly resistive,thermocouple, PN junction temperature sensor etc. Contactless temperaturesensor and tested medium without contact, but through the medium of radiationor by convection to temperature sensor, in order to achieve the goal. ● Key words:Temperature, control, measurement. 課題任務 本課題主要介紹基于AT89C51單片機和DS18B20數(shù)字溫度傳感器的溫度測量系統(tǒng)。該系統(tǒng)利用AT89C51單片機采集爐溫,實現(xiàn)溫度顯示、報警等功能。它以AT89C51單片機為主控制芯片,采用數(shù)字溫度傳感器DS18B20實現(xiàn)溫度的檢測,其測量范圍在25~31℃之間,精度可以達到0.1℃,采用LCD液晶顯示模塊,它作為顯示器形象直觀的顯示測出的溫度值,或者采用數(shù)碼管顯示結果。 簡易溫度檢測系統(tǒng)是通過DS18B20檢測溫度,然后通過溫度傳感器通信模塊,將檢測到的實際溫度(環(huán)境溫度)傳送到開發(fā)板上,從而在數(shù)碼管上顯示檢測到的溫度。從中設置了報警設備,使檢測的溫度低于或高于一定值,報警設備就會起作用。 系統(tǒng)中使用到的主要材料有:單片機STC12C5A60S2,天線,蜂鳴器,多功能開發(fā)板,溫度傳感器(DS18B20)。在實際檢測時,主要通過溫度傳感器(DS18B20)的溫度檢測功能,實現(xiàn)實際環(huán)境溫度在開發(fā)板的數(shù)碼管上的的顯示。 本設計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀數(shù)方便,測溫范圍廣,測溫準確,其輸出溫度采用數(shù)字顯示,該設計控制器使用單片機8051,測溫傳感器使用DS18B20,用 LED數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準確達到以上要求。DS18B20數(shù)字溫度傳感器是單總線器件與51單片機組成的測溫系統(tǒng),具有線路簡單、體積小等特點測溫準確的有點。 多功能開發(fā)板通過下載溫度檢測程序(由STC12C5A60S2接收程序),與溫度檢測模塊(DS18B20)連接,即可實現(xiàn)實時溫度監(jiān)測控制的效果。 第1章. 總體方案設計 溫度傳感器按傳感器與被測介質的接觸方式可分為兩大類:一類是接觸式溫度傳感器,一類是非接觸式溫度傳感器。 該溫度控制系統(tǒng)的設計包括硬件設計和軟件設計兩大部分,結合實際情況,該系統(tǒng)應具備如下功能: (1)實時采集溫度; (2)顯示溫度; (3)串行傳送數(shù)據(jù); (4)控制外設; (5)溫度超限報警; (6)可擴展,形成多點溫度采集系統(tǒng),具有遠程監(jiān)控等功能。 在該溫度控制系統(tǒng)中AT89S52 單片機不僅與溫度傳感器DS18B20,外部設備,數(shù)碼管連接,還通過與串口電平芯片MAX232 連接,由數(shù)據(jù)線連接到PC 上,建立起遠程通信。系統(tǒng)上電后,AT89S52 單片機驅動溫度傳感器DS18B20 工作,進行溫度數(shù)據(jù)采集,傳輸。T89S52單片機在接到溫度傳感器DS18B20 傳送過來的溫度數(shù)據(jù)后,進行操作,一方面送至數(shù)碼管顯示模塊進行溫度顯示,另一方面將數(shù)據(jù)送至 PC 機上,方便在 PC 機進行一些后續(xù)處理和控制操作,有利于遠程控制的實現(xiàn)。溫度控制系統(tǒng)總體框圖如所示。 系統(tǒng)的硬件設計部分主要由以下幾部分組成: (1)單片機最小系統(tǒng):采用AT89S52 單片機; (2)溫度采集模塊:采用DS18B20 溫度傳感器; (3)溫度顯示模塊:采用4 位LED 數(shù)碼管顯示; (4)串行通信模塊:與PC 機進行串口通信; (5)報警電路:采用蜂鳴器報警; (6)外部設備控制電路; DS18B20是DALLAS公司生產的單總線數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉換精度,對應的可辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,被測溫度用符號擴展的16位數(shù)字量方式串行輸出,支持3V~5.5V的電壓范圍,使系統(tǒng)設計更靈活、方便,其工作電源既可在遠端引入,也可采用寄生電源方式產生.同時多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用處理器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢測系統(tǒng)。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 圖5-15 測溫系統(tǒng)硬件原理圖 1)DS18B20的供電方式選擇外接電源的方式,通過單線連接到智能芯片的一個I/O口上。 2)DS18B20與微處理器間采用串行數(shù)據(jù)傳送,在對DS18B20進行讀寫編程時,必須嚴格保證讀寫時序,否則將無法讀取測溫結果。DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序。 3)在DS18B20測溫程序設計中,向DS18B20發(fā)出溫度轉換命令后,程序總要等待返回信號,一旦DS18B20接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設計時也要給予一定的重視。 第2章.智能開發(fā)板部分 2.1. 51系列單片機的內部結構 2.1.1.基本51系列單片機的原理圖 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif 圖1 51系列單片機原理圖 STC12C5A60S2主要性能 ⑴高速:1個時鐘周期/機器周期,增強型8051內核,速度比普通8051快8到12倍 ⑵工作頻率:0~35MHZ,相當于普通8051:0~420MHZ ⑶時鐘:外部晶體或內部RC振蕩器可選,在ISP下載編程用戶程序時設置 ⑷4個16位定時器,兼容普通8051的定時器T0/T1,2路PCA實現(xiàn)2個定時器 ⑸可編程時鐘輸出功能,T0在P3.4輸出時鐘,T1在P3.5時輸出時鐘,BRT在P1.0時輸出時鐘 ⑹先進的指令集結構,兼容普通8051指令集,有硬件乘法/除法指令 ⑺每個I/O口驅動功能力均可達到20mA,但整個芯片最大不得超過55mA 2.1.2.STC12C5A60S2單片機部內部結構 STC12CXX單片機部內部結構,各功能部件如圖1。 ⑴ 有1280字節(jié)片內RAM數(shù)據(jù)存儲器。 ⑵ 芯片內有EEPROM功能。
⑶ 有ISP在系統(tǒng)可編程功能。 ⑷ 8通道10位高速ADC模擬到數(shù)據(jù)轉換器。 ⑸ 可編程計數(shù)器陣列PCA和可編程脈寬調節(jié)器PWM,右實現(xiàn)時鐘和可調頻率的PWM輸出。 ⑹ 高速SPI通信端口。 ⑺ 全雙工異步串行口(UART) ⑻ 32個通用寄存器。 ⑼ 硬件看門狗功能。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 圖2 STC12CXX系列典型單片機內部結構圖 2.2 51系列單片機的引腳功能 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 圖3 微型單片機的引腳 2.2.1.I/O端口線輸入輸出引腳 P0.0—P0.7(39—32):P0口是一個漏極開路型準雙向I/O口。在訪問外部存儲器時,它是分時多路轉換的地址(低8位)和數(shù)據(jù)總線,在訪問期間激活了內部的上拉電阻。在EPROM編程時,它接收指令字節(jié),而在驗證程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。 P1.0—P1.7(1-8):P1口是帶內部上拉電阻的8位雙向I/O口。在EPROM編程和程序驗證時,它接收低8位地址。 P2.0—P2.7(21-28):P2口是一個帶內部上拉電阻的8位雙向I/O口。在訪問外部存儲器時,它送出高8位地址。在對EFROM編程和程序驗證期間,它接收高8位地址。 P3.0—P3.7(10-17):P3口是一個帶內部上拉電阻的8位雙向I/O口。在MCS—5l中,這8個引腳還兼有專用功能,P3的8條口線都定義有第二功能,詳見表1-1-1。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 圖4 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpgfile:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg2.2.2.控制線控制引腳(ALE/PROG、 、 、RST/VPD) ALE(30腳)地址鎖存控制信號。在系統(tǒng)擴展時,ALE用于控制P0口輸出的低8位地址鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時鐘或外部定時脈沖使用。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg(29腳)外部程序存儲器讀選通信號。在讀外部ROM時,有效(低電平),以實現(xiàn)外部ROM單元的讀操作。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg(31腳)訪問程序存儲控制信號。當信號為低電平時,對ROM的讀操作限定在外部程序存儲器;當信號為高電平時,對ROM的讀操作是從內部程序存儲器開始,并可延至外部程序存儲器。 RST/Vpp (9腳) 復位信號。當輸入的復位信號延續(xù)兩個機器周期以上的高電平時即為有效,用以完成單片機的復位初始化操作。 2.2.3.外接晶體端 XTAL1(19腳)和XTAL2(18腳)外接晶體引線端。當使用芯片內部時鐘時,此二引線端用于外接石英晶體和微調電容;當使用外部時鐘時,用于接外部時鐘脈沖信號。 主電源引腳高VCC和低VSS VCC(40腳)+5V電源。 VSS(20腳)地線(GND)。 以上是MCS-51單片機芯片40條引腳的定義及簡單功能說明,讀者可以對照實訓電路找到相應引腳,在電路中查看每個引腳的連接使用。 2.3 51系列單片機的時序 805l的基本時序周期一條指令譯碼產生的一系列微操作信號在時間上有嚴格的先后次序,這種次序就是計算機的時序。其基本時序周期有如下四種。 ●振蕩周期:指振蕩源的周期,若為內部產生方式,則為石英晶體的振蕩周期。T振蕩周期=1/fosc; ●時鐘周期:(稱S周期)為振蕩周期的兩倍,時鐘周期=2倍的振蕩周期T時鐘周期=2* T振蕩周期; ●機器周期:一個機器周期含6個時鐘周期(S周期)。T機器周期=6*T時鐘周期=12* T振蕩周期=12/fosc; STC12CXX系列單片機有1個時鐘周期/機器周期。 ●指令周期:完成一條指令占用的全部時間。805l的指令周期含1—4個機器周期,其中多數(shù)為單周期指令,還有2周期和4周期指令。 2.4 . 1 智能最小系統(tǒng)的LED顯示器接口 通過2個74LS595芯片將8位段碼信號(a—h)和8位位碼信號(a1—a8)串行轉為并行信號驅動2個LED顯示模塊的8個LED數(shù)碼燈,P2.1是a—h、a1—a8串行數(shù)據(jù)的輸入端(SER),P2.2串行移位信號的SCLK輸入端,P2.3是并輸出信號的鎖存端(RCLK)。這些信號由單片機軟件生成。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif 圖1-1-12 顯示部分電路 在單片機系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號。由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。 LED顯示器又稱數(shù)碼管,八段LED顯示器由8個發(fā)光二極管組成。其中7個發(fā)光二極管構成字型“8”的各個筆畫段,另一個小數(shù)點為dp發(fā)光二極管。LED顯示器有兩種不同的形式:一種是發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED顯示器;另一種是發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED顯示器。如圖1-1-13所示。 共陰和共陽結構的LED顯示器各筆劃段名和安排位置是相同的。當二極管導通時,相應的筆劃段發(fā)亮,由發(fā)亮的筆劃段組合而顯示各種字符。8個筆劃段hgfedcba對應于一個字節(jié)(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二進制碼就可以表示欲顯示字符的字型代碼。例如,對于共陰LED顯示器,當公共陰極接地(為零電平),而陽極hgfedcba各段為0111011時,顯示器顯示"P"字符,即對于共陰極LED顯示器,“P”字符的字形碼是73H。如果是共陽LED顯示器,公共陽極接高電平,顯示“P”字符的字形代碼應為10001100(8CH)。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg 圖1-1-13 LED數(shù)碼管共陽極和共陰極示圖 LED顯示方式有動態(tài)顯示和靜態(tài)顯示兩種方式。本系統(tǒng)采用動態(tài)掃描顯示接口電路,動態(tài)顯示接口電路是把所有顯示器的8個筆劃段a-h同名端連在一起,而每一個顯示器的公共極COM各自獨立地受I/O線控制。CPU向字段輸出口送出字型碼時,所有顯示器接收到相同的字型碼,但究竟是哪個顯示器亮,則取決于COM端。也就是說我們可以采用分時的方法,輪流控制各個顯示器的COM端,使各個顯示器輪流點亮。在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的(約1ms),但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。 2.4. 2 音頻放大電路 音頻放大電路由放大三接管、蜂鳴器SPEAKER、限流電阻組成,音頻信號的輸出連接到單片機P3.3如圖1-1-15所示當P3.2為低時,SPEAKER發(fā)聲,聲音脈寬不同發(fā)出的聲音不同。圖1-1-15 音頻放大電路。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpgP3.2 圖1-1-15 音頻放大電路 第3章.關于DS18B20的介紹 DS18B20是美國DALLAS半導體公司繼DS1820之后最新推出的一種改進型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。可以分別在93.75 ms和750 ms內完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或寫入DS18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統(tǒng)結構更趨簡單,可靠性更高。他在測溫精度、轉換時間、傳輸距離、分辨率等方面較DS1820有了很大的改進,給用戶帶來了更方便的使用和更令人滿意的效果。 3.1.DS18B20簡介 (1)獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。 (2)在使用中不需要任何外圍元件。 (3)可用數(shù)據(jù)線供電,電壓范圍:+3.0~ +5.5 V。 (4)測溫范圍:-55 ~+125 ℃。固有測溫分辨率為0.5 ℃。 (5)通過編程可實現(xiàn)9~12位的數(shù)字讀數(shù)方式。 (6)用戶可自設定非易失性的報警上下限值。 (7)支持多點組網功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。 (8)負壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。 3.2單總線數(shù)字溫度計硬件設計原理部分 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif 3.3 DS18B20的封裝及內部結構 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg DS18B20引腳功能:1、 GND為電源地 2、 DQ為數(shù)字信號輸入/輸出端 3、VDD為外接供電電源輸入端(在寄生電源接線方式時接地) DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。
3.4 DS18B20的測溫原理 DS18B20的測溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小〔1〕,用于產生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產生的時鐘脈沖后進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在 -55 ℃ 所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖2中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。 另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。 3.5DS18B20的工作時序 DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖3(a)(b)(c)所示。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image029.jpg 3.6.DS18B20與單片機的典型接口設計 以MCS51單片機為例,圖3中采用寄生電源供電方式, P1 1口接單線總線為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管和89C51的P1 0來完成對總線的上拉〔2〕。當DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間最大為10 μs。采用寄生電源供電方式是VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接收口必須是三態(tài)的。主機控制DS18B20完成溫度轉換必須經過3個步驟:初始化、ROM操作指令、存儲器操作指令。假設單片機系統(tǒng)所用的晶振頻率為12 MHz,根據(jù)DS18B20的初始化時序、寫時序和讀時序,分別編寫3個子程序:INIT為初始化子程序,WRITE為寫(命令或數(shù)據(jù))子程序,READ為讀數(shù)據(jù)子程序,所有的數(shù)據(jù)讀寫均由最低位開始,實際在實驗中不用這種方式,只要在數(shù)據(jù)線上加一個上拉電阻4.7 kΩ,另外2個腳分別接電源和地。 3.7 DS18B20的精確延時問題 雖然DS18B20有諸多優(yōu)點,但使用起來并非易事,由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成。因此,對讀寫的操作時序要求嚴格。為保證DS18B20的嚴格I/O時序,需要做較精確的延時。在DS18B20操作中,用到的延時有15 μs,90 μs,270 μs,540 μs等。 只要用該函數(shù)進行大約15 μs×N的延時即可。有了比較精確的延時保證,就可以對DS18B20進行讀寫操作、溫度轉換及顯示等操作。 3.8 DS18B20工作原理及應用 DS18B20的溫度檢測與數(shù)字數(shù)據(jù)輸出全集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數(shù)據(jù)處理。在講解其工作流程之前我們有必要了解18B20的內部存儲器資源。18B20共有三種形態(tài)的存儲器資源,它們分別是: ROM 只讀存儲器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗)。數(shù)據(jù)在出產時設置不由用戶更改。DS18B20共64位ROM。 RAM 數(shù)據(jù)暫存器,用于內部計算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。第1、2個字節(jié)是溫度轉換后的數(shù)據(jù)值信息,第3、4個字節(jié)是用戶EEPROM(常用于溫度報警值儲存)的鏡像。在上電復位時其值將被刷新。第5個字節(jié)則是用戶第3個EEPROM的鏡像。第6、7、8個字節(jié)為計數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設計的,同樣也是內部溫度轉換、計算的暫存單元。第9個字節(jié)為前8個字節(jié)的CRC碼。EEPROM 非易失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報警值和校驗數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。 3.9 控制器對18B20操作流程 1. 復位:首先我們必須對DS18B20芯片進行復位,復位就是由控制器(單片機)給DS18B20單總線至少480uS的低電平信號。當18B20接到此復位信號后則會在15~60uS后回發(fā)一個芯片的存在脈沖。 2. 存在脈沖:在復位電平結束之后,控制器應該將數(shù)據(jù)單總線拉高,以便于在15~60uS后接收存在脈沖,存在脈沖為一個60~240uS的低電平信號。至此,通信雙方已經達成了基本的協(xié)議,接下來將會是控制器與18B20間的數(shù)據(jù)通信。如果復位低電平的時間不足或是單總線的電路斷路都不會接到存在脈沖,在設計時要注意意外情況的處理。 3. 控制器發(fā)送ROM指令:雙方打完了招呼之后最要將進行交流了,ROM指令共有5條,每一個工作周期只能發(fā)一條,ROM指令分別是讀ROM數(shù)據(jù)、指定匹配芯片、跳躍ROM、芯片搜索、報警芯片搜索。ROM指令為8位長度,功能是對片內的64位光刻ROM進行操作。其主要目的是為了分辨一條總線上掛接的多個器件并作處理。誠然,單總線上可以同時掛接多個器件,并通過每個器件上所獨有的ID號來區(qū)別,一般只掛接單個18B20芯片時可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發(fā)送ROM指令,而是用特有的一條“跳過指令”)。ROM指令在下文有詳細的介紹。 4. 控制器發(fā)送存儲器操作指令:在ROM指令發(fā)送給18B20之后,緊接著(不間斷)就是發(fā)送存儲器操作指令了。操作指令同樣為8位,共6條,存儲器操作指令分別是寫RAM數(shù)據(jù)、讀RAM數(shù)據(jù)、將RAM數(shù)據(jù)復制到EEPROM、溫度轉換、將EEPROM中的報警值復制到RAM、工作方式切換。存儲器操作指令的功能是命令18B20作什么樣的工作,是芯片控制的關鍵。 5. 執(zhí)行或數(shù)據(jù)讀寫:一個存儲器操作指令結束后則將進行指令執(zhí)行或數(shù)據(jù)的讀寫,這個操作要視存儲器操作指令而定。如執(zhí)行溫度轉換指令則控制器(單片機)必須等待18B20執(zhí)行其指令,一般轉換時間為500uS。如執(zhí)行數(shù)據(jù)讀寫指令則需要嚴格遵循18B20的讀寫時序來操作。數(shù)據(jù)的讀寫方法將有下文有詳細介紹。 若要讀出當前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個周期為復位、跳過ROM指令、執(zhí)行溫度轉換存儲器操作指令、等待500uS溫度轉換時間。緊接著執(zhí)行第二個周期為復位、跳過ROM指令、執(zhí)行讀RAM的存儲器操作指令、讀數(shù)據(jù)(最多為9個字節(jié),中途可停止,只讀簡單溫度值則讀前2個字節(jié)即可)。 3.10 DS18B20芯片與單片機的接口 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg 第4章.程序及效果展示 4.1 溫度監(jiān)測51單片機程序 #include<reg51.h> #include<intrins.h> #defineuchar unsigned char #defineuint unsigned int sbitDQ=P1^4; //定義通信端口 sbitser=P2^1; //LED顯示 595數(shù)據(jù)輸入 sbitsrclk=P2^2; sbitrclk=P2^3; sbitP10=P3^2; //蜂鳴器報警引腳,P10=1時報警 uchar code LED[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//0123456789+- Uchar code LED_dot[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //帶小數(shù)點 ucharidata T[5]={0,0,0,0,0}; unsignedchar seg,QQ=0,weima=0x0ef; unsignedchar FLAG=0; uinttemph=31; //初始上限值 uinttempl=25; //初始下限值 //-------------------------------------------------------------- voiddelayx_us(unsigned char i) //11*x+12 { while(i--); } voiddelay1_us()//1.45us {_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); } voiddelay(unsigned int x) {unsignedint y=10000 ; while(x--) { while(y--); y=10000; } } //---------------------------------------------------------------// void outbyte(uchar a,b) {uchar j; for(j=0;j<8;j++) { if(a&0x80) ser=1; else ser=0; a=a<<1; srclk=0; srclk=1; } for(j=0;j<8;j++) { if(b&0x80) ser=1; else ser=0; b=b<<1; srclk=0; srclk=1; } rclk=0; rclk=1; } ucharInit_DS18B20(void) { unsignedchar flag=0; DQ=0; //單片機將DQ拉低 delayx_us(250); //精確延時 480us ~960us delayx_us(250); DQ=1; //拉高總線 delayx_us(30); //大于15US~60US flag=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delayx_us(240); DQ=1; return(flag); } ucharReadBit(void) {bit s; DQ=1; //拉高電平,準備啟動讀時序 delay1_us(); DQ=0; delay1_us(); delay1_us(); DQ=1; //在15US內停止低電平 delay1_us(); delay1_us(); delay1_us(); delay1_us(); delay1_us(); delay1_us(); delay1_us(); s=DQ; //讀取1位數(shù)據(jù) delayx_us(60); //讀時序不能少于60us return(s); } ucharReadOneChar(void) { unsignedchar i,dat=0; unsignedchar j; for(i=0;i<8;i++) {j=ReadBit(); dat=(j<<7)|(dat>>1); } return(dat); } voidWriteOneChar(unsigned char dat) { unsignedchar i=0; bit n; for (i=0;i<8;i++) { DQ=1; //拉高電平,準備啟動寫時序 delay1_us(); n=dat&0x01; dat>>=1; //取下一位,由低到高 if(n) //寫1 { DQ=0; //拉低電平 15US內釋放總線 delay1_us(); delay1_us(); DQ=1; //寫1 delayx_us(60); //整個時序不能低于60US } else //寫0 { DQ=0; delayx_us(60); //保持低電平60us~120us DQ=1; delay1_us(); } } } floatReadTemperature(void) { floatvalue; unsignedchar a, b; unsignedint tempInt=0,tempdot=0,tempwhole=0; Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0x44); delay(12); Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0xbe); a=ReadOneChar(); b=ReadOneChar(); tempInt=b; tempdot=a; tempwhole=tempInt*256+tempdot; value=tempwhole*0.0625;//基本單位為0.0625 return(value); } voidtime0() interrupt 1 using 2 {TH0=(65536-4000)/256; TL0=(65536-4000)%256; if(QQ!=2) { seg=LED[T[QQ]]; outbyte(weima,seg); } else { seg=LED_dot[T[QQ]]; outbyte(weima,seg); } QQ++; if(QQ>=4) { weima=0x0ef; QQ=0; } else weima=(weima<<1)|0x01; } main() {floattemperature; int m,n ; uchar i; P10=1; TMOD=0x21; TH0=(65536-4000)/256; TL0=(65536-4000)%256; TL1=0xfd;TH1=0Xfd; SCON=0x50;PCON=0x00; TR1=1; EA=1; ET0=1; TR0=1; while(1) { temperature=ReadTemperature();//讀溫度 m=temperature; if(m>=31)P10=0; //溫度高于或等于上限值,報警 T[4]=(m%100)/100; T[3]=(m%100)/10; T[2]=m%10; n=(temperature-m)*100+0.5; T[1]=n/10; T[0]=n%10; i=0; SBUF=0x46; while(TI==0); TI=0; SBUF=0x44; while(TI==0); TI=0; {SBUF=T[3]|0x30; while(TI==0); TI=0; SBUF=T[2]|0x30; while(TI==0); TI=0; SBUF=0x2e; while(TI==0); TI=0; SBUF=T[1]|0x30; while(TI==0); TI=0; if(m<25)P10=0; //溫度低于下限值,報警 elseP10=1; } } } file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image032.gif4.2測溫程序流程框圖 第5章.調試過程 ——軟件、硬件調試 1、我們組在前期分工時,利用課余時間焊電路板(電路圖見硬件部分)焊出了我們的第一塊板子; 2、下一步的工作就是軟件部分,簡單點就是編寫程序。剛拿到題目時,老師給了我們一些相關的資料,我們組花了一天時間先把這些資料研究了下,還是沒有頭緒修改程序。經過老師給我們的思路,我們組集體出動到圖書館翻閱關于51系列軟件編程的相關資料書籍,程序編寫出來了。 3、我們使用Keil uVision3進行程序的編寫,通過單片機stc-isp-v4.79下載程序到我們焊出的第一塊板子,在我們下載程序后,并沒有實現(xiàn)出我們的所要見到的效果。在LED上顯示95.54。而且始終數(shù)字不變,這點讓我們很郁悶。 4、我們反復的調試,我們檢查DS18B20的數(shù)據(jù)輸入/輸出DQ端口與單片機的P1.4端口相連是否正確,將傳感器DS18B20的地線和外接供電電源輸入端口分別接在單片機的地線端和+5V電源端口測試電源供電情況。 5、先用萬用表檢查傳感器DS18B20的第3腳是否與電源相連,1腳是否與地相接,結果無誤。經過一上午的鉆研,還是沒有結果。我們從程序及電路板焊的正確與否,尋找問題,但還是沒有頭緒。我們懷疑板子上的芯片可能時間久了有些可能燒壞了;無奈,我們選擇了再焊一塊板子。 6、第二塊板子因為有第一塊板子的經驗,很快就焊接出來了,焊接工藝還是相當不錯的,但結果還是無法實現(xiàn)效果,我們在經過討論后,決定請教老師,在老師幫我們仔細分析下,用了兩三節(jié)課左右的時間才出現(xiàn)預期的效果,讓我們很是激動。 7、在老師的指導下調試過程: 我們調試了測試了波形,發(fā)現(xiàn)DS18B20沒有工作。我們又用萬用表測試了傳感器三只腳的電壓,發(fā)現(xiàn)我們第一塊焊的板子顯示電壓正常,第二塊板子,都顯示5V,經檢查,發(fā)現(xiàn)地線接錯了,接入了空腳的一端,我們又將板子的線路重新改裝了一下,效果顯示的很正常,就是報警聲音略微低了一些,老師讓我們改變下程序的關于聲音的送入時長。 8、第一塊板子,我們判斷可能是DS18B20燒壞了,于是,我向班級同學借了一個DS18B20重新焊接,皇天不負有心人,我們兩塊板子效果都實現(xiàn)了。當溫度低于設定的25.00℃時,會報警長鳴,當溫度高于31.00℃時,會報警,設置這兩個溫度點是充分考慮到現(xiàn)在的室溫與人體的溫度,便于通過手上熱傳導控溫。 9、我們還做了錄下了一小段視頻作為紀念。總體系統(tǒng)調試成功,設計完成。感謝老師的指導和小組成員的共同努力! 第6章效果展示 6.1實現(xiàn)效果 數(shù)字溫度傳感器DS18B20測溫,使用單個DS18B20采集環(huán)境溫度,并使用四位數(shù)碼管顯示溫度結果,實現(xiàn)了測溫范圍在零下10度到50度,可設高低溫報警的效果,當溫度低于25度,或高于31度的時候,蜂鳴器就會發(fā)出聲音,實現(xiàn)報警,精確度為0.01,DS18B20采用外部電源供電方式,為保證在有效的時鐘周期內提供足夠的電流,使用了一個4.7K的電阻,進行相應的控制。 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg6.2實物效果圖效果圖: file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image036.jpgfile:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image038.jpgfile:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image040.jpg 附一:硬件原理圖 file:///C:/Users/%E8%8B%97%E6%B2%B3%E6%B3%89/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif 附二:材料清單
致 謝 在兩周的實訓課中,我們組成功完成了實訓設計任務——基于DS18B20的簡易溫度顯示報警控制設計,我們在完成這份報告時心情激動萬分。 從一開始的選題、資料的查找,材料的整理,在顧老師的指導下,我們全組同學認真學習、仔細分析,遇到問題及時商量查找資料,當查找資料后還有不明白的地方及時請教老師。顧老師在我們開始選題時,給我們講解了每一個課題的大體方案及所需元器件,我們經過商量,選擇了我們已有的元器件的這個課題,在我們選擇課題后,顧老師就智能電子技術實踐技術教材給我們做了詳細的講解;我們受益匪淺。非常感謝顧老師精心的指導、組員們的認真努力。在單片機的學習方面我們更進一步,在兩周的實訓中,我們對keil軟件的編寫程序更加熟練,我們又重溫了焊接電路板的技術,感覺很是不錯。 感謝和我一起努力奮斗的同學們,因為你們,我的學習和生活過得精彩而又充實! 感謝在電子082班一起度過美好時光的同學們,并一起度過那些令人難忘的歲月! 最后,感謝所有關心我、幫助過我的老師、同學和朋友! 參考文獻 [1] 智能電子技術實踐教程 劉昌珍 無錫商院:電子工程系 2009 [2]Protel199SE原理圖與PCB設計教程 無錫:電子工業(yè)出版社 2009 [3] DS18_b20.cn.pdf 單數(shù)字溫度傳感器 [4] 徐愛鈞.單片機高級語言C51 應用程序設計[M]. 北京:電子工業(yè)出版社,2002. [5] 謝自美.電子線路設計.實驗.測試(第二版) [M].武漢:華中科技大學出版社,2000. [6] 江國強.現(xiàn)代數(shù)字邏輯電路.北京:電子工業(yè)出版社,2002 . [7] 張勇.PROTEL 99SE 電路設計技術入門與應用(第一版).北京:電子工業(yè)出版社 [8] 樊昌信.通信原理(第五版)[M].北京:國防工業(yè)出版社,2001 .
|