Обсуждаем контроллеры компании Atmel.
Ответить

Помогите с кодом на си

Вт мар 28, 2023 20:41:53

Добрый вечер всем!
Хочу задать вопрос к людям кто знает тематику.
Вобщем делаю устройство...
Индикатор у меня:
"LCD 1602 HD44780" ( без Кириллицы естественно ).
Всё вроде бы и ничего но вот меню на латинице это просто ну " не очень"
Пытаюсь как-то русифицировать с помощью CGRAM то что дадено Китайцами 8 байт.
Но не получается ни как.
Вроде бы и пару функций набросал и там вроде как всё просто ( записал/прочитал ).
Казалось бы. И тут у меня получается что не могу я вывести в одну строку 2 разных слова.
Они как бы выводятся но после вывода первого слова следующее наплывает на первое.
Как бы данные копируются из второго в первое.
И не могу понять что с этим делать...
Не выходит...
Там скрины кусков кода и скрины модели в протеусе.
На отладочной плате тоже самое...
МК у меня Atmega8 среда Atmel Studio 6.2 .
Вобщем программист из меня не очень но хотелось бы сделать нормально.
Кому не трудно посмотрите дайте идею что мне делать.
Кто в этом понимает.
Спасибо если отзовётесь!
Вложения
Снимок экрана 2023-03-28 203642.jpg
(109.67 KiB) Скачиваний: 47
Снимок экрана 2023-03-28 201626.jpg
(103.91 KiB) Скачиваний: 42
Снимок экрана 2023-03-28 200354.jpg
(65.81 KiB) Скачиваний: 39
Снимок экрана 2023-03-28 201305.jpg
(34.49 KiB) Скачиваний: 34
Снимок экрана 2023-03-28 200853.jpg
(92.82 KiB) Скачиваний: 39

Re: Помогите с кодом на си

Вт мар 28, 2023 21:21:29

Вы все символы что-ли загоняете в 8 байт пользовательских мест? Английских там тоже нет, только иероглифы?
В любом случае, массивы избыточны. Для слов ВЛЕВО и ВРАЩЕНИЕ достаточно создать массив из ВЛЕОРАНИЩ, первые восемь загнать в пользовательскую область, последний в зависимости от слова менять то на Щ, то на И. А уже адресацией на этот алфавит составлять слова.
Если есть английский, то брать из него, генерировать только недостающие Л, И, Щ

Re: Помогите с кодом на си

Вт мар 28, 2023 22:03:03

Английских там тоже нет, только иероглифы?
Ну он же написал:
Всё вроде бы и ничего но вот меню на латинице это просто ну " не очень"
Значит латиница таки есть, но не устраивает его OBEC PACTET и подобное.
А если бы даже латиницы и не было, то "Для слов ВЛЕВО и ВРАЩЕНИЕ достаточно создать массив из" ВЛЕРАНИЩ, а букву О взять из цифры 0, пусть она будет перечёркнута. :-)

Re: Помогите с кодом на си

Вт мар 28, 2023 22:13:42

aleksey chilov, вот рабочий пример. Разберётесь?

Re: Помогите с кодом на си

Ср мар 29, 2023 00:11:49

Eats, а вдруг там и цифры иероглифами? ))

Re: Помогите с кодом на си

Ср мар 29, 2023 06:28:52

Латиница там присутствует.
Но 2 слова это пример.
На самом деле слов много.
Вопрос был как сделать чтоб слова
не сливались. А то что можно латиницу подставить
ну этошь и так понятно. Но только все слова пишет
вместе.

Добавлено after 5 minutes 51 second:
Вы мне покажите пример, функцию, которая сможет вывести символы из ОЗУ и закончить строку.
При начале новой строки не копировались символы LCDdata( первое слово ) и в LCDdata( второе слово ).

Добавлено after 3 minutes 15 seconds:
Получается что выводится слово потом вызывается эта же фу-я но уже с другим массивом и начинает выводится
второе слово. При этом данные копируются в LCDdata уже выведенного слова.
Вложения
Снимок экрана 2023-03-28 201711.jpg
(106.49 KiB) Скачиваний: 34

Re: Помогите с кодом на си

Ср мар 29, 2023 10:28:17

Латиница там присутствует.
Вы мне покажите пример, функцию, которая сможет вывести символы из ОЗУ и закончить строку.

переходим по ссылке...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
качаем архив...

смотрим исходник...
пульт.c
(104.49 KiB) Скачиваний: 21

выводим на экран всю таблицу ASCII...
Win-1251-cvavr-java.png
(41.04 KiB) Скачиваний: 23

...

Re: Помогите с кодом на си

Ср мар 29, 2023 16:25:47

заглавные русские буквы А, В, Е, К, М, Н, О, Р, С, Т, Х, У - уже присутствуют в латинском алфавите, их программировать не нужно.
также есть несколько строчных (маленьких) букв, совпадающих по начертанию с латинскими буквами - а, е, о, р, с, х, у,которые тоже программировать не нужно.
одновременно больше 8 букв запрограммировать НЕЛЬЗЯ. если по какому-то адресу запрограммировать другой символ, то экран покажет этот символ, а не тот, что был запрограммирован ранее.
для слов ВРАЩЕНИЕ ВЛЕВО достаточно запрограммировать 3 символа Щ, И, Л. все остальные символы будут из латинского алфавита.

Re: Помогите с кодом на си

Ср мар 29, 2023 17:44:10

Спасибо за материал конечно но ничего я там не нашёл для себя.
Там OLED у меня LCD1602.
Они по разному управляются как минимум.
Функции я не понимаю, что там за функции, и как они работают.
Они там просто вызываются и что-то делают.
Вобщем я не понял ничего.
Но всё равно СПАСИБО!

Re: Помогите с кодом на си

Ср мар 29, 2023 18:02:01

купите дисплей с кириллицей и не партесь. у winstar такие дисплеи имеют суффикс CTK. например:
https://www.chipdip.ru/product/wh1602b-yyh-ctk

Re: Помогите с кодом на си

Ср мар 29, 2023 18:52:06

Спасибо!
Так блин этих куплено 5 шт на алике.
И обидно что не понимают по Русски!
Ну я правда сначала думал что типа ерунда
можно писать по Русски через CGRAM люди же
как-то делают. Но вот шото не получается...
Криво как-то. Чего то не хватает.
Какой-то мелочи но не могу догадатся какой...

Re: Помогите с кодом на си

Ср мар 29, 2023 19:19:49

Совсем немного не хватает.)
Изображение

Re: Помогите с кодом на си

Ср мар 29, 2023 19:26:24

Там OLED у меня LCD1602.

Там LCD, OLED, TFT...

а конкретно LCD1602 там действительно нет)) давно с ним не работал...
но сути это не меняет.
все экраны работают одинаково)) а символы выводятся на экран с помощью знакогенератора...

даташит же есть...

https://docs.yandex.ru/docs/view?tm=168 ... 26nosw%3D1

по умолчанию LCD1602 использует готовый знакогенератор... ROM (CGROM)

однако, в даташите чёрным по белому написано... что пользователь может записать в RAM (CGRAM) любые свои символы...
Screenshot_1.jpg
(44.63 KiB) Скачиваний: 23

именно так я и делал)) я выводил на экран LCD1602 не только свои символы... но и даже рисовал различные картинки))
:tea:
только это было давно... я уже не помню всех команд... надо перечитывать даташит ))
где-то на одном из форумов... валяется исходник... теперь уже не вспомню где))
:dont_know:

Re: Помогите с кодом на си

Ср мар 29, 2023 20:19:54

Да я всё понимаю.
Я всё делаю по правилам.
Нарисовать символ любой и вывести вообще без проблем.
но только один раз. Второй раз перезаписывает второе слово в первое.
Вот в чём проблема а не в том как его нарисовать и загнать в CGRAM.
В итоге выходит чёрти что. А так одно слово пишет нормально.
Всё выводится записывается переписывается...
Яж не могу пользоватся только одним Русским словом а потом латиница правильно?
Иначе зачем тогда эта трата нервов?
Хочется чтоб читалось удобно. Ни ктож не пользуется в смартфоне Английскими настройками,
всеш выбирают Русскую раскладку и вообще всё меню и т.д.

Re: Помогите с кодом на си

Ср мар 29, 2023 21:22:12

Нужно уметь программировать, мыслить логически, знать и понимать работу контроллера дисплея, а не "всё делаю по правилам".
Тогда всё наладится. Всё же элементарно:
1. есть массив знаков, в этом массиве можно нарисовать ещё (добавить к нему, а не заменить весь его своими единственными восемью) 8 своих, то есть дополняете недостающие кириллические варианты к существующим английским. И работаете с этим массивом, одновременно и с латиницей и с кириллицей и с иероглифами - со всем массивом знакогенератора.
2. есть область памяти дисплея, к которой надо относиться как к набору ссылок на массив знакогенератора. Именно ссылок, а не самих знаков (а жаль). То есть, если в массиве внезапно содержимое изменяется, это одновременно меняется на дисплее, потому что он по ссылке берет данные каждое свое обновление. Поэтому невозможно в дисплей размером 2х16 загнать одновременно 32 своих знака. Только динамически, а в 1 единицу времени - нет.

в слове ВЛЕВО выделенные красным - латиница. сосчитайте, сколько букв надо дорисовать своих?
то же для ВРАЩЕНИЕ

ну и заодно ВПРАВО

сосчитали? если получилось, что опять надо больше 4, то перечитывайте весь текст всей этой ветки заново, пока не станет 4.

Добавлено after 12 minutes 17 seconds:
Могу предложить иначе.
Выведите на экран текст, набранный латиницей:
BPAhEHiE BLEBO
Использовать только таблицу знакогенератора. Ничего не отрисовывать, только команды помещения адреса ячейки знакогенератора на дисплей.
Затем нарисуйте в ячейках символы Щ И Л
Замените адреса ячеек на h i L на адреса нарисованных соответственно.

Re: Помогите с кодом на си

Ср мар 29, 2023 21:34:18

Я хотел чуть не так.
Хотел записать в ОЗУ например
первое слово " защита " а второе " батареи "
и всё кирллическими символами переписав CGRAM 2 раза.
Но не получается. Он тогда переписывает и превое слово.
Он наверно связывает ячейки...
Ну если я заполню 8 символов недостающими латиницы то
возможно и выйдут слова.
Нада попробовать...
Спасибо за идею.
А то я размечтался думаю сейчас создам массив
там будет Кириллица и большая и маленькая памяти ещё 2,5 кБ
хватит! Думал буду рисовать как карандашом по листку бумаги.
Ну спасибо за мысль...
Завтра надо попробовать шото повыводить по составлять.
Чуть не удобно нежели просто выводить. Писанины всё таки больше...

Re: Помогите с кодом на си

Ср мар 29, 2023 21:45:13

первое слово " защита " а второе " батареи " и всё кирллическими символами
Далась вам эта кириллица... Я ж не просто так написал про OBEC PACTET - в этих двух словах нет ни одной кириллической буквы, лишь только латиница. Половина букв русского и латинского алфавитов совпадают по начертанию, отчего ж этим и не воспользоваться?!

Re: Помогите с кодом на си

Ср мар 29, 2023 22:20:12

Более того, именно это идеологически верно для Знакосинтезирующих ЖКИ
Рисовать - это больше удел Графических ЖКИ

а тут получается наоборот.

Добавлено after 2 minutes 6 seconds:
а самое смешное: в ЖКИ с кириллицей нет полного алфавита, часть символов все равно берется из латинского )

Re: Помогите с кодом на си

Ср мар 29, 2023 22:44:46

Хочется, чтоб читалось удобно. Никто же не пользуется в смартфоне английскими настройками

А зря. Хоть американе и нехорошие человеки :? , но всё же английский язык (он не виноват!) - международный, им пользуются и китайцы, и японцы (несмотря на свои иероглифы), так что надо осваивать хотя бы его техническое подмножество, ориентированное на конкретную предметную область. Тогда мы не будем так одиноки со своим хотя и "великим и могучим", конечно, но увы - постепенно становящийся в технике рудиментом. Я так думаю. И одной проблемой будет меньше - берём любой LCD. Постепенно привыкнем и перестаём замечать.
Вот в авиации - заносчивые амеры не перешли на метрическую систему, и мы, чертыхаясь, называем высоту в футах, а скорость - в милях/час. А куда деваться - не они летают на Яках и Туполях, а мы - на Боингах и Арбузах. :o

Re: Помогите с кодом на си

Чт мар 30, 2023 13:35:15

Он наверно связывает ячейки...

Ужас. Пока сам шишки не набьёшь - не дойдёт.(
Знакогенератор ОДИН на ВЕСЬ экран! Ага?
В примере (это вся программа без инициализации) я просто пишу текст кириллицей и ни о чём не думаю, за меня думает библиотека. Я лишь должен следить о превышении одновременно отображаемых на экране 8-ми русских символов. Потому в комментариях они и указаны.
Ответить