单片机读取ds18b20的数据为什么总是不对;用proteus仿真的

#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^3;//ds18b20与... #include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit DQ=P3^3;//ds18b20与单片机连接口
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

unsigned char code str1[]={"temperature: "};
unsigned char code str2[]={" C "};

uchar data disdata[5];
uint tvalue;//温度值
uchar tflag;//温度正负标志

/*************************lcd1602程序**************************/
void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)
{unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}

void wr_com(unsigned char com)//写指令//
{ delay1ms(1);
RS=0;
RW=0;
EN=0;
P0=com;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void wr_dat(unsigned char dat)//写数据//
{ delay1ms(1);;
RS=1;
RW=0;
EN=0;
P0=dat;
delay1ms(1);
EN=1;
delay1ms(1);
EN=0;
}

void lcd_init()//初始化设置//
{delay1ms(15);
wr_com(0x38);delay1ms(5); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据
wr_com(0x08);delay1ms(5);
wr_com(0x01);delay1ms(5); //清显示
wr_com(0x06);delay1ms(5);//整屏不移动,光标自动右移
wr_com(0x0c);delay1ms(5);//开显示不显示光标
}

void display(unsigned char *p)//显示//
{
while(*p!='\0')
{
wr_dat(*p);
p++;
delay1ms(1);
}
}

init_play()//初始化显示
{ lcd_init();
wr_com(0x80);
display(str1);
wr_com(0xc0);
display(str2);
}
就是温度读取错误;求大神!
展开
 我来答
GUEL86
2013-05-23 · TA获得超过5856个赞
知道大有可为答主
回答量:5538
采纳率:86%
帮助的人:2744万
展开全部

参考一下吧,会有帮助的。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善如南0hHb23
2013-05-23 · TA获得超过174个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:496万
展开全部
DS18b20设计对时序要求很严格的啊

可以交流的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Q1826797881
2013-05-23 · 超过14用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:55.8万
展开全部
估计还是程序问题吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式