| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Кирилица на LCD
12.08.2008, 08:56
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Кирилица на LCD
Здравствуйте, хочу спросить следущее:
при использовании const unsigned char для вывода кирилицы на LCD почему-то объединяются несколько переменных?
const unsigned char Vnimanie [] = {0x42, 0xbd, 0xb8, 0xbc, 0x61, 0xbd, 0xb8, 0x65}; //"Внимание"
const unsigned char termodatcik1ov1 [] = {0xbf,0x65,0x70,0xbc,0x6f,0x67,0x61,0xbf,0xc0,0xb8 ,0xba,0x28,0x6f,0xb3,0x29};
//здесь вывожу
lcd_clear ();
lcd_gotoxy (0, 0); //выводим предупреждение на LCD "! Внимание термодатчик(ов) не обнаружен(о) !"
lcd_putsf ("!");
lcd_gotoxy (2, 0);
lcd_putsf (Vnimanie);
lcd_gotoxy (11, 0);
lcd_putsf (termodatcik1ov1);
lcd_gotoxy (27, 0);
lcd_putsf (ne);
lcd_gotoxy (0, 1);
lcd_putsf (obnarugen1o1);
lcd_gotoxy (13, 1);
lcd_putsf ("!");
И у меня все смешивается.
---
Спасибо, с уважением, Олег.
|
|
|
|
12.08.2008, 09:59
|
|
|
Временная регистрация
Регистрация: 29.09.2006
Сообщений: 64
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 1 сообщении
|
Как все сложно.
Судя по коду, пользовал CodevisionAVR. Когда-то тоже в нем писал.
Библиотека lcd поддерживает перенос строки в сообщениях. И Ваше сообщение можно вывести попроще:
const char lcdmsg[] = "Line1 msg
Line2 msg"; // в кодах набирать поленился
lcd_clear(); // очичает и переводит курсор в (0,0)
lcd_puts(lcdmsg);
|
|
|
|
13.08.2008, 08:08
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Да так получится, но мне все же интересно как выводить сообщения на LCD содержащие одинаковые фразы, почему они смешиваются?
Вот исходник с результатом:
-- Прилагается рисунок: --
Прикрепленный файл: 6974086.rar
|
|
|
|
13.08.2008, 10:22
|
|
|
Временная регистрация
Регистрация: 29.09.2006
Сообщений: 64
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 1 сообщении
|
Для 4-строчного индикатора используется отдельная библиотека. Я с ней не работал, сказать ничего не могу. Но где-то читал, что может она быть сыровата. Правда точно и не уверен в этом.
Просто рекомендую сделать все пошагово. Включить курсор, проверить как работает lcd_gotoxy(), или вводить задержки на 1-2 сек перед выводом сообщения на ЖКИ, чтобы видеть, где сбоит.
|
|
|
|
14.08.2008, 09:57
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
В общем, добавил нули в конце строк для вывода на LCD, теперь выводятся нормально.
Буду продолжать совершенствовать свою конструкцию.
|
|
|
|
14.08.2008, 09:57
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
В общем, добавил нули в конце строк для вывода на LCD, теперь выводятся нормально.
Буду продолжать совершенствовать свою конструкцию.
|
|
|
|
14.08.2008, 12:40
|
|
|
Временная регистрация
Регистрация: 29.09.2006
Сообщений: 64
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 1 сообщении
|
Странно, я никогда не ставил в конце строк '\0' и работало нормально. Сам компилятор ставит в конце строк нули. Более того, он выравнивает по границе слова, т.е. ставит два нуля если четное количество символов в строке.
|
|
|
|
14.08.2008, 15:06
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
|
Сообщение от GLVlad
|
|
Странно, я никогда не ставил в конце строк '\0' и работало нормально. Сам компилятор ставит в конце строк нули. Более того, он выравнивает по границе слова, т.е. ставит два нуля если четное количество символов в строке.
|
Я имел ввиду:
было
|
Код:
|
const unsigned char Vnimanie [] = {0x42, 0xbd, 0xb8, 0xbc, 0x61, 0xbd, 0xb8, 0x65}; //"Внимание" |
,а должно быть
|
Код:
|
const unsigned char Vnimanie [] = {0x42, 0xbd, 0xb8, 0xbc, 0x61, 0xbd, 0xb8, 0x65, 0}; //"Внимание" |
|
|
|
|
15.08.2008, 22:10
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Вообще то предыдущие строки стирать надо перед выводом...
__________________
Осторожно , злой кот
|
|
|
|
18.08.2008, 10:10
|
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
|
Сообщение от dosikus
|
|
Вообще то предыдущие строки стирать надо перед выводом...
|
вообще-то стирал, что нужно было
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
LCD со встроенным МК
|
Alex_Megavolt_79 |
Микроконтроллеры, АЦП, память и т.д |
5 |
17.10.2007 23:06 |
|
2-x Строчный LCD и ПК
|
targetorsk |
Микроконтроллеры, АЦП, память и т.д |
1 |
09.02.2007 12:35 |
|
lcd+atmega
|
sma-etu |
Микроконтроллеры, АЦП, память и т.д |
4 |
09.02.2007 10:29 |
|
LCD
|
ur5mjc |
Информация по радиокомпонентам |
3 |
09.01.2007 02:59 |
Часовой пояс GMT +4, время: 18:36.
|
|