Найти тему
Анатолий Кузин

Быстрый старт или шаблон для ATTiny2313 и семисегментного LED индикатора

Часто для разработки бюджетных электронных устройств, в которых требуется отображать числа или ограниченный набор букв, радиолюбители используют бюджетный ATTiny2313 и семисегментный светодиодный индикатор. Это как правило различные термометры, термостаты, часы, таймеры и многое другое. Устройства получаются простыми, содержащими небольшое количество деталей, однако разработать и изготовить миниатюрную плату по готовой схеме - задача не из легких.

Можно пойти другим путем, зная элементную базу устройства, сначала разработать удобную плату, а затем по ней отрисовать схему и под нее написать или подправить программу. Итак начнем. Что мы имеем:

ATTiny2313 в корпусе DIP, 8 токоограничивающих SMD резистора, панели и монтажную плату.
ATTiny2313 в корпусе DIP, 8 токоограничивающих SMD резистора, панели и монтажную плату.
Нужный кусок платы можно не отпиливать, а просто отломить
Нужный кусок платы можно не отпиливать, а просто отломить

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

Плата разработана в программе Sprint Layout.

Общий вид
Общий вид
Вид сверху
Вид сверху

Вид снизу
Вид снизу

Фото платы сверху и снизу.

В процессе сборки. Вид сверху
В процессе сборки. Вид сверху
В процессе сборки. Вид снизу
В процессе сборки. Вид снизу

На сборку платы у меня уходит примерно около часа.

-8
-9

Схема отрисованная по плате в SPlan, плата в формате Sprint Layout лежит здесь.

-10

Исходник программного кода с динамической индикацией для индикатора с общим катодом для Codevision, а также файл эмуляции в Proteus, лежит здесь. Прошивка здесь. При прошивке напротив фьюз битов CKSEL0, CKSEL2, CKSEL3, SUT0 не забываем поставить галочки.

-11

Кратко о программе:

Массив digits[] - это знакогенератор, в него в шестнадцатеричном формате сохраняем образы символов.

unsigned char digits[] =

{

0xEB, // 0 -

0x88, // 1 -

0xD3, // 2 -

0xDA, // 3 -

0xB8, // 4 -

0x7A, // 5 -

0x7B, // 6 -

0xC8, // 7 -

0xFB, // 8 -

0xFA, // 9 -

0x20, // 10 - знак минус

0xF0, // 11 - символ градус цельсия

0x00, // 12 - пусто

0xB9, // 13 - H

0x73, // 14 - E

0x23, // 15 - L

};

В массиве stroka[] можно набрать любой текст из символов знакогенератора, которые будут выводится на индикатор в виде бегущей строки.

unsigned char stroka[] = {12,12,12,13,14,15,15,0,12,12,12,12}; - надпись " HELLO ".

Часть программы для вывода бегущей строки. В массив digit_out[n] ( n - номер разряда индикатора, начиная с 0) помещаем символы для вывода.

{

for (n=0;n<4;)

{ digit_out[n]=stroka[n+m]; n++; };

m++;

delay_ms (500);

}

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

Многоканальный термометр здесь.