




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(大作業(yè))報告課程名稱:傳感器原理及應(yīng)用 設(shè)計題目: 利用DS18B20采集溫度 摘要利用DS18B20采集溫度,本次傳感器原理及應(yīng)用課程設(shè)計,就是用KL25芯片實現(xiàn)溫度控制,傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號才能由單片機(jī)進(jìn)行處理。本次采用DS18B20數(shù)字溫度傳感器來實現(xiàn)溫度計的設(shè)計。顯示傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,特別是溫度傳感DS18B20的數(shù)據(jù)采集過程。本文主要是運(yùn)用DS18B20來完成實驗,KL25微秒級延時,編寫程序代碼并進(jìn)行修改,程序代碼主要0是低電平,1是高電平,每次讀要復(fù)位,讀設(shè)置為輸入,寫設(shè)置為輸出。關(guān)鍵詞: DS18B20傳感器、KL25微妙延時、數(shù)據(jù)采集。目錄課程設(shè)計(大作業(yè))報告1一、 題目分析1二、 基本理論1三、 總體設(shè)計及分析11、 總體內(nèi)容12、 仿真圖及原理圖23、 工作原理34、 串口測試結(jié)果4四、 實驗器材51、器件52、DS18B20的特點5五、 程序代碼及分析5六、 總結(jié)9七、 參考文獻(xiàn)10昆明學(xué)院信息技術(shù)學(xué)院課程設(shè)計(大作業(yè))報告課程設(shè)計(大作業(yè))報告一、 題目分析利用DS18B20采集溫度,本次傳感器原理及應(yīng)用課程設(shè)計,就是用KL25芯片實現(xiàn)溫度控制,傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號才能由單片機(jī)進(jìn)行處理。本次采用DS18B20數(shù)字溫度傳感器來實現(xiàn)溫度計的設(shè)計。利用DS18B20采集溫度,顯示傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,特別是溫度傳感器DS18B20的數(shù)據(jù)采集過程。溫度傳感器DS18B20的數(shù)據(jù)采集,把程序代碼燒到KL25芯片,連接面包板上的電路,與芯片相連接,通過串口采集,顯示十進(jìn)制,把環(huán)境溫度采集到串口上顯示出來。KL25芯片自身就有溫度傳感器,可以通過引腳配置,采集傳感器監(jiān)測到的溫度,但是此時監(jiān)測到的溫度并不能用攝氏度進(jìn)行顯示,得到的數(shù)據(jù)只是原始數(shù)據(jù),無法與真實的溫度聯(lián)系在一起,因此我們需要采用回歸的方法,將采集到的數(shù)據(jù)轉(zhuǎn)換為我們所廣泛認(rèn)知的攝氏溫度,從而顯示在PC界面中。二、 基本理論對于DS18B20的讀時隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成,每完成一次都需要復(fù)位。DS18B20的寫時序,對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程,對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單線。初始化端口A的1號引腳,定義為輸出一個高電平,設(shè)置A端口的1號引腳狀態(tài)為低,進(jìn)行復(fù)位,發(fā)送讀數(shù)據(jù)。三、 總體設(shè)計及分析1、 總體內(nèi)容 DS18B20有三只引腳:DQ數(shù)字信號輸入/輸出端,和VDD電源輸入端,GND接地。提及到溫度的檢測,我們首先會考慮傳統(tǒng)的測溫元件有熱電偶和熱電阻,而熱電偶和熱電阻測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試也復(fù)雜,制作成本高。因此,本數(shù)字溫度計設(shè)計采用智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55C至+125C,最大分辨率可達(dá)0.0625C。DS18B20可以直接讀出被測量的溫度值,而采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點。通過KL25芯片,面包板,溫度傳感器DS18B20,導(dǎo)線等將電路連接起來,溫度傳感器DS18B20采集到的溫度通過PC機(jī)界面顯示出來。2、 仿真圖及原理圖圖1 DS18B20仿真圖DS18B20有三只引腳:DQ數(shù)字信號輸入/輸出端,和VDD電源輸入端,GND接地。圖2 DS18B20的讀寫時序圖(1) DS18B20寫邏輯的步驟:寫邏輯0,單片機(jī)拉低電平大約10-15us,單片機(jī)持續(xù)拉低電平大約20-45us的時間,釋放總線;寫邏輯1,單片機(jī)拉低電平大約10-15us,單片機(jī)拉高電平大約20-45us的時間,釋放總線。(2) DS18B20讀邏輯的步驟:讀邏輯0,在讀取的時候單片機(jī)拉低電平大約1us,單片機(jī)釋放總線,然后讀取總線電平,這時候DS18B20會拉低電平,讀取電平過后,延遲大約40-45微妙;讀邏輯1,在讀取的時候單片機(jī)拉低電平大約1us,單片機(jī)釋放總線,然后讀取總線電平,這時候DS18B20會拉高電平,讀取電平過后,延遲大約40-45微妙。DS18B20的寫時序,對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程,對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單線。3、 工作原理我們使用單點,單線總線上僅有一個DS18B20存在,不需要刻意讀取ROM里面的序列號來,然后在匹配DS18B20而是更直接的跳過ROM指令,然后直接執(zhí)行DS18B20功能指令。DS18B20復(fù)位,在,某種意義上就是一次訪問DS18B20的開始,也就是開始信號。ROM指令,就是訪問,搜索匹配,DS18B20的64位序列號的動作。使能Systick定時器(即向控制及狀態(tài)寄存器的第0位寫1),開始延時。監(jiān)控控制及狀態(tài)寄存器的16位,如該位為1,失能Systick定時器(即向控制及狀態(tài)寄存器的第0位寫0),完成延時。DS18B20的寫時序,對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程,對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單線。初始化端口A的1號引腳,定義為輸出一個高電平,設(shè)置A端口的1號引腳狀態(tài)為低,進(jìn)行復(fù)位,發(fā)送讀數(shù)據(jù)。4、 串口測試結(jié)果圖3 串口測試圖PC機(jī)界面顯示:步驟一、將芯片串口引腳與電腦連接,給芯片通電,然后選擇串口,波特率后按打開串口按鈕。步驟二、按下采集溫度按鈕之后開始采集芯片溫度。步驟三、顯示十進(jìn)制溫度4、 實驗器材1、器件:傳感器DS18B20、電阻、面包板、KL25芯片、若干導(dǎo)線。2、DS18B20的特點:DS18B20是單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟(jì)。DS18B20的性能特點如下:(1) 獨(dú)特的單線接口僅需要一個端口引腳進(jìn)行通信;(2) 多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;(3) 無須外部器件;(4) 可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5;(5) 零待機(jī)功耗;(6) 溫度以9或12位數(shù)字;(7) 用戶可定義報警設(shè)置。5、 程序代碼及分析main.c#include includes.h /包含總頭文件int main(void)unsigned int i=0;unsigned int t=0;unsigned int e=0;DISABLE_INTERRUPTS;uart_init(UART_1,BUSCLK, 9600);Uart_enable_re_i(UART_1);/enable_pit_int();ENABLE_INTERRUPTS; /主循環(huán)開始for(;) /一個死循環(huán) i=getTmpValue(); /獲取溫度函數(shù)調(diào)用 t=i/10; /表示整數(shù) e=i%10;/表示小數(shù) / i=(float)t+0.1*e; uart_send1(UART_1,t); uart_send1(UART_1,e);/sprintf(UART_1,%d.%d t,t,e);/主循環(huán)end_for/主循環(huán)結(jié)束=return 0;ds18b20.c#include ds18b20.h#include delay.hvoid DS18B20_Rset()/復(fù)位 gpio_init(PORTA|(1), OUT, High);/初始化端口A的1號引腳,定義為輸出一個高電平 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號引腳的狀態(tài)為低 Delay_750us(); /延時750us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號引腳的狀態(tài)為高 Delay_15us(); /延時15us unsigned char readBit()/讀取一個位 unsigned char b; gpio_init(PORTA|(1), OUT, High);/初始化端口A的1號引腳定義為輸出一個高電平 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號引腳的狀態(tài)為低 Delay_2us(); /延時2us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號引腳的狀態(tài)為高 gpio_init(PORTA|(1), IN, High);/初始化端口A的1號引腳,定義為輸出一個高電平 Delay_12us(); /延時12s b = gpio_get(PORTA|(1); /獲取A端口的1號引腳的狀態(tài)賦值給b Delay_50us(); /延時50us return b; /返回獲取的狀態(tài)bunsigned char readByte()/讀取一個字節(jié) unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); dat = (j 1); return dat;void writeByte(unsigned char dat)/寫一個字節(jié)dat unsigned char j; unsigned char b; gpio_init(PORTA|(1), OUT, High); /初始化端口A的1號引腳,定義為輸出一個高電平 for(j = 0; j = 1; /dat右移1位后賦給dat if(b) /如果b=1寫入1,否則寫0 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號引腳的狀態(tài)為低 Delay_2us(); /延時2us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號引腳的狀態(tài)為高 Delay_60us(); /延時60us else gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號引腳的狀態(tài)為低 Delay_60us(); /延時60us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號引腳的狀態(tài)為高 Delay_2us(); /延時2us void sendChangeCmd() /開始溫度轉(zhuǎn)換 DS18B20_Rset(); /復(fù)位 Delay_ms(1); /延時1ms writeByte(0xcc); /跳過ROM,直接向 DS18B20發(fā)溫度轉(zhuǎn)換命令 writeByte(0x44); /啟動DS18B20進(jìn)行溫度轉(zhuǎn)換void sendReadCmd() DS18B20_Rset(); Delay_ms(1); writeByte(0xcc); /跳過ROM,直接向 DS18B20發(fā)溫度轉(zhuǎn)換命令 writeByte(0xbe); /讀內(nèi)部數(shù)據(jù)short getTmpValue() unsigned int tmpvalue; int value=0; unsigned char low, high; sendChangeCmd();/開始轉(zhuǎn)換指令 Delay_ms(1000);/溫度轉(zhuǎn)換時間需要750ms以上 sendReadCmd(); /發(fā)送讀數(shù)據(jù) low = readByte(); high = readByte(); tmpvalue = high; tmpvalue = 8; /左移八位 tmpvalue |= low; value = (float)tmpvalue* 0.625; return value;ds18b20.h#ifndef SOURCE_DS18B20_H_#define SOURCE_DS18B20_H_#include includes.h /包含總頭文件#include gpio.h#define High 1#define Low 0#define OUT 1#define IN 0void DS18B20_Rset();/復(fù)位unsigned char readBit();/讀取一個位unsigned char readByte();/讀取一個字節(jié)void writeByte(unsigned char dat);/寫一個字節(jié)datvoid sendChangeCmd(); /開始溫度轉(zhuǎn)換void sendReadCmd();short getTmpValue();void Delay_50us();#endif /* 08_SOURCE_DS18B20_H_ */初始化端口A的1號引腳,定義為輸出一個高電平,設(shè)置A端口的1號引腳狀態(tài)為低,初始化端口A的1號引腳,定義狀態(tài)為低,賦值后進(jìn)行復(fù)位,跳過ROM直接向DS18B20發(fā)送轉(zhuǎn)換命令,讀內(nèi)部數(shù)據(jù),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合同違約責(zé)任研究
- 2025物流企業(yè)倉庫租賃合同范本
- 2025茶葉采購合同樣本:茶葉采購合同范本文本
- 2025版權(quán)合同范本「」
- 實戰(zhàn)經(jīng)驗紡織品設(shè)計師證書考試試題及答案
- 四級電工試題及答案
- oracle索引筆試題目及答案
- 最高檢面試真題及答案
- 無障礙通過商業(yè)美術(shù)設(shè)計師考試試題及答案
- 2024年紡織品設(shè)計師考試準(zhǔn)備內(nèi)容回顧試題及答案
- 地下管道工程施工合同
- 科學(xué)方法和實驗設(shè)計
- 光刻機(jī)行業(yè)深度報告博采眾星之光點亮皇冠明珠-華福證券
- 加固梁柱施工方案
- 防止氮?dú)馕:Π踩嘤?xùn)
- 2023年韶關(guān)市始興縣事業(yè)單位真題
- 南開大學(xué)經(jīng)濟(jì)學(xué)院博士入學(xué)考試試題
- (蘇教版)六年級下冊《扇形統(tǒng)計圖》測試題
- 公路建設(shè)項目變更程序及管理辦法
- 《衛(wèi)生事業(yè)管理學(xué)》練習(xí)考試題庫(100題)
- 新版FMEA(AIAG-VDA第一版)PFMEA過程FMEA課件PPT
評論
0/150
提交評論