51單片機單總線控制兩個DS18B20_第1頁
51單片機單總線控制兩個DS18B20_第2頁
51單片機單總線控制兩個DS18B20_第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、#in clude<reg52 h>#defi ne uchar un sig ned char#defi ne uint un sig ned int sbit DQ二Pipsbit rs=P 2 A 0;sbit rw二P 2 人 1;sbit e=P 2 A 2;uchar temp 1, te mp2;/定義兩個存放溫度的變量Iluchar ID8;/存放DS18B20的64位序列號的數(shù)組uchar code/第一個DS18B20的序列號第二個DA18R20的庫列號ID_1 Z = 0x2& 0x3a, 0x24, 0xc6, 0x02, 0x00, 0x00, 0

2、xa4);uchar code ID_2 = 0x28, 0x66,0xa2,Oxcl, 0x02, 0x00, 0x00,0x26;uchar code table="0123456789"uchar code table_te mp ="te mp reture:;uchar code table_0 El =Z,C:*void delay_50us( uint time); void write_com(uchar com); void write_data(uchar dat); void in it_LCD1602(void); id ini t_dsl

3、8b20(void);void delay( uint t);void ini t_dsl8b20(void); void write_byte(char dat); uchar read_byte(void);uchar readte mp 1 (void); uchar readte mp 2(void); void dis pl ay(void);/50us的延時函數(shù)IILCD1602寫指令IILCD1602寫數(shù)據(jù)IILCD1602初IIdsl8b20初始化Ilwhile ( t)延時函數(shù)IIDS18B20初始化函數(shù)IIdsl8b20寫一個字節(jié)函數(shù)IIdsl8b20讀一個字節(jié)函數(shù)II第一

4、個dsl8b20讀取溫度函數(shù)II第二個dsl8b20讀取溫度函數(shù)*I*void readrom(void) II讀取溫度傳感器的序列號了函數(shù) ini t_dsl8b20(); delay_50us(2); write_byte(0x33);ID0=read_byte 0;IDl=read_byte 0;ID 2=read_byte 0;ID3=read_byte 0;ID 4=read_byte 0;ID5=read_byte 0;ID 6=read_byte 0;ID7=read_byte 0;/*/ /*voi d keep_rom(uchar *p) / 存序列號函數(shù)uchar i;fo

5、r(i=0;i<8;i+) *p=IDi;P+;Avoid dis play_rom(void)/ 顯不序列號函數(shù)uchar i;(0x80); for(i=0;i<8;i+)write_data(table ClDi/16); write_data(tableIDi%16);void main (void)in it_LCD16020;while(1)tempreadte mp 1 0 ;temp 2=readte mp 2();disp lay();/*/ void delay_50us( uint time)uchar j; for(;time>0;time); for

6、(j=19;j>0;j+);/*/void write_com(uchar com)/LCD1602 寫指令rs=0;rw 二 0;PO=com;delay_50us(10);e=l;delay_50us(20);/ * * * * * * * * *,/void write_data(uchar dat) /LCD1602 與數(shù)據(jù) e=0;rs=l;rw 二 0;P0=dat;delay_50us(10); e=l;delay_50us(20);e=0;/*/void in it_LCD1602(void)/LCD 1602 初始化函數(shù)delay_50us(300);(0x38);de

7、lay_50us(100);write_com(0x38);delay_50us(100);write_com(0x38);write_com(0x38) ;/顯示模式設置write_com(0x08) ;/顯示關閉write_com(0x01) ;/ 顯不清屏write_com(0x06) ;/顯不光標移動設置 write_com(0x0c) ;/顯不刃及 光標設置/*/ void delay( uint t)while (t);/*/void init_dsl8b20(void)/ 初女臺化uchar n;/ keep_rom(IP_l);/ dis play_rom(); write_b

8、yte(0x55);for(i=0;i<8;i+)t write_byte(ID_li);write_byte(0x44); delay(300);ini t_dsl8b20(); write_byte(0x55);for(i=0;i<8;i+) write_byte(ID_lil):write_byte(Oxbe);a=read_b5rte();b=read_byte();b«=4;b+= (a&O xf0) »4;return b;/啟動溫度測量讀這個溫度低位/屏蔽低四位/*/ uchar readte mp2 (void)uchar a, b, i

9、 ;ini t_dsl8b20();/readrom 0;/ keep_rom(IP_l);/ dis play_rom();write_byte(0x55);for(i=0;i<8;i+)讀一個高八位,一個低八位 write_byte(ID_2i);write_byte(0x44);delay(300);ini t_dsl8b20(); write_byte(0x55);for(i=0;i<8;i+)/啟動溫度測量 write_byte(ID_2i);a=read_byte(); b=read_byte(); b«=4;b+= (a&O xf0)»4;return b;低位/咼位/屏蔽低四位/ ilK/Js tempreture/第一個溫度值顯示溫度十位/顯示溫度個位第二個溫度值/顯示溫度十位“顯示溫度個位void dis pl ay (void)uchar i;wri te_com(0x80);for(i=0;i<ll;i+)ite_data(table_te mp Li); delay_50us (1);wri te_com(0x800x40);write_data(tableEte mp 1/10);write_data(tabletem pl%10);write_d

溫馨提示

  • 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

提交評論