用 C 语言制作查找表的最佳方法是什么?

2024-04-29

我正在开发一个嵌入式 C 项目。我有一个 LCD 显示屏,每个字符都有一个 5x7 点阵。要显示特定字符​​,您必须移动与要打开的点相关的 5 个字节。所以我需要制作某种带有键的查找表,我可以在其中传递 ASCII 字符,并返回一个 5 字节的数组...... 例如,像这样调用这个函数,

GetDisplayBytes('A');

应该返回`像这样的数组...

C[0] = 0x7E : C[1] = 0x90 : C[2] = 0x90 : C[3] = 0x90 : C[4] = 0x7E

在 C 中执行此操作的最佳方法是什么?


我会为您想要使用的连续 ASCII 块创建数组。数据。像这样的事情:

uint8_t displayBytesLetters[] = 
{
  0x73, 0x90, 0x90, 0x90, 0x73, // 'A'
  .
  .
  .
};

uint8_t displayBytesDigits[] = 
{
  0x12, 0x15, 0x25, 0x58, 0x80, // '0'
  .
  .
  .
};

那么你的GetDisplayBytes()是这样的:

uint8_t *GetDisplayBytes(char c)
{
  if (isdigit(c))
    return &displayBytes[5*(c - '0')];
  else if (isupper(c))
    return &displayBytes[5*(c - 'A')];
  else
    return NULL;
}

将返回的指针传递给输出数据的任何函数:

void DoDisplay(uint8_t *displayBytes)
{
  int i;
  for (i = 0; i < 5; i++) 
  {
     SendOutput(displayBytes[i]);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 C 语言制作查找表的最佳方法是什么? 的相关文章

随机推荐