Учебник 9
Символьный ЖКИ

Использование символьного ЖКИ

Символьные ЖКИ на основе HD44780-совместимого контроллера поддерживаются библиотекой внешних устройств, значит, работать с ними просто. MCU Java source работает с индикаторами с любым количеством символов, расположенных в 1, 2, 3 или 4 строки. Строки 3 и 4 считаются продолжениями строк 1 и 2 соответственно.

В ЖКИ можно только записывать информацию, вывод R/W индикатора подсоединён к "земле".

ЖКИ можно подключить к МК такими способами:

  1. 4-битный режим, выводы данных подсоединены к одному порту в правильном порядке. Правильный порядок: если вывод DB4 подсоединён к биту n, DB5 нужно подключить к биту n+1 (следующему биту), DB6 к n+2, DB7 к n+3 (бит n может быть от 0 до 4)
  2. 8-битный режим, выводы данных подсоединены к одному порту (DB0 к биту 0, DB1 к биту 1 и т.д.).
  3. 4-битный режим, выводы данных подсоединены к любым линиям порта
  4. 8-битный режим, выводы данных подсоединены к любым линиям порта
  5. 8-битный режим, через интерфейс внешней памяти (хотя внешняя память пока не поддерживается)

В каждом режиме, кроме режима внешней памяти, выводы RS и E индикатора можно подключить к любым линиям порта МК. В данном учебнике символьный ЖКИ подключен в режиме 1 (4-битный режим, выводы данных подсоединены к одному порту в правильном порядке: DB4 к PD4, DB5 к PD5, DB6 к PD6, DB7 к PD7).


Схема платы с символьным ЖКИ

Скачать схему платы с символьным ЖКИ в формате TinyCad (.dsn)

Тестовая программа

Эта простая тестовая программа показывает текст "Hello, LCD!" на первой строке и "This is line 2" - на второй. Строка "Hello, LCD!" загружается из Flash-памяти, а вторая хранится в оперативной памяти. Обратите внимание, что строки и номера символов (в качестве аргументов метода setPosition) считаются, начиная с 0.

import mcujavasource.mcu.*;
import mcujavasource.mcu.external.lcd.CharacterLcd;

/** Tutorial 9: Character LCD.
 */

public class Main extends Microcontroller
{
  public static final String MESSAGE = "Hello, LCD!";
  
  private CharacterLcd lcd;
  private Port lcdPort = getHardware().getPort("D");
  private Port lcdControlPort = getHardware().getPort("C");
  private Pin rsPin = lcdControlPort.getPin(5);
  private Pin ePin = lcdControlPort.getPin(3);
  
  
  public void init()
  { getHardware().setAllPortsDirection(Pin.IN);
    getHardware().setAllPortsPullUp(true);
    lcd = new CharacterLcd(16, 2, rsPin, ePin, lcdPort, 4);
  }
  
  public void start()
  { lcd.init();
    lcd.setPosition(0, 0);
    lcd.write(MESSAGE);
    lcd.setPosition(1, 0);
    lcd.write("This is line 2");
    getHardware().setInterruptsEnabled(true);
  }
  
  
}

Скачать файл исходного кода программы