|
Проблемка с LSD Winstar WH1602 |
|
|
|
Dec 6 2007, 08:17
|
Группа: Новичок
Сообщений: 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 и так до "О"
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Dec 6 2007, 14:34
|
Группа: Новичок
Сообщений: 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 - "правильно" Вы его назвали  ДА уж с "LSD" я загнул, хотя LCD его пока трудно назвать! Буду пробовать перебирать всю таблицу символов  . По результатам отпишусь  .
|
|
|
|
|
Dec 7 2007, 07:57
|
Группа: Новичок
Сообщений: 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 - как положено. Вывод у меня напрашивается один - брак производителя, криво прошита память; что скажите народ?
|
|
|
|
|
Dec 7 2007, 09:20
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Dec 12 2007, 12:00
|
Группа: Новичок
Сообщений: 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; Файлик в асме прилагаю коментарии в нем имеются.
|
|
|
|
|
Dec 12 2007, 14:58
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(_Vadim_ @ Dec 12 2007, 17:00)  Сергей, собственно от перечтения даташитов, док и разных примеров, нечего существенно нового не узнал по инициализации, текст программы (кривой - правильно подмечено) поправил, но проблема остается таже, может поможете еще разок? кратко попробую описать инициализацию дисплея: В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются.
|
|
|
|
|
Dec 12 2007, 15:07
|
Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840

|
Цитата(rezident @ Dec 12 2007, 18:58)  В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются. Это я понимаю и в тексте программы это учтено, но изменений работы от ввода в текст программы пауз, не происходит.
|
|
|
|
Сообщений в этой теме
_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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|