在STM32 F407,2.8寸LCD通过。定义两个数组,分别存放十六进制数字和转换后的数字。位数指转换后的十六机制位数,前面多余的显示0,一定要大于理论上转换后的位数否则无法正常显示。
可以添加在LCD.c文件里,要先实现显示数字的代码。
/**
* @brief 显示十六进制数字,240*320
* @param x 起点坐标x
* @param y 起点坐标y
* @param nun 数值(0~0xFFFF)
* @param len 数字的位数1,2,3,4,一定大于等于数值否则出错
* @param size 字体大小 12,16,24
* @retval None
*/
void LCD_ShowHexNum(uint16_t x, uint16_t y, uint16_t num, uint8_t len, uint8_t size)
{
static const uint8_t hex[] = "0123456789ABCDEF";
uint8_t res[4] = {0};
uint8_t cnt = len, i = 0;
while (num != 0)
{
res[--cnt] = hex[num % 16];
num /= 16;
}
LCD_ShowChar(x, y, '0', size, 0);
LCD_ShowChar(x + size / 2, y, 'x', size, 0);
for (i = 0; i < len; i++)
{
if (!res[i])
res[i] = '0';
LCD_ShowChar(x + size + (size / 2) * i, y, res[i], size, 0);
}
}