Динамическия индикация на семисегментных светодиодных дисплеях

Светомузыка music color

Проекты для радио любителей.

Динамическия индикация на семисегментных светодиодных дисплея 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.



 


Украина, Днепропетровск