roboforum.ru

Технический форум по робототехнике.

BASCOM-AVR. Выводим русские буквы на символьный LCD

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение VIRUS_V8 » 27 авг 2009, 22:17

Появилась необходимость выводить на символьный дисплей русские буквы. Но тут оказалось не так просто ... если в BASCOM-AVR выводить русские буквы, то получаем на дисплее «непонятные» символы. Поковырявшись на просторах Интернета, нашел очень полезную программку LCD20 - брал http://www.robotsspace.ucoz.ru/LCD20.exe , может у кого то она уже и есть...
С помощью нее можно переводить русские буквы в «непонятные» для нас символы, но вот зато для LCD это как рас и понятные символы.
LCD20.jpg

В верхнем левом углу программы располагается дисплей (20 символа по 2 строки) в который нужно вводить то что вы хотите чтоб вывел дисплей в реальности, ниже выводятся так называемые «непонятные» символы (нас интересует панель For Bascom) которые нужно скопировать и потом вставить в то место вашей программы, где нужен вывод на LCD.
И все Работает!
DSC01662.jpg

Пока отлаживал программу наткнулся на грабли... симулятор, входящий в BASCOM-AVR не понимает символы преобразованные с помощью программы LCD20 и выводит что зря.
AVR Simulator.jpg

Я думал что все проделанное мной было напрасно, но тут возникла мысль что возможно симулятор просто «глючит» (до этого «заливать» программу в МК не пробовал, отлаживал в симуляторе), «залил» программу в МК и оказалось что так и есть. На LCD выводятся русские буквы.
Вот фото с русским алфавитом (буквы через одну строчная-прописная )
DSC01664.jpg

DSC01666.jpg

Вот только буква ё считается неопределенным символом в программе LCD20 и она ругается на него и заменяет символом пробел.
Так что кому надоело думать каким символом латинского алфавита можно заменить, например русскую букву «Щ» или «Ж», то это как раз для вас (у меня раньше такая проблема была).
Вот текст программы которая на первой строке выводит «Ура», на вторую строку «Работает»
Код: Выделить всёРазвернуть
'*******************************************************************************
' Автор: Сигаев Павел (VIRUS_V8)
' Дата:  22.08.2009 г.
' CPU:  ATmega8
' Тактовая частота:  4000000  Hz
' Компилятор: BASCOM-AVR 1.11.9.0

' Коментарии: тестовая версия программы - выводим руские буквы на символьный LCD
'
'*******************************************************************************

$regfile = "m8def.dat"                                      ' подключаем файл спецификации микроконтроллера ATmega8
$crystal = 4000000                                          ' указываем на какой частоте работаем
$hwstack = 32
$swstack = 10
$framesize = 40

' указываем конфигурацию подключения дисплея к выводам порта микроконтроллера (в нашем случае это порт D)
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2


' используем дисплей - 2 строки по 8 знакомест в каждой
' в BASCOM-AVR не определен дисплей 8х2, но это не проблема!!!
Config Lcd = 16 * 2                                         ' выбираем дисплей - 2 строки по 16 знакомест в каждой
' и работаем как с дисплеем 8х2 (используем только восемь (0-7) первых знакомест дисплея, последующие не будут видны на дисплее)

Cls                                                         ' очищаем содержимое дисплея
Cursor Off Noblink                                          ' делаем курсор не видимым
Home Upper : Lcd "©pa"                                      ' усанавливаем курсор на первую строку дисплея и выводим текст "Ура"
Lowerline : Lcd "PaІoїaeї"                                  ' устанавливаем курсор на вторую строку и выводим текст "Работает"

End                                                         ' конец программы
VIRUS_V8
 
Сообщения: 170
Зарегистрирован: 06 май 2008, 18:33
Откуда: г. Щигры, Курская обл.
прог. языки: Delphi, BASCOM-AVR(basic)
ФИО: Павел

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение MiBBiM » 27 авг 2009, 23:34

эм, а в чем секрет программы вы не узнали?
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение boez » 28 авг 2009, 01:26

Да судя по внешнему виду строчек - она заменяет часть русских буквы английскими, совпадающими по написанию, а те, для колторых таких нет - символами из кодировки Western, у которых коды соответствуют этим буквам в знакогенераторе ЖКИ.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение blindman » 28 авг 2009, 06:43

Нету никаких секретов. В русифицированных индикаторах действительно нет русских символов, написание которых совпадает с латинскими. А вот прочие присутствуют, но кодировка какая-то левая.

Кстати, можно и на нерусифицированные индикаторы выводить русские символы - у индикаторов есть область RAM, в которую можно записать коды собственных символов. Правда, маловато их там - 8 ЕМНИП.

Добавлено спустя 5 минут 2 секунды:
VIRUS_V8 писал(а):Пока отлаживал программу наткнулся на грабли... симулятор, входящий в BASCOM-AVR не понимает символы преобразованные с помощью программы LCD20 и выводит что зря.

Просто не стали заморачиваться с русификацией. Хотя есть ещё вариант, что просто не подозревают, что кроме английского алфавита что-то ещё существует :)
Вложения
ind_1_9_1.gif
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение VIRUS_V8 » 28 авг 2009, 18:18

MiBBiM, boez, blindman - вы не тек поняли. Я не хвастаюсь этой программой. и тем что добился.
Я создал этот топик не для того чтобы похвастаться что у меня все работает, а для того чтобы поделиться с участниками робофорума полезной информацией (я лично на этом форуме не нашел такого топика как в BASCOM-AVR выводить русские буквы да дисплей, если плохо искал - ткните пальцем). Ведь разве не для этого создан этот форум чтобы обсужать различные идеи, проекты, делиться полезной информацией с другими участниками форума и т.д.?
Если администраторы и большая часть участников форума считают что этот топик бесполезен и им не воспользуется ни один новичек который начал заниматься программированием МК, то удалите его.
VIRUS_V8
 
Сообщения: 170
Зарегистрирован: 06 май 2008, 18:33
Откуда: г. Щигры, Курская обл.
прог. языки: Delphi, BASCOM-AVR(basic)
ФИО: Павел

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение blindman » 28 авг 2009, 18:24

С чего ты взял, что кто-то так считает? Один задал вопрос, ещё двое - дополнили информацию. Ведь разве не для этого создан этот форум?
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение MiBBiM » 28 авг 2009, 18:38

кстати, секрет проги как раз таки и заключается в таблице соответствия кодов бэйсиковских и ЖКишных символов
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение nest » 28 авг 2009, 19:06

а я что то не пойму (не знаю деталей про Баском-АВР)...
если есть даташит на экран. в нём видны коды искомых символов. почему бы програмно не скармливать экрану эти коды ? зачем что то конвертировать, мудрить ...

ну и о проге:
обязательно нужно отметить, что если в используемом экране отсутствуют прошитые символы кирилицы (что встречается достаточно часто), то программа ничем не поможет. И остаётся только вариант с расположением собственных символов в RAM экрана.
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
Предупреждения: -4
прог. языки: asm

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение Duhas » 28 авг 2009, 21:48

nest, я не вникал в прогу вообще, но имхо, она делает "переадресацию" ... все равно что на каком нить советском УМК-80... хочешь вывести символ C - берешь смещение 0x0C и начальный адрес таблицы перекодировки.. и достаешь оттуда нужный байт )

а для чего она нужна.. ну мало ли.. мб по уарту будет приходить строка а тебе ее нада на ЖКИ,. вот и юзаем..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение VIRUS_V8 » 28 авг 2009, 23:08

nest
ну и о проге:
обязательно нужно отметить, что если в используемом экране отсутствуют прошитые символы кирилицы (что встречается достаточно часто), то программа ничем не поможет. И остаётся только вариант с расположением собственных символов в RAM экрана.


согласен, этот момент я упустил
VIRUS_V8
 
Сообщения: 170
Зарегистрирован: 06 май 2008, 18:33
Откуда: г. Щигры, Курская обл.
прог. языки: Delphi, BASCOM-AVR(basic)
ФИО: Павел

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение blindman » 29 авг 2009, 05:53

nest писал(а):обязательно нужно отметить, что если в используемом экране отсутствуют прошитые символы кирилицы (что встречается достаточно часто), то программа ничем не поможет. И остаётся только вариант с расположением собственных символов в RAM экрана.

А я разве не то же самое написал?
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: BASCOM-AVR. Выводим русские буквы на символьный LCD

Сообщение uni » 13 мар 2012, 21:06

Вот как делать это правильно:

https://mysvn.ru/schoolbell/pbiidemo/bascom/LCD.bas

Как использовать: https://mysvn.ru/schoolbell/pbiidemo/bascom/PBIIDemo.bas

Настройка модуля тут: https://mysvn.ru/schoolbell/pbiidemo/bascom/LCD_Config.bas
Вложения
Screen04.PNG
Русские символы на бейсике
Россия навсегда!
Аватара пользователя
uni
 
Сообщения: 23
Зарегистрирован: 11 фев 2007, 21:13
Откуда: Екатеринбург
Skype: viacheslavmezentsev
прог. языки: VB6, C++, OPascal, C#, Java, Win32Asm, ...
ФИО: Мезенцев Вячеслав Николаевич


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15