430 和ds18b20

[复制链接]
1658|6
 楼主| 小营七郎 发表于 2013-8-1 19:36 | 显示全部楼层 |阅读模式
ds18b20返回12位数据,包括符号位,数据有效位11位,温度精确小数点后一位,这十一位在4段数码管显示程序怎么写的。求各位给个思路。

本来是想仿照照6段数码管来写的,程序如下:

4段就要与上BIT4到BIT8,因为这是整数部分的前四位,如果这样的话,BIT0到BIT3和高几位的二进制数怎么处理了?

   void Disp_Numb(uint temper){
    uchar i;

    for(i = 0;i < 6;i++) dN[i] = 0; //初始化显示变量

    //数值转换
    if(temper & BIT0)
    {
        dN[0] = 5;
        dN[1] = 2;
        dN[2] = 6;
    }
    if(temper&BIT1)     
    {
        dN[1] += 5;
        dN[2] += 2;
        dN[3] += 1;
    }
    if(temper & BIT2)     
    {
        dN[2] += 5;
        dN[3] += 2;
        if(dN[2] >= 10)
        {
            dN[2] -= 10;
            dN[3] += 1;
        }
    }
    if(temper&BIT3)     
    {
        dN[3] += 5;
    }
    if(temper & BIT4)
    {
        dN[4] += 1;
    }
    if(temper & BIT5)     
    {
        dN[4] += 2;
    }
    if(temper & BIT6)
    {
        dN[4] += 4;
    }
    if(temper & BIT7)     
    {
        dN[4] += 8;
        if(dN[4] >= 10)
        {
            dN[4] -= 10;
            dN[5] += 1;
        }
    }
    if(temper & BIT8)
    {
        dN[4] += 6;
        dN[5] += 1;
        if(dN[4] >= 10)
        {
            dN[4] -= 10;
            dN[5] += 1;
        }
    }
    if(temper & BIT9)
    {
        dN[4] += 2;
        dN[5] += 3;
        if(dN[4] >= 10)
        {
            dN[4] -= 10;
            dN[5] += 1;
        }
    }
    if(temper & BITA)
    {
        dN[4] += 4;
        dN[5] += 6;
        if(dN[4] >= 10)
        {
            dN[4] -= 10;
            dN[5] += 1;
        }
        if(dN[5] >= 10)
        {
            dN[5] -= 10;
        }
    }
}


dirtwillfly 发表于 2013-8-1 20:09 | 显示全部楼层
没看明白楼主的意思,难道从DS18B20里读出的十一位二进制数直接显示在数码管上?
一般读出的数据转换成温度后,位数就变少了,小数点后保留一位就行
 楼主| 小营七郎 发表于 2013-8-1 20:45 | 显示全部楼层
dirtwillfly 发表于 2013-8-1 20:09
没看明白楼主的意思,难道从DS18B20里读出的十一位二进制数直接显示在数码管上?
一般读出的数据转换成温度 ...

我就是不会转呀,转成4个数码管显示的,之前是6个数码管显示。
dirtwillfly 发表于 2013-8-1 21:12 | 显示全部楼层
给你份资料,这个资料写的挺详细的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
1988020566 发表于 2013-8-2 00:02 | 显示全部楼层
4个和六个的 有什么区别么?
1988020566 发表于 2013-8-2 00:02 | 显示全部楼层
舍去两位数就行的。
 楼主| 小营七郎 发表于 2013-8-3 09:30 | 显示全部楼层
dirtwillfly 发表于 2013-8-1 21:12
给你份资料,这个资料写的挺详细的。

嗯,最近忙,资料收了,谢谢啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

1813

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部