Главная » Микроконтроллеры
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 100 руб.
От пользователей

Похожие статьи:


Несколько полезных утилит для микроконтроллеров

В статье хочу представить Вашему вниманию несколько несложных, но весьма удобных и полезных утилит, которые я набросал на досуге. Все они предназначены для облегчения работы с графическими дисплеями и светодиодными индикаторами. Возможно они пригодятся кому-нибудь из Вас. 

Калькулятор для создания кодов цифр и знаков для семисегментного индикатора

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

Интерфейс программки простой и интуитивно понятный. Для начала работы расставляете номера битов напротив соответствующих сегментов (в соответствии со схемой подключения индикатора на Вашем устройстве), а затем просто нажимаете на соответствующие сегменты не "восьмёрке" и получаете "на лету" шестнадцатиричный код в окошке "результат". Также можно выбирать тип индикатора: с общим анодом или катодом. Результат также будет меняться "на лету". Для удобства названия сегментов подписаны графическом поле.

Следующая утилита чуть по сложнее. Она предназначена для создания кодов своих символов на графических дисплеях и светодиодных матрицах. 

Программка также с предельно простым интерфейсом. Имеет графическое поле 8Х8 пикселей, строку результата и одну единственную настройку - ориентация изображения. При горизонтальной ориентации пиксели адресуются горизонтальными строками слева-направо от старшего бита к младшему, т.е. старший бит первого байта будет располагаться в верхнем левом углу, а младший - в верхнем правом. При вертикальной ориентации байты адресуются по столбцам: старший бит первого байта будет в верхнем левом углу, а младший - в нижнем левом и так далее. Вертикальная ориентация используется, например в дисплеях Nokia 5110 и если не ошибаюсь, в oled дисплеях на ssd1306. Горизонтальная - обычно при создании шрифтов на цветных LCD дисплеях или на светодиодных матрицах 8х8.

Кнопка "Очистить" просто очищает графическую область. А строка результата меняется при нажатии на любой пиксель графической области. В строке результата я предусмотрел фигурные скобки, чтобы её можно было сразу копировать в многомерный массив программы на "Си". В общем, просто и удобно.

Третья программа выполняет более сложную задачу. Это конвертер bmp изображений 24bit (то есть обычных несжатых картинок) в бинарный файл с цветовой кодировкой RGB565 (которая используется в подавляющем большинстве недорогих цветных графических дисплеях от наших китайских друзей с небезызвестной китайской торговой интернет площадки).

Как видите, интерфейс этой утилитки вообще - спартанский, всего три кнопки и один "чекбокс". Назначения кнопок очевидны из их названия. Последовательность действий при работе с программой такая: открываем bmp файл с помощью кнопки "открыть", нажимаем кнопку "конвертировать" и сохраняем полученный файл кнопкой "сохранить". Расширение выходного файла (.rpc) при сохранении добавляется автоматически.

В программе реализована несложная "защита от дурака" - при попытке открытия файла другого формата (например, если переименовать расширение другой картинки в bmp) появится сообщение об ошибке в строке "консоль". Также программка проверяет битность открываемого файла (изображение должно быть 24bit). 

Особое внимание нужно обратить на "чекбокс" - "Добавить заголовок". Если галочка не установлена, то изображение сконвертируется в виде бинарного файла, в котором каждый пиксель изображения закодирован в виде 2 байт в формате RGB565, где первый байт старший (5 бит R и 3 бита G), второй младший (3 бита G и 5 бит R). Пиксели в файле располагаются построчно слева-направо, начиная от верхнего левого угла, а строки сверху-вниз.

При установке галочки "Добавить заголовок", в начале файла добавляется 10 информационных байт:

- 2 байта (смещение 0 байт) - символы 'R' и 'P'.

- 4 байта (смещение 2 байта) - ширина изображения в пикселях (первым идёт младший байт, последним - старший).

- 4 байта (смещение 6 байт) - высота изображения в пикселях.

Полученные файлы удобно записывать на SD карту или SPI флеш для создания заставок, фонов или меню на микроконтроллерных самоделках. Это избавляет микроконтроллер от конвертирования bmp изображения в сырые данные и очень сильно ускоряет вывод картинок на дисплей. Причём, файлы с заголовком удобно использовать при отображении картинок не фиксированного размера (равных разрешению дисплея и меньше), а без заголовка - выводить изображение на весь экран.

Пока это всё, на что хватило фантазии. Все три программы написаны на С#, поэтому для запуска могут потребовать установки пакета .NET Framework. 

PS. Мои программы не претендуют на оригинальность, наверняка в сети полно подобных калькуляторов и конвертеров. Но мне как всегда хочется сделать что-то своё. Это очень интересно, приносит новый полезный опыт и кучу положительных эмоций. Если кому-то мои программки придутся по душе - то пользуйтесь на здоровье, мне не жалко. Буду рад любым отзывам и комментариям. Всем удачи.

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (14) | Я собрал (0) | Подписаться

0
Karvac #
Всегда приятно что-то создавать "от себя" и не важно программное это "изделие" или физическое...
Ответить
0
andro #
Имеются некоторые пожелания на счёт первой утилиты:
хотелось бы, что бы в добавок представлялся код и в двоичном виде, и второе, что бы в отдельном поле можно было вводить отображаемую цифру или символ, или хотя бы выбирать имеющийся из списка. как раз работаю над проектом дисплея на семисегментных индикаторах.
Ответить
+1

[Автор]
AndrejChoo #
С двоичным кодом я ещё понимаю, не проблема добавить пару строчек кода, сделаю.
Но зачем вводить цифру, если есть её графический конструктор? В этом же и фишка утилиты, чтобы нарисовать знак и получить его код.
Ответить
-1
andro #
Да, спасибо, графический конструктор тоже удобно, но в редких случаях удобно выбирать из имеющихся символов, думаю в идеале должно быть и то, и другое. Благодарю за модернизацию!
Ответить
0

[Автор]
AndrejChoo #
Подправил калькулятор 7Seg, добавил строку результата в бинарном виде.
Также подправил конвертер BMP, добавил инверсию цветов RGB - BRG. Как оказалось, на разных дисплеях цвета кодируются по разному (проверил на ST7735 LCD и IPS).
Отредактирован 26.05.2021 19:58
Прикрепленный файл: utilites.zip
Ответить
+2
Рюкзак #
Очень интересная реализация конвертера шрифтов для дисплеев. Есть возможность позаимствовать идеи для дальнейшего развития у коммерческого конвертера шрифтов BitFontCreator. Удачи Вам в реализации хорошего конвертера шрифтов.
Ответить
+1
Дмитрий #
Было бы ещё удобнее, если бы была кнопка "поверх всех окон".
Ответить
+1

[Автор]
AndrejChoo #
Ok. Попробую добавить.
Ответить
+1

[Автор]
AndrejChoo #
Добавил кнопочки "Top" для отображения поверх всех окон. Также в 7seg добавил кнопку"Очистить" для быстрой очистки конструктора.
Прикрепленный файл: utilites.zip
Ответить
0

[Автор]
AndrejChoo #
Подправил напоследок ещё кое-что.
Прикрепленный файл: Char8x8Calc.zip
Ответить
0
andro #
Наверное более правильно было бы ведение версий и добавление их к статье, это личное мнение.
Ответить
0
Jedi Kyle #
День добрый! Благодарю за прекрасные утилиты, очень помогают в работе.
Как предложение, не могли бы вы пожалуйста добавить возможность инвертировать hex-ы в программе для матриц при горизонтальной ориентации? Пишу очень большое количество шрифтов для светодиодной матрицы, а там ориентация отзеркаленная относительно программы. Если добавите, буду премного благодарен
Ответить
0

[Автор]
AndrejChoo #
Пробуйте
Прикрепленный файл: Char8x8Calc.zip
Ответить
0
Jedi Kyle #
Огромное спасибо, то что нужно! Очень помогло
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
200 Вт усилитель класса D на IRS2092 Автомобильный GPS-трекер с GSM/GPRS и дистанционным управлением
вверх