» » Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)

 
 
 

Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)

Разместил химик 22 апреля 2012. Просмотров: 24156

15
Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)

Занялся я конструированием нового устройства и встал вопрос — на чем отображать данные. Жидкокристаллические индикаторы ставить не захотел, так как нужно чтобы цифры было видно в темноте и со стороны. Выбор пал на 7-сегментные LED-индикаторы, но при дальнейшей разработке оказалось, что с обработкой данных и выполнением динамической индикации на 9 разрядов микроконтроллер AVR справляется, но не успевает выполнять основную программу. И тогда вспомнив, что у всех много сегментных индикаторов есть управляющий контроллер, решил сделать свой - универсальный.
Универсальность его заключается в том, что для вывода информации на индикаторы, нужно указать адрес одного из трех трех разрядных индикаторов либо линейки из восьми светодиодов и вводимое число.
Ниже представлена схема индикатора. Ничего особенного в ней нету, все детали легкодоступны.
Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.

Для передачи данных я написал маленькую библиотеку spi_led, состоящую всего лиш из одной функции с двумя параметрами - void Data_Write(unsigned char temp_ADDR, int data), которая передает по шине SPI три байта
- temp_ADDR — адрес;
- data — передаваемое число от 0 до 999, разложенное на MSB и LSB;

Точки

Для удобства я сделал так, чтобы точки выставлялись отдельно. Для этого по адресу 0х07 отправляем байт, где указываем какие точки включить. Так как в байте 8 бит, то точки выставляются с первого по восьмой разряд, на девятом я думаю она совершенно не нужна.

Светодиоды

Их мы как и точки определяем в байте и отравляем по адресу 0х10. Подробнее о них и о точках я написал в PDF файле.

Символы

Так как на эти индикаторы можно вывести некоторые символы, тем самым расширив возможности дисплея я сопоставил эти символы с цифрами. Для отображения, их нужно отправить по адресу 0х04, 0х05, 0х06 - соответственно индикаторам.

О конструкции

Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)

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

Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)

Сделай сам универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)


Видео

Небольшой видео файл демонстрирующий работу платы. Здесь на первый индикатор с частотой 0,6 секунды выводятся числа со счетчика, а на второй и третий — символы.


Файлы

Прошивки для микроконтроллера, для индикаторов с OA и OK
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Библиотека для передачи данных, компилятор CodeVisionAVR
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


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


Описание передачи данных
Файловый сервис доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.

Об авторе

Сергей (химик)
ЛНР г.Брянка
О себе автор ничего не сообщил.
 

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

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

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


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


Программная реализация протокола SPI на AVR в CodeVisionAVR

Всем коллегам и согражданам привет! Увлёкся я изучением протоколов. Про реализацию ...

Программная реализация протокола I2C на AVR в CodeVisionAVR

Пару лет назад, изучая Atmega8, я захотел программно реализовать работу с устройствами...

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

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

Трансивер 2,4 ГГц Nordic Semiconductor nRF24L01. Перевод таблиц даташита, пояснения

Привет, датагорцы! Выкладываю перевод таблиц из спецификации nRF24L01+, файл с пояснениями и...

Несколько функций для програмной реализации протокола I2C на AVR

Добрый день, дорогие друзья! Решил поделиться с вами несколькими функция для работы...

Стрелочные индикаторы на К157ДА1 в усилителе Radiotehnika У-101 (Обновлено!)

Трудно найти человека, который когда-нибудь не владел бы таким усилителем. И часто...

Немного про шину 1-Wire и цифровой термометр DS18b20

Фотка от www.150cc.ru Здравствуйте, друзья. Хочу предложить вашему вниманию несколько простых...

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

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

Микроконтроллер управляет дисплеем от телефона Siemens!

Многие радиолюбители собирают для себя какие-то конструкции. Иногда простейшие, иногда очень...

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

Мигалки – это хорошо, по новогоднему… Но ведь нельзя останавливаться на достигнутом! Пора сделать...

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

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

TDA7442D+ATmega8. Микропроцессорный регулятор громкости

Привет ВСЕМ!!! Интересно, кому бы не хотелось, чтобы его усь обладал сервисом промышленных...
<
  • Прохожий
22 апреля 2012 03:33

/ Demiurg

  • Регистрация: --
  • Публикаций: 0
  • Комментариев: 0
 
  • 0
Пусть меня опять Datagor забанит, но покритикую. Так как кто-то будет повторять. Суммарный ток одного индикатора великоват для МК. Пусть даже по 5 мА. 5*8=40 мА. Нужно общие выводы индикаторов через транзисторы коммутировать.

<
  • Кандидат
22 апреля 2012 08:33

Михаил / Dust112

  • Регистрация: 22.05.2011
  • Публикаций: 1
  • Комментариев: 14
 
  • 0
Demiurg, индикация динамическая, посему одновременно все индикаторы не горят. Но согласен, транзисторы лучше поставить.

<
  • Главный редактор
22 апреля 2012 09:32

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1603
 
  • 0
Demiurg,
не нужно делать из меня пугало, но если желаете - конечно могу устроить cool

Не следует терять за отсутствием транзисторных ключей САМУ ИДЕЮ и вполне рабочее воплощение.
Сергей (химик), спасибо!

<
  • Прохожий
22 апреля 2012 11:51

/ Demiurg

  • Регистрация: --
  • Публикаций: 0
  • Комментариев: 0
 
  • 0
Dust112, понятно, что индикация динамическая, и индикаторы горят по одному. Но ведь в каждый конкретный момент одновременно работают сегменты одного индикатора. Поэтому ключи нужно ставить. Можно сборки. Например, TD62783 (общие аноды) или ULN2803 (общие катоды).
Идея, конечно хорошая. Разгружается основной МК.

<
  • Гражданин
22 апреля 2012 13:53

Андрей / andrew_spb

  • Регистрация: 21.02.2009
  • Публикаций: 2
  • Комментариев: 127
 
  • 0
Идея и работа - хорошая, так как появляется универсальный модуль и индикаторы туда (не забыв про ключи) можно впихивать разные...

<
  • Гражданин
22 апреля 2012 18:00

Сергей / химик

  • Регистрация: 11.08.2009
  • Публикаций: 4
  • Комментариев: 31
 
  • 0
А если в гугле ввести "динамиеская индикация", то вы увидите, сколько существует схем без клюей. Из даташита - DC Current per I/O Pin ................................................ 40.0mA, ток одного сегмента 20мА. Общий контакт каждого индикатора вклюается всего на 1,2 миллисекунды. Где то в интернете находил объяснение, что каждый порт способен выдержать превышения тока в несколько раз на протяжении нескольких миллисекунд. Тоные парраметры не помню, но тоно знаю что видел. И на многих сайтах, повторюсь еще раз, пишут, что для динамической индикации на микроконтроллере, можно не ставить ключи, так как время включения относително мало.

<
  • Прохожий
22 апреля 2012 19:51

/ Demiurg

  • Регистрация: --
  • Публикаций: 0
  • Комментариев: 0
 
  • 0
химик, не вопрос, для себя как хотите, так и делайте. Хоть в 220 пальцами лезьте. Ваши материалы читают тысячи людей. Будут повторять. Бывает, багаж знаний у повторятелей маленький. Вы на будущее это учитывайте, когда выкладываете свои материалы.

Без ключей микроконтроллер работает в тяжелом режиме. так как суммарный ток сегментов превышает паспортный ток.

По поводу "пишут". На заборе тоже много чего пишут. Очень много начинающих, малокомпетентных. Многие даже азов электроники не знают. В инете такие перлы встречаются, хоть стой, хоть падай.

Потом удивляемся, что "Булавы", "Фобосы" не летают. Начитались в интернете всяких допущений. И так потянет. Пишут же...

<
  • Прохожий
22 апреля 2012 19:56

/ Demiurg

  • Регистрация: --
  • Публикаций: 0
  • Комментариев: 0
 
  • 0
Кстати, есть еще один способ. Мультиплексировать и сегменты.

<
  • Главный редактор
22 апреля 2012 20:47

Игорь Петрович Котов / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 262
  • Комментариев: 1603
 
  • 0
Demiurg,
Женя, ждем трех ваших ОБРАЗЦОВЫХ статей. Шоб "Булава" с "Фобосом" взлетели!
hi

<
  • Гражданин
24 апреля 2012 17:07

Максим / GRafGRay

  • Регистрация: 20.10.2009
  • Публикаций: 1
  • Комментариев: 31
 
  • 0
химик, Сергей а почему не использовать сдвиговые регистры, те же 595е
в свое время делал часики типа механических но полностью на светодиодах, естественно динамика, используя регистры всего 3 ноги контроллера были задействованны для динамики, честно говоря каких либо проблем замечено небыло
код тож не сложен, пишем макрос вывода инфы в регистр и вуаля

<
  • Гражданин
24 апреля 2012 20:56

Сергей / химик

  • Регистрация: 11.08.2009
  • Публикаций: 4
  • Комментариев: 31
 
  • 0
GRafGRay,в том то и дело, что 595 нужно управлять контроллером. Так по началу и хотел, но опять же, мы нагружаем основной контроллер обработкой сдвиговых регистров, а в это время он может быть занят и этим нарушается заданный алгоритм. А мой вариант позволяет индикаторам работать автономно, наподобие дисплея WH1602.

<
  • Прохожий
3 мая 2012 13:44

/ Griha

  • Регистрация: --
  • Публикаций: 0
  • Комментариев: 0
 
  • 0
В случае динамической индикации и без дополнительных ключей будет работать. В радтолюбительском варианте можно и так оставить. Но будет заметно изменение яркости разряда в зависимости от количества светящихся сегментов в разряде.
Если же боязно за перегрузку МК, то можно сделать ход конем - купить яркие дисплеи (сейчас такие попадаются все чаще, недавно у китайчев такими разжился), и поставить к ним токоограничивающие резисторы 1-1.5к - и за МК не беспокоишься, и яркости хватит. Ибо на номинальном токе такие яркие дисплеи светят так ярко, что хоть в стопсигнал их пихай...

<
  • Гражданин
5 июля 2012 02:27

Владимир / kotyk7

  • Регистрация: 8.11.2009
  • Публикаций: 5
  • Комментариев: 30
 
  • 0
Очень хорошая идея создать автономную индикацию.Типа взамен дорогущей MAX7219\7221. Но тип используемого микроконтролера не радует. Слишком мощный и также дорогой для повторения. Предлагаю автору создать на форуме ветку и дружно поработать над этой идеей вместе с целью ее удешевления и доступности.

<
  • Гражданин
31 июля 2012 17:42

Александр / alx32

  • Регистрация: 26.06.2008
  • Публикаций: 8
  • Комментариев: 35
 
  • 0
Я делал примерно такую же весч на ATTiny2313 и 555ид7 (можно и 555ид10), данные передавались по UART'у.

<
  • Гражданин
4 октября 2012 01:45

Сергей / химик

  • Регистрация: 11.08.2009
  • Публикаций: 4
  • Комментариев: 31
 
  • 0
kotyk7, на счет того, что дорого, не согласен. ATmega16 в планарном корпусе стоит в три раза дешевле чем в DIP, цена сопоставима ATmega8. 16-ю выбрал только из-за колличества конечностей. Если убрать светодиоды, то в ATmega8 программа переедет с легкостью.

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