新手上路
- 积分
- 30
- 金钱
- 30
- 注册时间
- 2019-9-24
- 在线时间
- 11 小时
|
1金钱
const uint8_t DisTab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00,0x6e,0x37,0x50,0x6d,0x1c};
//数码管显示函数
//此函数显示正常
void Display(uint16_t data)
{
uint8_t i, j;
uint8_t DisBuff[4];
DisBuff[3] = data % 10000 / 1000;
DisBuff[2] = data % 1000 / 100;
DisBuff[1] = data % 100 / 10;
DisBuff[0] = data % 10;
for(i = 4; i > 0; i--)
SPIWriteByte(DisTab[DisBuff[i-1]]); //送显示数据
}
//改为以下循环模式就异常了
//此函数显示异常
void Display(uint16_t data)
{
uint8_t i, j;
for(i = 0; i < 4; i++)
{
if(i < 3)
SPIWriteByte(DisTab[data % (10*(4-i)) / 10*(3-i)]); //送显示数据
else
SPIWriteByte(DisTab[data % (10*(4-i))]);
}
}
|
最佳答案
查看完整内容[请看2#楼]
修改后如下:
void Display(uint16_t data)
{
uint8_t i, j;
uint16_t Buf=10000;
for(i = 0; i < 4; i++)
{
SPIWriteByte(DisTab[(data % Buf)/ (Buf/10)]); //送显示数据
Buf/=10;
}
}
|