Сообщение от
МихаилГл
Повторяетесь?
Да. ТАМ никто не присоветовал...
А весь код можно глянуть? Или это он и есть?
Это для вывода одного значения от 0 до 15 на один светодиод.
Для формирования динамической шкалы на ST было,
но вылез этот глюк с подмаргиванием...
Реализовано три варианта шкал (на схеме указано),
но практически начали с двухрядного.
Следующий вариант будет расширителем на 16 выходов транзисторных.
Но там уже не дешифратор ИД3, и ATmega48 в DIP корпусе.
Как раз подходит по пинам с небольшими доработками.
Уж очень негуманные цены рынка на расширители на 16 выходов...
Код:
function_block IO_a // управление SV шкалой модуля A
// ----------------------------------------------------------------
var_input //объявление входных переменных
Inp1, Inp2, Inp3, Inp4, Inp5, Inp6, Inp7, Inp8 :bool; // входы дискретные
InADCa, InADCb, InADCc, InADCd :real; // аналоговые входы
InpADCa, InpADCb, InpADCc, InpADCd :bool; // аналоговые входы как дискретные компараторы
Sek, Min, Hour :udint; // время
end_var
// ----------------------------------------------------------------
var_output //объявление выходных переменных
Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8 :bool; // выходы релейные
OutK1, OutK2, OutK3, OutK4 :bool; // выходы тразисторные
SvZf1 :bool; SvKf2 :bool; // светодиоды на панели ПР200
KS0, KS1, KS2, KS3, KS4 :udint; // выходные даные
end_var
// ----------------------------------------------------------------
var //объявление локальных переменных real_to_udint()
I :Bool := true; O :Bool := False; // соответствие-сокращение идиотским Falsr и True
SetX, SetY :udint; // temp
D00 :real; Out5P1 :real; Out6P1 :real; Out1P1 :real; STEPs :udint;
end_var
// ----------------------------------------------------------------
// проверка на "иголки" светодиодов внешних - работа не нормальная
OutK1:=Sek.0; // разложить секунды
OutK2:=Sek.1; // по битам
OutK3:=Sek.2; // и отправить
OutK4:=Sek.3; // в порт вывода
// проверка на "иголки" светодиодов встроенных - работа нормальная
IF Sek.0=O Then SvZf1:=I; SvKf2:=O; Else SvZf1:=O; SvKf2:=I; End_if
// проверка релейных выходов - вроде клацают :) судя по звуку
CASE Sek OF
1: Out1:=I; Out8:=O;
2: Out2:=I; Out1:=O;
3: Out3:=I; Out2:=O;
4: Out4:=I; Out3:=O;
5: Out5:=I; Out4:=O;
6: Out6:=I; Out5:=O;
7: Out7:=I; Out6:=O;
8: Out8:=I; Out7:=O;
END_CASE
end_function_block