




已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)(大作業(yè))報(bào)告課程名稱:傳感器原理及應(yīng)用 設(shè)計(jì)題目: 利用DS18B20采集溫度 摘要利用DS18B20采集溫度,本次傳感器原理及應(yīng)用課程設(shè)計(jì),就是用KL25芯片實(shí)現(xiàn)溫度控制,傳統(tǒng)的溫度檢測(cè)大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測(cè)量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號(hào)才能由單片機(jī)進(jìn)行處理。本次采用DS18B20數(shù)字溫度傳感器來實(shí)現(xiàn)溫度計(jì)的設(shè)計(jì)。顯示傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,特別是溫度傳感DS18B20的數(shù)據(jù)采集過程。本文主要是運(yùn)用DS18B20來完成實(shí)驗(yàn),KL25微秒級(jí)延時(shí),編寫程序代碼并進(jìn)行修改,程序代碼主要0是低電平,1是高電平,每次讀要復(fù)位,讀設(shè)置為輸入,寫設(shè)置為輸出。關(guān)鍵詞: DS18B20傳感器、KL25微妙延時(shí)、數(shù)據(jù)采集。目錄課程設(shè)計(jì)(大作業(yè))報(bào)告1一、 題目分析1二、 基本理論1三、 總體設(shè)計(jì)及分析11、 總體內(nèi)容12、 仿真圖及原理圖23、 工作原理34、 串口測(cè)試結(jié)果4四、 實(shí)驗(yàn)器材51、器件52、DS18B20的特點(diǎn)5五、 程序代碼及分析5六、 總結(jié)9七、 參考文獻(xiàn)10昆明學(xué)院信息技術(shù)學(xué)院課程設(shè)計(jì)(大作業(yè))報(bào)告課程設(shè)計(jì)(大作業(yè))報(bào)告一、 題目分析利用DS18B20采集溫度,本次傳感器原理及應(yīng)用課程設(shè)計(jì),就是用KL25芯片實(shí)現(xiàn)溫度控制,傳統(tǒng)的溫度檢測(cè)大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測(cè)量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號(hào)才能由單片機(jī)進(jìn)行處理。本次采用DS18B20數(shù)字溫度傳感器來實(shí)現(xiàn)溫度計(jì)的設(shè)計(jì)。利用DS18B20采集溫度,顯示傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,特別是溫度傳感器DS18B20的數(shù)據(jù)采集過程。溫度傳感器DS18B20的數(shù)據(jù)采集,把程序代碼燒到KL25芯片,連接面包板上的電路,與芯片相連接,通過串口采集,顯示十進(jìn)制,把環(huán)境溫度采集到串口上顯示出來。KL25芯片自身就有溫度傳感器,可以通過引腳配置,采集傳感器監(jiān)測(cè)到的溫度,但是此時(shí)監(jiān)測(cè)到的溫度并不能用攝氏度進(jìn)行顯示,得到的數(shù)據(jù)只是原始數(shù)據(jù),無法與真實(shí)的溫度聯(lián)系在一起,因此我們需要采用回歸的方法,將采集到的數(shù)據(jù)轉(zhuǎn)換為我們所廣泛認(rèn)知的攝氏溫度,從而顯示在PC界面中。二、 基本理論對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成,每完成一次都需要復(fù)位。DS18B20的寫時(shí)序,對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程,對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單線。初始化端口A的1號(hào)引腳,定義為輸出一個(gè)高電平,設(shè)置A端口的1號(hào)引腳狀態(tài)為低,進(jìn)行復(fù)位,發(fā)送讀數(shù)據(jù)。三、 總體設(shè)計(jì)及分析1、 總體內(nèi)容 DS18B20有三只引腳:DQ數(shù)字信號(hào)輸入/輸出端,和VDD電源輸入端,GND接地。提及到溫度的檢測(cè),我們首先會(huì)考慮傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻,而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試也復(fù)雜,制作成本高。因此,本數(shù)字溫度計(jì)設(shè)計(jì)采用智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫范圍為-55C至+125C,最大分辨率可達(dá)0.0625C。DS18B20可以直接讀出被測(cè)量的溫度值,而采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。通過KL25芯片,面包板,溫度傳感器DS18B20,導(dǎo)線等將電路連接起來,溫度傳感器DS18B20采集到的溫度通過PC機(jī)界面顯示出來。2、 仿真圖及原理圖圖1 DS18B20仿真圖DS18B20有三只引腳:DQ數(shù)字信號(hào)輸入/輸出端,和VDD電源輸入端,GND接地。圖2 DS18B20的讀寫時(shí)序圖(1) DS18B20寫邏輯的步驟:寫邏輯0,單片機(jī)拉低電平大約10-15us,單片機(jī)持續(xù)拉低電平大約20-45us的時(shí)間,釋放總線;寫邏輯1,單片機(jī)拉低電平大約10-15us,單片機(jī)拉高電平大約20-45us的時(shí)間,釋放總線。(2) DS18B20讀邏輯的步驟:讀邏輯0,在讀取的時(shí)候單片機(jī)拉低電平大約1us,單片機(jī)釋放總線,然后讀取總線電平,這時(shí)候DS18B20會(huì)拉低電平,讀取電平過后,延遲大約40-45微妙;讀邏輯1,在讀取的時(shí)候單片機(jī)拉低電平大約1us,單片機(jī)釋放總線,然后讀取總線電平,這時(shí)候DS18B20會(huì)拉高電平,讀取電平過后,延遲大約40-45微妙。DS18B20的寫時(shí)序,對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程,對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單線。3、 工作原理我們使用單點(diǎn),單線總線上僅有一個(gè)DS18B20存在,不需要刻意讀取ROM里面的序列號(hào)來,然后在匹配DS18B20而是更直接的跳過ROM指令,然后直接執(zhí)行DS18B20功能指令。DS18B20復(fù)位,在,某種意義上就是一次訪問DS18B20的開始,也就是開始信號(hào)。ROM指令,就是訪問,搜索匹配,DS18B20的64位序列號(hào)的動(dòng)作。使能Systick定時(shí)器(即向控制及狀態(tài)寄存器的第0位寫1),開始延時(shí)。監(jiān)控控制及狀態(tài)寄存器的16位,如該位為1,失能Systick定時(shí)器(即向控制及狀態(tài)寄存器的第0位寫0),完成延時(shí)。DS18B20的寫時(shí)序,對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程,對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單線。初始化端口A的1號(hào)引腳,定義為輸出一個(gè)高電平,設(shè)置A端口的1號(hào)引腳狀態(tài)為低,進(jìn)行復(fù)位,發(fā)送讀數(shù)據(jù)。4、 串口測(cè)試結(jié)果圖3 串口測(cè)試圖PC機(jī)界面顯示:步驟一、將芯片串口引腳與電腦連接,給芯片通電,然后選擇串口,波特率后按打開串口按鈕。步驟二、按下采集溫度按鈕之后開始采集芯片溫度。步驟三、顯示十進(jìn)制溫度4、 實(shí)驗(yàn)器材1、器件:傳感器DS18B20、電阻、面包板、KL25芯片、若干導(dǎo)線。2、DS18B20的特點(diǎn):DS18B20是單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟(jì)。DS18B20的性能特點(diǎn)如下:(1) 獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;(2) 多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;(3) 無須外部器件;(4) 可通過數(shù)據(jù)線供電,電壓范圍為3.0-5.5;(5) 零待機(jī)功耗;(6) 溫度以9或12位數(shù)字;(7) 用戶可定義報(bào)警設(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(;) /一個(gè)死循環(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號(hào)引腳,定義為輸出一個(gè)高電平 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為低 Delay_750us(); /延時(shí)750us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為高 Delay_15us(); /延時(shí)15us unsigned char readBit()/讀取一個(gè)位 unsigned char b; gpio_init(PORTA|(1), OUT, High);/初始化端口A的1號(hào)引腳定義為輸出一個(gè)高電平 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為低 Delay_2us(); /延時(shí)2us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為高 gpio_init(PORTA|(1), IN, High);/初始化端口A的1號(hào)引腳,定義為輸出一個(gè)高電平 Delay_12us(); /延時(shí)12s b = gpio_get(PORTA|(1); /獲取A端口的1號(hào)引腳的狀態(tài)賦值給b Delay_50us(); /延時(shí)50us return b; /返回獲取的狀態(tài)bunsigned char readByte()/讀取一個(gè)字節(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)/寫一個(gè)字節(jié)dat unsigned char j; unsigned char b; gpio_init(PORTA|(1), OUT, High); /初始化端口A的1號(hào)引腳,定義為輸出一個(gè)高電平 for(j = 0; j = 1; /dat右移1位后賦給dat if(b) /如果b=1寫入1,否則寫0 gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為低 Delay_2us(); /延時(shí)2us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為高 Delay_60us(); /延時(shí)60us else gpio_set(PORTA|(1),Low); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為低 Delay_60us(); /延時(shí)60us gpio_set(PORTA|(1),High); /設(shè)置A端口的1號(hào)引腳的狀態(tài)為高 Delay_2us(); /延時(shí)2us void sendChangeCmd() /開始溫度轉(zhuǎn)換 DS18B20_Rset(); /復(fù)位 Delay_ms(1); /延時(shí)1ms writeByte(0xcc); /跳過ROM,直接向 DS18B20發(fā)溫度轉(zhuǎn)換命令 writeByte(0x44); /啟動(dòng)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)換時(shí)間需要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();/讀取一個(gè)位unsigned char readByte();/讀取一個(gè)字節(jié)void writeByte(unsigned char dat);/寫一個(gè)字節(jié)datvoid sendChangeCmd(); /開始溫度轉(zhuǎn)換void sendReadCmd();short getTmpValue();void Delay_50us();#endif /* 08_SOURCE_DS18B20_H_ */初始化端口A的1號(hào)引腳,定義為輸出一個(gè)高電平,設(shè)置A端口的1號(hào)引腳狀態(tài)為低,初始化端口A的1號(hào)引腳,定義狀態(tài)為低,賦值后進(jìn)行復(fù)位,跳過ROM直接向DS18B20發(fā)送轉(zhuǎn)換命令,讀內(nèi)部數(shù)據(jù),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中音樂試題及答案
- 城市社會(huì)工作試題及答案
- 九年級(jí)頻率試題及答案
- 腎病病例分析試題及答案
- 檔案保護(hù)工作試題及答案
- 試驗(yàn)員考試試題及答案
- 魚塘管理員合同協(xié)議書
- 旅游業(yè)安全重大危險(xiǎn)源管理措施
- 2025年幼兒園中班下學(xué)期職業(yè)體驗(yàn)計(jì)劃
- 2025年商圈藝術(shù)體育活動(dòng)策劃計(jì)劃
- 2025年中考英語閱讀訓(xùn)練:熱點(diǎn)-電影《哪吒》(含答案)
- 區(qū)域業(yè)務(wù)拓展代理合同樣本
- 《端午特別早會(huì)》課件
- 2025年電源管理芯片市場(chǎng)分析報(bào)告
- 風(fēng)力發(fā)電設(shè)備維修施工合同
- T-GDCKCJH 090-2024 微生物電化學(xué)法水質(zhì)生物毒性在線自動(dòng)監(jiān)測(cè)技術(shù)規(guī)范
- 湖南出版中南傳媒招聘筆試真題2023
- 工作任務(wù)清單模板
- DB37 5155-2019 公共建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)
- 管道工程焊接工藝評(píng)定方案
- 華東理工大學(xué)《專業(yè)外語(制藥工程)》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論