标题: 关于单片机+DS18B20负数显示的问题 [打印本页]

作者: jacing    时间: 2020-4-29 16:42
标题: 关于单片机+DS18B20负数显示的问题
请问各位大佬,我的DS18B20负数显示时,温度在0到-15.9就可以正常显示,到-16就显示为-0,-17就显示-1·····这个是怎么回事?大佬们有啥解决方法吗?附上相关代码和仿真运行图。相关代码:
unsigned char tempL=0;  //设全局变量
unsigned char tempH=0;
unsigned char tempA;
unsigned char tempB;
unsigned char tempshi;
unsigned char tempge;
unsigned char xiaoshu1; //小数第一位
unsigned int zb;
bit  fg=1;              //温度正负标志
······
//读温度值(低位放tempL;高位放tempH;)
void ReadTemperature(void)
{
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0x44); //启动温度转换
delaynms(250); //转换需要一点时间,延时
Init_DS18B20(); //初始化
WriteOneChar(0xcc); //跳过读序列号的操作
WriteOneChar(0xbe); //读温度寄存器(头两个值分别为温度的低位和高位)
tempL=ReadOneChar(); //读出温度的低位LSB
tempH=ReadOneChar(); //读出温度的高位MSB
tempA=(tempH<<8)|tempL;
if(tempH>0x07)      //最高位为1时温度是负
{
    tempA=~tempA+1;
    zb=12;
tempB=tempA*(0.625)+0.5;
}
else
{
    tempB=tempA*(0.625);
    zb=0;
    }
    tempshi=tempB/100;
    tempge=tempB%100/10;
    xiaoshu1=tempB%10;
}








作者: wulin    时间: 2020-4-29 21:44
ds18b20数码管显示 仿真.zip (113.41 KB, 下载次数: 45)





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1