![單片機中使用DS18B20溫度傳感器C語言知識程序_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f1.gif)
![單片機中使用DS18B20溫度傳感器C語言知識程序_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f2.gif)
![單片機中使用DS18B20溫度傳感器C語言知識程序_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f3.gif)
![單片機中使用DS18B20溫度傳感器C語言知識程序_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f4.gif)
![單片機中使用DS18B20溫度傳感器C語言知識程序_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f/1cdfab8b-f307-4be3-b09c-3ef0fcf2857f5.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機中使用DS18B20溫度傳感器C語言程序(參考1)/*DS18B20測溫程序硬件:AT89S52(1) 單線 ds18b20 接 P2.2(2) 七段數(shù)碼管接P0 口使用外部電源給ds18b20供電,沒有使用寄生電源軟件:Kei uVisio n 3幵*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*卄*/#i nclude "reg52.h"#in clude "intrin s.h"#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit
2、 ds=P 2人2;sbit dula=卩2人6;sbit wela=卩2人7;uchar flag ;uint temp;參數(shù)temp定要聲明為int型uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ 不帶小數(shù)點數(shù)字編碼uchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;帶小數(shù)點數(shù)字編碼/*延時函數(shù)*/void Temp Delay (uchar us)whil
3、e(us-);void delay(uint count) / 延時子函數(shù)uint i;while(co unt)i=200;while(i>0)i-;coun t-;/*串口初始化,波特率 9600,方式1 */void ini t_com()/設(shè)置定時器1為模式2/裝初值設(shè)定波特率TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SMO=O;SM1=1;/ REN=1;P CON=O;/ SMOD=O;/ EA=1;/ES=1;/*數(shù)碼管的顯示 */void dis pl ay( uint temp)uchar bai,shi,ge;bai=te mp /100;s
4、hi=te mp %100/10;ge=te mp %100%10;dula=0;PO=tablebai; / 顯示百位dula=1;/從0到1,有個上升沿,解除鎖存,顯示相應(yīng)段dula=0;從1至U 0再次鎖存/啟動定時器串口通信模式設(shè)置/串口允許接收數(shù)據(jù)/波特率不倍頻波特率不倍頻開總中斷/開串行中斷wela=O;PO=Oxfe;wela=1;wela=O;delay(1); /延時約 2ms PO=table1shi; / 顯示十位 dula=1;dula=O;PO=Oxfd;wela=1;wela=O;delay(1);PO=tablege; / 顯示個位 dula=1;dula=O;P
5、O=Oxfb; wela=1;wela=O;delay(1); /*時序:初始化時序、讀時序、寫時序。所有時序都是將主機(單片機)作為主設(shè)備,單總 線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸 都是從主機主動啟動寫時序開始,如果要求單總 線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動 讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低 位在先。復(fù)位脈沖存在脈沖或0時序或0時序初始化時序:讀;1 寫;1只有存在脈沖信號是從 18b20 (從機)發(fā)出的,其 它信號都是由主機發(fā)出的。存在脈沖:讓主機(總線)知道從機(18b20)已經(jīng)做好了準備。*/*初始化:檢測總線控制器發(fā)出的復(fù)位脈沖 和ds18b20的任何通訊
6、都要從初始化開始 初始化序列包括一個由總線控制器發(fā)出的復(fù)位脈沖 和跟在其后由從機發(fā)出的存在脈沖。初始化:復(fù)位脈沖+存在脈沖具體操作:總線控制器發(fā)出(TX) 一個復(fù)位脈沖(一個最少保持480卩s的低電平信號),然后釋放總線,進入接收狀態(tài)(RX )。單線總線由5K上拉電阻拉到高電平。探測到I/O引腳上的上升沿后DS1820等待1560 S然后發(fā)出存在脈沖(一個 60240卩S的低電平信號)。具體看18b20單線復(fù)位脈沖時序和1-wire prese nee detect"的時序圖*/void ds_reset(void)ds=1;_nop_();/1usds=0;TempDelay(80
7、); /當總線停留在低電平超過480us,總線上所以器件都將被復(fù)位,這里延II時約530us總線停留在低電平超過 480卩s總線上的所有器件都將被復(fù)位。_nop_();ds=1;/產(chǎn)生復(fù)位脈沖后,微處理器釋放總線,讓總線處于空閑狀態(tài),原因查 18b20中文資料TempDelay(5); /釋放總線后,以便從機18b20通過拉低總線來指示其是否在線,存在檢測高電平時間:1560us,所以延時44us,進行1-wire presenee detect (單 線存在檢測)_nop_();_nop_();_nop_();if(ds=0)/detect 18b20 successflag=1;else/
8、detect 18b20 fail/存在檢測低電平時間:60240us,所以延時約140USflag=0;Temp Delay(20);_nop_();_nop_();再次拉高總線,讓總線處于空閑狀態(tài)ds=1;/*/原理解釋:1,復(fù)位控制器對18B20:首先我們必須對給DS18B20單總線至少 480uS的低電平信號1560uS后回發(fā)一個芯片的存在脈沖。2,存在脈沖:在復(fù)位電平結(jié)束之后 1560uS后接收存在脈沖,存在脈沖為一個 經(jīng)達成了基本的協(xié)議,接下來將會是控制器與/*讀/寫時間隙:DS1820的數(shù)據(jù)讀寫是通過時間隙處理 位和命令字來確認信息交換。操作流程:DS18B20芯片進行復(fù)位,復(fù)位
9、就是由控制器(單片機)。當18B20接到此復(fù)位信號后則會在控制器應(yīng)該將數(shù)據(jù)單總線拉高,以便于在60240uS的低電平信號。至此,通信雙方已 18B20間的數(shù)據(jù)通信。*/ bit ds_read_bit(void)/ 讀一位/單片機(微處理器)將總線拉低/讀時隙起始于微處理器將總線拉低至少1usbit dat;ds=0;_n op_();ds=1;/拉低總線后接著釋放總線,讓從機18b20能夠接管總線,輸出有效數(shù)據(jù)_nop_();_nop_();小延時一下,讀取 18b20上的數(shù)據(jù),因為從ds18b20上輸出的數(shù)據(jù)在讀”時間隙”下降沿出現(xiàn)15us內(nèi)有效dat=ds;/主機讀從機18b20輸出的數(shù)
10、據(jù),這些數(shù)據(jù)在讀時隙的下降沿出現(xiàn)/15us內(nèi)有效TempDelay(IO);所有讀”時間隙”必須60120us,這里77usreturn(dat);/返回有效數(shù)據(jù)原理:圖8讀時間隙時控制時的采樣時間應(yīng)該更加的精確才行,讀時間隙時也是必須先由主機產(chǎn)生至少1uS的低電平,表示讀時間的起始。隨后在總線被釋放后的15uS中DS18B20會發(fā)送內(nèi)部數(shù)據(jù)位,這時控制如果發(fā)現(xiàn)總線為高電平表示讀出“”如果總線為低電平則表示讀出數(shù)據(jù) 起始信號。注意:如圖 8所示, 保證通信的正確。在通信時是以 8位“ 0 ”或 即A7到A0.字節(jié)的讀寫順序也是如圖1“ 0 ” 。每一位的讀取之前都由控制器加一個 必須在讀間隙開
11、始的15uS內(nèi)讀取數(shù)據(jù)位才可以“ 1”為一個字節(jié)2自上而下的。字節(jié)的讀或?qū)懯菑母呶婚_始的uchar ds_read_byte(void ) / 讀一字節(jié)uchar value,i,j;value=0;一定別忘了給初值for(i=0;i<8;i+)j=ds_read_bit();value=(j<<7)|(value>>1);/這一步的說明在一個word文檔里面返回一個字節(jié)的數(shù)據(jù) return(value); void ds_write_byte(uchar dat) / 寫一個字節(jié)uchar i;bit o nebit;一定不要忘了,on ebit 是一位for(
12、i=1;i<=8;i+)on ebit=dat&0 x01;dat=dat>>1;由低到高傳送數(shù)據(jù)if(on ebit)寫 1ds=0;_n op_();_nop_();/看時序圖,至少延時1us,才產(chǎn)生寫”時間隙”ds=1;/寫時間隙開始后的15 us內(nèi)允許數(shù)據(jù)線拉到高電平TempDelay(5); /所有寫時間隙必須最少持續(xù)60uselse 寫 0ds=0;TempDelay(8);II主機要生成一個寫0時間隙,必須把數(shù)據(jù)線拉到低電平并保持至少60 u s 這里 64usds=1;_n op_();_no p_();I*主機(單片機)控制 18B20完成溫度轉(zhuǎn)換要
13、經(jīng)過三個步驟:每一次讀寫之前都要 18B20進行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送 RAM指令,這樣才能對 DS18b20進行 預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500us,然后釋放,當ds18B20受到信號后等待1660us,后發(fā)出60240us的存在低脈沖, 主CPU收到此信號表示復(fù)位成功*/*進行溫度轉(zhuǎn)換:先初始化然后跳過ROM :跳過64位ROM地址,直接向ds18B20發(fā)溫度轉(zhuǎn)換命令,適合單片工作 發(fā)送溫度轉(zhuǎn)換命令*/void tem_cha nge()ds_reset();delay(1);約 2msds_write_byte(0xcc);/單線情況下,跳躍 R
14、OM指令 ds_write_byte(0x44);/ 溫度轉(zhuǎn)換指令/*獲得溫度:*/uint get_te mp erature()float wen du; uchar a,b; ds_reset();delay(1);約 2msds_write_byte(0xcc);ds_write_byte(0xbe);/ 發(fā)送讀溫度命令 a=ds_read_byte();/讀出溫度低 8 位 b=ds_read_byte();/ 讀書溫度高 8 位 temp=b;tempvv=8; temp=tem p|a; wen du=tem p*0.0625;tem p=we ndu*10+0.5;得到真實十進制溫度值,因為DS18B20/可以精確到0.0625度,所以讀回數(shù)據(jù)的最低位代表的是 放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作。/0.0625 度return temp;/*讀ROM*/*voi
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年文化用品跨界合展行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年戶外攀巖塔行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年可變換造型首飾行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年戶外溯溪涼鞋設(shè)計行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年原產(chǎn)地直供綠茶系列行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年堅果包裝材料企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 控制電機及其驅(qū)動項目風險識別與評估綜合報告
- 2025年度家具行業(yè)品牌授權(quán)合同范本
- 2025年度建筑勞務(wù)市場用工需求調(diào)研與分析合同
- 2025年度個人信用貸款抵押合同公證流程
- 2024年微生物檢測試劑行業(yè)商業(yè)計劃書
- 河南開封介紹課件
- 通信設(shè)備售后服務(wù)方案
- 高中英語選擇性必修一單詞表
- 初中生物校本課程綱要
- 物業(yè)公司介紹
- 賣花生混聲合唱簡譜
- 數(shù)學方法在物理中的應(yīng)用
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 心肺復(fù)蘇指南
- 《智能物聯(lián)網(wǎng)導(dǎo)論》AIoT導(dǎo)論-第2章課件
評論
0/150
提交評論