» » Программа ForMC в помощь программисту микроконтроллеров

 
 
 

Программа ForMC в помощь программисту микроконтроллеров

Разместил OlejanJa 1 декабря 2012. Просмотров: 13 038

4 Программа называется ForMC, изначально предназначалась для МК AVR. В ней объединены несколько написанных мной ранее самостоятельных программ, предназначенных для упрощения процесса программирования для микроконтроллеров.
Программа ForMC состоит из вкладок. Каждая вкладка - отдельная утилитка.

Программа позволяет: определить код клавиши или ASCII символа, сгенерировать код семисегментного или матричного символа, посчитать константу для UART для нужной вам скорости, посчитать константу для настройки таймера, перевести монохромную картинку размером 128*64 в массив данных для использования в программе для графического индикатора.

На каждой вкладке есть кнопка помощи, которая запустит окошко, поясняющее работу текущей утилитки.

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 загружен 374 раз.
Олег (OlejanJa)
Украина, г. Севастополь
Профиль OlejanJa
СевНТУ (бывш. СГТУ, СПИ) '07
Факультет: Радиоэлектроники, Кафедра: Электронной техники (ЭЛТ).
 

Понравилось? Палец вверх!

  • всего лайков: 72

Поделись с друзьями!

Связанные материалы:


Визуализация для микроконтроллера. Часть 1. OLED дисплей 0.96" (128х64) на SSD1306

Добрый день, друзья! Эта статья открывает цикл, посвящённый средствам визуального отображения...

Программа обмена по RS-232 на языке C# в среде Microsoft Visual Studio

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

REZISTOR v1.0. Java-программка в мобилку для расшифровки цветовой маркировки

Маленькая и по моему мнению полезная програмка для любителей электроники, теперь всегда под рукой -...

Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования

Здравствуйте, друзья! В данной статье я хочу рассказать о своих впечатлениях при работе с...

Библиотеки для подключения COG-индикаторов TIC-55 и TIC-3321 к микроконтроллерам AVR

…простите, а вы не подскажите, как пройти в библиотеку? Небольшая предысторияПрежде, я уже имел...

Програмирование в AVR Studio 5 с самого начала. Часть 4

Сегодня рассмотрим программу “бегущих огней” и “бегущих теней”. Примеры “бегущих огней” можно найти...

Програмирование в AVR Studio 5 с самого начала. Часть 2

Пишем первую программу!Большинство начинают с мигания светодиодов, и мы не исключение. Если...

Портативный анализатор ИК сигналов «IR-master»

Каждый радиолюбитель сталкивающийся с применением в своих конструкциях дистанционных пультов...

Простой цифровой вольтметр от 0 до 30 вольт на 3 сегмента

Здравствуйте, уважаемые Датагорцы! Делая разные полезные, а иногда и не очень, радиоелектронные...

Грызем микроконтроллеры. Урок 5. Кодовый замок.

Третий свой урок я начинал с вопроса "А какую конструкцию на основе МК хотите создать ВЫ?" Ответов...

Грызем микроконтроллеры. Урок 2.

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

Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL, Евстифеев А.В.

Издательство: Додэка XXI [М.], 560 стр. 2005 г. Книга посвящена вопросам практического применения...
<
  • Гражданин
1 декабря 2012 16:13

Александр / abirvalg2009

  • С нами с 30.01.2009
  • Ушёл в реал Пользователь offline
  • 31 комментарий
  • 0 публикаций
 
  • +1
Отличное подспорье для тех, кто "сидит" на AVR. Спасибо.
Глядя на тетку с экрана, начинаешь искать тайный смысл в описании отсыла палок в индикатор :)

<
  • Гражданин
1 декабря 2012 21:43

Дмитрий / dvkhorzov1976

  • С нами с 20.03.2009
  • Ушёл в реал Пользователь offline
  • 15 комментариев
  • 0 публикаций
 
  • 0
Отличная программка! Автору огромное спасибо!

<
  • Гражданин
2 декабря 2012 23:37

Радик / galrad

  • С нами с 23.08.2011
  • Ушёл в реал Пользователь offline
  • 84 комментария
  • 12 публикаций
 
  • +1
Неплохо иметь универсальный инструмент под рукой, дополню "коллекцию" еще одной, всяко лишней не будет. Автору респект!

<
  • Гражданин
24 октября 2015 02:50

Константин / ekd177

  • С нами с 16.12.2009
  • Ушёл в реал Пользователь offline
  • 3 комментария
  • 0 публикаций
 
  • 0
Классно!

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.