Страница 1 из 1
Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 10:12:29
nozyl
Доброго времени суток
Помогите пожалуйста разобраться в прошивкой управление семисегментным индикатором (ассемблер).
Я не понимаю каким образам реализовано управление индикатором.
Нужно изменить ОА на ОК, объясните как это сделать или дайте ссылки.
Заранее спасибо.

Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 11:47:01
Engineer_Keen
Во-первых в базовые цепи нужны резисторы хотябы килоом. Первую ногу меги подтянуть через 10к к +5В.
Транзисторы взять другой проводимости (например bc847), коммутировать естественно на землю, а не на +5В.
Во всех кусках:
Инвертировать ХХХХХХХХ, т.е. 0b00000001 поменять на 0b11111110, 0b00000010 поменять на 0b11111101 и т.д.
То же самое во всех
В подпрограмме ZOBRAZ похоже происходит перевод цифры в код, там тоже нужно все LDI REG,0bXXXXXXXX проинвертировать.
Код довольно длинный, и вроде не все используется (для некоторых подпрограмм нет прямых вызовов), возможно что-то упустил.
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 12:20:01
nozyl
Схему я привел для наглядности использование портов. У меня 12V семисегментники (из светодиодной ленты). Подключаю я их вот так:

( Синим обозначены порты мк, красным светодиоды)
И исходя из схемы происходит инверсия. Когда сегмент не используется он светится а когда используется гаснет.
(Не до конца гаснет, транзистор закрывается не полностью, думаю нужно пересчитать резисторы)
Что касается подпрограмм, Я удалял не нужные мне функции видимо не все почистил.
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 12:31:23
Z_h_e
Позвольте с Вами не согласится,
Engineer_Keen. В базы транзисторов действительно надо будет поставить сопротивления, но проводимость транзисторов менять не надо, надо их перевернуть. Коллектор к ОК индикатора, а эмиттер на землю. И тогда инвертировать PORTC не надо, надо инвертировать PORTD.
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 12:45:05
Engineer_Keen
Это верно, да и нагрузка логичнее смотрится именно в коллекторе, просто если есть готовая плата, то там переделок чуть меньше. Но раз ТС сказал что схема для наглядности, то это неактуально...
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 12:59:07
akl
nozyl писал(а):Схему я привел для наглядности использование портов.
Тогда, по Вашей схеме, порты проще настроить так.
Код: Выделить всё
SER R16
OUT DDRD,R16
OUT DDRC,R16
;nastavн port jako vэstup
;LDI REG,0xFF
;OUT SMER,REG
;LDI REG,0xFF
;OUT PORT,REG
;nastavн port jako vэstup
;LDI REG,0xFF
;OUT SMER2,REG
;LDI REG,0xFF
;OUT PORT2,REG
И проинвертировать значения
Код: Выделить всё
LDI REG,0b10111111 ;odchytн инslo mimo 0-9 a zobrazн jako "-"
RET
ZOBRAZ0:
LDI REG,0b11000000
RET
ZOBRAZ1:
LDI REG,0b11111001
RET
ZOBRAZ2:
LDI REG,0b10100100
RET
ZOBRAZ3:
LDI REG,0b10110000
RET
ZOBRAZ4:
LDI REG,0b10011001
RET
ZOBRAZ5:
LDI REG,0b10010010
RET
ZOBRAZ6:
LDI REG,0b10000010
RET
ZOBRAZ7:
LDI REG,0b11111000
RET
ZOBRAZ8:
LDI REG,0b10000000
RET
ZOBRAZ9:
LDI REG,0b10010000
RET
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 17:18:34
nozyl
akl
А что это за часть кода? Куда его вставить или где редактировать? R16 по схеме это светодиод.
Re: Управление семисегментным индикатором ассемблер
Добавлено: Чт май 14, 2015 20:43:08
nozyl
А понял, это в START:
Re: Управление семисегментным индикатором ассемблер
Добавлено: Вт май 19, 2015 17:18:52
nozyl
Еще вопрос: как регулировать яркость сегментов ?
Re: Управление семисегментным индикатором ассемблер
Добавлено: Вт май 19, 2015 18:46:16
Z_h_e
ШИМ
Re: Управление семисегментным индикатором ассемблер
Добавлено: Ср май 20, 2015 07:15:58
Engineer_Keen
Там кстати было.
Вот это место:
Спойлер
Код: Выделить всё
MULTIPLEX:
LDS REG,SVITI ;stav PWM displeje
LDS REG2,JAS ;regulace jasu
CPI REG2,0
BREQ JAS0
CPI REG2,1
BREQ JAS1
CPI REG2,2
BREQ JAS2
CPI REG2,3
BREQ JAS3
CPI REG2,4
BREQ JAS4
CPI REG2,5
BREQ JAS5
А дальше, насколько я понял, уровень яркости преобразуется в длину импульса (в метках JAS0-JAS5)