- Необходимые компоненты
- Принципиальная электрическая схема
- Программирование Atmega16 для ЖК-дисплея 16x2
Дисплей - необходимая часть любой машины, будь то бытовая техника или промышленное оборудование. Дисплей не только показывает варианты управления для управления машиной, но также показывает состояние и результаты задачи, выполняемой этой машиной. В электронике используется множество типов дисплеев, таких как 7-сегментный дисплей, ЖК-дисплей 16x2, сенсорный TFT-дисплей, OLED-дисплей и т. Д.
ЖК-дисплей 16x2 - это самый базовый модуль дисплея, который также используется в небольшом электронном оборудовании, таком как калькуляторы, цифровые счетчики и т. Д. Мы выполнили множество проектов с использованием ЖК-дисплея 16x2, включая базовое взаимодействие с другими микроконтроллерами:
- Интерфейс ЖК-дисплея с микроконтроллером 8051
- Сопряжение ЖК-дисплея с микроконтроллером ATmega32
- Интерфейс ЖК-дисплея с микроконтроллером PIC
- Подключение ЖК-дисплея 16x2 к Arduino
- Интерфейс ЖК-дисплея 16x2 с Raspberry Pi с использованием Python
В этом уроке мы увидим, как подключить ЖК-дисплей 16x2 к микроконтроллеру AVR Atmega16 и отобразить простое приветственное сообщение.
Необходимые компоненты
- Atmega16
- ЖК-модуль 16x2
- Джемперы
- Макетная плата
Принципиальная электрическая схема
Программирование Atmega16 для ЖК-дисплея 16x2
Для программирования не нужны внешние библиотеки. Здесь Atmega16 запрограммирован с использованием USBASP и Atmel Studio7.0. Полная программа и рабочее видео представлены в конце проекта, просто загрузите программу в Atmega16 и поверните 10k POT, чтобы отрегулировать яркость ЖК-дисплея.Первоначально определите частоту процессора и включите необходимые библиотеки, которые поставляются с пакетом Atmel Studio, например, для доступа к контактам ввода-вывода и
Определите в программе выводы RS и EN ЖК-дисплея. Контакты RS используются для выбора регистра данных и команд. Контакт включения фиксирует данные.
#define en PA3 #define rs PA2
Также определите, какой ПОРТ Atmega16 будет использоваться для интерфейса LCD. Здесь используется ПОРТА.
#define lcdDirection DDRA #define lcdPort PORTA
Следующим шагом является создание функции, которая будет принимать команду путем передачи параметра. Есть много команд LCD HEX. Шестнадцатеричные команды используются для определения функции ЖК-дисплея. Поскольку мы используем 4-битный режим ЖК-дисплея, байт (8-битный) будет отправлен двумя пакетами. Один пакет будет верхним полубайтом (4 бита), а другой пакет - нижним полубайтом (4 бита).
void lcdCommand (беззнаковые символьные команды) { lcdPort = (lcdPort & 0x0F) - (команды & 0xF0); lcdPort & = ~ (1 <
Следующим шагом будет принятие символов и фиксация их в порту ЖК-дисплея. Полученные символы затем отправляются на ЖК-дисплей полубайт за полубайтом. Функция принимает символ, используя параметр передачи, а затем берет верхний и нижний полубайт. На выводе «rs» устанавливается высокий уровень для регистра данных, а затем посылается нарастающий импульс для фиксации данных. Точно так же младший полубайт отправляется путем изменения значения включения и отправки нарастающего импульса для включения.
void lcdChar (строка символов без знака) { lcdPort = (lcdPort & 0x0F) - (строка & 0xF0); lcdPort - = (1 <
Эта функция просто преобразует символ в строку и может быть использована в программе позже, когда потребуется запись строки.
void lcdString (char * str) { int j; для (j = 0; str! = 0; j ++) { lcdChar (str); } }
Теперь написана функция только для очистки экрана. Вам просто нужно отправить команду 01 в HEX, а затем просто установить курсор в исходное положение.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Теперь в основной функции выполняется инициализация ЖК-дисплея. Первоначально установите направление ПОРТ для ЖК-дисплея на интерфейс. Здесь PORT установлен как OUTPUT, поэтому установите FF.
lcdDirection = 0xFF; _delay_ms (20)
Затем установите ЖК-дисплей в 4-битный режим, отправив 02 в шестнадцатеричном формате. Также отправьте 28 в шестнадцатеричном формате, чтобы установить его в 2 строки, 15x7 пикселей матрицы в 4-битном режиме.
lcdCommand (0x02); lcdCommand (0x28);
Команда 0с и 06 используются для управления положением курсора. И, наконец, просто очистите экран, отправив 01 в шестнадцатеричном формате. Это завершит инициализацию ЖК-дисплея.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
После завершения инициализации просто проверьте ЖК-дисплей, отправив строку. Здесь мы отправляем строку « Interfacing LCD » в 1- й строке.
lcdString («Интерфейсный ЖК-экран»);
Затем переместите курсор в следующую строку, отправив команду c0 в шестнадцатеричном формате. И, наконец, в этой позиции напишите строку «With Atmega1 6».
lcdCommand (0xC0); lcdString («С Atmega16»);
На этом завершается полное руководство по взаимодействию ЖК-дисплея 16x2 с Atmega16. Обратите внимание, что если вы не получаете изображения или пикселей, либо проверьте проводку в соответствии с кодом и схемой, либо измените значение POT, подключенного к выводу V0 ЖК-дисплея. Если у вас есть какие-либо сомнения или предложения, вы можете связаться с нами, написав на нашем форуме или оставив комментарий ниже.