Радиомастер гид в мире электроники » Схемы » Интеграция с ПК » Электронный USB счетчик на AVR ATtiny25
Информация к новости
  • Просмотров: 11498
  • Добавил: Kail
  • Дата: 12 октября 2011
12 октября 2011

Электронный USB счетчик на AVR ATtiny25

Категория: Схемы » Интеграция с ПК

Проект представляет собой счетчик с отображением данных на 8-ми сигментном индикаторе и передачей данных через USB-интерфейс. Я к примеру использовал данное устройство как счетчик посещений для вебсайта.

 

 

Электронный USB счетчик на AVR ATtiny25

 

 

В проекте используется микроконтроллер AVR ATtiny25, в качестве драйвера LCD-дисплея используется микросхема MAX7219. Для отображения данных используется обычный 7-ми сегментный индикатор на 8 знакомест.
Принципиальная схема устройства приведена на рисунке ниже:

 

 

Электронный USB счетчик на AVR ATtiny25

 

Для связи микроконтроллера и микросхемы MAX7219 используется всего 3 линии. Программа для контроллера написана на AVR-GCC и основана на коде EasyLogger. Также, Christian Starkjohann разработал отличный программный USB-драйвер который называется AVR-USB и с помощью которого реализуется поддержка USB 1.1 (low speed) для атмеловских AVR микроконтроллеров. Т.о. необходимость в специальной USB-микросхеме (к примеру FT232) отпадает, все реализуется программно. Для питная м/с MAX7219 требуется источник питания мощностью не менее 300мА и напряжением 9-12В. Микроконтроллер IC3 питается от USB-шины.

 

 

 

 

Для экономии памяти микроконтроллера (2к в ATtiny25), MAX7219 использовался режим decode-mode (см. даташит). В этом режиме в памяти МК не нужно хранить таблицу шрифтов для семисегментного индикатора.


Код функции usbFunctionSetup для приема данных от МК:

 

USB_PUBLIC uchar usbFunctionSetup(uchar data[8])
{
static uchar replyBuf[2];
uchar Dlen;
usbMsgPtr = replyBuf;
switch (data[1]) {
case 0: // data format => data[3]:data[2]:data[5]:data[4]
MAX7219_DisplayChar(1,data[3] >> 4 & 0x0F); // display digit 0
MAX7219_DisplayChar(2,data[3] & 0x0F); // display digit 1
MAX7219_DisplayChar(3,data[2] >> 4 & 0x0F); // display digit 2
MAX7219_DisplayChar(4,data[2] & 0x0F); // display digit 3
MAX7219_DisplayChar(5,data[5] >> 4 & 0x0F); // display digit 4
MAX7219_DisplayChar(6,data[5] & 0x0F); // display digit 5
MAX7219_DisplayChar(7,data[4] >> 4 & 0x0F); // display digit 6
MAX7219_DisplayChar(8,data[4] & 0x0F); // display digit 7
Dlen = 0;
break;
case 1:
MAX7219_Clear();
Dlen=0;
break;
case 2:
MAX7219_Init();
Dlen=0;
break;
default:
Dlen=0;
break;
}
return Dlen;
}

 

Программа для ПК

Программа для компьютера написана на Delphi 6 с использованием компонента Indy 10. Для данной версии необходима специальная библиотека LibUSB-Win32, которая является портированной версией libusb для Windows-систем. Библиотека значительно упрощает пользовательскому приложению доступ к USB-устройству. Также, для delphi использованы компоненты CoolTrayIcon и TextTrayIcon. Компоненты позволяют сворачивать приложение в трей, как это показано на картинке ниже.
Данное приложение каждые 10 секунд считывает данные с текстового файла hits.txt (счетчик посещений) и затем перенаправляет данные на USB.

 

 

 

Скрипт для вебсервера

На вебсервере используется файл hits.txt, в который записывается количество посещений странички. Файл должен быть доступен для записи (права 0777). Для записи количества посещений используется простенький PHP-скрипт:

$hitfile = $_SERVER['DOCUMENT_ROOT']."/counter/hits.txt";
$hits = @ file_get_contents($hitfile);
file_put_contents($hitfile,$hits+1,LOCK_EX);
echo ($hits+1); // используется для отладки


Для прошивки контроллера я использовал AVR ISP программатор и программу PonyProg

 

Исходники и прошивки - Вы не можете скачивать файлы с нашего сервера

Источник: bobhobby.com

Метки к статье: MAX7219, AVR ATtiny25, EasyLogger, Delphi 6



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

Имя:*
E-Mail:*
Введите два слова, показанных на изображении: *

Друзья и партнеры:

Архив новостей

Декабрь 2016 (1)
Ноябрь 2016 (1)
Сентябрь 2016 (3)
Июнь 2016 (1)
Май 2016 (1)
Апрель 2016 (1)
^
 
-->