Помогите с кодом на си для AVR (Atmega8)

Обсуждаем контроллеры компании Atmel.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Доброе утро!
Вот я вроде всё сделал правильно но почему то экранчик чист.
А хотя логически всё вроде правильно.
Скрины прикрепил.
Вложения
Снимок экрана 2022-12-07 085554.png
(12.67 КБ) 48 скачиваний
Снимок экрана 2022-12-07 085512.png
(33.13 КБ) 46 скачиваний
Реклама
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Добрый вечер!
Опять возник вопрос к знающим людям.
Вывожу слова но они в перемешку.
Прошу посмотрите что не так?



// запись в cgram и печать в строку
void stroka_rus(const void *text, uint8_t lines, uint8_t rows,uint8_t x,uint8_t y)
{
LCDcommand(0x40);
Busy_flag();
CPORT|=(1<<RS);
const uint8_t *ptext = text;
for (uint8_t i=0; i<lines; i++)
for(uint8_t j=0; j<rows; j++)
Send_byte(ptext[i*rows + j]);
CPORT&=~(1<<RS);
LCDGotoXY(x,y);
uint8_t i=0x00;
for(i=0x00;i<lines;i++)
LCDdata(i);
}
while(1)
{
stroka_rus(text_1,6,8,4,0);
clear();
stroka_rus(text_2,8,8,3,1);

}

https://disk.yandex.ru/i/lun55DhIp2JBmw вот видео в протеусе

Добавлено after 2 minutes 21 second:
void clear(void)
{

LCDcommand(0x40);
Busy_flag();
CPORT|=(1<<RS);
const uint8_t clr[8][8]={};
const uint8_t *pclr = clr;
for(uint8_t i=0; i<8; i++)
for(uint8_t h=0; h<8; h++)
Send_byte(pclr[i*8 + h]);
CPORT&=~(1<<RS);
}
Реклама
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Доброго дня!
Я уже обращался ранее сюда в этот форум по вопросу вывода Кириллицы на LCD1602.
Люди помогли разобраться спасибо им.
Но тут появилась новая проблема.
Я не могу корректно вывести слова.
Проблема в том что один массив залазит на другой.
И всё смешивается. Я же не говорю про длинные слова более 8 байт.
Как можно затирать пред идущую информацию для повторного вывода слога
чтоб составить слово нормально?
Там на фотках видно как это всё выглядит.

void stroka_rus(const void *text, uint8_t lines, uint8_t rows,uint8_t x,uint8_t y)
{
LCDcommand(CGRAM_ADDR);
Busy_flag();
CPORT|=(1<<RS);
const uint8_t *ptext = text;
for (uint8_t i=0; i<lines; i++)
for(uint8_t j=0; j<rows; j++)
Send_byte(ptext[i*rows + j]);
CPORT&=~(1<<RS);
LCDGotoXY(x,y);
Busy_flag();
CPORT|=(1<<RS);
uint8_t i=0;
for(i=0;i<lines;i++)
LCDdata(i);
}
Вложения
3.jpg
(186.67 КБ) 56 скачиваний
2.jpg
(200.08 КБ) 58 скачиваний
1.jpg
(183.87 КБ) 59 скачиваний
VNS
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1635
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Сообщение VNS »

[uquote="ARV",url="/forum/viewtopic.php?p=4328841#p4328841"]насколько я знаю, как только вы обновили символ с кодом, предположим, 0х01, то на дисплее все позиции с этим кодом будут показывать обновленный символ, так что "до бесконечности" не выйдет - максимум 8 разных одновременно[/uquote]
Проверил в подтверждении конкретно на дисплее… подопытный китаец... так и есть, "максимум 8 разных одновременно"… :)
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Та Китаец!
Без Кириллицы.
Ну как-то можно обойти?
Наверное есть варианты?
Был бы с Кирилллицей вообщеб проблем не возникло бы...
Реклама
VNS
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1635
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Сообщение VNS »

Если вы при выводе слов в строке производите запись новой буквы в ОЗУ ЖКИ, то потом необходимо установить дополнительно курсор в то место откуда вы будете продолжать выводить буквы следующего слова… или выводите все слова в строке без дополнительных прерываний для записи новых букв в ОЗУ ЖКИ…
Это китаец без кириллицы :)
СпойлерИзображение
Последний раз редактировалось VNS Вс дек 11, 2022 12:31:27, всего редактировалось 3 раза.
Реклама
Вымогатель припоя
Сообщения: 599
Зарегистрирован: Ср янв 06, 2010 10:01:46

Сообщение metan »

Не вполне понятна суть вашей проблемы.
Не исключено, что вы путаете вывод слов длиной более восьми символов и загрузку знакогенератора для числа символов, больше восьми.
Пример:
1. Вы успешно загрузили 8 пользовательских символов в CGRAM.
2. Далее вы вывели на экран слово, содержащее все эти 8 символов.
До этого момента все ок.
3.Но, как только вы загрузите 8 новых пользовательских символов в CGRAM, на дисплее сразу же изменится изображение слова, которое вы написали на шаге 2

Из вышенаписанного следует, что лучше юзать дисплей с кириллицей или учить английский :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

aleksey chilov, Вы всё неправильно делаете. В знакогенератор надо не всю строку забивать, а только буквы которых нет в с латинском алфавите. В вашем примере строка "РАДИОКОТ ПРИВЕТ" в знакогенератор достаточно занести всего три буквы. Разделите функцию загрузки знакогенератора и вывода строки.
Последний раз редактировалось VladislavS Вс дек 11, 2022 10:02:55, всего редактировалось 1 раз.
VNS
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1635
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Сообщение VNS »

Вывести разово на дисплей можно только 8 пользовательских символов… на следующем экране можно вывести ещё 8 других пользовательских символов… но сразу больше 8 не получится… :)
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

...а еще лучше купить на Алишке нормальный дисплей с кириллицей
https://aliexpress.ru/item/32897547605. ... 4aa6cZJ4dd
придется конечно подождать, зато окупится потом прекращением мучений.
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

https://aliexpress.ru/item/32897547605. ... 4aa6cZJ4dd
и прекратятся мучения
Модератор
Аватара пользователя
Сообщения: 19090
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

MLX90640, такая цена плюс стоимость доставки никогда не окупится.

Добавлено after 4 minutes 4 seconds:
Re: Помогите с кодом на си для AVR (Atmega8)
aleksey chilov, не надо плодить одинаковые темы.
я объединил твою новую тему с предыдущей твоей темой.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

всё уже миллион раз обсуждалось...
11 английских заглавных: А, В, С, Е, Н, К, М, О, Р, Т, Х плюс 8 = 19 заглавных русских
7 английских строчных: а, с, е, о, р, х, k плюс 8 = 15 строчных русских, где к будет немножко странной
С учетом громадного количества синонимов в русском языке и возможных сокращений, трудности при отображении могут возникнуть ну в очень специфичных случаях.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

А ещё лучше использовать графический. Один раз синтезировал шрифт (или несколько) - и нет простора фантазии. Хоть на грузинском.
Изображение
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Лучше пикать морзянкой - всего один динамик и одна нога микроконтроллера, зато можно передать практически любую информацию, и даже слепому грузину
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Нельзя: враг подслушает! 8) :))
Изображение
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Тогда тактильную бесшумную морзянку: нихромовая спиралька то нагревается, то охлаждается, сообщая приложенному к ней пальцу (или языку, у кого пальцы грубые или отсутствуют вовсе) информацию. Замечу, что сфера инвалидов в этом случае расширяется и до глухих.
Контактная информация:
Ответить

Вернуться в «AVR»