打印

求助DS18S20的问题

[复制链接]
1928|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yioujie|  楼主 | 2010-12-13 19:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的时序没错啊,为什么在PROTEUS仿真上就是显示不出来呢,求解,谢谢!
uchar reset()
{
  uchar i;
uchar presencesignal;
ds18s20_DQ=0;
for(i=240;i>0;i--);   //延时480um
ds18s20_DQ=1;
for(i=40;i>0;i--);
presencesignal=ds18s20_DQ;
for(i=200;i>0;i--);
return(presencesignal);
}
void writedata(char val)
{
uchar i,j;
for(i=8;i>0;i--)
{
   ds18s20_DQ=0;
  for(j=2;j>0;j--);//yanshi
  ds18s20_DQ=val&0x01;
  for(j=30;j>0;j--);//yanshi
  ds18s20_DQ=1;
  val>>=1;
}
}

uchar readdata()
{
uchar i,j;
  uchar ds1820_rdat;
for(i=8;i>0;i--)
{
  ds1820_rdat>>=1;
  ds18s20_DQ=0;
  for(j=5;j>0;j--);//yanshi
  ds18s20_DQ=1;
  for(j=4;j>0;j--);//yanshi
  if(ds18s20_DQ==1)
  ds1820_rdat|=0x80;
  for(j=30;j>0;j--);
  ds18s20_DQ=1;
}
return(ds1820_rdat);
}
int readtemperature()
{
uchar data temperature[2];
uchar i;
int temp;
reset();
writedata(0xcc);
writedata(0x44);
reset();
writedata(0xcc);
writedata(0xbe);
for(i=0;i<2;i++)
{
  temperature[i]=readdata();
}
reset();
temp=(WORD)temperature[1]*256+temperature[0];
return(temp);
}

相关帖子

沙发
yioujie|  楼主 | 2010-12-13 21:20 | 只看该作者
搞定!不是上面DS18S20程序的问题,是显示的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

87

帖子

0

粉丝