Динамическия индикация на семисегментных светодиодных дисплея V2.0
В процессе создания контроллеров управления
приходиться сталкиваться с проблемой ввода вывода информации.
Оптимальным стал принцип движение экрана по меню функций.
Что это такое?
Вся индикация представляет несколько уровней.
Например:
1 уровень – индикация измеряемого параметра.
2 уровень – уровень выбора параметра настройки контроллера.
3 уровень – настройка выбранного параметра.
Графическое представление.
Для отображения эффекта движения по меню разработана следующая
библиотека.
Для демонстрации использовался текст.
zagin(ct,cE,c5,ct,1);
zaderj(50);
Celsio();//измерение температуры
bigstroka(&ca[0]); // модель устройства
Celsio();//измерние температуры
TOCHKA3=1;
TOCHm3=1;
bin_dec(TEMPDAD[0]);
zagin(tysc,sotn,dest,edin,0);
go_left();
zaderj(200);
TOCHKA3=0;
zagin(cr,cE,cr,cA,0);
go_down();
zaderj(100);
zagin(cr,cE,ci,cn,0);
go_right();
zaderj(100);
zagin(ct,co,cc,co,0);
go_right();
zaderj(100);
zagin(cr,cE,ci,cn,0);
go_left();
zaderj(100);
zagin(cr,cE,cr,cA,0);
go_left();
zaderj(100);
zagin(cM,ci,cn,cM,0);
go_down();
zaderj(200);
zagin(cr,cE,cr,cA,0);
go_up();
zaderj(100);
TOCHKA3=1;
TOCHm3=1;
bin_dec(TEMPDAD[0]);
zagin(tysc,sotn,dest,edin,0);
go_up();
zaderj(100);
TOCHKA3=0;
zagin(ct,c_,c0,c1,0);
imposeL();
zaderj(100);
TOCHKA3=1;
zagin(tysc,sotn,dest,edin,0);
imposeR();
zaderj(100);
TOCHKA3=0;
zagin(ct,c_,c0,c2,0);
imposeL();
zaderj(100);
zagin(cM,cn,co,cM,0);
imposeR();
zaderj(100);
zagin(ct,c_,c0,c1,0);
imposeL();
zaderj(100);
TOCHKA3=1;
zagin(tysc,sotn,dest,edin,0);
imposeR();
zaderj(100);
Схема подключения для демонстрации работы программы.
Описание переменных и флагов.
// переменные испольуемые совместно с процедурой прерывания
// программа индикации
volatile char reg_ind,p_ind, // внутрение регистры
программы
ind_1,ind_2,ind_3,ind_4, //регистры индикации разрядов
d_PORTA,d_PORTB,d_PORTC; //буферные регистры
volatile bit TOCHKA1,TOCHKA2,TOCHKA3,TOCHKA4,// флаги
индикации десятичной точки
TOCHm1,TOCHm2,TOCHm3,TOCHm4,//флаги мигания десятичной точки
RAZR1,RAZR2,RAZR3,RAZR4,//флаги мигания разрядов
GAIN, // бит гащения индикации
RELE1,RELE2,RELE3,RELE4; // биты упраления портами
//регистры системных часов
volatile char tim10gc,tim2gc;
volatile bit B_MIG; //бит 2 герца. для эффектов мигания
разрядов
Описание функций.
void indic(void);//
индикация
void bin_dec (int
chisloin);//Преобразование 16 бит двоичного чила в десятичное со знаком
//функции вывода буфера на индикатор
void imposeL(void
);// наложение справа налево
void imposeR(void
);// наложение слева направо
void go_down(void
);// выезд буфера снизу вверх - идём вниз
void go_up(void
);// выезд буфера свеху вниз - идем вверх
void go_left(void
);// выезд буфера слево на право - идем налево
void go_right(void
);// выезд буфера справо налево - идем направо
void bigstroka(const
char *str);//бегущая
строка справо налево
//вспомогательные функции
void ochisR (void
);//очистка вправо
void ochisL (void
);//очистка влево
void zaderj(char
dlit);//задежка индикации
/* загрузка индикатора
buf1-buf4 регистры индикатора или буфера
nazn - 0 - загрузка буфера, 1 - загрузка индикатора*/
void zagin(char
buf1,
char buf2,
char buf3,
char buf4,
char nazn);
Пример демо программы(НЕХ) и библиотека индикации.
Схема
подключения в pdf.
Украина, Днепропетровск