Переключение кодовых страниц в ОЛЕД-дисплее
|
|
vladh |
Дата: Вт, 20.11.2018, 14:33 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Добрый день, уважаемые. У меня имеется OLED дисплей типа WEH002004. В обычном состоянии он нормально выводит латиницу, а для того чтобы он начал выводить кириллицу необходимо перейти на другую кодовую страницу. В Protone это делается так, посылается команда: Print $FE, $2A. все, дальше можно как обычно посылать криллистические тексты соответствующим образом конвертированные. А как послать такую команду в Микробейсике? Может кто знает, подскажите пожалуйста.
|
|
|
|
ivan_fd |
Дата: Вт, 20.11.2018, 16:36 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Так попробуйте
|
|
|
|
vladh |
Дата: Вт, 20.11.2018, 16:55 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) Так попробуйте Попробовал. Не получилось. А вообще, интересно, откуда Вы взяли то, что можно с помощью Lcd_Cmd можно передавать не только предлагаемые компилятором словосочетания? Вроде в хелпе этого нет. Хотя при компиляции программа не ругается.
|
|
|
|
ivan_fd |
Дата: Вт, 20.11.2018, 17:48 | Сообщение # 4 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Эти словосочетания, есть байтовые константы. sub procedure Lcd_Cmd(dim out_char as byte)
Так же само в Протоне$FE - мы говорим что нужно передавать команду, а далее саму команду FUNCTION SET INSTRUCTION. Где первые два бита есть выбор страницы символов
Цитата FT1, FT0: FONT TABLE SELECTION These two bits are used to select one font table ou t of the three for further process. When (FT1, FT0) = (0, 0), the ENGLISH_JAPANESE CHARACTER FONT TABLE will be selected. (FT1, FT0) = (0, 1), the WESTERN EUROPEAN CHARACTER FONT TABLE will be selected. (FT1, FT0) = (1, 0), the ENGLISH_RUSSIAN CHARACTER FONT TABLE will be selected. (FT1, FT0) = (1, 1), N/A Хотя может они и отрубили все кроме ихних команд. Тогда писать все самому.
|
|
|
|
ivan_fd |
Дата: Вт, 20.11.2018, 17:53 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Посмотрите в протеусе, что он шлет. Может тут дело в 4 битном режиме.
|
|
|
|
vladh |
Дата: Ср, 21.11.2018, 09:40 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) Так попробуйте Доброе утро, Иван. Сегодня с утра вновь стал разбираться и выявил следующее. Оказалось, что в живом индикаторе текст располагается справа налево, т.е. если я указываю 1 строка и 5 колонка текст размещается от этой начальной точки влево! Почему? Так вот после этой находки я вновь попробовал ввести Вашу команду, то увидел, что да, появились русские буквы, но справа налево. Вы Иван большая умница. В который раз Вы мне здорово помогаете! Огромное Вам спасибо. Но я так и не понял, откуда Вы узнали, что можно вводить не только те команды, которые описаны в ХЕЛПЕ, но и команды, которые обозначаются кодами? И еще. Почему в одной и той же модели в Протеусе если вставить код написанный в протоне и код написанный в микробейсике выводятся (на экран ЖКИ) одинаково, а на реальном индикатоле по разному?
|
|
|
|
ivan_fd |
Дата: Ср, 21.11.2018, 10:38 | Сообщение # 7 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Цитата vladh ( ) т.е. если я указываю 1 строка и 5 колонка текст размещается от этой начальной точки влево! Почему? Тут, я так думаю, что команды MikroBasic заточены именно под HD44780, а в Вашем дисплее другой контроллер. Хотя они очень похожи. Если я правильно понял, сдвиг идет не вперед, а назад. Может посмотреть в сторону регистра ENTRY MODE SET INSTRUCTION бит I/D. А в Протоне нормально выводит?
Цитата vladh ( ) Но я так и не понял, откуда Вы узнали, что можно вводить не только те команды, которые описаны в ХЕЛПЕ, но и команды, которые обозначаются кодами? Если размышлять логически, то команды LCD MikroBasic (они же константы) прописаны в ихних библиотеках так, например:
_LCD_CLEAR = %00000001 _LCD_RETURN_HOME = %00000010
Так, что нам мешает прописать там свое?
Цитата vladh ( ) И еще. Почему в одной и той же модели в Протеусе если вставить код написанный в протоне и код написанный в микробейсике выводятся (на экран ЖКИ) одинаково, а на реальном индикатоле по разному? А вот это не понял, поподробнее опишите.
Сообщение отредактировал
ivan_fd - Ср, 21.11.2018, 10:40
|
|
|
|
vladh |
Дата: Ср, 21.11.2018, 10:51 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) А вот это непонял, поподробнее опишите. Я в Протеусе нарисовал схему, состоящую из МК - 18F4458, ЖКИ - LM044L и клавиатуры - KEYPAD-PHONE. В одном случае я запускаю на симуляцию эту схему указав в свойствах МК файл *.bas созданный в Протоне, в другом случае файл *.cof созданный в МБ. В Протеусе все работает правильно и в первом и во втором случае. В живой схеме я загружаю *hex файлы созданные этими компиляторами. В случае с Протоном все работает как и в Протеусе, в случае МБ тексты пишутся по арабски, т.е. слева направо.
|
|
|
|
ivan_fd |
Дата: Ср, 21.11.2018, 11:13 | Сообщение # 9 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Попробуйте написать такую инициализацию. Lcd_Init() потом--- Delay_ms(50) Lcd_Cmd(0x2A) - Function Set Наши русские символы... Delay_us(5000) Lcd_Cmd(0x08) - Display On/Off control - дисплей отключен, курсор отключен, мигание курсора отключено Lcd_Cmd(0x06) - ENTRY MODE SET INSTRUCTION - увеличиваем счетчик на 1, без сдвига экрана(это тот сдвиг, что вы спрашивали) Lcd_Cmd(0x17) - CURSOR/DISPLAY SHIFT INSTRUCTION - Lcd_Cmd(0x01) - CLEAR DISPLAY INSTRUCTION - очищаем дисплей, то же самое, что и Lcd_Cmd(_LCD_CLEAR ) Lcd_Cmd(0x02) - RETURN HOME INSTRUCTION Lcd_Cmd(0x0C) - Display On/Off control - дисплей включен, курсор отключен, мигание курсора отключено Delay_us(5000)
|
|
|
|
vladh |
Дата: Ср, 21.11.2018, 11:52 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) Попробуйте написать такую инициализацию Мысли, которые Вас все время преследуют все таки успевают Вас догонять. Молодчина. Случилось. Заработало. А растолковать попробуете? 1. Зачем задержки? В примерах МБ их почти нет. 2. Для чего в 4 строке отключаете всё? 3. Это что за счетчик? 4. Что это за команда - CURSOR/DISPLAY SHIFT INSTRUCTION?Добавлено (21.11.2018, 12:31) --------------------------------------------- Да, и ещё один вопрос: Где Вы взяли коды команд?
|
|
|
|
ivan_fd |
Дата: Ср, 21.11.2018, 12:55 | Сообщение # 11 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
В примерах МБ их нету, потому, что он заточен под контроллер HD44780. Сначала мы делаем ихнюю инициализацию Lcd_Init() - она инициализирует дисплей под 4-х битный режим, и все, что там нужно. Далее мы делаем свою, так сказать, до-инициализацию. Там нужны задержки.
Цитата vladh ( ) 2. Для чего в 4 строке отключаете всё? Можете убрать, это так на всякий случай, что бы мусор не лез.
Цитата vladh ( ) 3. Это что за счетчик? I/D: режим смещения счетчика адреса, 1 - увеличение, 0 - уменьшение.
Цитата vladh ( ) 4. Что это за команда - CURSOR/DISPLAY SHIFT INSTRUCTION? Эта инструкция используется для перемещения курсора или экрана. Биты S/C и R/L.
S/C: 0 - сдвигается курсор. 1 - сдвигается экран. R/L: направление сдвига. 0 - влево, 1 - вправо. У нас прописано 01 - то есть курсор сдвигается вправо.
Цитата vladh ( ) Да, и ещё один вопрос: Где Вы взяли коды команд? В даташите на дисплей.
Сообщение отредактировал
ivan_fd - Ср, 21.11.2018, 12:57
|
|
|
|
vladh |
Дата: Ср, 21.11.2018, 13:29 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) Это что за счетчик? Иван, я так и не понял, что это за счетчик. А он похоже Важен. Я оставил только три команды. Это загрузка русской страницы, переключение счетчика (0Х06) и выключение курсора (0x0C) и все работает как надо. Кстати, если эту последнюю команду убрать, то всё что надо светится но есть немного шума в виде курсора.Добавлено (21.11.2018, 13:30) ---------------------------------------------
Цитата ivan_fd ( ) В даташите на дисплей. А я как в том случае "смотришь в книгу - видишь фигу".
|
|
|
|
ivan_fd |
Дата: Ср, 21.11.2018, 15:04 | Сообщение # 13 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Цитата vladh ( ) Иван, я так и не понял, что это за счетчик. Ну как бы это сказать, как я понимаю, может я не правильно выражаюсь. Это не сам счетчик, а режим для смещения адреса счетчика. В даташите на дисплей WEH002004ALPP5N00000.pdf страница 38, регистр ENTRY MODE SET INSTRUCTION Биты I/D и S. Настраиваются в паре: I/D: режим смещения счетчика адреса, 1 - увеличение, 0 - уменьшение. S: флаг сдвига содержимого экрана. 0 - сдвиг экрана не производится. 1 - после записи в DDRAM кода символа экран сдвигается в направлении определенном битом I/D. 1 - сдвигается влево, 0 - вправо. То есть настраиваем как будут поводить себя указатели на адреса. Например, в нашем случае, с нашими настройками, где I/D равен 1, а S равен 0, сам экран мы не двигаем, а сдвигаем, в сторону увеличения, указатель где выводить следующий символ. Это я так понимаю, может и не прав.
|
|
|
|
vladh |
Дата: Ср, 21.11.2018, 15:23 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
258
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd ( ) Это я так понимаю, может и не прав Да, я уже тоже где то так подумал. Счетчик, который занимается размещение очередных строковых переменных если их адрес явно не указан. Мне, конечно, в мои 66 лет и без знания ихнего языка тяжело это сообразить. Но хорошо что есть рядом толковые и отзывчивые люди. Спасибо.
|
|
|
|
Bogdanivf |
Дата: Чт, 09.11.2023, 08:59 | Сообщение # 15 |
Группа:
Заблокированные
Ранг:
Начал соображать
Сообщений:
22
Замечания:
±
На сайте с 19.04.2021
Статус:
Offline
|
Привет господа. Есть такой интересный сайт для заказа услуг стоматологии в Минске.К вашим услугам лучшие стоматологи Минска с многолетним стажем.стоматология минск,удаление зуба, отбеливание зубов,лечение зуба,удаление зуба мудрости,стоматология минск цены и стоматология платные услуги минск. В случаях, когда терапевтическая стоматология бессильна, приходится прибегать к хирургической. А если зубосохраняющие операции не принесут результата, прибегают к удалению зуба.Необходимость вырвать зуб возникает при:полном или сильном разрушении кариесом;наличии кисты;острых формах периодонтита;количестве зубов выше нормы;неправильном расположении в десне — актуально для зубов мудрости, нередко растущих перпендикулярно основному зубному ряду;установке брекет-системы или зубного протеза;физическом травмировании, смещении в десне, невозможности восстановительной операции.Рекомендации после удаления.После операции в десне остается открытая лунка, на которую иногда накладываются швы. Нежелательно касаться лунки языком, дав сформироваться кровяному сгустку. По той же причине рекомендуется не принимать пищу на протяжении 3-4 часов после посещения стоматолога. Необходимо некоторое время воздерживаться от горячей еды и напитков, а также алкоголя. Несоблюдение рекомендации приведет к увеличению периода заживления и болезненным ощущениям.Качественно и безопасно вырвать зуб в Минске можно платно. Цена удаления зуба в стоматологии зависит от количества корней, расположения, сложности удаления. Операция проводится квалифицированными хирургами-стоматологами. От всей души Вам всех благ! профессиональная гигиена полости рта включает следующие мероприятия поставить коронку на зуб металлокерамика сделать анестезию зуба временной зуб удаление имплантация зубов ребенку полностью съемные зубные протезы цены где поставить пластинку на зубы пластика уздечки языка цена имплантация зубов 4 или 6 наращивание кости для имплантации зубов стоимость керамической коронки микропротезирование в стоматологии металлокерамика верхних зубов современное лечение периодонтитов отбеливание пломбы переднего зуба винир зубов из фотоматериалов срочное удаление зуба сгусток после удаления зуба мудрости хронический апикальный периодонтит лечение процедура имплантации зуба отбеливание зубов системой beyond силиконовые протезы съемные зубные цена имплантация зубов в минске стоимость врач который ставит пластинки на зубы стоимость металлических брекетов на обе челюсти гигиена полости рта показания процедура проведения вкладка стоматология минск реставрация композитными винирами после удаления зуба на десне белый налет удаление пародонтитного зуба керамическая коронка цена минск лифтинг верхней челюсти при имплантации зубов дырка после удаления зуба мудрости последствия удаления зуба мудрости чем полоскать после удаления зуба полный верхний съемный зубной протез плюсы имплантации зубов киста десны удаление зубов имплантация зубов украине виды элайнеров профессиональную чистку зубов кариес композитные виниры имплантация зуба боли снимок зуба минск пломбирование зуба минск металлическая и металлокерамическая коронка удаление зуба остался кусок установка зубных виниров удаление первого зуба боль после имплантации зуба отзывы
купить набор сверл по металлу
|
|
|
|