求助DS18S20的问题

[复制链接]
2698|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

粉丝
快速回复 在线客服 返回列表 返回顶部
0