Попробую ещё всё-таки объяснить: помимо плохого визуального разделения информации, Ваше решение на 100% совпадает с возможной ошибкой отображения цифры из-за несвечения одного из сегментов. Никто кроме Вас не может на 100% быть уверенным, что это буквенные символы, а не ошибочные цифры. И я уверен, что Вам и самому неудобно на такое смотреть. Но признать свою ошибку и согласиться с оппонентом... даже мыши предпочитают плакать, колоться, но продолжать жрать кактус. Что уж говорить о человеке...
Применение посегментной индикации при большом количестве разрядов предпочтительнее.
Добавлено after 1 minute 31 second: Re: ATmega8, динамическая индикация, switch case и десятичная то и вообще: вся динамическая индикация давным-давно разжёвана в книжках и статьях. В том числе и здесь, на этом сайте.
Thinnnfor, посмотрел я ваш код... Как это ни каких жестких таймингов если индикация полностью вписана внутрь прерывания таймера? СпойлерОстальное по коду в ЛС...
_________________ Для тех, кто не учил магию мир полон физики Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
А зачем столько лишних лапок? Достаточно поставить дешифратор и ограничиться четырьмя... Да еще и кнопы в таком случае на контроллер дисплея/клавиатуры присоединить. С учетом начинки АВРок вполне себе такое на всего одном из таймеров делается. Схем для светиков уже столько наделано... У топикстартера (Denis-1307) похоже другая проблема - как семисегментные "кракозябры" под СИ удобно организовать... Там лучше сначала значения кракозябр заготовить, а уже потом их имена в соответствующих местах программы использовать... Как то вроде вот такого: Спойлер
Код:
// набор MAX7219 8-позиционник
#define s_A 6 // значение номера сегмента A #define s_B 5 // значение номера сегмента B #define s_C 4 // значение номера сегмента C #define s_D 3 // значение номера сегмента D #define s_E 2 // значение номера сегмента E #define s_F 1 // значение номера сегмента F #define s_G 0 // значение номера сегмента G #define s_H 7 // значение номера сегмента H
/* "кодовая страница кракозябр 7-сегментных" раскладка сегментов по символам определяется стандартной разметкой A-H по условию, что активный уровень(сегмент астивен/светится) принят за 1 */
Эх, динамическая индикация... ммм Пробило на скупую слезу ностальгии Если в ящичках есть семисегментник, пойду делать честную динамическую индикацию. Я ж сто лет её не делал.
Была поставлена цель, сделать максимально-минимальную конструкцию встраемого ампер-вольтметра. Лишние дешифраторы, регистры, или любые другие компоненты, увеличили бы размер плат. А так всё уместилось ( почти) в спичечный коробок, вместе с шунтом.
Ну дык в таком случае можно было и посегментным сканированием обойтись и транзисторов нету и полярность матриц безразлична. МК с такой задачей вполне справится.
А? Чё? Я срач пропустил? Кому там TMки хренью показались? Денег много и свободного времени у вас, видимо. Я тут недавно электрокотел на тини84 организовал - 4-х разрядный 7-мисегментник, управление энкодером с кнопкой, 2 канала АЦП, 4 цифровых входа, 7 каналов управления силовой нагрузкой, еще и 3 ноги у тиньки в резерве осталось. У TMки вообще задействовано не более 40 процентов от ее возможности. Ну, правда еще 595-й регистр один прикошачен для своих задач, но в целом, на мой взгляд, использовать динамическую индикацию силами МК сейчас это признак дурного тона. Лепить кучу рассыпухи, отжимать у контроллера лютую кучу портов только для того, чтобы дисплеем поморгать - такое себе.
_________________ Не важно чем все начнется. Важно чем кончится!
Так ВСЕ ОТНОСИТЕЛЬНО. Для каждого конкретного случая свое наиболее подходящее решение. Кстати... Для тех контроллеров (что MAX, что другие "кракозябровые") все равно по хорошему внутренний буфер в ОЗУ потребуется для предподготовки пакета данных.
7219- это просто - это просто ! Я не пользователь библиотек и скетчей ! Я просто написал прогу в кодевижин авр , без библиотек . Программно дёргаю выводы и всё с 7219 работает , и уже всяких часов с всякими бегущими строками, набегающими с верху .. это уже как года 4 назад написал . А во т ТМ - это какое то дерьмо , которое не хочет работать .
Как раз наоборот - в MAX7219 НЕ нужно программно дергать выводы, там аппаратный SPI справляется. А вот TM1637 - это косячный интерфейс - почти I2C, только нет адреса слейва.
самая большая проблема с модулями на ТМ1637 - это то, что производители ставят с слишком большой емкостью конденсаторы на сигнальные входы. из-за этого придется делать слишком "длинные" импульсы по обоим входам. я снимаю эти конденсаторы вообще, и модуль начинает прекрасно работать с тактовой частотой МК 1 МГц. ну да, у меня это обычный программный "ногодрыг".
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения