П543 (ИЛЦ5-4/7М) — это четырехразрядный люминесцентный индикатор, применяемый в различных электронных устройствах, включая часы, будильники и таймеры.
Люминесцентный индикатор — это электронное устройство, использующее явление люминесценции для отображения информации. Его основная задача — создавать видимые изображения (цифры, символы), используя световое излучение люминофоров. Рассмотрим детально, как устроены и работают люминесцентные индикаторы.
Устройство люминесцентного индикатора
Индикатор состоит из нескольких ключевых элементов:
- Стеклянная трубка (корпус) — изготавливается из специального стекла, способного пропускать ультрафиолетовые лучи.
- Катоды — тонкие металлические нити, нагреваемые током накала. Катоды испускают свободные электроны, необходимые для возбуждения люминофора.
- Аноды — электроды, обеспечивающие движение свободных электронов от катодов к люминофорному слою.
- Люминофор — вещество, нанесенное тонким слоем на внутреннюю поверхность стеклянной трубки. Люминофор поглощает энергию возбужденных атомов газа и переизлучает её в виде видимого света определённого цвета.
- Контакты управления — электрические выводы для подключения каждого сегмента индикатора к источнику питания и управляющему устройству.
Как работает люминесцентный индикатор
Процесс функционирования индикатора включает следующие этапы:
- Разогрев катода — Через нить накала проходит электрический ток, разогревающий катод до температуры, достаточной для начала термоэлектронной эмиссии. Это означает, что свободные электроны начинают покидать поверхность катода и двигаться в сторону анода.
- Ионизация газовой среды — Электроны сталкиваются с молекулами газа, вызывая их ионизацию. Ионизированные молекулы создают проводящий канал между катодом и анодом.
- Возбуждение люминофора — Высокоскоростные электроны ударяют по поверхности люминофора, передавая ему свою кинетическую энергию. Атомы люминофора переходят в возбужденное состояние, а затем, возвращаясь в основное состояние, выделяют избыток энергии в виде фотонов видимого света.
Люминесцентные индикаторы широко применяются там, где необходимы яркие и легко читаемые показания, устойчивые к внешним условиям. Их можно встретить в бытовых приборах (микроволновых печах, калькуляторах, музыкальных центрах), приборных панелях автомобилей, авиационных приборах и промышленной технике.
Ниже представлен пример реализации часов на базе индикатора П543 (ИЛЦ5-4/7М) и платформы Arduino.
В данном проекте дополнительно используются компоненты DS3231 и SHT21, которые играют важную роль в обеспечении точности временных данных и мониторинга окружающей среды.
DS3231 — это высокоточный модуль реального времени (RTC), предназначенный для точного отслеживания текущего времени и даты. Он оснащен кварцевым генератором, который обеспечивает стабильность работы независимо от температурных колебаний. Встроенный аккумулятор сохраняет данные даже при отключении основного источника питания, что гарантирует непрерывность работы.
Основные характеристики:
- Высокая точность хода: ±2 ppm (±0.432 секунды в сутки)
- Поддержка календаря до 2100 года
- Интерфейсы связи: I²C
- Возможность подключения внешнего аккумулятора для автономной работы
SHT21 — это точный датчик температуры и влажности, созданный компанией Sensirion. Этот компактный сенсор выделяется своей высокой точностью и низким энергопотреблением, что делает его оптимальным выбором для проектов, связанных с климатическим мониторингом.
Основные характеристики:
- Диапазон измерения температуры: от -40°C до +125°C
- Диапазон измерения относительной влажности: от 0% до 100%
- Интерфейс связи: I²C
- Минимальное потребление энергии: всего несколько микроампер в режиме ожидания
Как работает управление часами:
Часы-будильник содержит два меню, одно для настроек часов, другое для настроек будильника. Управление часами осуществляется при помощи трех кнопок.
Управление часами
- Короткое нажатие кнопки ПРОГ:
- Переключает режимы отображения времени и данных с датчика, при активации режима, на индикатор поочередно выводятся температура, влажность, дата и месяц
- Удерживание кнопки ПРОГ и нажатие кнопки ПЛЮС:
- На индикаторе появится значок ПРГ.
- Далее кнопка ПРОГ позволяет перемещаться по меню установки параметров часов:
- Р1:00 — настройка минут
- Р2:00 — настройка часов
- Р3:00 — установка даты
- Р4:00 — установка месяца
- Р5:00 — установка года
- tt:05 — время отображения температуры
- HH:05 — время отображения влажности
- dd:05 — время отображения даты и месяца
- далее переход в режим часов
Управление будильником
- Короткое нажатие кнопок ПЛЮС и МИНУС:
- Активирует и деактивирует режим работы будильника, при активации этого параметра на индикаторе загорает значок «Колокольчик». Если функция не активна, не будет сигнала будильника в назначенное время.
- Удерживание кнопки ПРОГ и нажатие кнопки МИНУС:
- На индикаторе появится значок БУД.
- Далее кнопка ПРОГ позволяет перемещаться по меню установки времени будильника:
- А1:00 — настройка минут
- А2:00 — настройка часов
- далее переход в режим часов
Распиновка индикатора
Транзисторные ключи
- резисторы 10кОм … 47кОм необходимо подобрать для выравнивания яркости двоеточия и других разрядов индикатора.
Схема управления и подключения датчиков
Скетч
// Подключение сетки #define C1_SET 0 #define C2_SET 1 #define C3_SET 2 #define C4_SET 3 #define C5_SET 4 #define C6_SET 5 // Подключение сегменты-аноды #define A_SEG 6 #define B_SEG 7 #define C_SEG 8 #define D_SEG 9 #define E_SEG 10 #define F_SEG 11 #define G_SEG 12 #define H_SEG 13 // Кнопки #define PROG A0 // ПРОГ #define UP A1 // ПЛЮС #define DW A2 // МИНУС // Активный зуммер #define BUZZER A3 #include <MsTimer2.h> // // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip #include <Wire.h> #include <EEPROM.h> #include <DS3231.h> //https://github.com/jarzebski/Arduino-DS3231/archive/master.zip #include <SHT21.h> // http://rcl-radio.ru/wp-content/uploads/2025/03/SHT21-Arduino-Library-master.zip DS3231 clock; RTCDateTime DateTime; SHT21 sht; int i,segm,c,segm_dn, ss,mm,hh,dd,mon,gg,wesk,times; int a[4],s_tic, bud,kolorol, prog, timers; int fff; unsigned long times_0, times_1, times_2,times_3; int temp,humidity; bool avto,w,dv_stop, bud_aktiv; int brig = 500; int set_time, set_time_prog, gg_reg, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg; int times_a, times_b, times_c; int set_time_prog_alarm,alarm_mm, alarm_hh; bool zumm=0, zumm_off=0; void setup(){ MsTimer2::set(4, to_Timer);MsTimer2::start(); // timer2 period 4 ms pinMode(C1_SET,OUTPUT); pinMode(C2_SET,OUTPUT);pinMode(C3_SET,OUTPUT); pinMode(C4_SET,OUTPUT);pinMode(C5_SET,OUTPUT);pinMode(C6_SET,OUTPUT); pinMode(A_SEG,OUTPUT); pinMode(B_SEG,OUTPUT);pinMode(C_SEG,OUTPUT); pinMode(D_SEG,OUTPUT);pinMode(E_SEG,OUTPUT);pinMode(F_SEG,OUTPUT); pinMode(G_SEG,OUTPUT);pinMode(H_SEG,OUTPUT);pinMode(BUZZER,OUTPUT); pinMode(PROG,INPUT_PULLUP);pinMode(UP,INPUT_PULLUP);pinMode(DW,INPUT_PULLUP); Wire.begin();clock.begin(); if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении avto = EEPROM.read(0); times_a = EEPROM.read(1); times_b = EEPROM.read(2); times_c = EEPROM.read(3); alarm_mm = EEPROM.read(10); alarm_hh = EEPROM.read(11); // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча } void loop(){ if(set_time==0 && zumm==0){ prog = 1;bud = 1; // управление режимом авто if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==0){avto=1;timers=1;EEPROM.update(0,avto);delay(200);} if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==HIGH && avto==1){avto=0;timers=0;EEPROM.update(0,avto);delay(200);} // основное меню настройки часов, установка времени if(digitalRead(PROG)==LOW && digitalRead(UP)==LOW && digitalRead(DW)==HIGH){set_time=1;a[0]=15;a[1]=16;a[2]=17;a[3]=1;delay(2000);} // основное меню настройки будильника if(digitalRead(PROG)==LOW && digitalRead(UP)==HIGH && digitalRead(DW)==LOW){set_time=2;a[0]=15;a[1]=16;a[2]=17;a[3]=2;delay(2000);} if(digitalRead(UP)==LOW && digitalRead(PROG)==HIGH && digitalRead(DW)==HIGH){kolorol = 0;bud_aktiv=1;delay(200);} if(digitalRead(DW)==LOW && digitalRead(PROG)==HIGH && digitalRead(UP)==HIGH){kolorol = 1;bud_aktiv=0;delay(200);} } DateTime=clock.getDateTime();// опрос времени ss = DateTime.second; // секунды mm = DateTime.minute; // минуты hh = DateTime.hour; // часы dd = DateTime.day; // дата mon = DateTime.month; // месяц gg = DateTime.year; // Год if(ss<=times_a+times_b+times_c && avto==1){wesk = 12;} else if(set_time==1){wesk = 12;} else{wesk = DateTime.dayOfWeek;} // День недели (1 - воскресенье, 7 - суббота) temp = sht.getTemperature(); // Температура humidity = sht.getHumidity(); // Влажность gg_reg = gg-2000; mon_reg = mon; dd_reg = dd; hh_reg = hh; mm_reg = mm; ss_reg = ss; if(set_time==1){ prog = 0; bud = 1;dv_stop = 0;s_tic = 0; if(digitalRead(PROG)==LOW){set_time_prog++;if(set_time_prog>8){set_time_prog=0;set_time=0;}delay(200);} if(set_time_prog==0 && (digitalRead(UP)==LOW || digitalRead(DW)==LOW)){ss_reg = 0;clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==0){a[0]=18;a[1]=0;a[2]=ss_reg/10;a[3]=ss_reg%10;} if(set_time_prog==1 && digitalRead(UP)==LOW){mm_reg ++;if(mm_reg>59){mm_reg=59;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==1 && digitalRead(DW)==LOW){mm_reg --;if(mm_reg<0){mm_reg=0;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==1){a[0]=18;a[1]=1;a[2]=mm_reg/10;a[3]=mm_reg%10;} if(set_time_prog==2 && digitalRead(UP)==LOW){hh_reg ++;if(hh_reg>23){hh_reg=23;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==2 && digitalRead(DW)==LOW){hh_reg --;if(hh_reg<0){hh_reg=0;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==2){a[0]=18;a[1]=2;a[2]=hh_reg/10;a[3]=hh_reg%10;} if(set_time_prog==3 && digitalRead(UP)==LOW){dd_reg ++;if(dd_reg>31){dd_reg=31;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==3 && digitalRead(DW)==LOW){dd_reg --;if(dd_reg<1){dd_reg=1;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==3){a[0]=18;a[1]=3;a[2]=dd_reg/10;a[3]=dd_reg%10;} if(set_time_prog==4 && digitalRead(UP)==LOW){mon_reg ++;if(mon_reg>12){mon_reg=12;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==4 && digitalRead(DW)==LOW){mon_reg --;if(mon_reg<1){mon_reg=1;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==4){a[0]=18;a[1]=4;a[2]=mon_reg/10;a[3]=mon_reg%10;} if(set_time_prog==5 && digitalRead(UP)==LOW){gg_reg ++;if(gg_reg>99){mon_reg=99;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==5 && digitalRead(DW)==LOW){gg_reg --;if(gg_reg<25){mon_reg=25;}clock.setDateTime(gg_reg+2000, mon_reg, dd_reg, hh_reg, mm_reg, ss_reg);delay(100);} if(set_time_prog==5){a[0]=18;a[1]=5;a[2]=gg_reg/10;a[3]=gg_reg%10;} if(set_time_prog==6 && digitalRead(UP)==LOW){times_a ++;if(times_a>10){times_a=10;}EEPROM.update(1,times_a);delay(100);} if(set_time_prog==6 && digitalRead(DW)==LOW){times_a --;if(times_a<0){times_a=0;};EEPROM.update(1,times_a);delay(100);} if(set_time_prog==6){a[0]=17;a[1]=1;a[2]=times_a/10;a[3]=times_a%10;} if(set_time_prog==7 && digitalRead(UP)==LOW){times_b ++;if(times_b>10){times_b=10;}EEPROM.update(2,times_b);delay(100);} if(set_time_prog==7 && digitalRead(DW)==LOW){times_b --;if(times_b<0){times_b=0;};EEPROM.update(2,times_b);delay(100);} if(set_time_prog==7){a[0]=17;a[1]=2;a[2]=times_b/10;a[3]=times_b%10;} if(set_time_prog==8 && digitalRead(UP)==LOW){times_c ++;if(times_c>10){times_c=10;}EEPROM.update(3,times_c);delay(100);} if(set_time_prog==8 && digitalRead(DW)==LOW){times_c --;if(times_c<0){times_c=0;};EEPROM.update(3,times_c);delay(100);} if(set_time_prog==8){a[0]=17;a[1]=3;a[2]=times_c/10;a[3]=times_c%10;} } if(set_time==2){ prog = 1; bud = 0;dv_stop = 0;s_tic = 1; if(digitalRead(PROG)==LOW){set_time_prog_alarm++;if(set_time_prog_alarm>1){set_time_prog_alarm=0;set_time=0;}delay(200);} if(set_time_prog_alarm==0 && digitalRead(UP)==LOW){alarm_mm ++;if(alarm_mm>59){alarm_mm=59;}EEPROM.update(10,times_a);delay(100);} if(set_time_prog_alarm==0 && digitalRead(DW)==LOW){alarm_mm --;if(alarm_mm<0){alarm_mm=0;};EEPROM.update(10,times_a);delay(100);} if(set_time_prog_alarm==0){a[0]=19;a[1]=0;a[2]=alarm_mm/10;a[3]=alarm_mm%10;} if(set_time_prog_alarm==1 && digitalRead(UP)==LOW){alarm_hh ++;if(alarm_hh>23){alarm_hh=23;}EEPROM.update(11,times_a);delay(100);} if(set_time_prog_alarm==1 && digitalRead(DW)==LOW){alarm_hh --;if(alarm_hh<0){alarm_hh=0;};EEPROM.update(11,times_a);delay(100);} if(set_time_prog_alarm==1){a[0]=19;a[1]=1;a[2]=alarm_hh/10;a[3]=alarm_hh%10;} } if(set_time==0){ if(avto==1){ if(ss < times_a){dv_stop = 0;s_tic = 0; a[0]=temp/10;a[1]=temp%10;a[2]=13;a[3]=14;} // вывод темпер. if(ss >= times_a && ss <=times_a+times_b){dv_stop = 0;s_tic = 0; a[0]=10;a[1]=11;a[2]=humidity/10;a[3]=humidity%10;} // вывод влажн. if(ss > times_a+times_b && ss <=times_a+times_b+times_c){dv_stop = 0;s_tic = 1; a[0]=dd/10;a[1]=dd%10;a[2]=mon/10;a[3]=mon%10;} // вывод дата месяц. if(ss > times_a+times_b+times_c){ dv_stop=1;timm();} // вывод время }else{ dv_stop=1;timm();} // если авто = 0, то выводить только время // мигание двоеточия if(dv_stop==1){ mig_dv();} } // set_time == 0 if( (hh*100+mm == alarm_hh*100+alarm_mm) && bud_aktiv==1 && zumm_off==0){zumm = 1;} if(hh*100+mm != alarm_hh*100+alarm_mm){zumm = 0;zumm_off=0;} if(zumm==1 && (digitalRead(UP)==LOW || digitalRead(DW)==LOW)){zumm=0;zumm_off=1;delay(200);} if(zumm==1 && zumm_off==0){digitalWrite(BUZZER,HIGH);} if(zumm==0){digitalWrite(BUZZER,LOW);} delay(100); digitalWrite(BUZZER,LOW); } void to_Timer(){ switch(i){ case 0: segm=12; setka();segment(1); delayMicroseconds(brig); segm_dn=wesk; c=5; setka();dn(bud); break; case 1: segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[0]; c=4; setka();segment(1); break; case 2: segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[1]; c=3; setka();segment(kolorol); break; case 3: segm=12; setka();segment(1); delayMicroseconds(brig); segm=s_tic; c=2; setka();tic(); break; case 4: segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[2]; c=1; setka();segment(prog); break; case 5: segm=12; setka();segment(1); delayMicroseconds(brig); segm=a[3]; c=0; setka();segment(timers); break; }i++;if(i>5){i=0;}} void segment(bool hhh){ switch(segm){ case 0: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// 0 case 1: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 1 case 2: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 2 case 3: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// 3 case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 4 case 5: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 5 case 6: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 6 case 7: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// 7 case 8: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 8 case 9: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// 9 case 10: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// Н case 11: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,hhh);break;// - case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,hhh);break;// пусто case 13: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// * градус case 14: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,hhh);break;// C case 15: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,0);ch(E_SEG,1);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// S case 16: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// E case 17: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// t case 18: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// P case 19: ch(A_SEG,0);ch(B_SEG,0);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,0);ch(F_SEG,0);ch(G_SEG,0);ch(H_SEG,hhh);break;// A }} void dn(bool ind_bud){ switch(segm_dn){ case 1: ch(A_SEG,0);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПН case 2: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// ВТ case 3: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,0);ch(G_SEG,1);ch(H_SEG,1);break;// СР case 4: ch(A_SEG,1);ch(B_SEG,0);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ЧТ case 5: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,0);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ПТ case 6: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,0);ch(H_SEG,1);break;// СБ case 7: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,0);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// ВС case 12: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,ind_bud);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// пусто }} void tic(){ switch(s_tic){ case 0: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,1);break;// _ case 1: ch(A_SEG,1);ch(B_SEG,1);ch(C_SEG,1);ch(D_SEG,1);ch(E_SEG,1);ch(F_SEG,1);ch(G_SEG,1);ch(H_SEG,0);break;// : }} void setka(){ switch(c){ case 0:ch(C1_SET,0);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; case 1:ch(C1_SET,1);ch(C2_SET,0);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; case 2:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,0);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,1);break; case 3:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,0);ch(C5_SET,1);ch(C6_SET,1);break; case 4:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,0);ch(C6_SET,1);break; case 5:ch(C1_SET,1);ch(C2_SET,1);ch(C3_SET,1);ch(C4_SET,1);ch(C5_SET,1);ch(C6_SET,0);break; }} void ch(int pin, int logic){digitalWrite(pin,logic);} void mig_dv(){if(millis()-times_0<=500){s_tic = 0;}if(millis()-times_0>500){s_tic = 1;}if(millis()-times_0>1000){times_0=millis();}} void timm(){times = hh*100+mm;a[0]=times/1000;a[1]=times/100%10;a[2]=times/10%10;a[3]=times%10;}
Для нормальной работы индикатора ИЛЦ5-4/7М необходимы следующие параметры питания:
- Напряжение накала: 5 В
- Ток накала: 120 ± 12 мА
- Напряжение анода-сегмента (импульсное): 27 В
- Ток анодов-сегментов (импульсный одного разряда): 12 мА
- Напряжение сетки (импульсное): 27 В
- Ток сетки (импульсный одного разряда): 12 мА
Желательно использовать переменное напряжение для питания катода, чтобы избежать эффекта поляризации и обеспечить равномерное свечение люминофора. Это также продлит срок службы индикатора.
Следует отметить, что в данной статье схема питания не рассматривается.