Программа ForMC состоит из вкладок. Каждая вкладка - отдельная утилитка.
Программа позволяет: определить код клавиши или ASCII символа, сгенерировать код семисегментного или матричного символа, посчитать константу для UART для нужной вам скорости, посчитать константу для настройки таймера, перевести монохромную картинку размером 128*64 в массив данных для использования в программе для графического индикатора.
На каждой вкладке есть кнопка помощи, которая запустит окошко, поясняющее работу текущей утилитки.
Содержание статьи / Table Of Contents
↑ ASCII
Программа показывает ASCII-коды символов.Кнопки со стрелками уменьшают и увеличивают код символа (клавиши), при этом во всех окнах для отображения выводится соответствующая информация.
Крайнее правое окно служит для ввода/отображения символа. Клавиши Влево/Вправо, нажатые в этом окне, изменяют текущий символ.
↑ Simbol - Матричный
Программа генерирует код символа или рисунка с максимальным разрешением 8×8 и сохраняет полученные данные в файл.Основное применение сгенерированного кода — использование последнего в программе микроконтроллера для вывода символов на матричный или графический ЖКИ.
Размер символа — выставляется требуемый размер символа. Неиспользуемые пиксели при пересчёте изображения заполняются 0.
Положение:
X — просчёт байтов по горизонтали:
Y — по вертикали.
В применённом мной графическом дисплее использовался вертикальный режим. Можете посмотреть скриншот.
Кнопка ''В массив'' добавляет полученный код символа + коментарий к нему в окошко текстового редактора. По окончании работы его содержимое можно сохранить в файл.
↑ Simbol - Семисегментный
Программа генерирует код для семисегментного индикатора.Сегменты индикатора можно подключать к любому из линий порта. Это бывает актуально при разводке печатной платы, когда для удобства разводки приходится переподключать индикатор. Подключите сегменты индикатора к нужным линиям порта и, когда не останется линий с одинаковыми номерами (одинаковые линии порта подсвечиваются красным цветом), код автоматически пересчитается. Если вы решили вернуть начальное положение линий порта, нажмите кнопку ''По умолчанию''.
Чтобы зажечь/погасить сегмент индикатора, просто кликните мышкой на его изображение. Одновременно в окошках результата отобразится шестнадцатиричный код изображённого на индикаторе символа. Значения два: для индикатора с общим катодом и с обшим анодом. Выбирайте то, что нужно вам.
Кнопка ''С'' гасит индикатор.
↑ UART
Утилитка расчитывает скорость передачи по протоколу UART для микроконтроллеров ATmega/ATtiny и константу, заносимую в регистр UBRR, для определённой скорости.Регистр UBRR имеет 12-ти битный формат, и максимальное значение, которое можно использовать — это 4095, т.е. 0хFFF.
Если задать скорость и вычислить константу, в нижнем окошке появится отклонение полученной скорости передачи от ближайшей стандартной. В теории можно использовать скорости с разбросом +/- 5%. Но рекомендуется использовать значения регистра UBRR, при которых получаемая скорость передачи отличается от требуемого значения более чем на 0,5%. Значения, дающие большее отклонение также можно использовать, однако следует иметь в виду, что при этом снижается помехозащищённость линии передачи.
↑ Timers
Расчитываем константы для таймеров.Указываем частоту микроконтроллера, используемый предделитель и время, либо частоту, которую необходимо получить. При изменении этих параметров константа для регистра TCNT автоматически пересчитывается и в окошке результата расчитывается время/частота, которая получится при использовании полученной константы, и ошибка между требуемым и полученным значением времени.
Если в регистре TCNTH получилось значение, равное 0xFF — мы можем использовать любой, присутствующий на борту микроконтроллера таймер (16-ти или 8-ми битный). При этом для 8-ми битного (Т0, Т2) берём значение регистра TCNTL, а для 16-ти битного (Т1, Т3) — значение обоих регистров. Если в регистре TCNTH присутствует значение, отличное от 0xFF — используем только 16-ти битный таймер (Т1, Т3). Если всё же необходимо использовать 8-ми битный таймер — увеличиваем коэффициент предделителя до тех пор, пока значение регистра TCNTH не станет равным 0xFF.
Когда в обоих регистрах получено значение 0xFF — это означает, что значение времени/частоты, необходимое нам, меньшее частоты тактирования микроконтроллера. Решить эту ситуацию можно путём повышения частоты микроконтроллера или уменьшения коэффициента предделителя.
Следует учесть, что для разных таймеров и вариантов исполнения микроконтроллера используются различные коэффициенты предделителя! О том, какой предделитель можно использовать для данного таймера в данном микроконтроллере, можно прочитать в DataSheet-e на данный микроконтроллер. DataSheet на любой AVR микроконтроллер можно бесплатно скачать с официального сайта фирмы Atmel www.atmel.com.
↑ *.bmp ==> *.c
Данная утилитка предназначена для перевода монохромного рисунка в массив данных.Полученный массив используется в проекте для микроконтроллера для вывода рисунка на экран графического индикатора типа WG12864A или ему подобном.
Необходимые требования к рисунку:
1. Размер рисунка 128×64 точки;
2. Рисунок должен быть монохромным (чёрно-белым).
Для начала необходимо подготовить нужный нам рисунок к требуемому для конвертации виду. Для этого нужно:
1. Открыть требуемый рисунок в Paint-e или ему подобном графическом редакторе;
2. Сделать рисунок монохромным (чёрно-белым);
3. Привести рисунок к размеру: Х=128, Y=64 точки;
4. Открыть подготовленный рисунок данной утилиткой, нажав на акулу, после чего он появится в окне программы;
5. Сконвертировать рисунок, нажав кнопку «Преобразовать». Можно проинвертировать изображение в выходном файле, поставив галочку «Инвертировать»;
6. Вставить готовый массив в свой проект для графического индикатора.
Немного о структуре файла BMP
Если открыть рисунок в формате BMP блокнотом, мы увидем набор символов:
BM>Ъ > (Ъ @ Ъ Ъ Ъ 8Ъ 8Ъ яяя яяяяяяяяяяяяяяяяяяяяяЪЪЪяяяяяяяяя ЪЪяяяяяяяяяь яяяяяяяя и т.д.Первые 62 символа — это служебная информация. Символы после «…Ъ 8Ъ 8Ъ яяя " (включая последний пробел) — информация о пикселах картинки). Кодируется информация о состоянии пикселей сплошным потоком, начиная с нижней левой позиции картинки. Берутся 8 пикселей в самой нижней строке слева — они составят байт информации. Первый пиксел в картинке (крайний левый) занимает в байте старшую позицию (бит D7), восьмой — младшую (бит D0). Если пиксел чёрный, то он кодируется "0“, если белый — "1».
Далее выбираются следующие 8 пикселей с правой стороны от уже выбранных и точно так же кодируются. Если строка заканчивается, мы поднимаемся на строку выше и продолжаем до тех пор, пока все пиксели не будут выбраны и закодированы.
При редактировании этого файла в блокноте он потом уже не откроется как картинка. Но, если вам это нужно, рисунок придётся редактировать с помощью редактора ''HexEdit'' или ''Notepad++'' с включённым плагином Hex-Editor. После такого редактирования файл нормально открывается как картинка.
Что имеем на выходе
Дисплей индикатора имеет 8 строк c размерностью каждой строки 8×128 пикселов. Мы имеем возможность рисовать вертикальные палки (|||…|) в определённой строке, создавая тем самым изображение. Каждая палка — байт данных. Верх палки — младший бит, низ — старший бит.
Так вот, в процессе конвертации файла программа вычитывает эти палки, начиная с левого верхнего угла, и заносит эти данные в массив. Т.е. сначала вычитываем первую строку, затем вторую и т.д.
Для общения с индикатором требуется только отсылать ему нужные байты из массива (палки), и говорить, где их рисовать.
↑ Файлы
Работает под Windows XP и Windows 7 (32/64 бита). Под другими операционными системами не проверял.🎁ForMC.7z 332.69 Kb ⇣ 475
Начать сначала
Изучить правила
Написать админу
Войти
Зарегистрироваться
RSS
