Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Кирилица на дисплее WEH000802
Кирилица на дисплее WEH000802
Володимир Дата: Пн, 02.12.2013, 22:51  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Подскажите как включить кириллицу на дисплее WEH000802, точнее сказать как командами протона заставить дисплей использовать вторую страницу набора символов. Даташит http://www.datasheet4u.com/datashe....df.html на этот дисплей пишет что в дисплее зашито 4-ре набора символов, каждый из которих находится на своей странице, по умолчанию используется нулевая, а кириллица находится во второй.
ЯНДЕКС Дата: 02.12.2013
anatol Дата: Пн, 02.12.2013, 23:44  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

На дисплей надо выдать команду при установках.
Sets interface data length (DL).
Sets number of display lines (N).
Sets Character Font (F).
Sets Font Table (FT)
Это там же где идет очистка экрана и т.д.
Подсказать напрямую нет желания. Больше пользы будет если разберетесь. Да и кусок кода по инициализации дисплея и режиму работы привели бы.
Володимир Дата: Вт, 03.12.2013, 20:49  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Цитата anatol ()
Это там же где идет очистка экрана и т.д.Подсказать напрямую нет желания. Больше пользы будет если разберетесь. Да и кусок кода по инициализации дисплея и режиму работы привели бы.
Инициализация.

Declare LCD_Type = 0
Declare LCD_DTPin PORTA.0
Declare LCD_RSPin PORTA.5
Declare LCD_ENPin PORTA.4
Declare LCD_Interface 4
Declare LCD_Lines 2
Declare LCD_CommandUs 2000
Declare LCD_DataUs 50

DelayMS 600

далее с помощю комады Print вывожу данные на экран.

Вопрос в том как командами протона вставить команду Sets Font Table (FT)

Прибор прекрасно работает на дисплее WH0802A, друг у себя хочет поставить олед дисплей, а результат такой как на фотке.
anatol Дата: Вт, 03.12.2013, 22:36  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline


Код
Declare LCD_Type = 0
Определяет ТИП подключенного дисплея Declare LCD_Type = 0 или ALPHA равно стандартный алфавитно-цифровой ЖКИ с контроллером Hitachi 44780

Код
Declare LCD_DTPin PORTA.0   
   Declare LCD_RSPin PORTA.5   
   Declare LCD_ENPin PORTA.4   
   Declare LCD_Interface 4
определяют куда подключен дисплей, т.е. пины и указывают на 4-х проводный  дата интерфейс. Кстати у вас ЛСД подключен по умолчанию к порту "В", а к какой половине посмотрите по схеме.

Код
Declare LCD_Lines 2   
   Declare LCD_CommandUs 2000   
   Declare LCD_DataUs 50
Дисплей двухстрочный, между командами 2 милисекунды, между битами 50 микросек.

Больше у вас ничего не вижу, а есть еще команды управления типа Print $FE, 128 - курсор в первую позицию первую строку.
по аналогии из доки на ваш дисплей на стр 28 в пункте 10. Instruction Table  в графе Function Set (инструкции) собираем байт =2А (описан на 41,42 стр. доки на дисплей). Так вот FE = команда и устанавливает пины RS  R/WB в состояние 00, затем команда.
Итак Print $FE, 2А перед выводом инфы должны победить.А для этого надо читать доку.

Кстати у вас в библиотеках есть файл Hitachi.inc - он на С, но понять можно = файл компилятора для работы с этими дисплеями. Его тоже можно корректировать при необходимости. Если интересен виндовый поиск поможет найти.

Сообщение отредактировал anatol - Вт, 03.12.2013, 22:41
Володимир Дата: Чт, 12.12.2013, 17:45  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 85
Репутация: 3   ±
Замечания:   ±
На сайте с 22.04.2010

Статус: Offline

Цитата anatol ()
Кстати у вас ЛСД подключен по умолчанию к порту "В", а к какой половине посмотрите по схеме.
LCD подключон не по умолчанию, а к порту А, Declare LCD_DTPin PORTA.0

Кстати, команда Print $FE, 2А помогла, за что большое спасибо. Сейчас код виглядит так:

Declare LCD_Type = 0
Declare LCD_DTPin PORTA.0
Declare LCD_RSPin PORTA.5
Declare LCD_ENPin PORTA.4
Declare LCD_Interface 4
Declare LCD_Lines 2
Declare LCD_CommandUs 2000
Declare LCD_DataUs 50

DelayMS 600
Print $FE, 2А
vladh Дата: Пн, 13.01.2014, 16:46  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 7   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Что то я так и не понял, как переключать страницы кодировок в OLED дисплеях типа вышеприведенного. Разжуйте пжст.
anatol Дата: Пн, 13.01.2014, 19:06  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

vladh, "типа" не проходит. может быть другой драйвер дисплея. В даташит однако.
vladh Дата: Вт, 14.01.2014, 16:11  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 7   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Цитата anatol ()
vladh, "типа" не проходит.
Вчера так и не удалось дописать сообщение. Сайт валял дурака, поэтому отправил в "личку".

Добавлено (14.01.2014, 09:39)
---------------------------------------------
Доброе утро, Анатолий. Я опять что-то не "догоняю". В файле помощи об этой команде сказано, что она должна выглядеть следующим образом Print Item, {Item...}. Здесь слово Print, как Вы говорите, команда-признак работы с ЖКИ. Идущий за этим словом параметр Item может быть константой, переменной, выражением, модификатором, илисписком строковых переменных. На мой взгляд это как-то размыто. Но далее есть список и описание используемых модификаторов (AT ypos (1 to n),xpos(1to n), BIN{1..32}...), который достаточно четко описывает выполняемые функции. Если же не был
использован ни один из приведенных модификаторов, то формат команды
должен быть следующим: PRINT $FE , N. В такой записи это будет означать, что в контроллер ЖКИ будет
послан код - N. Список и значения этих кодов приведены в таблице:
1 - Очистить экран
2 - Вернутся «домой» (идти на первую строку)
$0C - Отключить курсор
$0E - Курсор в виде подчеркивания
$0F - Мерцающий курсор
$10 - Переместить курсор на одну позицию влево
$14 - Переместить курсор на одну позицию вправо
$C0 - Переместить курсор к началу второй строки
$94 - Переместить курсор к началу третьей строки
$D4 - Переместить курсор к началу четвертой строки
Но я нигде в этой таблице не нахожу перехода на другую страницу знакогенератора ЖКИ?

Добавлено (14.01.2014, 16:11)
---------------------------------------------
Да, вот попробовал ввести строку Print $FE, $2А  и действительно произошло переключение. Стала выводится кириллица. Но откуда взялась $2А не пойму?

Сообщение отредактировал vladh - Вт, 14.01.2014, 09:43
anatol Дата: Вт, 14.01.2014, 19:50  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

В сообщении 1 этой темы есть ссылка на даташиты, откуда я по адресу http://www.datasheet4u.com/download.php?id=746251 скачал PDF файл.
В нем на страницах 24-27 приведены кодовые таблицы, в частности англо-русска на стр. 26. Вверху таблиц написано ENGLISH_RUSSIAN CHARACTER FONT TABLE(FT[1:0]=10)    (выделил и подчекнул я). Где FT = FONT TABLE (по русски страница шрифтов), а [1:0]=10 - значения нулевого и первого разряда вданных команды (настройки дисплея). На стр. 28 приведена таблица инструкций 10. Instruction Table
Я выделил строку нужной инструкции. Остальное набирается исходя сколько строк у дисплея (Sets number of display lines (N)), сколько разрядов (4 или 8) соединено по шине данных (Sets interface data length (DL)), какое знакоместо у шрифта (Sets Character Font (F)).
0 - 0 - 1- DL- N - F  - FT1 - FT0    ___Это байт инструкции
0   0   1   0    1   0     1      0      ___ значение = 2А
что говорит на стр 36 и стр 42
14. F=Character Pattern Mode
- F="1": 5 x 10 dots
- F="0": 5 x 8 dots (пять на восемь точек)
15. N=Number of Lines Displayed
- N="1": 2 -Line Display  (двухстрочный дисплей)
DL: INTERFACE DATA LENGTH CONTROL BIT
This is used to set the interface data length. When DL is set to "1", the data is sent or received in 8-bit
length via the DB0 to DB7 (for an 8-Bit Data Transfer). When DL is set to "0", the data is sent or
received in 4-bit length via DB4 to DB7 (for a 4-Bit Data Transfer)
. When the 4-bit data length is
selected, the data must be sent or received twice. (четырех битная шина данных передачи)

Какой у тебя дисплей не знаю, так как молчишь как партизан. Разберешься с этим и свой поймешь.
Прикрепления: 1476132.jpg(457Kb)

Сообщение отредактировал anatol - Вт, 14.01.2014, 19:53
vladh Дата: Ср, 15.01.2014, 09:35  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 7   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Спасибо, anatol за достаточно подробный ответ. Я думаю, что он очень пригодится для многих кто будет осваивать OLED дисплеи.
Индикатор у меня другой - WEH002004, но по сути одно и тоже. Почему то я считал, что эти управляющие коды прописаны только в ПРОТОНЕ, а оказывается эти коды нужно брать из заложенных в индикатор.
В общем еще раз огромное спасибо.
555serg Дата: Пн, 09.05.2016, 11:28  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 55
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Доброго дня участникам форума. Так же как и у автора темы возникла необходимость
выводить русский текст на OLED индикатор WEH001602A. Сделал все как рекомендовали выше,
вставил команду PRINT $FE, 2A. Русский текст печатается неправильно ( крокозябрами ).
Попробовал вывести надпись на русском с помощью надстройки ProtonHeaderMaker,
( команду PRINT $FE, 2A  - оставил ), так же получились крокозябры, хотя английские
буквы выводятся правильно. Кто может натолкнуть на правильную мысль?
Заранее спасибо.
Всех с прошедшим Днем Радио.
И с наступившем Днем Победы!

Сообщение отредактировал 555serg - Пн, 09.05.2016, 18:09
xvovanx Дата: Вт, 10.05.2016, 00:09  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 262
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата 555serg ()
Попробовал вывести надпись на русском ... команду PRINT $FE, 2A  - оставил ... получились крокозябры.... Кто может натолкнуть на правильную мысль?

1.проверьте по даташиту-есть ли русская кирилица в вашем дисплее.
2.проверьте по даташиту-номер таблицы с нужной вам кирилицей и исходные данные дисплея. Быть может писать надо будет в Вашем случае уже не 2A, а совсем другое значение по методике, что "разжевал" уважаемый Anatol

Сообщение отредактировал xvovanx - Вт, 10.05.2016, 00:16
555serg Дата: Вт, 10.05.2016, 17:45  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 55
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Спасибо Вова , если я не ошибаюсь, что откликнулись помочь.
Бегло проверил даташиты на мой WEH001602A, и на авторский WEH000802 индикаторы.
Это индикаторы одной линейки, и система команд у них одинаковая, единственные отличия,
- конструктивные. Выбор страницы нужного набора шрифтов для моего индикатора
совпадает с авторским значением 2A. Дальнейшее разбирательство перешло к самой
программе, в результате была обнаружена синтаксическая ошибка, - куда уж без них.)))
Перед шестнадцатеричным значением бинарного слова установки не было признака
подтверждения того что для протона мы предоставляем число в шестнадцатеричном формате.
Переписал правильно - $2A, все заработало.
--------------------------------------------------------------------------------------------------------------------------------------
Попутно возник вопрос, если кто в курсе - просветите.
Так как в своей программе собираюсь использовать прерывания, то очень хотелось
бы знать, какое время будет занимать вывод на индикатор одной строки на 16
знакомест. Тактовая частота 4 МГц, четырех битный интерфейс,
Declare LCD_CommandUs 2000, Declare LCD_DataUs 50.
И как на будущее прикинуть, хоть примерно, время вывода на индикатор
полностью всех знакомест 2Х16 ?
Заранее спасибо.

Сообщение отредактировал 555serg - Вт, 10.05.2016, 19:35
mikhail09p Дата: Вт, 10.05.2016, 21:29  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 507
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

В Протеусе посмотрите время вывода. Точно определите.
И вопрос - почему в связи с прерываниями Вас интересует вопрос продолжительности вывода информации на индикатор? Меня это ни разу не волновало в конструкциях с отсчётом времени и индикаторами любыми...

Сообщение отредактировал mikhail09p - Вт, 10.05.2016, 21:33
555serg Дата: Ср, 11.05.2016, 00:35  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 55
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Mikhail09p, все очень просто. Допустим, мне нужно будет привязаться к часам реального
времени, и я конечно же  временные интервалы буду отсчитывать по одному из таймеров
через прерывание. Возможна ситуация когда микроконтроллер, занят отправкой информации
на OLED дисплей, он еще не закончил, а прерывание наступило и откладывается.
Таких отложенных ( просроченных ) прерываний за секунду или минуту может накопиться
не мало, и о точности часов уже не может быть и речи. Конечно можно использовать
специально предназначенную для таких целей какую нибудь микросхему по типу DSхххх
со своим часовым кварцем, но грамотно написанная прога должна справляться с такими
задачами сама.
Это все го лишь пример. Реально я собираюсь применять динамическую индикацию, и
анти дребезговую подпрограмму опроса кнопок. И мне необходимо знать наихудший
сценарий, т.е. наибольшее время затрачиваемое контроллером на работу по выводу
индикации.
Протеусом к сожалению не пользуюсь - не нравиться синтетика, хотя вот жалею.)))
Все свои конструкции собираю в железе, и уже на нем идет отладка и подгонка.
Может быть вам не составит труда забить простейшую прогу в Протеус по выводу двух
строк на 16 знакомест, и сможете увидеть время занимаемое этим процессом?
Буду Вам очень признателен, заранее спасибо.)
Если нужно, такую мини прогу выложу здесь, но уверен что Вы с этим легко справитесь.

Сообщение отредактировал 555serg - Ср, 11.05.2016, 00:45
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Кирилица на дисплее WEH000802
Страница 1 из 212»
Поиск: