Как отобразить символ º на ЖК-дисплее?

У меня есть ЖК-дисплей 16x2, и я хочу отображать температуру: 23 ºC.

Но символ º отображается неправильно. Вместо символа º отображается странный символ.

, 👍13


4 ответа


Лучший ответ:

17

Это зависит от конкретной модели ЖК-дисплея, который вы используете. Или, точнее, на контроллере/драйвере жидкокристаллического дисплея с точечной матрицей, таком как Hitachi HD44780U, который используется во многих ЖК-дисплеях 16x2.

Для этого драйвера у вас есть таблица собственных символов, например:

Набор символов ЖК-дисплея — источник: mil.ufl.edu

В этой таблице символ "°" находится в столбце 0b1101, строка 1111 (0xDF или 223). Но вы должны привести это значение к символу перед отображением, иначе вы получите значение (223), а не символ.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // установить адрес ЖК-дисплея на 0x27 для 16-символьного и 2-строчного дисплея

void setup()
{
  lcd.init();                      // инициализируем ЖК-дисплей
  lcd.backlight();
  lcd.print("temp 27");
  lcd.print((char) 223);
  lcd.print(" ");
  lcd.print(223);

}

void loop()
{
}
,

lcd.print() действительно требует приведения, но вы также можете использовать lcd.write(0xdf). В отличие от print(), который в основном предназначен для форматирования данных как ASCII, метод write() предназначен для отправки необработанных байтов., @Edgar Bonet

Как я могу объединить lcd.print("temp 27") и lcd.print((char) 223)? Примерно так: lcd.print("temp 27" + (char) 223), @Roby Sottini

Вы также можете просто сделать lcd.print("temp 27" "\xDF" "C"), чтобы показать temp 27°C за один вызов., @gre_gor


0

Легко.

  1. Откройте лист данных и выберите символ, который больше всего похож на ваш символ. Char 0b11011111 выглядит лучше всего, но 0b10110000 неплохой.

  2. Пока вы находитесь в таблице данных, проверьте CGRAM.

,

5

Некоторые дисплеи имеют другие символы выше 128. Лучше всего создать свой собственный символ.

Это то, что @dannyf упоминает в слове "CGRAM". Пользовательские символы хранятся в CGRAM. Однако нет необходимости читать техническое описание, потому что для этого есть функция в библиотеке Arduino LiquidCrystal.

Начните здесь: справочник по Arduino CreateChar
Существуют даже веб-сайты, которые помогут вам создать символ: omerk и maxpromer.

,

0

выполнить lcd.write(223); Преобразуйте десятичную дробь в символ ASCII.

,