Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Сброс и инициализация дисплея16x2 (Помогите!!!)
Сброс и инициализация дисплея16x2
holyuser Дата: Чт, 15.12.2016, 22:01  |                                                                                                                Сообщение # 31
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 248
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Конечно.
В прикреплении схема по которой проходит инициализация дисплея в двух вариантах.
Прикрепления: _001.pdf(72.3 Kb)

Сообщение отредактировал holyuser - Чт, 15.12.2016, 22:04
ЯНДЕКС Дата: 15.12.2016
555serg Дата: Пт, 16.12.2016, 00:01  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

holyuser, спасибо что помогаете !  Видно что даташиты от разных производителей отличаются друг от друга разным количеством повторений команды Function Set. Но мне не это важно. Вот, в даташите на индикатор
WEH001602A ( во вложении есть ) необходимо первой посылкой отправить такую комбинацию нулей и единиц - % 10 0000 , причем как указано в доке -  последние четыре цифры ( младший полубайт ) посылаемого бинарного числа - не важны. Но для протона - очень даже важны. Если мы отправляем  
не % 10 0000 , а %10 0011 два раза подряд, ну как дока того требует, то протон соответственно отправит
четыре посылки - % 10 , % 11 , % 10 , % 11 . В итоге мы имеем ( благодаря последнему биту DB4 равному единице ) восьми битный интерфейс передачи данных. Если это так, то младший полубайт в первых посылках в команде Function Set тоже имеет значение.
Вот это я и пытаюсь выяснить. 
Еще раз, спасибо всем активным участникам форума !
Прикрепления: 9662059.pdf(1.26 Mb)
holyuser Дата: Пт, 16.12.2016, 07:12  |                                                                                                                Сообщение # 33
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 248
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Не надо ничего разделять пополам и посылать кусками.
Просто надо до установки 4-битного режима отправлять команды на дисплей "ручками", потому что компилятор в этом случае делает два импульса на выводе Enable, а до установки Function Set должен быть один импульс.
Вот рабочий пример на PBP:

Код
; PIC16F819

DEFINE    LCD_DREG    PORTB
DEFINE    LCD_DBIT    0
DEFINE    LCD_RSREG    PORTB
DEFINE    LCD_RSBIT    5
DEFINE    LCD_EREG    PORTB
DEFINE    LCD_EBIT    4
DEFINE    LCD_BITS    4
DEFINE    LCD_LINES    2
DEFINE    LCD_COMMANDUS    2000
DEFINE    LCD_DATAUS    50

.................................
.................................

TRISB = %11000000
portb = %00000011
high portb.4 : low portb.4
pause 5
portb = %00000010
high portb.4 : low portb.4
lcdout $EF,40 : lcdout $FE,8 : lcdout $FE,12
lcdout $FE,6 : lcdout $FE,1
..............
555serg Дата: Пт, 16.12.2016, 11:12  |                                                                                                                Сообщение # 34
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

А я и не говорил, что что то разделяю и отправляю кусками (полубайтами ). В том то и дело что этим занимается сам компилятор, так как уже в самой шапке программы есть предопределения Declare
одно из которых говорит о том что работаем по четырех проводному интерфейсу.
Еще раз повторюсь. Для пере инициализации индикатора уже после того как он настроен с помощью пред определений Declare , и после того как он исправно выводил на экран информацию - необходимо его сбросить методом пере инициализации. В даташите ( прикрепляю ) для четырех битного подключения, это комбинация - %0010 xxxx . Мне поясняют, что знак х - любое значение. Хорошо, отправляем командой
Print посылку - %0010 0011 ;
'--------------------------------------
Print $fe, $23
'--------------------------------------
Наша программа, с установленными в пред определениях соответствующими задержками, честно
отправляет два полубайта, первый - %0010 , второй - %0011 . Руководствуясь докой мы должны отправить две посылки - %0010 хххх . Но поскольку, х - любое значение, то отправляем ;
'--------------------------------------
Print $fe, $23
Print $fe, $23
'--------------------------------------
В итоге программа честно выставляет на шину ЧЕТЫРЕ ПОЛУБАЙТА - %0010 - %0011 - %0010 - %0011 .
Последняя единица в посылке попадает на порт DB4 нашего индикатора, в команде Function set это бит с букавкой DL ,  и дает ему понять что мы хотим работать по восьми проводному подключению.
Я вот, пока что, только это все пытаюсь выяснить. У меня то все работает нормально, и может быть я зря так загоняюсь, - просто хочу разобраться !
Спасибо что еще не послали лесом, а пытаетесь помочь.
Прикрепления: 1095615.pdf(1.26 Mb)

Сообщение отредактировал 555serg - Пт, 16.12.2016, 11:55
holyuser Дата: Пт, 16.12.2016, 13:05  |                                                                                                                Сообщение # 35
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 248
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Небеспокойтесь, на этом форуме никто Вас лесом не пошлет.
Заметьте, что в 4-битном режиме контроллер (компилятор) выдает, а дисплей ожидает два импульса на линии Enable на каждый байт. Тяким образом, компилятор разделяет один байт на два полубайта, а дисплей из принятых полубайтов автоматически "собирает" целый байт в его первоначальном виде и аж потом приступает к выполнению команды, если это команда.
555serg Дата: Пт, 16.12.2016, 15:16  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Все. Дошло. На конец то ! Вот где собака зарыта, все дело в двух отдельных высоких уровнях на линии
E ( enable ), когда появляется второй высокий на линии E, то индикатор просто игнорирует младший полу байт. А сигналом об этом, ( что нужно не воспринимать второй полу байт ) ему служит высокий уровень на линии DB5.
holyuser,  спасибо вам за ваше терпение, внутри вас дремлет сенсей   : )))
Справедливости ради - то же самое мне говорил anatol.
В общем благодаря Вам и форуму начал немного больше понимать !
Но у меня есть еще одна непонятка. Что конкретно отправляется на дисплей когда мы пишем:
'--------------------------------------
Print $fe
'--------------------------------------
Огромное Вам спасибо.
holyuser Дата: Пт, 16.12.2016, 16:17  |                                                                                                                Сообщение # 37
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 248
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Байт $FE в составе оператора Print служит для управления RS.
555serg Дата: Пт, 16.12.2016, 16:43  |                                                                                                                Сообщение # 38
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Я так понял, что если мы пишем Print $fe ..... - то это мы посылаем на индикатор команду. Если мы пишем
Print At ..... - то это у нас сначала команда, потом данные. Если не прав, поправьте пожалуйста.
holyuser Дата: Пт, 16.12.2016, 17:14  |                                                                                                                Сообщение # 39
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 248
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Точно.
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Сброс и инициализация дисплея16x2 (Помогите!!!)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: