ds18b20触摸没反应_为什么我的这个ds18b20程序读不出温度

#include#include#defineuintunsignedint#defineucharunsignedcharsbitDQ=P2^2;sbitdula=P2^6;sbitwela=P2^7;ucharbai,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b...

#include#include #define uint unsigned int#define uchar unsigned charsbit DQ=P2^2;sbit dula=P2^6;sbit wela=P2^7;uchar bai,shi,ge;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void delayus(uint num){ while(num--);}Init_DS18B20(void){ uchar x=0; DQ=1; delayus(10); DQ=0; delayus(80); DQ=1; delayus(20); x=DQ; delayus(30);}ReadOneChar(void){ uchar i=0; uchar dat=0; for(i=8;i>0;i--) { DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delayus(8); } return(dat);}WriteOneChar(unsigned char dat){ uchar i=0; for(i=1;i<8;i++) { DQ=0; DQ=dat&0x01; delayus(10); DQ=1; dat>>=1; } delayus(8);}int ReadTemperature(void){ uchar a=0; uchar b=0; int t=0; float tt=0; Init_DS18B20(); //复位 WriteOneChar(0xCC);//跳过ROM WriteOneChar(0x44);//温度转换 Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0626; t=tt*10+0.5; return(t);}void display(uchar bai, uchar shi, uchar ge){ wela=1; P0=0xfe;//1111 1110 wela=0; P0=0xff; dula=1; P0=table[bai]; dula=0; P0=0xff; delay(5); wela=1; P0=0xfd;//1111 1101 wela=0; P0=0xff; dula=1; P0=table1[shi]; dula=0; P0=0xff; delay(5);

wela=1; P0=0xfb;//1111 1011 wela=0; P0=0xff; dula=1; P0=table[ge]; dula=0; P0=0xff; delay(5);}void main(){ uint temp; while(1) { temp=ReadTemperature(); bai=temp/100; shi=temp%100/10; ge=temp%10; display(bai,shi,ge); }}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值