реклама на сайте
подробности

 
 
> Проблемка с LSD Winstar WH1602
_Vadim_
сообщение Dec 6 2007, 08:17
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Добрый день!
Прошу помощи решения проблемки!
Проблемка с LSD Winstar WH1602-YYK-CTK-русифицированный, контроллер HD44780, использую PIC16F84A для вывода на дисплай тестовой инфы, проблем заключается в том, что LSD отображает правильно только цифры и некоторые знаки, например провожу инициализацию LSD, далее пытаюсь вывести по очереди например A,B,C,D......O, а ЛСД-ка выдыет вертикальные черточки, изображения прикладываю. Может я чот не правильно делаю с инициализацией, хотя с цифрами все хорошо, вообщем жду вашего совета, человек я в этом деле новый как что сильно не пинайте!
Еще для пущей понятности кусок програмки в ассемблере для оного пика:

;R/W - постоянно схемно соединен с "-"
LsdVideoON: CALL TIMER5 ;Ожидаем 15мс пока установится питание LSD
bcf PORTA,1 ;установка RS = 0
CALL TIMER5 ;Еще ждемс
movlw 0x0D ;запись 0000 1101 в порт В(DB0-DB7)
movwf PORTB ;D=1-вкл.изображение,B=1-мерцаюший курсор вкл.
CALL TIMER5 ;
bsf PORTA,3 ;установливаем Е=1
CALL TIMER5 ;
bcf PORTA,3 ;установливаем Е=0
CALL TIMER5 ;
movlw 0xFF ; установливаем DB0-DB7 высокий лог-кий
movwf PORTB ; уровень (Hi)
CALL TIMER5 ;

LsdVideoConf:
bcf PORTA,1 ;тоже самое только
CALL TIMER5 ;
movlw 0x3F ;запись 0011 1111 в порт В(DB0-DB7)
movwf PORTB ;DL=1-вкл.8-ми разрядная шина данных,N=1-вкл.две строки,
CALL TIMER5 ;F=1 - матрица 5*10 точек
bsf PORTA,3 ;
CALL TIMER5 ;
bcf PORTA,3 ;
CALL TIMER5 ;
movlw 0xFF ;
movwf PORTB ;
CALL TIMER5 ;

LsdVideoData:
bsf PORTA,1 ;запись в память данных
CALL TIMER5 ;RS=1
movlw 0x41 ;запись буковки А в порт В(DB0-DB7)
movwf PORTB ;
CALL TIMER5 ;
bsf PORTA,3 ;Е=1
CALL TIMER5 ;
bcf PORTA,3 ;Е=0
CALL TIMER5 ;
movlw 0xFF ;DB0-DB7 = Hi
movwf PORTB ;
CALL PAUSE ;
LsdVideoData1:
bsf PORTA,1
CALL TIMER5
movlw 0x42 ; "B"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL PAUSE
LsdVideoData2:
bsf PORTA,1
CALL TIMER5
movlw 0x43 ; "C"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL PAUSE
LsdVideoData3:
bsf PORTA,1
CALL TIMER5
movlw 0x44 ; "D"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL TIMER5
CALL PAUSE

и так до "О"
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Dec 6 2007, 09:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Раз вы человек новый, то следует для начала прочитать Правила форума. После этого воспользоваться поиском по форуму. И только, если не найдете ответа (хотя сложно не найти, 2-х строчные LCD обсуждаются примерно раз в неделю) на свой вопрос разместить свое сообщение в соответствующем разделе форума (AVR видимо?).
По сути проблемы. С кодом я вашим не разбирался, но судя по всему, вы пытаетесь писать в область CGRAM, а не DDRAM.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 6 2007, 14:34
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(rezident @ Dec 6 2007, 13:13) *
Раз вы человек новый, то следует для начала прочитать Правила форума. После этого воспользоваться поиском по форуму. И только, если не найдете ответа (хотя сложно не найти, 2-х строчные LCD обсуждаются примерно раз в неделю) на свой вопрос разместить свое сообщение в соответствующем разделе форума (AVR видимо?).
По сути проблемы. С кодом я вашим не разбирался, но судя по всему, вы пытаетесь писать в область CGRAM, а не DDRAM.

Уважаемый rezident, я правила прочитал и давайте сами не будем разводить ФЛУД и высказываться будем по существу!


Цитата(rloc @ Dec 6 2007, 14:33) *
Контроллер у них не совсем HD44780, а совместимый с оным, собственной разработки и очень часто с огромным количеством ошибок. Лет 5 назад "парился" c WH1602D-PML-CP, таких мучений никому больше не пожелаю, жутко глюкавый, совместим с HD44780 процентов на 80%. Если найду, выложу исходники написанные на С под MCS51.
LSD - "правильно" Вы его назвали beer.gif

ДА уж с "LSD" я загнул, хотя LCD его пока трудно назвать! Буду пробовать перебирать всю таблицу символов crying.gif . По результатам отпишусь beer.gif .
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 7 2007, 07:57
Сообщение #4





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



И так что мне удалось узнать, прошерстил я всю таблицу символов, попробовал другой такой же LCD, результат одинаковый, pdf-чик с таблицой из даташита прилагаю, а вот что отображает дисплей:
адреса:
- с 00 до 0D отображаются ввиде вертикальных черточек (по две или три (реже) штуки в ячейке);
- с 0Е до 0F - пустые;
- с 10 до 1F - пустые;
- 20 - пустая;
- 21 - 2F - как положено;
- 30 - 3F - как положено;
- 40 - 4F - ввиде вертикальных черточек;
- 50 - 5F - ввиде вертикальных черточек;
- 61 - 6F = 21 - 2F;
- 70 - пустая;
- 71 - 7F = 21 - 2F;
- 80 - пустая;
- 81 - 90 - ввиде вертикальных черточек;
- 91 - A0 - пустые;
- A0 - AF - ввиде вертикальных черточек;
- B1 - BF = 21 - 2F;
- C0 - CF - как положено;
- D0 - DF - как положено;
- E0 - EF - как положено;
- F0 - FF - как положено.
Вывод у меня напрашивается один - брак производителя, криво прошита память; что скажите народ?
Прикрепленные файлы
Прикрепленный файл  table_simbol.pdf ( 9.06 килобайт ) Кол-во скачиваний: 100
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 7 2007, 09:20
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Vadim_ @ Dec 7 2007, 09:57) *
попробовал другой такой же LCD....
что скажите народ?
Что с кривыми индикаторами сталкиваться не приходилось (а тем более с двумя!), а вот с кривыми программами - сколько угодно. rezident совершенно правильно вам заметил, что инициализация обсасывалась на этом форуме очень много раз. Вы можете до потери сознания обвинять собеседников во флуде, но он вам сделал два совершенно правильных замечания - 1) читать ваш код очень трудно - вы не потрудились его обрамить тегами code
2) ваша инициализация никуда не годится - ищите на форуме.
Не годится по следующим причинам:
1) надо указывать одну строку а не две - примите это как аксиому
2) вы не даете команду установки адреса DDRAM.
3) вы не даете еще несколько необходимых команд
Можете кивать на производителя сколько угодно, но пока не сделаете правильную инициализацию работать не будет. Примеров море что в гугле что на форуме. Творить еще одну копию нет никакого желания.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 12 2007, 12:00
Сообщение #6





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(Сергей Борщ @ Dec 7 2007, 13:20) *
Что с кривыми индикаторами сталкиваться не приходилось (а тем более с двумя!), а вот с кривыми программами - сколько угодно. rezident совершенно правильно вам заметил, что инициализация обсасывалась на этом форуме очень много раз. Вы можете до потери сознания обвинять собеседников во флуде, но он вам сделал два совершенно правильных замечания - 1) читать ваш код очень трудно - вы не потрудились его обрамить тегами code
2) ваша инициализация никуда не годится - ищите на форуме.
Не годится по следующим причинам:
1) надо указывать одну строку а не две - примите это как аксиому
2) вы не даете команду установки адреса DDRAM.
3) вы не даете еще несколько необходимых команд
Можете кивать на производителя сколько угодно, но пока не сделаете правильную инициализацию работать не будет. Примеров море что в гугле что на форуме. Творить еще одну копию нет никакого желания.

Сергей, собственно от перечтения даташитов, док и разных примеров, нечего существенно нового не узнал по инициализации, текст программы (кривой - правильно подмечено) поправил, но проблема остается таже, может поможете еще разок?
кратко попробую описать инициализацию дисплея:
1. Установить RS, E, R/W - в Down (0) (R/W-сидит на нуле);
2. Выждать паузу не менее 15 мс;
3. Установить RS в Down (на всякий случай);
4. Вывести на шину данных 0х30= 00110000 (инициализация в 8-ми битном режиме);
5. Установить Е в UP(1);
6. Установить Е в Down (0);
7. Установить шину данных в уровень высокого импеданса 1;
8. выждать паузу не менее 5 мс;
9. повторить пункты 3-7;
10. пауза не менее 100мкс (у меня 1мс);
11. повторить пункты 3-7;

12. Установить RS в Down;
13. Вывести на шину данных 0x3C= 8 бит, 2 строки, матрица 5х10
14. повторить пункты 5-7;

15. Установить RS в Down;
16. Вывести на шину данных 0x06=курсор авомат-ки перемещ. слева-направо;
17. повторить пункты 5-7;

18. Установить RS в Down;
19. Вывести на шину данных 0x01=отчиска экрана;
20. повторить пункты 5-7;

21. Установить RS в Down;
22. Вывести на шину данных 0x80=установка адресса ДДРАМ;
23. повторить пункты 5-7;

Файлик в асме прилагаю коментарии в нем имеются.
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 12 2007, 14:58
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(_Vadim_ @ Dec 12 2007, 17:00) *
Сергей, собственно от перечтения даташитов, док и разных примеров, нечего существенно нового не узнал по инициализации, текст программы (кривой - правильно подмечено) поправил, но проблема остается таже, может поможете еще разок?
кратко попробую описать инициализацию дисплея:

В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 12 2007, 15:07
Сообщение #8





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(rezident @ Dec 12 2007, 18:58) *
В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются.

Это я понимаю и в тексте программы это учтено, но изменений работы от ввода в текст программы пауз, не происходит. sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Vadim_   Проблемка с LSD Winstar WH1602   Dec 6 2007, 08:17
|- - _Vadim_   Цитата(Сергей Борщ @ Dec 7 2007, 13:20) Ч...   Dec 7 2007, 10:49
|- - _Vadim_   Файлик почемуто не добавляется, тогда вот текст. ...   Dec 12 2007, 14:15
||- - Сергей Борщ   Цитата(_Vadim_ @ Dec 12 2007, 16:15) Файл...   Dec 12 2007, 15:51
||- - xemul   Цитата(_Vadim_ @ Dec 12 2007, 17:15) Файл...   Dec 12 2007, 17:01
||- - _Vadim_   Спасибо всем! Действительно не продумал с W, э...   Dec 13 2007, 07:09
||- - _Vadim_   Цитата(_Vadim_ @ Dec 13 2007, 11:09) Спас...   Dec 13 2007, 09:47
||- - Сергей Борщ   Цитата(_Vadim_ @ Dec 13 2007, 11:47) резу...   Dec 13 2007, 13:05
||- - _Vadim_   Цитата(Сергей Борщ @ Dec 13 2007, 17:05) ...   Dec 13 2007, 13:51
||- - _Vadim_   Проверил. В соединениях проблем нет, при записи в...   Dec 13 2007, 15:03
||- - Сергей Борщ   Цитата(_Vadim_ @ Dec 13 2007, 17:03) Може...   Dec 13 2007, 15:25
||- - _Vadim_   Цитата(Сергей Борщ @ Dec 13 2007, 19:25) ...   Dec 14 2007, 06:54
- - rloc   Цитата(_Vadim_ @ Dec 6 2007, 11:17) Пробл...   Dec 6 2007, 10:33


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 19:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016