在TM-1638 8位7段显示器上显示十进制值

时间:2016-05-25 11:20:22

标签: c embedded

我正在用C语言编写一个程序,我必须读取TM-1638中按钮的值并将其发送到7段显示器。我现在通过阅读部分,我有问题在显示器中显示值。 我已使用以下代码将值转换为BCD:

const uint8_t dec[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d,0x07,0x7f,0x6f};
if(readbyte > 0)
{
    num <<= 4;
    num |= readbyte % 10;
    readbyte /= 10;
}

senddatabyte(0x0a, dec[num]);
senddatabyte(0x0c, dec[num]);
senddatabyte(0x0e, dec[num &0x0f]);

其中senddatabyte将值发送到7段显示的选定地址。 当它必须显示一位数字时它很好用,但是当它显示数十和数百时它不起作用。

1 个答案:

答案 0 :(得分:1)

对于较大的数字,您必须使用循环。在数字大于或等于10时循环。取数字模数10得到最低有效数字,您可以在显示屏上打印。然后将数字除以10并再次循环。然后最后当循环完成并且剩下的数字是小于10的数字时,也打印该数字。