Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.02.2012, 23:58
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Не инициализируется mtc-s16208xfyhsgy
Есть LCD. Надписи: на плате mtc-s16208xp-16208x, на этикетке mtc-s16208xfyhsgy 08a.
В datasheet в описании Busy Flag указан контролер KS0066U.
При подаче питания загорается верхняя строка: 16 прямоугольников 8*5 точек.
Никакие манипуляции не меняют его содержимого. Пробовал:
1)инициализацию по datasheet для KS0066U;
2)инициализацию по datasheet для HD44780;
3)не инициализировать вовсе, после паузы подавать данные;
4)менять LCD на такой же.
В Proteus работают варианты 1 и 2. В железе - ни один. Как с ним бороться? Как его инициализировать?
P.S. Трассировка в порядке, PIC-контроллер исправный. Проверял.
Последний раз редактировалось Opasif; 19.02.2012 в 00:04.
|
|
|
|
22.02.2012, 11:25
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Неужели никто не сталкивался с этим LCD?
|
|
|
|
22.02.2012, 14:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Сообщение от Opasif
|
При подаче питания загорается верхняя строка: 16 прямоугольников 8*5 точек.
Никакие манипуляции не меняют его содержимого. Пробовал:
1)инициализацию по datasheet для KS0066U;
2)инициализацию по datasheet для HD44780;
3)не инициализировать вовсе, после паузы подавать данные;
4)менять LCD на такой же.
|
Наверно жив, но программа неправильная. АСМ?
1. инициализация 4/8битная?
3. бессмысленно без инициализации
4. замена на другой от другой фирмы?
шпротеус работает с универсальной моделью, не учитывающей разброс по задержкам конкретного производителя. совет - увеличьте максимально задержки и повторите тест, замените на индикатор другого производителя
|
|
|
|
22.02.2012, 17:51
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
У меня 2 одинаковых индикатора, аналогов от других производителей у меня нет. Код написан на АСМе. Инициализация 8битная, как и последующая работа. Пробовал увеличивать время задержек в 2 раза от указанных в datasheet’ах, как для KS0066U, так и HD44780, - никаких изменений. Случайно задел какие-то контакты на задней стороне одного LCD во время работы схемы, обнаружил, что появились какие-то символы, причём много и в 2 строках! Хотя через время экран очистился и видны были прямоугольники только в верхней строке. Контакты между платой и LCD надёжные, не искрят. Что определяет тактовую частоту контроллера LCD и как выполняется синхронизация? Может надо не просто ждать, а опрашивать Busy Flag, тактируя сигналом E?
|
|
|
|
22.02.2012, 19:43
|
|
Вид на жительство
Регистрация: 29.01.2010
Адрес: Десногорск Смол.обл.
Сообщений: 333
Сказал спасибо: 17
Сказали Спасибо 256 раз(а) в 103 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
а как дела обстоят с контрастностью? настроена?
|
|
|
|
22.02.2012, 22:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Opasif,
а как у вас с теорией? выдерживаете перед началом ввода задержку на стабилизацию питания? трижды крестите индикатор начальной командой ширины шины? какой длины строб Е? заземлите R/W, дабы неповадно было писать и "не просто ждать, а опрашивать Busy Flag, тактируя сигналом E"
|
|
|
|
23.02.2012, 16:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Вот тестовая программка инита дисплея. LCD_Probe.zip
Рассчитано для Мега8 с дефолтными фьюзами (1МГц, внутренний такт). Схема подключения 8-мибитная внутри. Работает и с частотой 2МГЦ, ;МГц, 8МГц. На 8ми, правда, уже есть сбои, но таки работает. Просто выводит бегущей строкой знакогенератор. Пробовал на MT-10S1-1Y (МЭЛТ) и WH2002A (Winstar). В принцыпе, без разницы, какой индикатор.
Вот инит:
PHP код:
|
;************************************************* ************
; Подпрограмма инициализации дисплея
; По даташиту на MT-10S1 2000 года
;************************************************* ************
IniLcd_8:
cbi ConPort,ao ;RS в "0" AO
cbi ConPort,rw ;R/W в "0"
cbi ConPort,en ;E в "0"
wait_15ms ;ожидание не менее 15 ms
ldi Lcdreg,0b00110000 ; (установка параметров) разрядность
rcall SendCom_8 ; 1я команда
wait_10ms ;ожидание не менее 10 ms
ldi Lcdreg,0b00110000 ; (установка параметров) разрядность
rcall SendCom_8 ; 2я команда
wait_300us ;ожидание не менее 0.3 ms
ldi Lcdreg,0b00110000 ; (установка параметров) разрядность
rcall SendCom_8 ; 3я команда
wait_100ms ;ожидание не менее 100 ms
ldi Lcdreg,0b00111000 ; (установка параметров)
rcall SendCom_8 ; 4я команда
wait_100ms ;ожидание не менее 100 ms
ldi Lcdreg,0b00001000 ; (Отключение экрана)
rcall SendCom_8 ; 5я команда
wait_100ms ;ожидание не менее 100 ms
ldi Lcdreg,0b00000001 ; (Очистка экрана)
rcall SendCom_8 ; 6я команда
wait_4ms ;ожидание не менее 4 ms
ldi Lcdreg,0b00000110 ; (установка параметров)
rcall SendCom_8 ; 7я команда
ret
;************************************************* ************
; Подпрограмма записи байта в LCD по шине 8 bit
;************************************************* ************
SendDat_8:
sbi ConPort,rs ;AO в "1" RS
rjmp s1
SendCom_8:
cbi ConPort,rs ;AO в "0" RS
s1: cbi ConPort,rw ;R/W в "0"
out LcdPort,Lcdreg
sbi ConPort,en ;E в "1"
wait_40us ;ожидание не менее 0.04 ms
cbi ConPort,en ;E в "0"
wait_40us ;ожидание не менее 0.04 ms
ret
|
Последний раз редактировалось omercury; 23.02.2012 в 16:13.
|
|
|
|
23.02.2012, 18:04
|
|
Частый гость
Регистрация: 18.01.2009
Сообщений: 22
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
jump, ниже приведенную часть кода проверки занятости я некорректно назвал "тактирование сигналом E", т.к. значение на E_PIN очень похоже на тактовый сигнал:
Код:
|
LoopBusy
BCF E_PIN
NOP
BSF E_PIN
BTFSC PORTB,7
GOTO LoopBusy |
omercury, Ваш код реализовывает инициализацию по datasheet для HD44780, только с удвоенными, а то и утроенными задержками.
Инициализация KS0066U проще.
Прикладываю проект, чтобы не обвиняли в кривом коде.
Код:
|
BTFSS IS_LCD_ON,0 ; если дисплей ещё не инициализирован, то вызвать LCD_INIT
CALL LCD_INIT_KS ; выбирается либо эта строка, либо следующая
;CALL LCD_INIT_HD |
Пробовал увеличивать количество подряд идущих NOP'ов в процедурах LCD_SEND_DATA и LCD_SEND_CMD, не помогло. Менял в этих же процедурах
init_v DELAY_CNT,D'11' на init_v DELAY_CNT,D'20'. В Proteus работает, а в железе - нет.
|
|
|
|
25.02.2012, 00:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Сообщение от Opasif
|
Инициализация KS0066U проще.
|
|
|
|
|
25.02.2012, 01:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Не инициализируется mtc-s16208xfyhsgy
Opasif,
was ist das "BCF E_PIN › NOP › BSF E_PIN Loop"?
зачем вы меандр формируете?
а это что ? "MOVLW B'00111100' ; Function Set: 8-bit, 2-line, 5x11 dots
может 5х8? MOVLW B'00111000'
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:52.
|
|