




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)中使用 DS18B20 溫度傳感器 C 語(yǔ)言程序(參考 1)/*DS18B20 測(cè)溫程序硬件:AT89S52(1)單線(xiàn) ds18b20 接 P2.2(2)七段數(shù)碼管接 P0 口(3)使用外部電源給 ds18b20 供電,沒(méi)有使用寄生電源軟件:KeiuVision3*/#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitds=P2A2;sbitdula=P2A6;sbitwela=P2A7;ucharflag;uinttemp;/參數(shù) temp 一定要聲明為 int 型uchar
2、codetable尸0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/不帶小數(shù)點(diǎn)數(shù)字編碼ucharcodetable1=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0 xef;/*延時(shí)函數(shù)*/啼小數(shù)點(diǎn)數(shù)字編碼voidTempDelay(ucharus)while(us-);voiddelay(uintcount)/延時(shí)子函數(shù)uinti;while(count)i=200;while(i0)
3、i-;count-;/*串口初始化,波特率 9600,方式 1*/voidinit_com()TMOD=0 x20;設(shè)置定時(shí)器 1 為模式 2TH1=0 xfd;/裝初值設(shè)定波特率TL1=0 xfd;TR1=1;/啟動(dòng)定時(shí)器SM0=0;串口通信模式設(shè)置SM1=1;/REN=1;/串口允許接收數(shù)據(jù)PCON=0;波特率不倍頻/SMOD=0;波特率不倍頻/EA=1;開(kāi)總中斷/ES=1;開(kāi)串行中斷)/*數(shù)碼管的顯示*/voiddisplay(uinttemp)(ucharbai,shi,ge;bai=temp/100;shi=temp%100/10;ge=temp%100%10;dula=0;P0=t
4、ablebai;/顯示百位dula=1;從 0 至 ij1,有個(gè)上升沿,解除鎖存,顯示相應(yīng)段dula=0;從 1 至 ij0 再次鎖存wela=0;P0=0 xfe;wela=1;wela=0;delay;延時(shí)約 2msP0=table1shi;/顯示十位 dula=1;dula=0;P0=0 xfd;wela=1;wela=0;delay(1);P0=tablege;/顯示個(gè)位 dula=1;dula=0;P0=0 xfb;wela=1;wela=0;delay(1);/*時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)(單片機(jī))作為主設(shè)備,單總線(xiàn)器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸
5、都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線(xiàn)器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。初始化時(shí)序:復(fù)位脈沖存在脈沖讀;1 或 0 時(shí)序?qū)懀? 或 0 時(shí)序只有存在脈沖信號(hào)是從 18b20(從機(jī))發(fā)出的,其它信號(hào)都是由主機(jī)發(fā)出的。存在脈沖:讓主機(jī)(總線(xiàn))知道從機(jī)(18b20)已經(jīng)做好了準(zhǔn)備。*/*初始化:檢測(cè)總線(xiàn)控制器發(fā)出的復(fù)位脈沖和 ds18b20 的任何通訊都要從初始化開(kāi)始初始化序列包括一個(gè)由總線(xiàn)控制器發(fā)出的復(fù)位脈沖和跟在其后由從機(jī)發(fā)出的存在脈沖。初始化:復(fù)位脈沖+存在脈沖具體操作:總線(xiàn)控制器發(fā)出(TX)一個(gè)復(fù)位脈沖(一個(gè)最少保持 480ds
6、的低電平信號(hào)),然后釋放總線(xiàn),(RX)。單線(xiàn)總線(xiàn)由 5K 上拉電阻拉到高電平。探測(cè)到 I/O 引腳上的上升沿后DS1820 等待 1560 人然后發(fā)出存在脈沖(一個(gè) 60240 科 S 勺低電平信號(hào))。具體看 18b20 單線(xiàn)復(fù)位脈沖時(shí)序和 1-wirepresencedetect的時(shí)序圖*/voidds_reset(void)ds=1;_nop_();/1usds=0;TempDelay(80);當(dāng)總線(xiàn)停留在低電平超過(guò) 480us,總線(xiàn)上所以器件都將被復(fù)位,這里延/進(jìn)入接收狀態(tài)VWIREPRESENCEDETECTPflEBEHCEDETECTipQLCW時(shí)約 530us 總線(xiàn)停留在低電平超
7、過(guò) 480 科總線(xiàn)上的所有器件都將被復(fù)位。_nop_();ds=1;/產(chǎn)生復(fù)位脈沖后,微處理器釋放總線(xiàn),讓總線(xiàn)處于空閑狀態(tài),原因查 18b20中文資料TempDelay(5);/釋放總線(xiàn)后,以便從機(jī) 18b20 通過(guò)拉低總線(xiàn)來(lái)指示其是否在線(xiàn),/存在檢測(cè)高電平時(shí)間:1560us,所以延時(shí) 44us,進(jìn)彳 f1-wirepresencedetect(單線(xiàn)存在檢測(cè))_nop_();_nop_();_nop_();if(ds=0)flag=1;/detect18b20successelseflag=0;/detect18b20failTempDelay(20);存在檢測(cè)低電平時(shí)間:60240us,所以
8、延時(shí)約 140us_nop_();_nop_();ds=1;再次拉高總線(xiàn),讓總線(xiàn)處于空閑狀態(tài)/*/原理解釋?zhuān)嚎刂破鲗?duì) 18B20 操作流程:1,復(fù)位:首先我們必須對(duì) DS18B20 芯片進(jìn)行復(fù)位,復(fù)位就是由控制器(單片機(jī))給 DS18B20 單總線(xiàn)至少 480uS 的低電平信號(hào)。當(dāng) 18B20 接到此復(fù)位信號(hào)后則會(huì)在*/bitds_read_bit(void)讀一位bitdat;ds=0;單片機(jī)(微處理器)將總線(xiàn)拉低_nop_();讀時(shí)隙起始于微處理器將總線(xiàn)拉低至少 1usds=1;拉低總線(xiàn)后接著釋放總線(xiàn),讓從機(jī) 18b20 能夠接管總線(xiàn),輸出有效數(shù)據(jù)_nop_();_nop_();/小延時(shí)一
9、下,讀取 18b20 上的數(shù)據(jù),因?yàn)閺?ds18b20 上輸出的數(shù)據(jù)在讀時(shí)間隙”下降沿出現(xiàn) 15us 內(nèi)有效dat=ds;/主機(jī)讀從機(jī) 18b20 輸出的數(shù)據(jù),這些數(shù)據(jù)在讀時(shí)隙的下降沿出現(xiàn)/15us 內(nèi)有效return(dat);返回有效數(shù)據(jù)1560uS 后回發(fā)一個(gè)芯片的存在脈沖。2,存在脈沖:在復(fù)位電平結(jié)束之后 1560uS 后接收存在脈沖,存在脈沖為一個(gè)經(jīng)達(dá)成了基本的協(xié)議,接下來(lái)將會(huì)是控制器與/*讀/寫(xiě)時(shí)間隙:DS1820 的數(shù)據(jù)讀寫(xiě)是通過(guò)時(shí)間隙處理位和命令字來(lái)確認(rèn)信息交換。控制器應(yīng)該將數(shù)據(jù)單總線(xiàn)拉高,以便于在60240uS 的低電平信號(hào)。至此,通信雙方已18B20 間的數(shù)據(jù)通信。)原理:
10、圖 8讀時(shí)間隙時(shí)控制時(shí)的采樣時(shí)間應(yīng)該更加的精確才行,讀時(shí)間隙時(shí)也是必須先由主機(jī)產(chǎn)生至少 1uS 的低電平,表示讀時(shí)間的起始。隨后在總線(xiàn)被釋放后的 15uS 中DS18B20 會(huì)發(fā)送內(nèi)部數(shù)據(jù)位,這時(shí)控制如果發(fā)現(xiàn)總線(xiàn)為高電平表示讀出“1”,如果總線(xiàn)為低電平則表示讀出數(shù)據(jù)“0”。每一位的讀取之前都由控制器加一個(gè)起始信號(hào)。注意:如圖 8 所示,必須在讀間隙開(kāi)始的 15uS 內(nèi)讀取數(shù)據(jù)位才可以保證通信的正確。在通信時(shí)是以 8 位“0”或“1”為一個(gè)字節(jié),字節(jié)的讀或?qū)懯菑母呶婚_(kāi)始的即 A7 至 ijA0.字節(jié)的讀寫(xiě)順序也是如圖 2 自上而下的。uchards_read_byte(void)/讀一字節(jié)(uc
11、harvalue,i,j;value=0;一定別忘了給初值for(i=0;i8;i+)(j=ds_read_bit();value=(j1);/這一步的說(shuō)明在一個(gè) word 文檔里面?)return(value);返回一個(gè)字節(jié)的數(shù)據(jù))voidds_write_byte(uchardat)/寫(xiě)一個(gè)字節(jié)(uchari;bitonebit;一定不要忘了,onebit 是一位for(i=1;i1;由低到高傳送數(shù)據(jù)if(onebit)寫(xiě) 1(ds=0;_nop_();_nop_();看時(shí)序圖,至少延時(shí) 1us,才產(chǎn)生寫(xiě)時(shí)間隙ds=1;寫(xiě)時(shí)間隙開(kāi)始后的 15 科 s 內(nèi)允許數(shù)據(jù)線(xiàn)拉到高電平TempDela
12、y(5);/所有寫(xiě)時(shí)間隙必須最少持續(xù) 60us)else寫(xiě) 0(ds=0;60 科這里 64usds=1;_nop_();_nop_();)/*DS1&B2DpLhugDm主機(jī)(單片機(jī))控制 18B20 完成溫度轉(zhuǎn)換要經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要 18B20 進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條 ROM 指令,最后發(fā)送 RAM 指令,這樣才能對(duì) DS18b20 進(jìn)行預(yù)定的操作。復(fù)位要求主 CPU 將數(shù)據(jù)線(xiàn)下拉 500us,然后釋放,當(dāng) ds18B20 受到信號(hào)后等待 1660us,后發(fā)出 60240us 的存在低脈沖,主 CPU 收到此信號(hào)表示復(fù)位成功STARTQFSLOTSTaRTO
13、fSLOTMASTERWRITE,J0SLOTMASTERWRITESLOTMASTERREADSLOTMASTERREADTSLOT1隔 rXUNETYPELEGENDBLSIT白Mrculling舊日R白白St9rpuPup*/*進(jìn)行溫度轉(zhuǎn)換:先初始化然后跳過(guò) ROM:跳過(guò) 64 位 ROM 地址,直接向 ds18B20 發(fā)溫度轉(zhuǎn)換命令,適合單片工作發(fā)送溫度轉(zhuǎn)換命令*/voidtem_change()(ds_reset();delay;約 2msds_write_byte(0 xcc);/單線(xiàn)情況下,跳躍 ROM 指令ds_write_byte(0 x44);/溫度轉(zhuǎn)換指令/*獲得溫度:*/uintget_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 帳篷露營(yíng)活動(dòng)方案
- 重癥肺炎與氣管切開(kāi)管理規(guī)范
- 漢語(yǔ)知識(shí)考試題及答案
- 排球水平測(cè)試題及答案
- 抖音八十萬(wàn)java面試題及答案
- 奧運(yùn)英語(yǔ)面試題及答案
- 營(yíng)養(yǎng)員考試題及答案
- java面試題及答案范本
- 船舶制造2025年訂單趨勢(shì)報(bào)告:船舶制造產(chǎn)業(yè)鏈上下游分析
- 2025年虛擬軸加工中心或虛擬軸銑床項(xiàng)目申請(qǐng)報(bào)告
- 健身房預(yù)售培訓(xùn)課件
- 智能化熱模鍛技術(shù)
- 個(gè)人車(chē)位租賃合同電子版 個(gè)人車(chē)位租賃合同
- 普惠性托育機(jī)構(gòu)申請(qǐng)托育中心情況說(shuō)明基本簡(jiǎn)介
- 外輪理貨業(yè)務(wù)基礎(chǔ)-理貨單證的制作
- 《水火箭制作》課件
- 網(wǎng)絡(luò)安全預(yù)防電信詐騙主題班會(huì)PPT
- 優(yōu)秀物業(yè)管理項(xiàng)目評(píng)選方案
- 圖書(shū)管理系統(tǒng)畢業(yè)論文參考文獻(xiàn)精選,參考文獻(xiàn)
- 中國(guó)當(dāng)代舊體詩(shī)選讀幻燈片
- 吉林省全省市縣鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心基本公共衛(wèi)生服務(wù)醫(yī)療機(jī)構(gòu)信息名單目錄995家
評(píng)論
0/150
提交評(píng)論