Для установления хорошей связи между миром людей и миром машин важную роль играют дисплеи. И поэтому они являются важной частью встроенных систем. Дисплеи - большие или маленькие - работают по одному и тому же принципу. Помимо сложных дисплеев, таких как графические дисплеи и 3D-дисплеи, необходимо уметь работать с простыми дисплеями, такими как блоки 16x1 и 16x2. Дисплей 16x1 будет содержать 16 символов в одну строку. ЖК-дисплей 16x2 будет иметь 32 символа в общей сложности 16 в 1- й строке и еще 16 во 2- й строке.линия. Здесь нужно понимать, что в каждом символе 5x10 = 50 пикселей, поэтому для отображения одного символа все 50 пикселей должны работать вместе. Но нам не нужно беспокоиться об этом, потому что в блоке дисплея есть другой контроллер (HD44780), который выполняет работу по управлению пикселями. (это видно на ЖК-дисплее, это черный глаз сзади).
Необходимые компоненты
Оборудование:
Микроконтроллер ATmega32
Источник питания (5В)
Программист AVR-ISP
JHD_162ALCD (ЖК-дисплей 16x2)
Конденсатор 100 мкФ.
Программного обеспечения:
Атмель Студия 6.1
Прогисп или флеш-магия
Принципиальная схема и объяснение
Как показано на ЖК-дисплее, взаимодействующем со схемой ATmega32, вы можете видеть, что ПОРТА ATMEGA32 подключена к ЖК-дисплею порта данных. Здесь следует не забыть отключить связь JTAG в PORTC ATMEGA, изменив байты предохранителя, если кто-то хочет использовать PORTC в качестве обычного порта связи. В LCD 16x2 всего 16 контактов, если есть подсветка, если подсветки нет, то будет 14 контактов. Можно включить или оставить контакты подсветки. Теперь в 14 контактах есть 8 контактов данных (7-14 или D0-D7), 2 контакта источника питания (1 и 2 или VSS и VDD или gnd & + 5v), 3- й контакт для контроля контрастности (VEE-контролирует толщину символов. показаны), 3 контрольных штифта (RS, RW и E)
В приведенной выше схеме для сопряжения ЖК-дисплея 16x2 с микроконтроллером AVR вы можете заметить, что я взял только два управляющих контакта. Это дает гибкость для лучшего понимания. Бит контраста и READ / WRITE используются нечасто, поэтому их можно замкнуть на массу. Это переводит ЖК-дисплей в режим максимальной контрастности и чтения. Нам просто нужно управлять контактами ENABLE и RS, чтобы отправлять символы и данные соответственно.
Соединения между микроконтроллером ATmega32 и ЖК-дисплеем 16x2 показаны ниже:
PIN1 или VSS - земля
PIN2 или VDD или VCC - питание +5 В
PIN3 или VEE - земля (дает максимальный контраст лучше всего для новичков)
PIN4 или RS (выбор регистра) - PD6 микроконтроллера
PIN5 или RW (чтение / запись) - земля (переводит ЖК-дисплей в режим чтения, упрощает коммуникацию для пользователя)
PIN6 или E (Enable) - PD5 микроконтроллера
PIN7 или D0 - PA0 микроконтроллера
PIN8 или D1 - PA1
PIN9 или D2 - PA2
PIN10 или D3 - PA3
PIN11 или D4 - PA4
PIN12 или D5 - PA5
PIN13 или D6 - PA6
PIN14 или D7 - PA7
В схеме вы можете видеть, что мы использовали 8-битную связь (D0-D7), однако это не обязательно, и мы также можем использовать 4-битную связь (D4-D7), но с 4-битной коммуникационной программой становится немного сложнее для новичков, поэтому мы просто выбрали 8-битная связь.
Итак, исходя из простого наблюдения из приведенной выше таблицы, мы подключаем 10 контактов ЖК-дисплея к контроллеру, в котором 8 контактов являются контактами данных и 2 контакта для управления.
За работой
Теперь, чтобы начать, вы должны знать функции 10 контактов ЖК-дисплея 16x2 (8 контактов данных + 2 контакта управления). 8 контактов данных предназначены для отправки данных или команд на ЖК-дисплей. В двух контактах управления:
1. Вывод RS (выбор регистра) должен сообщать ЖК-дисплею, отправляем ли мы ему данные или команду.
Например:
В приведенной выше таблице 1 для порта данных (D7-D0) значение «0b0010 1000 или 0x28» указывает ЖК-экрану отображать символ «(». В таблице 2 такое же значение 0x28 сообщает ЖК-дисплею, что «вы ЖК-дисплей 5x7 точек и вести себя как один », поэтому для одного и того же значения пользователь может определить две вещи, теперь эта ситуация нейтрализуется выводом выбора регистра, если вывод RS установлен на низком уровне, тогда ЖК-дисплей понимает, что мы отправляем команду. Если мы установим вывод RS на высокий, тогда ЖК-дисплей понимает, что мы отправляем данные, и поэтому в обоих случаях ЖК-дисплей учитывает значение порта данных в соответствии со значением вывода RS.
2. Контакт E (Enable) просто указывает «светодиод индикации питания ПК», этот контакт установлен на высокий уровень, чтобы сообщить ЖК-дисплею «принимать данные из порта данных контроллера». Когда этот вывод переходит в низкий уровень за высоким, ЖК-дисплей обрабатывает полученные данные и показывает соответствующий результат. Таким образом, этот вывод устанавливается на высокий уровень перед отправкой данных и опускается на землю после отправки данных.
Теперь, после подключения оборудования, запустите Atmel studio и начните новый проект для написания программы, теперь откройте экран программирования и запустите программу отжима. Программа должна следовать, как показано ниже.
Сначала мы сообщаем контроллеру, какие порты мы используем для данных и управления ЖК-дисплеем. Затем сообщите контроллеру, когда отправлять данные или команду, соответственно, играя с выводами RS и E.
Краткое объяснение концепций, используемых в программе:
1. E установлен высокий (сообщает ЖК-экрану о получении данных), а RS установлен низкий (сообщает ЖК-дисплею, что мы подаем команду).
2. Передача значения 0x01 в порт данных в качестве команды для очистки экрана.
3. E установлен высокий (сообщает ЖК-экрану о получении данных), а RS установлен высокий (сообщает ЖК-дисплею, что мы передаем данные).
4. Принимая строку символов, отправляя каждый символ в строке один за другим.
5. Для E установлен низкий уровень (ЖК-дисплей сообщает, что отправка данных завершена).
6. После последней команды ЖК-дисплей завершает обмен данными, обрабатывает данные и отображает строку символов на экране.
В этом сценарии мы отправим персонажей одного за другим. Символы выводятся на ЖК-дисплей с помощью кодов ASCII (американский стандартный код для обмена информацией).
Таблица кодов ASCII показана выше. Здесь, чтобы на ЖК-дисплее отображался символ «@», нам нужно отправить шестнадцатеричный код «64». Если мы отправим на ЖК-дисплей «0x62», он отобразит символ «>». Таким образом, мы собираемся отправить соответствующие коды на ЖК-дисплей для отображения имени.
Способ связи между ЖК-дисплеем и микроконтроллером AVR ATmega32 лучше всего описан в пошаговом коде C ниже,