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

 
 
 
4

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

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

Программа называется 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 загружен 376 раз.
Олег (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
Классно!

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew
Скопируйте текст вашего комментария на случай неверного ответа на контрольный вопрос.