有没有会DS18B20编程的朋友!急!

[复制链接]
查看11 | 回复7 | 2021-1-27 06:46:24 | 显示全部楼层 |阅读模式
uintreadtemp(void)
{
floattt;
reset();
wait();
delay(1);
writebyte(0xcc);//skiprom命令
writebyte(0xbe);//readscratchpad命令
tplsb=readbyte();//温度值低位字节(其中低4位为二进制的"小数"部分)
tpmsb=readbyte();//高位值高位字节(其中高5位为符号位)
temp=tpmsb;
temp -->
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
应该不是十进制
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
好好查一下吧,这个应该不难。18并0的程序网上很多,找个正常的对比一下就知道了
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
哥们儿,你这有问题啊
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
你的temp是全局变量吗?
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
梦中的年锌百万啊!
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
少用proteus仿真,还是直接在板上实践为好。
回复

使用道具 举报

千问 | 2021-1-27 06:46:24 | 显示全部楼层
楼主程序中的变量是在哪里定义的?像tplsb和tpmsb这样临时用变量,你不会是在定义到全局变量里了吧?
另,不理解tt=temp*0.0625;temp=tt*10+0.5;为什么不是tt=temp*0.625;temp=tt+0.5;
再,在多种变量类型的计算里,最后加上强制如:tt=(float)temp*0.625
末,参考如下:
union
{
u8c[2];
u16x;
}temp;
u16Read_Temperature(void)//读取温度
{
ow_reset();
write_byte(0xCC);
write_byte(0x44);
ow_reset();
write_byte(0xCC);//跳过ROM
write_byte(0xBE);//读
temp.c[1]=read_byte();
temp.c[0]=read_byte();
//开始
returntemp.x;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行