+7 (495) 662-44-14

Главная / Форум
  • РУС / ENG
(495) 662-44-14 Многоканальный телефон Не дозвонились?
Форумы >>ЖК индикаторы >>mt-16s2h. И опять инициализация))))
Страницы:12 Ответить
mt-16s2h. И опять инициализация))))

isaev_ivan
Пользователи

Сообщений: 7
Регистрация: 06.12.2015

Дмитрий, спасибо огромное за помощь! От лица всего студенчества спасибо))
Но появился новый вопрос. Индикатор почему-то сам выбирает какой символ вывести. Ввожу в код:
mov #0B3h,R5
call #Data
на индикаторе появляется либо "в" либо ромбик) что именно ему не нравится?
За ранее благодарю!

Имя Ответить на это сообщение Цитировать Получить ссылку на сообщение

isaev_ivan
Пользователи

Сообщений: 7
Регистрация: 06.12.2015

И еще вопрос. Как начать писать с новой строки?

Имя Ответить на это сообщение Цитировать Получить ссылку на сообщение

Петухов_Дмитрий
Пользователи

Сообщений: 1140
Регистрация: 25.11.2009

"в" или "ромбик" - видимо подразумевается что это один и тот же код 0xB3, только из разных кодовых страниц знакогенератора? Ну так выберите нужный командой 0x28/0x2A/0x38/0x3A (смотря какой вариант подключения, 4 или 8 бит и номер знакогенератора).
Индикатор MT-16S2H может одновременно показывать только один набор символов, бит Р в команде Function Set как раз и указывает какой набор символов показывать (содержимое памяти индикатора при этом не меняется).
Если у Вас выводится то одно, то другое - значит Вы где-то выдаёте лишние и/или неправильные команды Function Set (с неправильным битом P). Ищите где.

Переход на новую строку делается установкой адреса её начала командой Set DDRAM Address, адреса строк: верхняя - 0x00 (код команды 0x80), вторая - 0x40 (код команды 0xC0).
Как вариант можно записать 40 символов в первую строку (именно столько памяти в индикаторе на каждую строку), после чего счётчик адреса сам перескочит на адрес 0x40 и дальше символы будут записываться уже во вторую строку. Но явно установить адрес удобнее.

Адреса всех знакомест явно указаны в PDF на индикатор, стр.5, внизу, пункт "Распределение ОЗУ". Нужный адрес выбирается как уже сказал командой Set DDRAM Address.

Имя Ответить на это сообщение Цитировать Получить ссылку на сообщение

Электромонтёр
Пользователи

Сообщений: 4
Регистрация: 15.12.2015

Вот пример работы с ЖК индикатором MT-16S2D, всё лишнее убрано. С уважением.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Пример организации работы с ЖК индикатором MT-16S2D
; для микроконтроллера К1886ВЕ2У фирмы Миландр
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; тактовая частота микроконтроллера равна 16МГц,
; один машинный цикл занимает четыре такта
; команды GOTO, CALL, RETURN выполняются за два цикла
; остальные команды выполняются за один цикл
; ЖК индикатор подключён к порту F микроконтроллера
; и используется в 4-х битном режиме
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Назначение портов микроконтроллера:
; RF1 (вых.) адресный сигнал A0 ЖКИ MT-16S2D
; контакт R/W ЖКИ MT-16S2D подключен к общему проводу
; RF3 (вых.) E разрешение обращения/строб данных ЖКИ MT-16S2D
; RF4-RF7 (вых.) DB4-DB7 шина данных ЖКИ MT-16S2D
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Назначение регистров микроконтроллера:
MT16S EQU 01BH ; ячейка дла хранения двоично-десятичных чисел
DEC EQU 01CH ; ячейка для временного хранения
TEMP EQU 01DH ; ячейка для временного хранения
SEC EQU 049H ; счетчик секунд (в двоично-десятичном виде)
MIN EQU 04AH ; счетчик минут
CHAS EQU 04BH ; счетчик часов
DL_DEC EQU 063H ; регистр для младшего байта десятичных данных АЦП
DH_DEC EQU 064H ; регистр для старшего байта десятичных данных АЦП
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Процедура инициализации ЖК индикатора
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW 68H ; задержка на ~20 мс для подготовки ЖКИ к работе
MOVWF DEC
A16:
MOVLW 0FFH
MOVWF TEMP
A17:
DECFSZ TEMP,1
GOTO A17
DECFSZ DEC,1
GOTO A16
CLRF DDRF,1 ; PORTF - выходы
MOVLW 30H ; установка 8-ми битной разрядности шины данных ЖКИ
CALL A19
MOVLW 30H ; установка 8-ми битной разрядности шины данных ЖКИ
CALL A19
MOVLW 30H ; установка 8-ми битной разрядности шины данных ЖКИ
CALL A19
MOVLW 20H ; переключение в режим 4-х битной
CALL A19 ; разрядности шины данных ЖКИ
MOVLW 02AH ; установка 1-й страницы знакогенератора
CALL MT16K
MOVLW 01H ; очистка дисплея
CALL MT16K
MOVLW 08H ; задержка на ~1,5 мс для выполнения очистки ЖКИ
MOVWF DEC
A23:
MOVLW 0FFH
MOVWF TEMP
A24:
DECFSZ TEMP,1
GOTO A24
DECFSZ DEC,1
GOTO A23
MOVLW 06H ; установка направления сдвига курсора вправо
CALL MT16K
MOVLW 0CH ; включение индикатора
CALL MT16K
; конец процедуры
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Процедура вывода данных на ЖК индикатор
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW 80H
CALL MT16K ; установка адреса верхней строки
MOVLW 0C2H
CALL MT16D ; вывод буквы "В"
MOVLW 0F0H
CALL MT16D ; вывод буквы "р"
MOVLW 0E5H
CALL MT16D ; вывод буквы "е"
MOVLW 0ECH
CALL MT16D ; вывод буквы "м"
MOVLW 0FFH
CALL MT16D ; вывод буквы "я"
MOVLW 020H
CALL MT16D ; вывод пробела
MOVFP CHAS,MT16S ; сохраняем значение счётчика часов
CALL A21 ; преобразование двоично-десятичного числа в коды двух цифр
MOVLW 03AH
CALL MT16D ; вывод двоеточия
MOVFP MIN,MT16S ; сохраняем значение счётчика минут
CALL A21 ; преобразование двоично-десятичного числа в коды двух цифр
MOVLW 03AH
CALL MT16D ; вывод двоеточия
MOVFP SEC,MT16S ; сохраняем значение счётчика секунд
CALL A21 ; преобразование двоично-десятичного числа в коды двух цифр
MOVLW 0C0H
CALL MT16K ; установка адреса нижней строки
MOVLW 055H
CALL MT16D ; вывод буквы "U"
MOVLW 0E2H
CALL MT16D ; вывод буквы "в"
MOVLW 0F5H
CALL MT16D ; вывод буквы "х"
MOVLW 03DH
CALL MT16D ; вывод знака "="
MOVFP DH_DEC,MT16S; сохраняем значение старшего байта десятичных данных
CALL A21 ; преобразование двоично-десятичного числа в коды двух цифр
MOVFP DL_DEC,MT16S; сохраняем значение младшего байта десятичных данных
CALL A21 ; преобразование двоично-десятичного числа в коды двух цифр
MOVLW 0ECH
CALL MT16D ; вывод буквы "м"
MOVLW 0C2H
CALL MT16D ; вывод буквы "В"
CLRF PORTF,F ; установка PORTF в "нули"
GOTO A22
A21:
SWAPF MT16S,0 ; меняем местами полубайты регистра
ANDLW 0FH ; избавляемся от старшего полубайта
IORLW 30H ; получаем код старшей цифры
CALL MT16D ; вывод старшей цифры на ЖК индикатор
MOVFP MT16S,WREG
ANDLW 0FH ; избавляемся от старшего полубайта
IORLW 30H ; получаем код младшей цифры
CALL MT16D ; вывод младшей цифры на ЖК индикатор
RETURN
A22:
; конец процедуры
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Подпрограмма записи команд в ЖКИ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MT16K:
MOVWF TEMP ; сохраняем команду для ЖКИ
ANDLW 0F0H ; избавляемся от младшего полубайта
CALL A18 ; пересылаем старший полубайт команды в ЖКИ
SWAPF TEMP,0 ; меняем местами полубайты команды
ANDLW 0F0H ; избавляемся от младшего полубайта
CALL A18 ; пересылаем младший полубайт команды в ЖКИ
CALL MT16 ; ждём 40мкс для выполнения команды ЖКИ
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Подпрограмма записи данных в ЖКИ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MT16D:
MOVWF TEMP ; сохраняем байт данных для ЖКИ
ANDLW 0F0H ; избавляемся от младшего полубайта
BSF WREG,1 ; выставляем сигнал адреса А0 ЖКИ
CALL A18 ; пересылаем старший полубайт данных в ЖКИ
SWAPF TEMP,0 ; меняем местами полубайты данных
ANDLW 0F0H ; избавляемся от младшего полубайта
BSF WREG,1 ; выставляем сигнал адреса А0 ЖКИ
CALL A18 ; пересылаем младший полубайт данных в ЖКИ
CALL MT16 ; ждём 40мкс для выполнения команды ЖКИ
RETURN
A18:
MOVWF PORTF ; выставляем полубайт на шину данных ЖКИ
BSF WREG,3
MOVWF PORTF ; выставляем сигнал управления Е ЖКИ
BCF WREG,3
MOVWF PORTF ; защёлкиваем полубайт отрицательным перепадом сигнала Е ЖКИ
RETURN
A19:
CALL A18
CALL MT16
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Подпрограмма задержки 40мкс для выполнения команд ЖКИ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MT16:
MOVLW 34H
MOVWF TEMP
A20:
DECFSZ TEMP,1
GOTO A20
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Присоединен файл
Скачивание файлов доступно только зарегистрированным пользователям.

Имя Ответить на это сообщение Цитировать Получить ссылку на сообщение
Страницы:12 Ответить
Сейчас на форуме (гостей: 17, пользователей: 0 , из них : 0 )