|
|
  |
Сопряжение ATmega88 и ЖК WH2004L, не удается запустить процесс инициализации ;( |
|
|
|
Mar 6 2007, 23:17
|
Группа: Новичок
Сообщений: 8
Регистрация: 6-03-07
Пользователь №: 25 916

|
Здравствуйте, опытные специалисты и не очень  Подскажите, пожалуйста, что может быть неправильного в приведенной ниже программульке в процессе инициализации ЖКИ WH2004L. замучался просто, сколько не переписывал программу, индикатор, как неживой ;( Описание ЖК здесь...
WH2004L.pdf ( 424.36 килобайт )
Кол-во скачиваний: 596Заранее благодарю. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;ATmega88 - 20MHz ;;; ;;;PD0-PD7= DB0-DB7 ;;; ;;;PB1=E ;;; ;;;PC4=RS ;;; ;;;PC5=R/W ;;; ;;;?E WH2004L 20x4 ;;; ;;;8bit ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .include "m88def.inc" .def tmp=r16 .def tmp1=r17 ldi tmp, high(ramend) out SPH, tmp ldi tmp, low(ramend) out SPL, tmp main: ldi tmp,$ff ; PORT D,B,C out DDRD,tmp ; Vyvody out DDRB,tmp ; out DDRC,tmp ; startinit_LCD: rcall delay_40ms ldi tmp,$30 ; 8 bit interface, 2stroki, 5x8 rcall DispCmd rcall Delay_40us ldi tmp,$30 ; 8 bit interface, 2stroki, 5x8 rcall DispCmd rcall Delay_40us ldi tmp,$F ; aee??eou ?EE. aee??eou eo?ni?, naaeaou aai ieaa?uei rcall DispCmd rcall Delay_40us ldi tmp,1 ; Display clear rcall DispCmd rcall Delay_1_6ms ldi tmp,6 ; onoaiiaea iai?aaeaiey naaeaa eo?ni?a ai?aai rcall dispcmd rcall delay_40us ; end startinit_LCD ldi tmp,$38 ; 8 bit interface, 2stroki, 5x8 rcall DispCmd rcall Delay_40us ldi r18,$30 next: rcall DispData rcall delay_40us inc r18 cpi r18,$40 brne next end: rjmp end delay_40us: ldi tmp,2 label2: ldi tmp1,133 label1: dec tmp1 brne label1 dec tmp brne label2 ret delay_40ms: ldi tmp,255 label4: ldi tmp1,255 label3: nop nop nop nop nop nop nop nop nop nop dec tmp1 brne label3 dec tmp brne label4 ret delay_1_6ms: ldi tmp,10 label6: ldi tmp1,255 label5: nop nop nop nop nop nop nop nop nop nop dec tmp1 brne label5 dec tmp brne label6 ret DispCmd: cbi PORTB, 1 ; RS = 0 - commandy sbi PORTC, 5 ; E = 1 nop out PORTD, tmp nop nop nop cbi PORTC, 5 ;E=0 strob nop out PORTD,tmp nop nop nop nop nop nop nop nop sbi PORTC,5 ret Dispdata: sbi PORTB, 1 ; RS = 1 - dannye sbi PORTC, 5 ; E = 1 nop out PORTD, tmp nop nop nop cbi PORTC, 5 ;E=1 strob nop out PORTD,tmp nop nop nop nop nop nop nop nop sbi PORTC,5 ret
|
|
|
|
|
Mar 7 2007, 10:09
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Цитата(Liss @ Mar 6 2007, 22:17)  Здравствуйте, опытные специалисты и не очень  Подскажите, пожалуйста, что может быть неправильного в приведенной ниже программульке в процессе инициализации ЖКИ WH2004L. Хотя, по описанию, это дисплей и построен на hd44780, однако инициализация его отличается от описания драйвера (см. ниже). Попробуйте переписать программу инициализации по описанию hd44780. Я сталкивался с такими проблемами и после изменения кода согласно стандартной инициализации все работало.
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Mar 7 2007, 11:37
|
Группа: Новичок
Сообщений: 8
Регистрация: 6-03-07
Пользователь №: 25 916

|
Цитата(Wild007 @ Mar 7 2007, 10:09)  Хотя, по описанию, это дисплей и построен на hd44780, однако инициализация его отличается от описания драйвера (см. ниже). Попробуйте переписать программу инициализации по описанию hd44780. Я сталкивался с такими проблемами и после изменения кода согласно стандартной инициализации все работало. потому то я и выложил описание индикатора, там еще диаграммы записи данных/команд отличаются от стандартных... Только что попробовал написать инициализацию, как SasaVitebsk предложил, тоже не работает... сейчас попробую переписать... )
Сообщение отредактировал Liss - Mar 7 2007, 11:41
|
|
|
|
|
Mar 7 2007, 12:32
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Посмотрите это. Этот алгоритм у меня работает на всех индикаторах (которые мне попадались  ) построенных на базе HD44780 (но для 4-х битного вкючения).
Прикрепленные файлы
lcd1.zip ( 2.72 килобайт )
Кол-во скачиваний: 148
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Mar 7 2007, 15:45
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Я все время использую hd44780 немного не так: Во первых вывод начинаю с выставления данных на шине db0-db7, и только затем положительный строб E. Процесс инициализации описан в конце приложенного документа от КТЦ-МК, использую его и никаких проблем ни разу не было. Индикаторы использовал Датавижн, Болимин и Винстар.
|
|
|
|
|
Mar 12 2007, 13:02
|
Группа: Новичок
Сообщений: 8
Регистрация: 6-03-07
Пользователь №: 25 916

|
Wild007, пробовал, не помогает... (
amusin, нет. Вобще при подаче питания индикатор отображает 1 строку (на 1 и 3-ей строчке подсвечиваются все точки 40 символов)
Qwertty, я так тоже пробовал.
Когда я проверил всю картину на осцилографе, заметил, что МК не может работать с задержками >9 мс то есть < 9мс, сигнал с высокого уровня переходит на низкий, а при задержках > 9 мс сигнал находится либо в "1" либо в "0". Может быть кто-нибудь с этим сталкивался?
|
|
|
|
|
Mar 13 2007, 22:24
|
Группа: Новичок
Сообщений: 8
Регистрация: 6-03-07
Пользователь №: 25 916

|
Проблема была в работающем почему-то по умолчанию сторожевом таймере(бит WDE был установлен при включении питания), сброс сторожевого таймера происходил по истечении 16 мс
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|