单片机/MCUwilliam hill官网
直播中

YEYENAINAI521

11年用户 40经验值
擅长:嵌入式技术
私信 关注
[问答]

关于18B20的ROM搜索函数的一些问题

小弟菜鸟,最近再弄这个18B20这块,搜索ROM码,我原来在william hill官网 里面下过一份有关程序,看的时候一些问题不懂,时间一长,给忘了从哪下得了。其他就不贴了,看不懂的程序如下:void dis_readnumber()      
{
uchar i,temp;
init_ds18b20();
write_ds18b20(0x33); //允许只有一个18B20的前提下,通过总线直接搜索ROM码
for(i=0;i<8;i++)
{
  save_number[i]=read_ds18b20();  //保存搜索到的序列号
}
    write_com(0x80);        
for(i=0;i<8;i++)
{
  temp=save_number[i]>>4;   
  if(temp<10)
  {
   write_dat(0x30+temp);
  }
  else
  {
    write_dat(0x37+temp);        //问题1:大于10为什么是0X37
  }
  temp=save_number[i]&0x0f;   
  if(temp<10)
  {
   write_dat(0x30+temp);
  }
  else
  {
    write_dat(0x37+temp);  //同问题1
  }
}
}
希望各路高手给解释解释。

回帖(5)

陈博

2015-7-9 20:36:59

最佳答案

   write_dat(0x37+temp);//大于10的数字显示ABCD等
举报

wwtwin

2015-7-9 20:55:29
好东西,我正愁这个不清楚呢?
举报

陈博

2015-7-10 11:09:48
取ASCII码呢
举报

YEYENAINAI521

2015-7-11 18:07:56
引用: 今日电子 发表于 2015-7-10 11:12
write_dat(0x37+temp);//大于10的数字显示ABCD等

是这样的,谢谢。
举报

YEYENAINAI521

2015-7-11 18:09:37
因为阿拉伯数字和大写字母中间夹了7个其他字符,所以是0X37。   谢谢今日电子。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分