Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Часы на ATMega8
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Shadow97
На днях сделал часы на микросхеме ATMega8. Программу пилил на Ассемблере, выкладываю т.к. нужны идеи, и, по возможности, конструктивная критика, ведь это первое моё электронное устройство на микропроцессоре.
kovigor
Цитата(Shadow97 @ May 21 2013, 22:54) *
На днях сделал часы на микросхеме ATMega8.

Да, молодец, поздравляю. Только вот ни схемы, ни программы нет. И резисторы по 100 Ом в цепях сегментов явно можно было бы увеличить раз эдак в 4-5. И программу бы еще на Си переписать. Поверьте, затраченные усилия не будут напрасными ...
P.S. А будильник-то в них есть ?
Xenia
Цитата(kovigor @ May 22 2013, 01:44) *
И программу бы еще на Си переписать. Поверьте, затраченные усилия не будут напрасными ...


Зачем это переписывать на Си? Переписывать не надо. sm.gif

Интерес представляют не столько часы, как таковые, в как удалось подцепить столько ЖКИ, тогда как у Меги8 портов мало.
Палыч
Цитата(Xenia @ May 22 2013, 04:03) *
Интерес представляют не столько часы, как таковые, в как удалось подцепить столько ЖКИ, тогда как у Меги8 портов мало.


Уж, не знаю - как это сделал ТС, но для 6 шт х 7 сегментов нужно всего-то 7 выводов (см. чарлиплексинг).
demiurg_spb
Цитата(Xenia @ May 22 2013, 04:03) *
Интерес представляют не столько часы, как таковые, в как удалось подцепить столько ЖКИ, тогда как у Меги8 портов мало.
Ключевое слово - динамическая индикация. (как уже сказал Палыч).
Отсюда и величина резисторов такая маленькая, т.к. яркость можно регулировать скважностью ШИМ.
Чарлиплексинг ИМХО тут не применим, т.к. на фото мы видим сборки индикаторов, а не россыпь диодов (у таких индикаторов обычно общий анод или катод).
Соответственно для этого случая требуется 6+8 ножек процессора (6 разрядов по 8 сегментов).
Палыч
Цитата(demiurg_spb @ May 22 2013, 10:27) *
Чарлиплексинг ИМХО тут не применим, т.к. на фото мы видим сборки индикаторов, а не россыпь диодов (у таких индикаторов обычно общий анод или катод).
Соответственно для этого случая требуется 6+8 ножек процессора (6 разрядов по 8 сегментов).

Чарлиплексинг и тут применим... Правда, если учитывать, что в "семисегментном" индикаторе восемь сегментов и они внутри уже объедены (общим катодом или анодом), то можно обойтись девятью выводами.
demiurg_spb
Цитата(Палыч @ May 22 2013, 11:10) *
Схему в студию!:)
Палыч
Цитата(demiurg_spb @ May 22 2013, 11:17) *
Схему в студию!:)

Рисавать - лень, так-что - словами...
По общему принципу чарлиплексинга: например, высокий уровень на одном из девяти выводов МК выбирает семисегментный индикатор (можно аж девять штук поставить!); остальные восемь выводов МК подключены к сегментам (для каждого семисегментника - это "свои" восемь выводов, т.е. не "впараллель") - низкий уровень "светит" светодиод/сегмент, Hi-Z - нет.

P.S. А, вот тут и схемку нагуглил почти ту, что нужно (предпоследняя схема на странице). В этой схеме нужно увеличить "число сегментов" - приведена схема для "четырёх сегментов"...
demiurg_spb
Цитата(Палыч @ May 22 2013, 11:33) *
На досуге попробую осмыслить и нарисовать... Спасибо!
Понял!!! Идея очень-очень красивая!
Палыч
Цитата(demiurg_spb @ May 22 2013, 11:49) *
Идея очень-очень красивая!

Да, красивая... Но, есть и недостатки: программа вывода значительно усложняется, а, значить, и памяти требует больше и выполняется - соответственно... Т.е. за экономию числа выводов МК платим памятью и быстродействием...
demiurg_spb
Цитата(Палыч @ May 22 2013, 12:34) *
Это само-собой разумеетсяsm.gif
maksimp
Цитата(Палыч @ May 22 2013, 12:34) *
Да, красивая... Но, есть и недостатки: программа вывода значительно усложняется, а, значить, и памяти требует больше и выполняется - соответственно... Т.е. за экономию числа выводов МК платим памятью и быстродействием...

В этом отношении вопрос - памяти хватит и МК успеет сделать то что нужно за отведённое время? Если да, хватит и успеет, то нечего жалеть. Неиспользованная область памяти и более длительный пустой цикл ожидания следующего события пользы не приносят.
Shadow97
Схему в протеусовском файле дать или изображением? Программу тоже закинуть могу, но поскольку это моя первая прога на Ассемблере, то уровень исполнения не блещет...
kovigor
Цитата(Shadow97 @ May 23 2013, 21:39) *
Схему в протеусовском файле дать или изображением?

Изображением. Не у всех же есть Протеус ...
demiurg_spb
Цитата(Палыч @ May 22 2013, 12:34) *
Да, красивая... Но, есть и недостатки: программа вывода значительно усложняется, а, значить, и памяти требует больше и выполняется - соответственно... Т.е. за экономию числа выводов МК платим памятью и быстродействием...
Я c товарищем ещё немного покумекал и накидал такую табличку на 8 разрядов "7-ми сегментных" индикаторов:

D7 D6 D5 D4 D3 D2 D1 D0 A0 - разряд 0
D7 D6 D5 D4 D3 D2 D1 A1 D0 - разряд 1
D7 D6 D5 D4 D3 D2 A2 D1 D0 - разряд 2
D7 D6 D5 D4 D3 A3 D2 D1 D0 - разряд 3
D7 D6 D5 D4 A4 D3 D2 D1 D0 - разряд 4
D7 D6 D5 A5 D4 D3 D2 D1 D0 - разряд 5
D7 D6 A6 D5 D4 D3 D2 D1 D0 - разряд 6
D7 A7 D6 D5 D4 D3 D2 D1 D0 - разряд 7

Из которой видно что чарлиплексинг не применим для сдвоенные, строенных, счетверённых и т.д. "семисегментных" индикаторов.
Единственный случай его применимости - это одиночные "семисегментные" индикаторы, т.к. у групповых индикаторов общая шина данных и нет возможности это поменять.
А в табличке видно что конфигурация шины данных должна меняться от разряда к разряду.

И это ИМХО самый существенный недостаток.
ae_
Цитата(demiurg_spb @ May 28 2013, 17:41) *
... чарлиплексинг не применим для сдвоенные, строенных, счетверённых и т.д. "семисегментных" индикаторов...
... конфигурация шины данных должна меняться от разряда к разряду.

Для обычной динамической индикации на 7-сегментных индикаторах используется одна таблица перекодировки (фонт): номер символа -> 7-сегментный код.
Для чарлиплексинга на двух(3-х, 4-х, ...)разрядных 7-сегментных дисплеях вместо 1 таблицы перекодировки надо применить двумерный массив, в котором для каждого разряда содержится свой "фонт".
upd:
demiurg_spb, вы правы, такую схему можно собрать только из одиночных индикаторов, групповые не подходят.
demiurg_spb
Цитата(ae_ @ May 28 2013, 16:33) *
Дело не в этом. ФИЗИЧЕСКИ НЕ ВОЗМОЖНО организовать на групповых индикаторах, только на одиночных (можно набрать любое кол-во разрядов из одиночных "7-ми сегментников").
Повторюсь что это связано с их внутренней структурой (на счетверённом индикаторе всего 8 + 4 вывода) общая шина данных:
все сегменты А (D0) соединены между собой,
все сегменты B (D1) соединены между собой... и. т.д.
А теперь посмотрите на табличку:

D7 D6 D5 D4 D3 D2 D1 D0 A0 - разряд 0
D7 D6 D5 D4 D3 D2 D1 A1 D0 - разряд 1
D7 D6 D5 D4 D3 D2 A2 D1 D0 - разряд 2
D7 D6 D5 D4 D3 A3 D2 D1 D0 - разряд 3
D7 D6 D5 D4 A4 D3 D2 D1 D0 - разряд 4
D7 D6 D5 A5 D4 D3 D2 D1 D0 - разряд 5
D7 D6 A6 D5 D4 D3 D2 D1 D0 - разряд 6
D7 A7 D6 D5 D4 D3 D2 D1 D0 - разряд 7

Видите, что происходит: нужна иная разводка. Надо сместить налево на один бит шину данных в разряде №0,
в разряде №1 раздвинуть биты D0 и D1 ну и т.д. - это делается АППАРАТНО и никакие таблицы тут не помогут.
А вот после правильной аппаратной разводки и применяют упомянутые вами таблицы знакогенератора уникальные для каждого разряда.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.