求多点温度检测C代码
调了几天程序没什么进展,想了两个方法做都不成功,液晶上显示乱码。想求一个绝对正确的多点温度检测程序(主要是64位Rom搜索那段代码)希望能比对一下发现错误。要代码可能很冒昧啦,不过还是请大侠们帮个忙。。。谢谢
[解决办法]
网上有很多的
[解决办法]
比较关心这个,回帖少啊
[解决办法]
//多点温度读取,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号,然后做成表格
//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里面定义),这样就可以查表了。 希望有高手帮忙解答。
[解决办法]
你查表的数据从哪来啊?不还是要先读取出来吗。一次读取出来就行了,以后就可以直接查表用了,不必每次都读取