項目智能溫度計設計與調(diào)試_第1頁
項目智能溫度計設計與調(diào)試_第2頁
項目智能溫度計設計與調(diào)試_第3頁
項目智能溫度計設計與調(diào)試_第4頁
項目智能溫度計設計與調(diào)試_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、項目3 智能溫度計的設計與調(diào)試任務1 溫度傳感器的初始化一、任務說明 單片機控制1片溫度傳感器DS18B20和1個報警指示燈,編寫溫度傳感器的復位程序,復位成功時,指示燈閃爍。任務1 溫度傳感器的初始化二、任務分析1.硬件分析(1) DS18B20簡介DS18B20 是單線數(shù)字溫度傳感器,具有獨特的優(yōu)點:u 采用單總線的接口方式,與微處理器連接時僅需要一條口線。u測溫范圍為 -55 + 125 ; 在 -10+ 85C 范圍內(nèi),精度為 0.5C 。u 在使用中不需要任何外圍元件。u 支持多點組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。u測量分辨率可通過程序設定 912

2、 位。u內(nèi)部含有 EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設定值。任務1 溫度傳感器的初始化(2)DS18B20管腳排列u GND為電源 地;u DQ為數(shù)字信號輸入輸出端;要求外接一個約為 4.7K10K 的上拉電阻,這樣,當總線閑置時其狀態(tài)為高電平。uVDD為外接供電電源輸入端任務1 溫度傳感器的初始化(3)DS18B20內(nèi)部結構 主要由4部分組成:64 位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。ROM中的64位序列號是出廠前被光刻好的,它可以看作 是該DS18B20的地址序列碼,可以實現(xiàn)一根總線上掛接多個DS18B20。任務1 溫度傳感器的初始化

3、(4)復位時序數(shù)據(jù)線下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us60us 左右,然后發(fā)出 60us240us 的存在低脈沖,主 CPU 收到此信號后表示復位成功。任務1 電路圖任務1 溫度傳感器的初始化2.軟件分析主函數(shù)調(diào)用DS18B20的初始化函數(shù),然后循環(huán)執(zhí)行指示燈報警。任務1 溫度傳感器的初始化三.任務實施步驟1:在Proteus軟件中建立仿真電路文件。步驟2:在Keil中設計程序,匯編無誤后,生成目標文件(.HEX)。步驟3:在Proteus軟件中加載目標文件,仿真運行觀察結果。步驟4:結果無誤,請求教師檢查、評價。步驟5:編制項目報告。任務2 整數(shù)顯示溫度

4、計一、任務說明 單片機控制1片溫度傳感器DS18B20,編寫程序,完成溫度測量和溫度數(shù)據(jù)讀取,并將溫度值的整數(shù)部分顯示在數(shù)碼管上。任務2 整數(shù)顯示溫度計二、任務分析1.硬件分析 溫度測量流程初始化ROM操作指令存儲器操作指令數(shù)據(jù)傳輸DS18B20的ROM指令集DS18B20的存儲器指令集任務2 整數(shù)顯示溫度計 向DS18B20寫1位數(shù)據(jù)的時序拉低15us 寫一位延時45us拉高數(shù)據(jù)線。連續(xù)寫入時先低位后高位。任務2 整數(shù)顯示溫度計 從DS18B20讀1位數(shù)據(jù)的時序(先寫入讀數(shù)指令0 xBE才能開始讀數(shù))數(shù)據(jù)線拉低數(shù)據(jù)線拉高讀入一位延時45us 拉高數(shù)據(jù)線。任務2 整數(shù)顯示溫度計 溫度數(shù)據(jù)處理

5、DS18B20中的溫度傳感器完成對溫度的測量,用16位二進制形式提供,形式表達,其中S為符號位。任務2 整數(shù)顯示溫度計 溫度數(shù)據(jù)處理例 如125的數(shù)字輸出為0 x07D0-55的數(shù)字輸出為 0 xFC90任務2 整數(shù)顯示溫度計 溫度數(shù)據(jù)處理讀出2字節(jié)溫度數(shù)據(jù)后,需要進行數(shù)據(jù)拼裝:將低字節(jié)的高4位(2320)右移4位、將高字節(jié)的低4位( S24 )左移4位,然后拼裝成8位數(shù)據(jù)。S26252423222120若S=0,溫度數(shù)據(jù)為原碼,可直接求10進制顯示值,同時將標志變量清零;若S=1,溫度數(shù)據(jù)為補碼,需要取反加1后(補碼求絕對值)再求10進制顯示值,同時將標志變量置1。任務2 整數(shù)顯示溫度計2.

6、軟件分析-函數(shù)構成主函數(shù) Void main() 不斷調(diào)用溫度數(shù)據(jù)讀取和動態(tài)顯示函數(shù)顯示 Void display() 4位顯示值,最高位顯示符號,低3位顯示溫度值的整數(shù)部分數(shù)據(jù)讀取 Void ds18b20() 啟動溫度轉(zhuǎn)換,連續(xù)讀取兩字節(jié)數(shù)據(jù)溫度轉(zhuǎn)換 Void temp_convert 溫度數(shù)據(jù)的拼接與顯示值求取寫1字節(jié) Void write (int dat) 向ds18b20寫入1字節(jié)數(shù)據(jù)讀1字節(jié) int read () 從18b20讀取1字節(jié)數(shù)據(jù)初始化 Void initial() Ds18b20初始化延時 Void delayus(int i)延時12us Void delayms

7、(int i)延時1ms任務2 整數(shù)顯示溫度計2.軟件分析-變量定義#includesbit dq=P30;/ds18b20sbit led=P31;/指示燈unsigned char t,tl,th,flag=0;/t溫度,flag標志unsigned char seg10=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/共陽極七段碼任務2 整數(shù)顯示溫度計2.軟件分析-主函數(shù)流程調(diào)用動態(tài)顯示函數(shù)調(diào)用溫度數(shù)據(jù)讀取函數(shù)任務2 整數(shù)顯示溫度計2.軟件分析-溫度讀取函數(shù)調(diào)用讀數(shù)子函數(shù),讀出高字節(jié)數(shù)據(jù)調(diào)用讀數(shù)子函數(shù),讀出低字節(jié)數(shù)

8、據(jù)向DS18B20寫入0XBE(讀取溫度數(shù)據(jù))向DS18B20寫入0XCC(跳過ROM操作)初始化DS18B20向DS18B20寫入0X44(啟動溫度測量)向DS18B20寫入0XCC(跳過ROM操作)初始化DS18B20Void ds18b20()完成傳感器初始化、溫度測量、溫度數(shù)據(jù)讀取。任務2 整數(shù)顯示溫度計2.軟件分析-溫度數(shù)據(jù)轉(zhuǎn)換函數(shù)溫度數(shù)據(jù)拼接判讀符號位S=0,flag=0S=1,flag=1,求溫度絕對值void temp_convert()完成溫度數(shù)據(jù)拼接和溫度符號定義。任務2 整數(shù)顯示溫度計2.軟件分析-寫1字節(jié)命令字右移1位拉高數(shù)據(jù)線延時60us向數(shù)據(jù)線送命令字最低位延時12

9、us拉低數(shù)據(jù)線循環(huán)8次Void write (int dat)完成向DS18B20寫入1字節(jié)命令,寫入順序為先低后高。任務2 整數(shù)顯示溫度計2.軟件分析-讀1字節(jié)延時60us從數(shù)據(jù)線讀1位數(shù)到temp最高位讀數(shù)變量temp右移1位延時12us拉高數(shù)據(jù)線拉低數(shù)據(jù)線循環(huán)8次int read ()完成從DS18B20讀出1字節(jié)溫度數(shù)據(jù),讀數(shù)順序為先低后高。任務2 整數(shù)顯示溫度計2.軟件分析-溫度數(shù)據(jù)顯示P2=0X04判讀符號變量flagflag=0顯示百位flag=1顯示 -Void display()完成溫度數(shù)據(jù)和符號的顯示第三位顯示流程任務2 整數(shù)顯示溫度計三、任務實施步驟1:在Proteus軟

10、件中建立仿真電路文件。步驟2:在Keil中設計程序,匯編無誤后,生成目標文件(.HEX)。步驟3:在Proteus軟件中加載目標文件,仿真運行觀察結果。步驟4:結果無誤,請求教師檢查、評價。步驟5:編制項目報告。任務2 整數(shù)顯示溫度計四、任務拓展1.如何增加溫度單位顯示?2.如何實現(xiàn)多余顯示位的消隱?3.如何增加顯示溫度值小數(shù)部分(保留1位小數(shù))?任務3 小數(shù)顯示溫度計一、任務說明 單片機控制1片溫度傳感器DS18B20,編寫程序,完成溫度測量和溫度數(shù)據(jù)讀取,并將溫度值精確到小數(shù)點后1位,顯示在數(shù)碼管上。任務3 小數(shù)顯示溫度計二、任務分析 從溫度數(shù)據(jù)格式可知,若要取得溫度值小數(shù)點后1位的值,就

11、需要將低字節(jié)溫度數(shù)據(jù)(tl)的低4位數(shù)值乘以0.0625,然后擴大10倍,再取個位即可。1.溫度數(shù)據(jù)轉(zhuǎn)換部分原理分析任務3 小數(shù)顯示溫度計2.溫度數(shù)據(jù)轉(zhuǎn)換部分程序流程m=tl低4位m=m*625/1000在任務在任務2voidtemp_covert()中增加以下部分。中增加以下部分。任務3 小數(shù)顯示溫度計 十位顯示值消隱的做法:判斷百位和十位上的顯示數(shù)字是否為零,若為零就消隱十位顯示值(P0=0 xff),若不為零則正常顯示數(shù)值。3.溫度顯示部分原理分析選中十位數(shù)碼管判讀百位十位是否為0是P0=0 xff否P0=segt%10任務3 小數(shù)顯示溫度計三、任務實施步驟1:在Proteus軟件中建立

12、仿真電路文件。步驟2:在任務2程序基礎上修改顯示部分和溫度轉(zhuǎn)換部分,匯編無誤后,生成目標文件(.HEX)。步驟3:在Proteus軟件中加載目標文件,仿真運行觀察結果。步驟4:結果無誤,請求教師檢查、評價。步驟5:編制項目報告。任務3 小數(shù)顯示溫度計四、任務拓展利用單片機項目板實測溫度計,程序需要做什么修改?任務4 數(shù)字溫度計一、任務說明 利用單片機項目板實現(xiàn)數(shù)字溫度計,要求顯示溫度單位、溫度數(shù)據(jù)精確到小數(shù)點后1位。任務4 數(shù)字溫度計二、任務分析1.硬件部分修改 查看項目板上DS18B20的數(shù)據(jù)線dq實際連接情況,并修改程序變量定義。項目板上LED燈利用P3.7連接,修改程序中變量定義。按照項

13、目板硬件資源,將任務3做如下修改任務4 數(shù)字溫度計二、任務分析2.軟件部分修改(1)顯示部分 由于項目板上的數(shù)碼管公共端都連接了三極管反向放大器(增大公共端電壓,提高數(shù)碼管顯示亮度),所以程序總凡是選中數(shù)碼管的語句,都需要將控制字按二進制取反(如:0X010XFE、0X080XF7等) ,否則數(shù)碼管不能點亮。任務4 數(shù)字溫度計二、任務分析2.軟件部分(2)DS18B20時序部分 由于項目板上的單片機(STC12C5A89S2)是一款高速單片機,指令提速6-12倍,而DS18B20的復位、讀、寫操作都對時序敏感,因此需要將上述三個子函數(shù)里所有延時部分的參數(shù)擴大10倍,如delayus(5)delayus(50)等。任務4 數(shù)字溫度計三、任務實施步驟1:在Proteus軟件中建立仿真電路文件。步驟2:在任務2程序基礎上修改顯示部分和溫度轉(zhuǎn)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論