Страница 17 из 123
Добавлено: Пт янв 29, 2010 23:33:07
Arlleex
GP1 писал(а):Ну тогда хотя бы прочти что-нибудь про LCD, там же русским языком написано прежде чем использовать индикатор его надо ИНИЦИАЛИЗИРОВАТЬ, а где у тебя процедура инициализации?
как я понимаю - инициализация - это предварительная подготовка индикатора для работы - это и задание курсоров, и задание всяких режимов работы этого индикатора.
Инициализация:
Я не могу добить эту табличку!!! Как организовывать инициализацию? я понял, какие 1 определяют команды, адресуемые по IR...
НО!!! ВСю ли табличку надо переписывать? как надо правильно делать?
Я не могу понять, сначала надо вывести 1 строчку этой таблицы, подождать, затем вторую строчку, затем подождать, затем третью и т.д. или можжно сразу вывести? одним байтом?
Вобщем, правильно быглядит инициализация:
00000001 - очищаем дисплей, адрес ДДрам на 0.
вторую строчку таблицы пропускаем.
ждем (задержка)
00000110 - при последующем байте сдвинуть адрес ддрам на 1 позицию (инкремент).
задержка
00001000 - выключил дислпей, никаких курсоров.
задержка
00010100 - смещаем курсор, вправо.
задержка
00111000 - 8 разрядная шина данных, 2 строки, 5*8т разрешение матрицы
перед всем этим я ставил E в 1, теперь сбразываю ее в 0 и все, можно переходить на RS=1.
Добавлено: Пт янв 29, 2010 23:49:14
GP1
Ну надо же!
Stalker46 установил новые правила инициализации LCD!
Я ПАЦТАЛОМ...
Может всет-таки стоит умных книжек почитать, там же черным по белому написано...
Добавлено: Сб янв 30, 2010 00:05:00
Arlleex
я другие книжки по этому поводу читал. как понял так и глаголю. и не смешно, поставь себя в мое положение)))
т.е. сначала надо
1. включить питание, затем ждать не менее 2мс.
2. Установить разрядность интерфейса, затем ждать не менее 40мкс.
3. Установить разрядность интерфейса, затем ждать не менее 40мкс.
4. Установить разрядность интерфейса, затем ждать не менее 40мкс.
5. Добавляем к разрядности размер матрицы, колчичество строк, ждем не менее 40мкс.
6. Выключаем дисплей, ждем не менее 40мкс.
7. Очищаем дисплей, счетчик на 0.
8. Установить направление сдвига курсора.
А можно ли первые 4 пункта выполнять в первую очередь, а все другие вразнаброс?
Добавлено: Сб янв 30, 2010 00:09:05
GP1
Не правла ли - ну совсем не то что у тебя
зы: только первая пауза 20 мс.
во всех книжках написано одно и тоже - сначала инициализация, потом юзай скоко надо. и процедура везде одна, могут только временные интервалы отличаться.
Добавлено: Сб янв 30, 2010 00:15:29
Arlleex
А, ну, да...
А что делать с передачей данных? как там время разбросано?
Есть такая же табличка для ввода данных на озу видеопамяти?
И еще, когда, уже сформировали надпись, все готово... а у нас в настройках, в регистре команд D=0, что означает, что дисплей выключен. Что делать? Опять RS переключать в 0, и перенастраивать инициализация полностью (т.е. сначала, как писал я в прошлом посте), или просто записать 00001100 - теперь дисплей включен...
Добавлено: Сб янв 30, 2010 00:22:21
GP1
Все! Хорош!
Иди ты, нет не туда, а сайт фирмы МЭЛТ, там в разделе "Документация" все есть.
http://www.melt.com.ru/docs/index.php?SECTION_ID=42
опять же:
Добавлено: Сб янв 30, 2010 00:29:46
Arlleex
у мя что то с компом, не открываются пдф файлы на сайтах...
Вообщем, до завтра...
Добавлено: Сб янв 30, 2010 17:06:59
Arlleex
вопрос исчерпан
Добавлено: Сб янв 30, 2010 17:51:59
Arlleex
Вопрос исчерпан
Добавлено: Сб янв 30, 2010 19:09:18
GP1
Что опять...
Не работает!
Ну когда же ты наконец книжки читать начнешь!

Добавлено: Сб янв 30, 2010 20:48:17
Arlleex
Так я все же правильно сделал!!! Что еще не так?
Добавлено: Сб янв 30, 2010 20:54:56
GP1
ты мне напоминаешь отдельных начальников
"Есть два мнения: одно мое, другое не правильное"
ты эти картинки видел?
Добавлено: Сб янв 30, 2010 21:48:20
Arlleex
мля, как же это все сложно... А ты еще говоришь, что легко...
(хотя, может опыт помогает)...
Добавлено: Сб янв 30, 2010 21:56:26
GP1
Легко только ничего не делать, да в потолок плевать.
Добавлено: Вт фев 02, 2010 20:11:07
Pooher
Вот настрочил "программку" для перекодировки русских букв для вставки непосредственно в АСМ код. Может пригодится кому...
Добавлено: Вс фев 07, 2010 10:29:32
maks2689
подскажите с проблемой выода информации на жки MT-16S1B
на индикатор вообще не выводится информация только мигающий курсор
Добавлено: Вс фев 07, 2010 23:07:37
maks2689
Программа инициализации индикатора
Код: Выделить всё
JEKINI
MOVLW 3 ;СБРОС.
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 3 ;СБРОС.
CALL JEKOMI ;
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 3 ;
CALL JEKOMI ;
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 10 ;ЗАПРЕТ СДВИГА ИЗОБРАЖЕНИЯ
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 06 ;ИНКРЕМЕНТИРОВАНИЕ ПОЗИЦИИ КУРСОРА.
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 01 ;СТИРАНИЕ ДИСПЛЕЯ.
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 28 ;ФОРМАТ ОБМЕНА: 4 РАЗР., 5х7, 2 СТРОКИ.
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 28 ;ПОВТОРИМ.
CALL JEKOMI ;
CALL STROB ;ПРОСТРОБИРУЕМ.
MOVLW 0C ;ВКЛЮЧЕНИЕ ДИСПЛЕЯ, ЗАПРЕТ КУРСОРА.
CALL JEKOMI ;ПЕРЕДАЧА КОМАНДЫ.
CALL STROB ;ПРОСТРОБИРУЕМ.
GOTO RASPR ;НА ИНДИКАЦИЮ.
PAUSA
MOVLW .25
MOVWF ZAN
PAUS
MOVLW .255
ADDLW -1
BTFSS STATUS,2
GOTO $-2
DECFSZ ZAN,1
GOTO PAUS
RETURN
JEKOMI
MOVWF TEMP ;ПЕРЕПИШЕМ ЗНАЧЕНИЕ ВО ВРЕМЕННЫЙ РЕГИСТР.
ANDLW B'11110000';ЗАМАСКИРУЕМ МЛАДШИЕ РАЗРЯДЫ ПОД НОЛЬ.
MOVWF PORTB ;ОСТАЛЬНЫЕ РАЗРЯДЫ ПЕРЕПИШЕМ В ПОРТ "В".
CALL STROB ;ПРОСТРОБИРУЕМ.
CALL PAUSA ;ПАУЗА.
MOVFW TEMP
SWAPF TEMP,W ;ПОМЕНЯЕМ МЕСТАМИ ПОЛУБАЙТЫ.
ANDLW B'11110000';ЗАМАСКИРУЕМ СТАРШИЕ РАЗРЯДЫ ПОД НОЛЬ.
MOVWF PORTB ;ПЕРЕПИШЕМ В ПОРТ "В".
CALL STROB ;ПРОСТРОБИРУЕМ.
CALL PAUSA ;ПАУЗА.
RETURN
программа записи данных в индикатор
Код: Выделить всё
JEKI
BTFSC FLAG1,1 ;ЕСЛИ ИДЕТ ПРОСМОТР,
GOTO $+5 ;ТО ПРОПУСКАЕМ ИНДИКАЦИЮ КУРСОРА.
BTFSS FLAG1,0 ;ЕСЛИ НЕТ УСТАНОВКИ,
GOTO $+3 ;ТО ПРОПУСКАЕМ ИНДИКАЦИЮ КУРСОРА.
BTFSS FLAG,6 ;ЕСЛИ НЕ БЫЛО ИНДИКАЦИИ КУРСОРА,
GOTO JEKYC ;ТО ПРОИНДИЦИРУЕМ.
MOVLW 0x0C ;ЗАПРЕТ ИНДИКАЦИИ КУРСОРА.
CALL JEKOM ;ЗАПИШЕМ КОМАНДУ.
MOVLW 02 ;ВОЗВРАТ КУРСОРА В ИСХОДНОЕ СОСТОЯНИЕ.
CALL JEKOM ;ЗАПИШЕМ КОМАНДУ.
MOVLW .8 ;УСТАНОВИМ ЧИСЛО ЗНАКОМЕСТ.
MOVWF COUN ;
MOVLW R1 ;АДРЕС ПЕРВОГО РЕГИСТРА ИНДИКАЦИИ.
MOVWF FSR ;ПО КОСВЕННОЙ АДРЕСАЦИИ.
MOVFW INDF ;ИНДИЦИРУЕМ ЗНАЧЕНИЕ.
CALL JEDAT ;ЗАПИШЕМ ДАННЫЕ.
DECF COUN,1 ;УМЕНЬШАЕМ СЧЕТЧИК.
BTFSC STATUS,2 ;ЕСЛИ УЖЕ 0,
GOTO $+3 ;ТО ПЕРЕХОДИМ НА ВТОРУЮ СТРОКУ.
INCF FSR,1 ;ИНАЧЕ ПРОИНДИЦИРУЕМ СЛЕДУЮЩИЙ
GOTO $-6 ;РЕГИСТР.
MOVLW B'11000000' ;ВТОРАЯ СТРОКА (УСЛОВНО 2х8).0x0C0 ;
CALL JEKOM ;ЗАПИШЕМ КОМАНДУ.
MOVLW .8 ;ИНДИКАЦИЯ АНАЛОГИЧНА
MOVWF COUN ;ИНДИКАЦИИ ПЕРВОЙ СТРОКИ.
INCF FSR,1 ;
MOVFW INDF ;
CALL JEDAT ;
DECF COUN,1 ;
BTFSS STATUS,2 ;
GOTO $-5 ;
BCF FLAG,6 ;СЛЕДУЮЩАЯ ИНДИКАЦИЯ - КУРСОРА.
RETURN ;НА РАСПРЕДЕЛИТЕЛЬ.
Добавлено: Пн фев 08, 2010 07:54:58
maks2689
вся соль заключается в том что данная программа не работает на мелтовских индикаторах на индикаторах зарубежного производста все работает отлично
Добавлено: Пн фев 08, 2010 15:08:41
maks2689
Я добавил комментарии - отредактировав сообщение? вроде бы все понятно.
Это подпрограмма отвечающая за инициализацию и вывод информации на индикатор.
Изучив даташиты на индикаторы пришел к выводу что они практически ничем не отличаются.
даташит на МЭЛТ:
http://www.melt.com.ru/upload/docs/MT-16S1A.pdf
даташит на импортный индикатор:
http://cumbriadesigns.co.uk/Datasheets/JM162ALCD.pdf
Добавлено: Ср фев 10, 2010 09:42:07
maks2689
Теперь я вообще ничего не понимаю. Пробовал полностью переделовать программу инициализации, вообще никакой реакции. Даже в таком виде импортная матрица работает замечательно:
Код: Выделить всё
JEKINI
GOTO RASPR ;НА ИНДИКАЦИЮ.
PAUSA
MOVLW .25
RETURN
PAUS
MOVLW .255
RETURN
JEKOMI
CALL PAUSA ;ПАУЗА.
RETURN