- •7. Ввод в mcs-51 аналоговых сигналов: виды ацп, схемы подключения и программы опроса ацп.
- •14. Функции формирования временных задержек в языке с18.
- •15. Программирование на языке с18 типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя.
- •16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
- •17. Аналого-цифровое преобразование в pic-мк: структура внутреннего ацп, функции управления ацп на языке с18.
- •18. Реализация широтно-импульсной модуляции в pic-мк: параметры шим, функции управления шим на языке с18.
- •19. Прерывания в pic18: источники прерываний, управляю-е биты, программирование прерываний на языке с18.
- •29. Разработка и автономная отладка аппаратных и программных средств микроконтроллерных систем.
- •30. Методы и средства совместной отладки аппаратных и программных средств микроконтроллерных систем.
16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
Структура жидкокристаллического дисплея
Японская фирма Hitachi разработала специальную микросхему - контроллер HD44780 для управления подобными ЖК-дисплеями. Этот контроллер определил интерфейс, который стал стандартом «де-факто» для ЖК-дисплеев. Эти дисплеи можно встретить в самых разнообразных устройствах: измерительных приборах, медицинс-м оборуд-ии, телеф-ах, факсимил-х и копиров-х аппа-х.
Существует несколько различных стандартных форматов ЖК-дисплеев (количество символов × число строк): 8×2, 16×1, 16×2, 16×4, 20×1, 20×2, 20×4, 40×2, 40×4. Конструктивно дисплей представляет собой печатную плату с установленными на ней контроллером HD44780 и ЖК-индикатором. Плата содержит 14-контактное поле, расположенное в нижней части, а также 2 контакта (выводы питания подсветки) в правой части. Назначение выводов поясняет табл. Таблица 1
№ вывода |
Обозначение |
Функция |
1 |
VDD |
Напряжение питания ( + 5 В ) |
2 |
VSS |
Общий (земля) |
3 |
VEE |
Управление контрастом |
4 |
RS |
Сигнал выбора регистра |
5 |
R/W |
Сигнал чтение/запись |
6 |
E |
Сигнал разрешение |
7-14 |
D0-D7 |
Биты данных |
Управление выполняется с использованием трех линий:
1.линия RS (выбор регистра), которая определяет, будет передаваться команда или символьные данные; 2.линия R/W (чтение / запись), которая определяет направление перемещения данных (R/W = 1 – чтение, R/W = 0 – запись); 3.линия Е (разрешение), которая выполняет функцию тактирования с целью синхронизации процесса передачи данных. Контроллер имеет простой набор команд, который позволяет управлять работой дисплея. В его состав входят команды инициализации и сброса дисплея, управления положением и характеристиками курсора и т.д. В контроллере HD44780 можно выделить основные элементы, с которыми приходится взаимодействовать при программном управлении: регистр данных (DR), регистр команд (IR), видеопамять (DDRAM), ОЗУ знакогенератора (CGRAM), счетчик адреса памяти (AC), флаг занятости контроллера (BF). Основными объектами взаимодействия являются регистры DR и IR. Выбор адресуемого регистра производится линией RS: если RS = 0 – адресуется регистр команд (IR), если RS = 1 – регистр данных (DR). Данные через регистр DR в зависимости от текущего режима могут помещаться (или считываться) в видеопамять (DDRAM) или ОЗУ знакогенератора (CGRAM) по текущему адресу, указываемому счетчиком адреса (AC). Информация, попадающая в регистр IR, интерпретируется устройством выполнения команд как управляющая, т.е. команда. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика AC, а в старшем разряде флаг занятости (BF).
Библиотека функций управления ЖК-дисплеем
По умолчанию для управления контроллером используются выводы только порта В. Имеется возможность использования и других портов, но для этого надо произвести изменения некоторых констант, указанных в файле xlcd.h.
Функция |
Описание |
BusyXLCD |
Контроллер ЖКД занят? |
OpenXLCD |
Конфигурирует линии портов, используемых для ЖКД и инициализирует его |
putsXLCD |
Записывает строку в видеопамять контроллера ЖКД |
SetDDRamAddr |
Устанавливает адрес в видеопамяти контроллера ЖКД |
WriteCmdXLCD |
Записывает команду в контроллер ЖКД |
BusyXLCD( ) - контроллер ЖКД занят? Эта функция возвращает значение флага занятости BF контроллера Hitachi HD44780. Если BF = 1, то контроллер занят, если BF = 0, то свободен. Обычно эта функция используется для ожидания готовности контроллера ЖКД с помощью оператора: while(BusyXLCD( ));
OpenXLCD(unsigned char lcdtype) – функция конфигурации и инициализации ЖКД. Здесь ledtype – это маска из битов конфигурации ЖКД, значения которых определены в файле xlcd.h. Пример записи этой функции, который будет использоваться в лабораторной работе: OpenXLCD(FOUR_BIT & LINES_5X7);
Здесь FOUR_BIT – режим 4-разрядных данных, LINES_5X7 - многострочный дисплей с символами 5×7 точек.
WriteCmdXLCD(unsigned char cmd) – запись команды в контроллер, cmd – маска из битов, определенных в файле xlcd.h. В лабораторной работе эта функция используется в виде:
WriteCmdXLCD(CURSOR_OFF & BLINK_OFF);
Здесь CURSOR_OFF – отключить отображение курсора, BLINK_OFF – отключить мерцание курсора.
SetDDRamAddr(unsigned char addr) – установка адреса в ОЗУ данных (видеопамяти) дисплея. Эта функция устанавливает адрес в ОЗУ данных контроллера Hitachi HD44780. Контроллер не должен быть занят во время выполнения этой операции – это можно проверить с помощью функции BusyXLCD( ). Пример использования этой функции в лабораторной работе:
while(BusyXLCD( )); // ожидание готовности контроллера ЖКД
SetDDRamAddr(0x40); // установка адреса видеопамяти равным 0x40 – // установка курсора на начало второй строки дисплея