欢迎来到天天文库
浏览记录
ID:23524220
大小:66.19 KB
页数:7页
时间:2018-11-08
《ds18b20温度传感器》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、最小的温度显示程序 -c51(2010-12-0700:45:27)转载标签:杂谈分类:51单片机#include#includesbitDQ=P2^0;bit presence;unsignedchartempl,temph;chararray[10]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x73,0x4c,0x7f,0x4f};voidDelay(unsignedintnum)//可定义延时{ while(--num);}bitInit_DS18B
2、20(void){ DQ=1; //DQ复位 Delay(8); //稍做延时 DQ=0; //单片机将DQ拉低 Delay(90); //精确延时大于480us DQ=1; //拉高总线 Delay(8); presence=DQ; //如果=0则初始化成功=1则初始化失败 Delay(100); DQ=1; return(presence);//返回信号,0=presence,1=nopresence}u
3、nsignedintReadOneChar(void){unsignedchari=0;unsignedchardat=70;for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1;//位右移 DQ=1;//给脉冲信号等待传感器返回脉冲 if(DQ) dat
4、=0x80; Delay(4); } return(dat);}voidWriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--)
5、{ DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat>>=1; }}voidRead_Temperature(void){ Init_DS18B20(); WriteOneChar(0xcc); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄
6、存器 templ=ReadOneChar(); //温度低8位 temph=ReadOneChar(); 7//温度高8位}voidmain(){floattemp;chara; Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0x44); //启动温度转换 Init_DS18B20(); WriteOneChar(0xcc); WriteOneChar(0xbe); //读取温度寄存器 templ=ReadOne
7、Char(); //温度低8位 temph=ReadOneChar(); //温度高8位 temph&=0x07; temp=((templ>>4)
8、(temph<<4)); temp+=(templ&0x0f)*0.0625; a=temp/10; P1=array[a]; a=temp-10*a; P0=array[a];}/*DS18b20温度传感器p3.4作为数据传输口晶振:11.0592M*/#includesbitDQ=7P3^4;
9、inttemperature;voiddelay(intus){ints;for(s=0;s>=1;DQ=1;if(DQ)u
10、=0x8000;delay(4);}return(u);}voidwrite(uns
11、ignedcharku){inti=0;for(i=0;i<8;i++){DQ=0;DQ7=ku&0x01;delay(3);DQ=1;ku>>=1;}}voidread0(void){//inttemperature;unsignedinttp;unsignedintlsb;rst();write(0xCC);write(0x44);rst();write(0xCC);write(0
此文档下载收益归作者所有