【问题标题】:How do I program an LCD to only use custom fonts? [closed]如何将 LCD 编程为仅使用自定义字体? [关闭]
【发布时间】:2017-07-24 14:07:26
【问题描述】:

我正在做一个只需要使用自定义字体的项目。我已经将所有拉丁字母定义为字节数组,因此我可以简单地将数组值复制到要写入的变量中。下面是我的代码的 sn-p。

void menuInit() {
  byte customChar1[8];
  byte customChar2[8];
  byte customChar3[8];
  byte customChar4[8];
  byte customChar5[8];
  byte customChar6[8];
  byte customChar7[8];
  byte customChar8[8];

  for (int i = 0; i <= 7; i++) {
    customChar1[i] = H[i];
    customChar2[i] = E[i];
    customChar3[i] = A[i];
    customChar4[i] = T[i];
  }

  lcd.createChar(0, customChar1);
  lcd.createChar(1, customChar2);
  lcd.createChar(2, customChar3);
  lcd.createChar(3, customChar4);

  lcd.setCursor(0, 0);

  lcd.write(byte(0));
  lcd.write(byte(1));
  lcd.write(byte(2));
  lcd.write(byte(3));

  for (int i = 0; i <= 7; i++) {
    customChar1[i] = C[i];
    customChar2[i] = O[i];
    customChar3[i] = O[i];
    customChar4[i] = L[i];
  }

  lcd.createChar(0, customChar1);
  lcd.createChar(1, customChar2);
  lcd.createChar(2, customChar3);
  lcd.createChar(3, customChar4);

  lcd.setCursor(0, 1);

  lcd.write(byte(0));
  lcd.write(byte(1));
  lcd.write(byte(2));
  lcd.write(byte(3));

Arduino LCD 文档说我需要在lcd.write() 中写入byte(int) 才能打印创建的自定义字符。但是,如果我这样做,我的 LCD 上会显示两行“COOL”。这可能是因为第一行和第二行都引用了相同的地址。有什么办法可以将字节值复制到其他地方并让它保持原样?

【问题讨论】:

标签: arduino lcd custom-font


【解决方案1】:

大多数字符模式 LCD 都在 ROM 中带有标准字体,并且能够制作一些自定义字符(通常为 8 个)。请参阅您的数据表,但在过去十年中我所见过的任何 LCD 中都无法实现您想要的。

图形 LCD 是不同的,您可以随心所欲地在其上“绘制”。

【讨论】:

  • 是的。我很确定你是对的,但我的经理要我这样做,我觉得这很令人沮丧。
  • 给他看数据表并解释这是不可能的。
  • 所以我想我真正想问的是:如果一个字符正在从 CG RAM 的某个地址显示在 LCD 上,那么在确切的 CG RAM 地址中所做的任何更改都会影响正在显示的字符吗?已经显示了?根据我的观察,LCD 似乎无法锁定已经显示的值。再次感谢您的洞察力。
  • @SaxMaster 很难说。查看您的代码,我想知道 LCD 库的作用。通常lcd.setCursor(0, 0); 会将下一个命令的目标 RAM 地址设置为第 0 个字符,第 0 行……但很难这么说,因为我不知道你的库。看起来您正在尝试做正确的事情,但也许您应该检查 setCursor 的库调用...也可以将 4 个自定义字符用于“HEAT”,将 3 个用于“COOL”
  • 是的。 setCursor(int col, int row) 执行: command(LCD_SETDDRAMADDR | (col + _row_offsets[row]));我的经理的想法是,一旦显示字符,当 RAM 被其他字符替换时,它不会被冲走,但很难说,因为 Arduino 的液晶库没有做任何超级花哨的事情。谢谢你的想法。
猜你喜欢
  • 2012-09-27
  • 2015-06-09
  • 1970-01-01
  • 2015-11-10
  • 2023-03-20
  • 1970-01-01
  • 2014-06-09
  • 2023-03-03
相关资源
最近更新 更多