Программа управления ЖКИ типа MT -16 S 2 DH
Жидкокристаллические индикаторы (ЖКИ), иначе, жидкокристаллические дисплеи (ЖКД) или LCD-индикаторы (liquid crystal display) практически полностью заменили светодиодные индикаторы во многих устройствах. Единственным недостатком ЖКИ является то, что им трудно пользоваться при малой освещенности. В настоящее время широко применяется двухстрочный ЖКИ MT-16S2DH с контроллером HD44780 фирмы Hitachi. Если необходим дисплей на четыре строки по 40 символов, то можно включить блок управления М50530 или пару контроллеров HD44780. Индикатор имеет 14 выводов. Таблица 3.1 - Выводы подключения ЖКИ
Напряжение питание нормировано и составляет 5В. На вывод V0 подается напряжение регулировки контрастности табло через подстроечный резистор 10 кОм, включенный между «землей» и выводом Vdd. Модуль HD44780 содержит два регистра: регистр команд IR (Instraction Register) и регистр данных DR (Data Register). Выбор регистров осуществляется путем подачи сигнала управления от микроконтроллера на вывод RS: если RS = 0, то будет подключен регистр команд, а если RS = 1, то регистр данных. Вывод R/W – чтение - 1/запись - 0, а вывод Е (Enable) – для строб-сигнала положительной полярности (+5В) длительностью не менее 450 нс, в течение которого записываются передаваемые биты. Рисунок 3.1 – Схема подключения ЖКИ к микроконтроллеру Как правило, в микроконтроллерных системах управления для задания режимов функционирования ЖКИ используется порт Е (Е0, Е1 и Е2), питание и подсветка подключаются напрямую - +5В, а данные или команды подаются от любого свободного порта. Регистр команд IR выполняет следующие функции: смещение курсора, гашение табло или установку адреса индикатора. Регистр данных DR служит для промежуточного хранения данных, которые затем с помощью внутренних операций автоматически передаются впамять отображаемых данных (DD — Display Data) или в память знакогенератора (CG — Character Generator). В начале каждого сброса данных на ЖКИ необходимо убедится в его свободности по флагу занятости (разряд 7). Установленный флаг занятости (лог. 1) означает, что модуль HD44780 занят выполнением внутренней операции и в данный момент к приему не готов. Считывание данных из памяти DD или CG выполняется через регистр данных DR. После того как микроконтроллер записывает некоторый адрес в регистр IR, байт данных, расположенный в памяти по этому адресу, с помощью внутренней операции переписывается в регистр DR. Процесс чтения завершается считыванием байта данных из этого регистра. Когда текущая операция чтения завершена, с помощью функции автоинкремента в регистр данных DR записывается байт данных, извлеченный из памяти по следующему адресу, который будет использован при очередном считывании. Счетчик адреса, по сути, состоит из двух частей и содержит текущий адрес как в памяти DD-RAM, так и в памяти CG-RAM. После того как в регистр IR записана команда установки адреса DD-RAM или CG-RAM, этот адрес с помощью внутренней операции автоматически переносится в соответствующий счетчик. Когда запись в память DD/CG (или чтения из нее) завершена, соответствующий счетчик автомата инкрементируется. В модуле HD44780 используется две разные памяти: - DD-RAM - для хранения отображаемых данных; - CG-RAM - для хранения битовых комбинаций, которые соответствуют матрице размером 5x8 или 5x10 (определяет форму символа). Доступ как к одной, так и к другой памяти осуществляется по текущему адресу, хранимому в счетчике адреса. Емкость памяти DD-RAM составляет 80 знаков, представленных в 8-разрядной ASCII-кодировке. Из них на двухстрочном табло могут быть одновременно отображены 16 символов в каждой строке, однако с помощью операции сдвига последующие символы также могут оказаться в отображаемой области (выделено жирным). Таблица 3.2 – Двухстрочное табло ЖКИ
Первая строка начинается с адреса 00Н, а вторая — с адреса 40Н. Память разбита на две половины по 40 байт каждая, причем между последним адресом первой строки и первым адресом второй строки есть разрыв в 24d байта. После сдвига влево первая строка начинается с адреса $01, а вторая строка — с адреса $41, а после сдвига вправо первая строка начинается с адреса $27, а вторая строка — с адреса $67. Знакогенератор — это память типа ROM, предназначенная для хранения битовых комбинаций, соответствующих матрице размерами 5x8 или 5x10. В этой памяти можно хранить информацию о 208 символах (матрица 5x8). В модуле HD44780 реализуются следующие функции: - начальная инициализация: DL = 1 - 8-разрядный интерфейс, N = 1 - двухстрочное табло, F = 0 - матрица 5x8; - управление табло: D = 0 - табло отключено, С = 0 — курсор отключен, В = 0 - мерцание отключено; - очистка табло; - режим ввода данных: I/D = 1 — инкремент на 1; S = 0 — нет сдвига тa6ло. Блок – схема программы инициализации ЖКИ имеет вид, представленный на рисунке 3.2. Рисунок 3.2 – Блок-схема инициализации ЖКИ Прежде чем разрабатывать программу инициализации необходимо привести полный перечень команд/инструкций для ЖКИ, которые приведены в таблице 3.3. Таблица 3.3 - Система команд HD44780
Ниже приводится программа управления ЖКИ: инициализация, затем опрос занятости и сброс на первую строку дисплея слова «PRIVET.», пользуясь DD-RAM и слова «Привет!» с помощью символов CG-RAM. include <p!6f377.h> include <lmO321.h> ; =================================== ; Переменные управления индикатором ; =================================== ; LCD_DATA EQU PORTB LCD_ DATA TRIS EQU TRISB LCD_CNTL EQU PORTЕ E EQU 1 RRW EQU 0 RS EQU 2 TEMPI1 EQU 0x0 30 ; ========================================= ; Начало кода ; ========================================= ORG RESET_V nор RESET GOTO START ; ========================================= ; Начало исполняемого кода с адреса 100h ; ========================================= ORG 100h START CLRF STATUS CLRF PORTB CLRF FORTE BSF STATUS, RPO CLRF TRISB CLRF TRISE BCF STATUS, RPO ; ========================================== ; Инициализация индикатора ; ========================================== CLRF LCD_CNTL DISPLAY_INIT MOVLW 0x038 ; Выбираем 8-ми битный интерфейс MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E LCD_DELAY MOVLW LCD_INIT_DELAY MOVWF MSD CLRF LSD DECFSZ LSD, F ; Delay time = MSD * ((3 * 256) + 3) * Тсу GOTO LOOP2 DECFSZ MSD,F GOTO LOOP2 MOVLW 0x38 MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E MOVLW DISP_ON CALL SEND_CMD MOVLW CLR_DISP CALL SEND_CMD MOVLW ENTRY_INC CALL SEND_CMD MOVLW DD_RAM_ADDR CALL SEND_CMD ; ==================================== ; Начало работы ; ==================================== CALL FUNCTION GOTO START FUNCTION MOVLW 'P' CALL SEND_CHAR MOVLW 'R’ CALL SEND_CHAR MOVLW 'I' CALL SEND_CHAR MOVLW 'V' CALL SEND_CHAR MOVLW 'E’ CALL SEND_CHAR MOVLW 'T’ CALL SEND_CHAR MOVLW '.’ CALL SEND_CHAR MOVLW B'11000000' CALL SEND_CMD MOVLW h'A8' CALL SEND_CHAR MOVLW h'50’ CALL SEND_CHAR MOVLW h'A5’ CALL SEND_CHAR MOVLW h'4 2' CALL SEND_CHAR MOVLW h'45' CALL SEND_CHAR MOVLW h'54 ' CALL SEND_CHAR MOVLW h'21' RETURN ; ===================================== ; Подпрограмма вывода символа на экран ЖКИ ; ===================================== SEND_CHAR MOVWF CHAR CALL BUSY_CHECK MOVF CHAR, W MOVWF LCD_DATA BCF LCD_CNTL, RRW BSF LCD_CNTL, RS BSF LCD_CNTL, E BCF LCD_CNTL, E RETURN ; =================================== ; Подпрограмма передачи команды на ЖКИ ; =================================== SEND_CMD MOVWF CHAR CALL BUSY_CHECK MOVF CHAR, W MOVWF LCD_DATA BCF LCD_CNTL, RRW BCF LCD_CNTL, RS BSF LCD_CNTL, E BCF LCD_CNTL,E ; =================================================== ; Подпрограмма ожидания разрешения от ЖКИ на передачу ; символа или команды ; ==================================================
BUSY_CHECK BSF STATUS,RPO MOYLW 0xFF MOVWF LCD_DATA_TRIS BCF STATUS, RPO BCF LCD_CNTL, RS BSF LCD_CNTL, RRW BSF LCD_CNTL, E BCF LCD_CNTL, E MOVF LCD_DATA, W MOVWF TEMPI BCF TEMPI, 7 BTFSC TEMPI, 7 GOTO BUSY_CHECK BCF LCD_CNTL, RRW BSF STATUS, RPO MOVLW 0x00 MOVWF LCD_DATA_TRIS BCF STATUS, RPO RETURN end
Популярное: Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (344)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |