Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Темыч
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 83
1

LCD_WH1602L на STM32

06.07.2016, 11:44. Просмотров 1161. Ответов 11
Метки нет (Все метки)

Добрый день.
Имеется индикатор на I2C без поддержки русского языка.Решил написать функцию вывода своего символа и создал алфавит,пишу в одну и туже ячейку необходимые символы,затем перезаписываю их,но в итоге все символы заменяются на последний. Например : "Привет мир"->"Рррррр ррр". Где я ошибся?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
unsigned char kiril_Big[255][16]=
{
{0x01,0xE1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xF1,0x11,0x11,0x11,0x11,0x00,0x00},//А 0
{0x11,0xF1,0x11,0x11,0x11,0x01,0x11,0xE1,0x11,0x11,0x11,0x11,0x11,0xE1,0x01,0x01},//Б 1
{0x11,0xE1,0x11,0x11,0x11,0x11,0x11,0xE1,0x11,0x11,0x11,0x11,0x11,0xE1,0x01,0x01},//В 2
{0x11,0xF1,0x11,0x11,0x11,0x01,0x11,0x01,0x11,0x01,0x11,0x01,0x11,0x01,0x01,0x01},//Г 3
{0x01,0xF1,0x01,0x51,0x01,0x51,0x01,0x51,0x01,0x91,0x11,0x11,0x11,0xF1,0x11,0x11},//Д 4
{0x11,0xF1,0x11,0x01,0x11,0x01,0x11,0xE1,0x11,0x01,0x11,0x01,0x11,0xF1,0x01,0x01},//Е 5
{0x01,0xA1,0x11,0xF1,0x11,0x01,0x11,0x01,0x11,0xE1,0x11,0x01,0x11,0x01,0x11,0xF1},//Ё 6
{0x11,0x51,0x11,0x51,0x11,0x51,0x01,0xE1,0x11,0x51,0x11,0x51,0x11,0x51,0x01,0x01},//Ж 7
{0x11,0xE1,0x01,0x11,0x01,0x11,0x01,0xE1,0x01,0x11,0x01,0x11,0x11,0xE1,0x01,0x01},//З 8
{0x11,0x11,0x11,0x11,0x11,0x31,0x11,0x51,0x11,0x91,0x11,0x11,0x11,0x11,0x01,0x01},//И 9
{0x01,0xA1,0x01,0x41,0x11,0x11,0x11,0x31,0x11,0x51,0x11,0x91,0x11,0x11,0x01,0x01},//Й 10
{0x11,0x11,0x11,0x21,0x11,0x41,0x11,0x81,0x11,0x41,0x11,0x21,0x11,0x11,0x01,0x01},//К 11
{0x01,0xF1,0x01,0x51,0x01,0x51,0x01,0x51,0x01,0x51,0x11,0x51,0x01,0x91,0x01,0x01},//Л 12
{0x11,0x11,0x11,0xB1,0x11,0x51,0x11,0x51,0x11,0x11,0x11,0x11,0x11,0x11,0x01,0x01},//М 13
{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xF1,0x11,0x11,0x11,0x11,0x11,0x11,0x01,0x01},//Н 14
{0x01,0xE1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x01,0xE1,0x01,0x01},//О 15
{0x11,0xF1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11},//П 16
{0x11,0xE1,0x11,0x11,0x11,0x11,0x11,0xE1,0x11,0x01,0x11,0x01,0x11,0x01,0x01,0x01},//Р 17
{0x01,0xE1,0x11,0x11,0x11,0x01,0x11,0x01,0x11,0x01,0x11,0x11,0x01,0xE1,0x01,0x01},//C 18
{0x11,0xF1,0x01,0x41,0x01,0x41,0x01,0x41,0x01,0x41,0x01,0x41,0x01,0x41,0x01,0x01},//T 19
{0x11,0x11,0x11,0x11,0x11,0x11,0x01,0xA1,0x01,0x41,0x01,0x81,0x11,0x01,0x01,0x01},//У 20
{0x01,0x41,0x01,0xE1,0x11,0x51,0x11,0x51,0x11,0x51,0x01,0xE1,0x01,0x41,0x01,0x01},//Ф 21
{0x01,0x01,0x11,0xB1,0x01,0xE1,0x01,0x41,0x01,0xE1,0x11,0xB1,0x01,0x01,0x01,0x01},//Х 22
{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xF1,0x01,0x11,0x01,0x01},//Ц 23
{0x11,0x11,0x11,0x11,0x11,0x11,0x01,0xF1,0x01,0x11,0x01,0x11,0x01,0x11,0x01,0x01},//Ч 24
{0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0xF1,0x01,0x01},//Ш 25
{0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0x51,0x11,0xF1,0x01,0x11},//Щ 26
{0x11,0x81,0x01,0x81,0x01,0x81,0x01,0xE1,0x01,0x91,0x01,0x91,0x01,0xE1,0x01,0x01},//Ъ 27
{0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x91,0x11,0x51,0x11,0x51,0x11,0x91,0x01,0x01},//Ы 28
{0x11,0x01,0x11,0x01,0x11,0x61,0x11,0x91,0x11,0x11,0x11,0x11,0x11,0xE1,0x01,0x01},//ь 29
{0x11,0xE1,0x11,0x11,0x01,0x11,0x01,0x71,0x01,0x11,0x11,0x11,0x11,0xE1,0x01,0x01},//э 30
{0x11,0x21,0x11,0x51,0x11,0x51,0x11,0xD1,0x11,0x51,0x11,0x51,0x11,0x21,0x01,0x01},//Ю 31
{0x01,0xF1,0x11,0x11,0x11,0x11,0x01,0xF1,0x01,0x51,0x01,0x91,0x11,0x11,0x01,0x01},//я 32
};
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void write_symbol(int nomer)
{
 
 
    transmit(0x40);
    Delay_us();   //команда записи своего символа по адресу 0x00
    transmit(0x00);
   for(i=0;i<16;i++)
   {
    transmit(kiril_Big[nomer][i]); //Запись данных
    Delay_us();
 
   }
       transmit(0x80);
       Delay_us();    //указываю строку и столбец для вывода
       transmit(0x30);
 
  transmit(0x01);
    Delay_us(); //выводим символ 0х00
    transmit(0x01);
 
 
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2016, 11:44
Ответы с готовыми решениями:

Общение с барометром MS5540 на STM32 (Arduino to STM32)
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не...

Чем связать STM32 + STM32 в одном корпусе?
Есть 2 платы: (1) - STM32 (Вывод на LCD + запись SD) и (2) - STM32F4 (обработка...

stm32 + FSMC + stm32
Доброе времени суток. Возможно ли к Ftosh памяти подцепить два Stm32F4. Один...

STM32 - STM32 I2C
*****ПРОБЛЕМА ИСПРАВЛЕНА****ОТВЕТ НИЖЕ , НЕ ВЧИТЫВАЙТЕСЬ В КОД...

STM32: F0 vs F1
После беглого ознакомления со спектром МК STM32 мое внимание привлекли 2...

11
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,208
Завершенные тесты: 1
06.07.2016, 18:17 2
Цитата Сообщение от Темыч Посмотреть сообщение
unsigned char kiril_Big[255][16]=
это я так понимаю кодогенератор?
и как ты его собираешься загрузить в WH1602 он дозволяет только 8 символов пользователя
0
Темыч
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 83
06.07.2016, 22:22  [ТС] 3
Цитата Сообщение от ValeryS Посмотреть сообщение
это я так понимаю кодогенератор?
Верно)
Цитата Сообщение от ValeryS Посмотреть сообщение
и как ты его собираешься загрузить в WH1602 он дозволяет только 8 символов пользователя
Так я думаю можно записать символ,прочитать его из памяти вывести на экран и заменить его новым,разве нет?
0
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,208
Завершенные тесты: 1
06.07.2016, 23:00 4
Цитата Сообщение от Темыч Посмотреть сообщение
Так я думаю можно записать символ,прочитать его из памяти вывести на экран и заменить его новым,разве нет?
нет
одновременно на экране будут выводится только 8 запрограммированных символов, и зашитые на заводе
можешь подобрать слова так чтобы одновременно было только 8 символов кирилицы, остальное заменяй латиницей
так что,мое мнение, переходи на графические дисплеи
3
Темыч
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 83
06.07.2016, 23:56  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
переходи на графические дисплеи
Спасибо за совет,этот LCD в комплексе измерительных приборов,так что графический нецелесообразно использовать)
0
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,208
Завершенные тесты: 1
07.07.2016, 00:26 6
Цитата Сообщение от Темыч Посмотреть сообщение
так что графический нецелесообразно использовать)
так прикупи тогда русифицированный, рублей 300 стоит, правда платку i2C самому придется перепаять
0
Rius
07.07.2016, 07:06
  #7

Не по теме:

Цитата Сообщение от Темыч Посмотреть сообщение
так что графический нецелесообразно использовать)
Да ладно?..
LCD_WH1602L на STM32

0
Темыч
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 83
07.07.2016, 18:33  [ТС] 8
Цитата Сообщение от Rius Посмотреть сообщение
Да ладно?..
Хотя,можно попробовать
0
Voland_
1689 / 1034 / 97
Регистрация: 04.01.2010
Сообщений: 3,484
07.07.2016, 20:15 9
Темыч, ну вообще-то не так уж и много символов, которые будут в реальной жизни выводиться на экране 16х2, и замены которым нет в английском ascii. Особенно если предположить только верхний регистр.
Даже в вашем случае: "Привет мир" -> содержит 7 уникальных символов (пробел не в счет), 2 из которых есть в ascii (это 'p' и 'e'). Так что задача вывода смесью из динамического набора "произвольных" и определенного набора "похожих" символов может быть еще и интересна чисто из любопытства реализации.
Что насчет графики
Цитата Сообщение от Rius Посмотреть сообщение
Да ладно?..
есть одно только "но". Все-таки графические экраны работают медленнее, и должны использовать гораздо больше ресурсов МК. Например, даже для вашей задаче, судя, по экрану - должнен быть довольно производительный МК, чтобы экран не тормозил при выводе, и при этом все параметры мерялись онлайн. Хотя, для STM32 на максимальных частотах и использовании DMA эта задача может быть плевой, но для AVR или STM8 это будет ощутимо.
0
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,208
Завершенные тесты: 1
07.07.2016, 21:24 10
Цитата Сообщение от Voland_ Посмотреть сообщение
Например, даже для вашей задаче, судя, по экрану - должнен быть довольно производительный МК,
не забывай что современные дисплеи содержат на борту миникомп
так что ресурсы нужны только для смены картинки, а тут не мультипликация ведь будет
по большому счету( по самому дисплею) WH1602L тоже графический дисплей, только "мозги" его делают символьным
правда эти же "мозги" занимаются регенерацией, заполнением видеобуфера, упрощая нам работу

Добавлено через 2 минуты
Цитата Сообщение от Voland_ Посмотреть сообщение
2 из которых есть в ascii (это 'p' и 'e').
но если
Цитата Сообщение от Voland_ Посмотреть сообщение
Особенно если предположить только верхний регистр.
имеем еще В Т М
ПРИВЕТ МИР

Добавлено через 13 минут
Темыч, попробуй вывести на экран все символы от 0 до 255(0xFF)
возможно что добрые друзья китайцы и ввели в дисплей кирилицу, но по своему по китайски,коды могут не совпадать
0
Темыч
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 83
09.07.2016, 16:03  [ТС] 11
Цитата Сообщение от ValeryS Посмотреть сообщение
Темыч, попробуй вывести на экран все символы от 0 до 255(0xFF)
возможно что добрые друзья китайцы и ввели в дисплей кирилицу, но по своему по китайски,коды могут не совпадать
Похоже мне попались отнюдь не добрые китайцы
0
sammanta
3 / 3 / 0
Регистрация: 31.05.2015
Сообщений: 58
Завершенные тесты: 1
07.10.2016, 16:27 12
Ищете даташит конкретно на ваш дисп и смотрите какая ( какие ) таблица в него зашита. Сейчас те, что подороже имеют несколько таблиц ASCii ( в том числе и кириллических символов).
Выбор нужной таблицы во время инициализации дисплея.
0
07.10.2016, 16:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2016, 16:27

STM32 и CAN
А как вообще выглядит использование встроенного can в stm32. Там нужна какая-то...

STM32 + SD
Кто-нибудь подключал карту памяти к STM32 ? Помогите с функциями обмена с...

stm32+wi fi
Здравствуйте есть идея разработать движущую машинку с управлением через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru