专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 单片机

求多点温度检测C代码解决方法

发布时间:2010-06-14 15:58:09 文章来源:www.iduyao.cn 采编人员:星星草
求多点温度检测C代码
调了几天程序没什么进展,想了两个方法做都不成功,液晶上显示乱码。想求一个绝对正确的多点温度检测程序(主要是64位Rom搜索那段代码)希望能比对一下发现错误。要代码可能很冒昧啦,不过还是请大侠们帮个忙。。。谢谢

------解决方案--------------------
网上有很多的
------解决方案--------------------
比较关心这个,回帖少啊
------解决方案--------------------
C/C++ code
//多点温度读取,num为要读取的设备的序号。
int Read_All_Temperature(unsigned char num)
{
    int PH=0,PL=0;
    int tt;    
    int i; 

    Init_DS18B20();//初始化
    DS18B20_wr_Byte(match_Rom);//匹配ROM
    for(i=((num-1)<<3);i<(num<<3);i++)//输入需要使用的DS18B20的64位ROM
    {
        DS18B20_wr_Byte(DS18B20_ROM[i]);
    }
    DS18B20_wr_Byte(Convert_T);//开始温度转换
    for(i=0;i<800;i++);//延时
    
    Init_DS18B20();//初始化
    DS18B20_wr_Byte(match_Rom);//匹配ROM
    for(i=((num-1)<<3);i<(num<<3);i++)//输入需要使用的DS18B20的64位ROM
    {
        DS18B20_wr_Byte(DS18B20_ROM[i]);
    }
    DS18B20_wr_Byte(read_Scratchpad);//读暂存器
    
    PL = DS18B20_rd_Byte()*10;
    PH = DS18B20_rd_Byte()*10;
    tt = (PL>>4)+(PH<<4);//返回当前温度的值,温度为实际温度的10倍
    return tt;
}

------解决方案--------------------
先单独读取每个ROM号,然后做成表格

C/C++ code
//DS18B20内部64位ROM表,以16进制保存,
unsigned char code DS18B20_ROM[]=
{
    0x28,0xA0,0x87,0x34,0x02,0x00,0x00,0xD1,//第一个设备ROM
    0x28,0x82,0x8D,0x4A,0x02,0x00,0x00,0x09,//第二个设备ROM
};

------解决方案--------------------
学习。。。
------解决方案--------------------
可以去这个网站看看有没有http://www.pudn.com/
------解决方案--------------------
学习。我一直不明白为什么要读取rom, 为什么不直接在程序里面定义好表格呢?(也就是在flash里面定义),这样就可以查表了。 希望有高手帮忙解答。
------解决方案--------------------
你查表的数据从哪来啊?不还是要先读取出来吗。一次读取出来就行了,以后就可以直接查表用了,不必每次都读取
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: