4 санды индикатор Arduino қосылымы. Жеті сегментті көрсеткіш. Бөлшек сандардың көрсеткіштеріне шығару, float форматы

Параметрлер бар, олар үшін жай көрсеткіш емес, объективті ақпаратты беру ыңғайлырақ болады. Мысалы, сырттағы ауа температурасы немесе оятқыштағы уақыт. Иә, мұның бәрін жарқыраған шамдар немесе жарықдиодты шамдар арқылы жасауға болады. Бір дәреже – бір жанып тұрған жарықдиодты немесе жарық шамы және т.б. Бірақ бұл от жағатындарды санау - жақсы, жоқ! Бірақ, олар айтқандай, ең қарапайым шешімдер- ең сенімді. Сондықтан, ұзақ уақыт бойы ойланбастан, әзірлеушілер қарапайым жарықдиодты жолақтарды алып, оларды дұрыс тәртіпте орналастырды.

келуімен ХХ ғасырдың басында вакуумдық түтіктералғашқы газ-разряд көрсеткіштері пайда болды

Осындай көрсеткіштердің көмегімен қорытынды жасауға болатын сандық ақпаратараб цифрларымен. Бұрын дәл осындай шамдарда құрылғыларға және басқаларға әртүрлі белгілер жасалды электрондық құрылғылар. Қазіргі уақытта газ разрядтық элементтер ешқашан еш жерде қолданылмайды. Бірақ ретро әрқашан сәнді, сондықтан көптеген радиоәуесқойлар өздеріне және жақындарына газ разрядының көрсеткіштері бойынша тамаша сағаттар жинайды.


Газ разрядты шамдардың кемшілігі электр энергиясын көп тұтынады. Төзімділік туралы дауласуға болады. Біздің университетте біз әлі күнге дейін зертханалық бөлмелерде жиілік есептегіштерін пайдаланамыз. газ шығару көрсеткіштері.

Жеті сегментті көрсеткіштер

Жарықдиодтардың пайда болуымен жағдай жақсы жаққа түбегейлі өзгерді. Жарықдиодты шамдар өздері тұтынады шағын ток. Егер сіз оларды дұрыс жерге орналастырсаңыз, кез келген ақпаратты көрсетуге болады. Барлық араб сандарын бөлектеу үшін тек жеті жарық диодты жолақтар жеткілікті - белгілі бір жолмен орнатылған сегменттер:

Осындай жеті сегментті көрсеткіштердің барлығына дерлік сегізінші сегмент – нүкте қосылады, осылайша кез келген параметрдің бүтін және бөлшек мәнін көрсетуге болады.

Теориялық тұрғыдан біз сегіз сегментті көрсеткішті аламыз, бірақ ескі әдіспен оны жеті сегментті көрсеткіш деп те атайды.

Нәтиже қандай? Жеті сегментті индикатордағы әрбір жолақ жарық диодты шаммен немесе жарықдиодты шамдар тобымен жарықтандырылады. Нәтижесінде белгілі бір сегменттерді ерекшелеу арқылы біз 0-ден 9-ға дейінгі сандарды, сондай-ақ әріптер мен белгілерді көрсете аламыз.

Диаграммадағы түрлері және белгіленуі

Бір таңбалы, екі таңбалы, үш таңбалы және төрт таңбалы жеті сегментті көрсеткіштер бар. Мен ешқашан төрт санаттан артық көрмедім.

Диаграммаларда жеті сегментті индикатор келесідей көрінеді:

Іс жүзінде, негізгі терминалдардан басқа, әрбір жеті сегментті индикаторда жалпы анод (OA) немесе жалпы катод (OC) бар ортақ терминал бар.

Жалпы аноды бар жеті сегментті индикатордың ішкі тізбегі келесідей болады:


және келесідей жалпы катодпен:


Егер бізде жалпы анод (OA) бар жеті сегментті индикатор болса, онда тізбекте біз осы түйреуішке «плюс» қуат беруіміз керек, ал егер жалпы катодпен (OC) болса, онда «минус» немесе жерге.

Жеті сегментті индикаторды қалай тексеруге болады

Бізде келесі көрсеткіштер бар:


Қазіргі жеті сегментті индикаторды тексеру үшін бізге тек диодты тексеру функциясы бар мультиметр қажет. Бастау үшін біз жалпы қорытындыны іздейміз - ол OA немесе OK болуы мүмкін. Мұнда тек кездейсоқ. Ал, содан кейін біз жоғарыдағы диаграммаларға сәйкес индикатордың қалған сегменттерінің өнімділігін тексереміз.

Төмендегі фотода көріп отырғаныңыздай, сыналған сегмент жанады. Біз басқа сегменттерді дәл осылай тексереміз. Егер барлық сегменттер жанып тұрса, онда мұндай индикатор бұзылмаған және сіздің әзірлемелеріңізде пайдаланылуы мүмкін.


Кейде мультиметрдегі кернеу сегментті тексеру үшін жеткіліксіз. Сондықтан біз қуат көзін алып, оны 5 вольтқа орнатамыз. Сегмент арқылы токты шектеу үшін біз 1-2 Кило-Ом резистор арқылы тексереміз.


Дәл осылай біз қытайлық қабылдағыштың көрсеткішін тексереміз


Схемаларда жеті сегментті индикаторлар әрбір түйреуіште резисторларға қосылған

Біздің қазіргі әлемжеті сегментті индикаторлар кез келген ақпаратты көрсете алатын сұйық кристалды индикаторлармен ауыстырылады

бірақ оларды пайдалану үшін мұндай құрылғылардың схемасын жобалауда белгілі бір дағдылар қажет. Сондықтан жеті сегментті индикаторлар құнының төмендігі мен пайдаланудың қарапайымдылығына байланысты бүгінгі күнге дейін қолданылуда.

Жеті сегментті жарықдиодты индикаторлар сандық мәнді көрсету құрылғылары арасында өте танымал және микротолқынды пештердің алдыңғы панельдерінде қолданылады, кір жуғыш машиналар, сандық сағаттар, есептегіштер, таймерлер және т.б. СКД индикаторларымен салыстырғанда, жарық диодты индикатор сегменттері жарқырайды және ұзақ қашықтықта және кең көру бұрышында көрінеді. Жеті сегментті 4 разрядты индикаторды микроконтроллерге қосу үшін кемінде 12 енгізу/шығару желісі қажет болады. Сондықтан бұл көрсеткіштерді түйреуіштердің аз саны бар микроконтроллерлермен, мысалы, компанияның серияларымен пайдалану мүмкін емес. Әрине қолдануға болады әртүрлі әдістермультиплексирлеу (оның сипаттамасын веб-сайтта «Схемалар» бөлімінде табуға болады), бірақ бұл жағдайда да әрбір әдіс үшін белгілі бір шектеулер бар және олар көбінесе күрделі бағдарламалық жасақтама алгоритмдерін пайдаланады.

Индикаторды SPI интерфейсі арқылы қосу әдісін қарастырамыз, ол үшін микроконтроллердің тек 3 енгізу/шығару желісі қажет болады. Бұл ретте барлық индикатор сегменттерін бақылау сақталады.

4 разрядты индикаторды SPI шинасы арқылы микроконтроллерге қосу үшін компания шығарған мамандандырылған драйвер чипі қолданылады. Микросұлба жалпы катодты сегіз жеті сегментті индикаторларды басқаруға қабілетті және BCD дешифраторын, сегмент драйверлерін, мультиплексирлеу тізбегін және сандық мәндерді сақтауға арналған статикалық жедел жадты қамтиды.

Индикатор сегменттері арқылы ток тек бір сыртқы резистор арқылы орнатылады. Сонымен қатар, чип кірістірілген PWM көмегімен индикатордың жарықтығын (16 жарықтық деңгейі) басқаруды қолдайды.

Мақалада талқыланған схема әуесқойлық радио конструкцияларында қолдануға болатын SPI интерфейсі бар дисплей модулінің схемасы. Бізді схеманың өзі емес, SPI интерфейсі арқылы микросұлбамен жұмыс істеу қызықтырады. +5 В модулінің қуаты Vcc істікшесіне беріледі, сигналдық сызықтар MOSI, CLK және CS негізгі құрылғы (микроконтроллер) мен қосалқы құрылғы (MAX7219 чип) арасындағы байланысқа арналған.

Микросұлба стандартты қосылымда пайдаланылады; қажет болатын жалғыз сыртқы компоненттер - сегменттер арқылы токты орнататын резистор, қуат көзіне арналған қорғаныс диод және қуат көзіне арналған сүзгі конденсаторы.

Мәліметтер чипке 16 разрядты пакеттерде (екі байт) тасымалданады, олар CLK сигналының әрбір көтерілу жиегінде кірістірілген 16 разрядты ауыстыру регистріне орналастырылады. 16 разрядты пакетті D0-D15 деп белгілейміз, мұнда D0-D7 биттері деректерден тұрады, D8-D11 регистр адресі, D12-D15 биттері мағынасы жоқ. D15 биті - ең маңызды бит және бірінші қабылданған бит. Чип сегіз индикаторды басқаруға қабілетті болса да, біз тек төртеуімен жұмыс істеуді қарастырамыз. Олар оңнан солға қарай ретімен орналасқан DIG0 - DIG3 шығыстарымен басқарылады, оларға сәйкес келетін 4 разрядты адрестер (D8-D11) 0x01, 0x02, 0x03 және 0x04 (он алтылық формат). Цифрлық регистр 8x8 ұйымы бар чиптік жедел жадты пайдалану арқылы жүзеге асырылады және дисплейдегі әрбір жеке цифрды кез келген уақытта жаңартуға болатындай тікелей адрестеледі. Келесі кестеде MAX7219 чипінің адрестік сандары мен басқару регистрлері көрсетілген.

Тіркелу

Мекенжай

HEX мәні

Операция жоқ

Декодтау режимі

Көрсеткіштер саны

Жабу

Көрсеткіш сынағы

Бақылау регистрлері

MAX1792 микросхемасында 5 басқару регистрлері бар: декодтау режимі (Decode-Mode), индикатордың жарықтығын басқару (Қарқындылық), қосылған индикаторлар санының регистрі (Сканерлеу шегі), қосу/өшіруді басқару (Өшіру), сынақ режимі (Дисплейді тексеру).

Чипті қосу және өшіру

Чипке қуат берілгенде, барлық регистрлер қалпына келтіріліп, өшіру режиміне өтеді. Бұл режимде дисплей өшіріледі. Қалыпты жұмыс режиміне ауысу үшін Өшіру регистрінің D0 биті (0Сh мекенжайы) орнатылуы керек. Бұл битті кез келген уақытта барлық регистрлердің мазмұнын өзгеріссіз қалдырып, драйверді өшіруге мәжбүрлеу үшін тазалауға болады. Бұл режимді қуат үнемдеу үшін немесе индикаторды жыпылықтау арқылы дабыл режимінде пайдалануға болады (Өшіру режимін кезекпен қосу және өшіру).

Микросұлба мекенжайды (0Сh) және деректерді (00h) ретімен жіберу және 0Ch (адрес) беру арқылы Өшіру режиміне ауыстырылады, содан кейін 01h (деректер) қалыпты жұмыс режиміне оралады.

Декодтау режимі

Декодтау режимін таңдау регистрін (09h мекенжайы) пайдаланып, BCD кодын B декодтауын (0-9, E, H, L, P, - таңбаларын көрсету) немесе әрбір сан үшін декодтаусыз пайдалануға болады. Регистрдегі әрбір бит бір цифрға сәйкес келеді, логикалық орнату осы бит үшін дешифраторды қосуға сәйкес келеді, 0 параметрі декодер өшірілгенін білдіреді. Егер BCD дешифраторы пайдаланылса, онда цифрлық регистрлердегі деректердің ең төменгі жиыры (D3-D0) ғана есепке алынады, D4-D6 биттері еленбейді, D7 биті BCD дешифраторына тәуелді емес және қосуға жауап береді. индикатордағы ондық нүкте, егер D7 = 1 болса. Мысалы, 02h және 05h байттары ретімен жіберілгенде, DIG1 индикаторы (оң жақтан екінші сан) 5 санын көрсетеді. Сол сияқты, 01h және 89h жібергенде, DIG0 индикаторы ондық үтірмен бірге 9 санын көрсетеді. . Төмендегі кестеде көрсетілген толық тізімчиптің BCD декодерін пайдалану кезінде көрсетілетін таңбалар.

Таңба

Регистрлердегі деректер

Қосылған сегменттер = 1

Бос

*Ондық нүкте D7=1 биті арқылы орнатылады

BCD декодері жұмыстан шығарылған кезде D7-D0 деректер биттері индикатордың сегменттік сызықтарына (A-G және DP) сәйкес келеді.

Индикатордың жарықтығын басқару

Чип кірістірілген PWM көмегімен индикаторлардың жарықтығын бағдарламалық түрде басқаруға мүмкіндік береді. PWM шығысы 16 жарықтық деңгейлерінің бірін орнатуға мүмкіндік беретін Қарқындылық регистрінің (мекен-жайы 0Ah) төменгі ретті тістеуімен (D3-D0) басқарылады. Барлық тістеу биттері 1-ге орнатылғанда, индикатордың максималды жарықтығы таңдалады.

Қосылған көрсеткіштер саны

Scan-Limit регистрі (адрес 0Bh) микросұлба (1 ... 8) қызмет көрсететін разрядтар санының мәнін белгілейді. Біздің 4-биттік нұсқамыз үшін регистрге 03h мәні жазылуы керек.

Көрсеткіш сынағы

Бұл режимге жауапты регистр 0Fh мекенжайында орналасқан. Регистрде D0 битін орнату арқылы пайдаланушы барлық индикатор сегменттерін қосады, бұл ретте басқару және деректер регистрлерінің мазмұны өзгермейді. Дисплей-Тест режимін өшіру үшін D0 биті 0 болуы керек.

Микроконтроллермен интерфейс

Индикатор модулін үш бос енгізу/шығару желісі бар кез келген микроконтроллерге қосуға болады. Егер микроконтроллерде кіріктірілген SPI аппараттық модулі болса, онда индикаторлық модульді шинадағы қосалқы құрылғы ретінде қосуға болады. Бұл жағдайда микроконтроллердің SDO (сериялық деректер шығуы), SCLK (сериялық сағат) және SS (жұмысты таңдау) сигнал желілері MAX7219 чипінің (модуль) MOSI, CLK және CS түйреуіштеріне тікелей қосылуы мүмкін. CS сигналы белсенді төмен.

Егер микроконтроллерде аппараттық SPI болмаса, интерфейс бағдарламалық жасақтамада ұйымдастырылуы мүмкін. MAX7219 құрылғысымен байланыс CS сызығын төмен тартып, ұстап тұру арқылы басталады, содан кейін CLK сигналының көтерілу жиегіндегі MOSI сызығына 16 бит деректерді дәйекті түрде жіберу (алдымен MSB). Тасымалдау аяқталғаннан кейін CS желісі қайтадан жоғарылайды.

Жүктеп алу бөлімінде пайдаланушылар сынақ бағдарламасының бастапқы мәтінін және SPI интерфейсі бар индикаторлық модульде мәндерді көрсететін кәдімгі 4 биттік есептегішті іске асыратын микробағдарламаның HEX файлын жүктей алады. Қолданылатын микроконтроллер бағдарламалық жасақтамада іске асырылған интерфейс болып табылады, индикаторлық модульдің CS, MOSI және CLK сигналдық желілері сәйкесінше GP0, GP1 және GP2 порттарына қосылған. mikroC компиляторы пайдаланылады PIC микроконтроллерлері(микроэлектроника

Сайттағы материалдарға түсініктеме беру және алу толық қолжетімділікбіздің форумға қажет тіркелу .


Бір таңбалы жеті сегментті индикатордың қосылу схемасы
Көп таңбалы жеті сегментті индикатордың қосылу схемасы

Сандық ақпаратты көрсету құрылғысы. Бұл араб сандарын көрсете алатын индикатордың ең қарапайым орындалуы. Әріптерді көрсету үшін күрделірек көп сегментті және матрицалық көрсеткіштер қолданылады.

Өзінің аты айтып тұрғандай, ол бөлек қосылатын және өшетін жеті дисплей элементінен (сегменттерден) тұрады. Оларды әртүрлі комбинацияларға қосу арқылы араб цифрларының жеңілдетілген кескіндерін жасау үшін пайдалануға болады.
Сегменттер A және G әріптерімен белгіленеді; сегізінші кесінді – ондық бөлшек (ондық нүкте, DP), бөлшек сандарды көрсетуге арналған.
Кейде жеті сегментті индикаторда әріптер көрсетіледі.

Олар әртүрлі түстермен келеді, әдетте ақ, ​​қызыл, жасыл, сары және көк. Сонымен қатар, олар әртүрлі мөлшерде болуы мүмкін.

Сондай-ақ, жарық диодты индикатор бір таңбалы (жоғарыдағы суреттегідей) немесе көп санды болуы мүмкін. Негізінде бір, екі, үш және төрт таңбалы жарықдиодты индикаторлар тәжірибеде қолданылады:

Он цифрдан басқа, жеті сегментті индикаторлар әріптерді көрсетуге қабілетті. Бірақ аздаған әріптердің интуитивті жеті сегменттік көрінісі бар.
Латын тілінде: бас әріп A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, кіші әріптер a, b, c, d, e, g , h, i, n, o, q, r, t, u.
Кириллицада: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (екі цифр), b, E/Z.
Сондықтан жеті сегментті индикаторлар тек қарапайым хабарламаларды көрсету үшін қолданылады.

Барлығы жеті сегментті жарықдиодты индикатор 128 таңбаны көрсете алады:

Әдеттегі жарықдиодты индикатордың тоғыз өткізгіші бар: біреуі барлық сегменттердің катодтарына, ал қалған сегізі әр сегменттің анодына өтеді. Бұл схема деп аталады «жалпы катод тізбегі», схемалары да бар жалпы анодпен(онда бәрі керісінше). Көбінесе базаның әртүрлі ұштарында бір емес, екі жалпы терминал жасалады - бұл өлшемдерді ұлғайтпай сымдарды жеңілдетеді. «Әмбебап» деп аталатындар да бар, бірақ мен мұндайды кездестірмедім. Бұдан басқа, кірістірілген ауысым регистрі бар индикаторлар бар, бұл микроконтроллер портының түйреуіштерінің санын айтарлықтай азайтады, бірақ олар әлдеқайда қымбат және практикада сирек қолданылады. Кең ауқымды түсіну мүмкін болмағандықтан, біз мұндай көрсеткіштерді әзірге қарастырмаймыз (бірақ сегменттердің саны әлдеқайда көп, матрицалық көрсеткіштер де бар).

Көп таңбалы жарықдиодты индикаторларжиі динамикалық принцип бойынша жұмыс істейді: барлық цифрлардың аттас сегменттерінің шығыстары бір-бірімен байланысты. Мұндай индикатор бойынша ақпаратты көрсету үшін басқару микросхемасы циклдік түрде барлық цифрлардың ортақ терминалдарына ток беруі керек, ал ток сегменттің терминалдарына берілген разрядта жанып тұруына байланысты беріледі.

Бір таңбалы жеті сегментті индикаторды микроконтроллерге қосу

Төмендегі диаграмма қалай екенін көрсетеді бір таңбалы жеті сегментті индикатор қосылғанмикроконтроллерге.
Егер индикаторы бар екенін ескеру қажет ЖАЛПЫ КАТОД, содан кейін оның жалпы шығысы қосылады «жер», ал сегменттер азықтандыру арқылы тұтанады логикалық бірлікпорт шығысына.
Егер көрсеткіш болса ЖАЛПЫ АНОД, содан кейін ол өзінің жалпы сымына беріледі «плюс»кернеу, ал сегменттер порт шығысын күйге ауыстыру арқылы тұтанады логикалық нөл.

Бір таңбалы жарықдиодты индикаторда көрсету екілік кодты микроконтроллер портының түйреуіштеріне сәйкес логикалық деңгейдің сәйкес цифрын қолдану арқылы жүзеге асырылады (ОК бар индикаторлар үшін - логикалық, OA бар индикаторлар үшін - логикалық нөлдер).

Токты шектеуші резисторлардиаграммада болуы немесе болмауы мүмкін. Мұның бәрі индикаторға берілетін қуат кернеуіне байланысты және техникалық сипаттамаларыкөрсеткіштер. Егер, мысалы, сегменттерге берілетін кернеу 5 вольт болса және олар 2 вольт жұмыс кернеуіне арналған болса, онда ток шектейтін резисторлар орнатылуы керек (тоқтың жоғарылауы үшін олар арқылы токты шектеу және күйіп қалмау үшін индикатор ғана емес, сонымен қатар микроконтроллер порты).
Атасының формуласын қолдана отырып, ток шектейтін резисторлардың мәнін есептеу өте оңай Ом.
Мысалы, индикатордың сипаттамалары келесідей (мәліметтер парағынан алынған):
— жұмыс кернеуі — 2 вольт
— жұмыс тогы — 10 мА (=0,01 А)
— қоректену кернеуі 5 вольт
Есептеу формуласы:
R = U/I (осы формуладағы барлық мәндер Ом, Вольт және Амперде болуы керек)
R= (қоректену кернеуі – жұмыс кернеуі)/жұмыс тогы
R= (5-2)/0,01 = 300 Ом

Көп таңбалы жеті сегментті жарықдиодты индикатордың қосылу схемасыНегізінде бір таңбалы индикаторды қосу кезіндегідей. Жалғыз нәрсе - индикаторлардың катодтарына (анодтарына) басқару транзисторлары қосылады:

Бұл диаграммада көрсетілмеген, бірақ транзисторлардың негіздері мен микроконтроллер портының түйреуіштері арасында кедергісі транзистор түріне байланысты резисторларды қосу керек (резистор мәндері есептеледі, бірақ номиналды мәні 5-10 кОм болатын резисторларды да қолданып көруге болады).

Разрядтар бойынша көрсету динамикалық түрде жүзеге асырылады:
— сәйкес цифрдың екілік коды 1-разряд үшін PB портының шығыстарында орнатылады, содан кейін логикалық деңгей бірінші санның басқару транзисторына қолданылады.
— сәйкес цифрдың екілік коды 2-разряд үшін PB портының шығыстарында орнатылады, содан кейін логикалық деңгей екінші цифрдың басқару транзисторына қолданылады.
— сәйкес цифрдың екілік коды 3-разряд үшін PB портының шығыстарында орнатылады, содан кейін логикалық деңгей үшінші разрядтың басқару транзисторына қолданылады.
- осылайша шеңберде
Бұл жағдайда мыналарды ескеру қажет:
— бар көрсеткіштер үшін ЖАРАЙДЫ МАбасқару транзисторлық құрылымы қолданылады NPN(логикалық блокпен басқарылады)
- индикатор үшін О.А- транзистордың құрылымы PNP(логика нөлмен басқарылады)

Радиотехника мен электроника пайда болғаннан бері кері байланысэлектронды құрылғы мен адам әртүрлі сигнал шамдарымен, түймелермен, ауыстырып-қосқыштармен, қоңыраулармен (микротолқынға дайын сигнал - дығу!) сүйемелдеумен болды. Кейбір электрондық құрылғылар ең аз ақпаратты қамтамасыз етеді, себебі көбірек қажет емес. Мысалы, қытай телефонының зарядтағышындағы жарқыраған жарық диоды зарядтағыштың розеткаға қосылғанын және қуат алып жатқанын көрсетеді. Бірақ объективті ақпаратты беру ыңғайлырақ болатын параметрлер де бар. Мысалы, сырттағы ауа температурасы немесе оятқыштағы уақыт. Иә, мұның бәрін жарқыраған шамдар немесе жарықдиодты шамдар арқылы жасауға болады. Бір дәреже - бір жанып тұрған диод немесе шам. Қанша градус бар, сонша көрсеткіштер қосулы. Бұл өрт сөндірушілерді санау әдеттегі нәрсе болуы мүмкін, бірақ температураны градустың оннан бір бөлігі дәлдікпен көрсету үшін осы шамдардың қаншасы қажет болады? Жалпы, бұл жарықдиодтар мен шамдар электронды құрылғыда қандай аумақты алады?

Практикалық жеті сегментті дисплей құрылғыларында кемінде сегіз сыртқы қосылым терминалдары болуы керек; олардың жетеуі жеке фотоэлектрлік сегменттерге қол жеткізуді қамтамасыз етеді, ал сегізіншісі барлық сегменттерге ортақ қосылуды қамтамасыз етеді. Бірінші жағдайда құрылғы жеті сегментті жалпы анодты дисплей ретінде белгілі; соңғы жағдайда құрылғы жеті сегментті жалпы катодты дисплей ретінде белгілі.

Жалпы анодтық дисплейді басқару үшін драйверде белсенді-төмен шығыс болуы керек, онда әрбір сегменттік жетек әдетте жоғары, бірақ сегментті қосу үшін төмен түседі. Жалпы катодты дисплейді жүргізу үшін драйверде белсенді белсенді шығыс болуы керек.

Ал ХХ ғасырдың басында электронды түтіктердің пайда болуымен алғашқы газ разряд көрсеткіштері пайда болды.

Осындай көрсеткіштердің көмегімен цифрлық ақпаратты араб цифрларымен көрсетуге мүмкіндік туды. Бұрын дәл осы шамдар аспаптар мен басқа да электронды құрылғыларға әртүрлі белгілер жасау үшін қолданылған. Қазіргі уақытта газ разрядтық элементтер ешқашан еш жерде қолданылмайды. Бірақ ретро әрқашан сәнді, сондықтан көптеген радиоәуесқойлар өздеріне және жақындарына тамаша газ разряд сағаттарын жинайды.

Мұның толық түсіндірмесі келесідей сәл күрделірек. Кернеу нөлге тең болғанда, сегмент тиімді түрде көрінбейді. Дегенмен, кіріс кернеуі айтарлықтай оң немесе теріс болған кезде сегмент тиімді түрде көрінеді, бірақ жетек кернеуі бірнеше жүз миллисекундтан артық сақталса, сегмент тұрақты түрде көрінуі және одан әрі мағынасы болмауы мүмкін.

Бұл шарттарда сегмент ажыратылады. Осылайша, сегмент осы шарттарға енгізілген. Жетектің бұл түрі әдетте кернеуді екі есе арттыратын «көпір жетек» жүйесі ретінде белгілі. Схеманың әрекеттер тізбегі келесідей. Жоғарыда сипатталған қарапайым каскадты жүйеде елеулі ақау бар, себебі дисплей нақты санау кезеңінде бұлыңғыр болады, әрбір санау аяқталғанда және кіріс қақпасы жабылған кезде ғана тұрақты және оқылатын болады. Бұл «бұлыңғыр және оқылатын» дисплей түрін қарау өте тітіркендіргіш.

Газ разрядты шамдардың кемшіліктері - олар көп жейді. Төзімділік туралы дауласуға болады. Біздің университетте біз әлі күнге дейін зертханалық бөлмелердегі газ разрядтауыштарында жиілікті өлшегіштерді қолданамыз.

Жарықдиодтардың пайда болуымен жағдай күрт өзгерді. Жарықдиодты шамдардың өзі токтың аз мөлшерін тұтынады. Егер сіз оларды дұрыс жерге орналастырсаңыз, кез келген ақпаратты көрсетуге болады. Барлық араб цифрларын бөлектеу үшін бір нәрсе жеткілікті болды Жеті (атауы сондықтан жеті сегментті көрсеткіш) жарқыраған жарықдиодты жолақтар белгілі бір түрде орналастырылған:

13-суретте жоғарыдағы ақауды жою үшін дисплейді құлыптауды пайдаланатын жетілдірілген жиілікті санау тізбегі көрсетілген. Бұл схема келесідей жұмыс істейді. Бұл кезде кіріс қақпасы ашылады және есептегіштер кіріс сигналының импульстерін қорытындылай бастайды. Бұл есептегіш дәл бір секундқа жалғасады және осы кезеңде төрт разрядты ысырмалар есептегіш шығысының дисплей драйверлеріне жетуіне жол бермейді; дисплей осы кезеңде тұрақты болып қалады.

Бірнеше секундтан кейін реттілік қайтадан қайталанады, есептегіштер қайта жүктеледі, содан кейін бір секунд ішінде кіріс жиілігінің импульстерін санайды, оның барысында дисплей алдыңғы санақтың үздіксіз оқуын береді және т.б.

Мұндай жеті сегментті көрсеткіштердің барлығы дерлік сегізінші сегментті – нүктені қосады, осылайша кез келген параметрдің бүтін және бөлшек мәнін көрсетуге болады.

Осылайша, 13-суреттегі схема секундына бір рет жаңартылатын тұрақты дисплейді шығарады; іс жүзінде осының және 12-суреттегі диаграмманың нақты санау кезеңін кез келген онжылдықта бірнеше немесе ішінара секундтармен жасауға болады, егер шығыс дисплей сәйкес масштабталған болса.

Үш таңбалы жиілік есептегіші бір секундтық уақыт негізін пайдаланған кезде 999 Гц, 100 мс уақыттық базаны пайдаланғанда 99 кГц, 10 мс уақыт базасын пайдаланғанда 9 кГц және уақыттық базаны пайдаланғанда 999 кГц максималды жиіліктерді көрсете алатынын ескеріңіз. 1 мс уақыт базасы.

Теориялық тұрғыдан бұл сегіз сегментті көрсеткіш болып шығады, бірақ ескі әдіспен оны жеті сегмент деп те атайды және бұл жерде қате жоқ.

Қысқаша айтқанда, жеті сегментті индикатор - белгілі бір тәртіпте бір-біріне қатысты орналасқан және бір корпусқа салынған жарықдиодты шамдар.

Бұл әдісті 14 және 15-суреттердің көмегімен түсінуге болады. Бұл коммутаторлар бір-бірімен жалғанған және нақты мультиплексор әрекетін қамтамасыз етеді және 1, 2 позициялары және операциялардың реттілігі арқылы қайта-қайта ауыстырылатын жоғары жылдамдықты электрондық қосқыштар ретінде қарастырылуы керек. схемасы келесідей. Алдымен қосқыш орнында деп есептейік.

Бірнеше минуттан кейін қосқыш 3-позицияға ауысады, бұл 3-дисплейде бірнеше минуттан кейін санды көрсетеді, бүкіл цикл қайталана бастайды және т.б. шексіздік қосады. Іс жүзінде бұл циклдердің шамамен 50-і секунд сайын орын алады, сондықтан көз дисплейлердің бөлек қосылып, өшіп тұрғанын көрмейді, бірақ оларды 327 санын немесе деректер сегменті белгілейтін басқа санды көрсететін тұрақты дисплей ретінде қабылдайды.

Бір жеті сегментті индикатордың диаграммасын қарастырсақ, ол келесідей болады:

Көріп отырғанымыздай, жеті сегментті индикатордың екеуі де болуы мүмкін жалпы анод (CA), осылайша жалпы катод (OC). Дөрекі айтқанда, егер бізде жалпы анод (ОА) бар жеті сегмент болса, онда тізбекте осы түйреуішке «плюс» ілу керек, ал егер жалпы катод (OC) болса, онда «минус» немесе жерге қосу керек. . Қай түйреуішке кернеуді қолданамыз, бұл жарық диоды жанады. Осының барлығын іс жүзінде көрсетейік.

Практикалық мультиплексорларда дисплейдің жеткілікті жарықтығын қамтамасыз ету үшін ең жоғары дисплей тогы айтарлықтай жоғары. Суретте. 15-суретте үш таңбалы жиілік есептегішіне қолданылатын жетілдірілген мультиплекстеу әдісінің мысалы көрсетілген. Бұл әдістің екі негізгі артықшылығы бар.

Егер бұл терминалдар белсенді жоғары болса, олар келесі сипаттамаларға ие болады. Інжір. 18 және 19. 18-суретте мөлшерді оқитын төрт таңбалы дисплейде жетекші нөлдік басуды қамтамасыз ету үшін қолданылатын толқынды басу әдісі көрсетілген.

Біздің қоймада келесі жарықдиодты индикаторлар бар:

Көріп отырғанымыздай, жеті сегментті құрылғылар бір және көп разрядты болуы мүмкін, яғни бір жағдайда екі, үш, төрт жеті сегментті құрылғылар. Заманауи жеті сегментті құрылғыны тексеру үшін бізге тек диодты тексеру функциясы бар мультиметр қажет. Біз жалпы қорытындыны іздейміз - ол OA немесе OK болуы мүмкін - кездейсоқ, содан кейін біз индикатордың барлық сегменттерінің өнімділігін қарастырамыз. Біз үш разрядты жеті сегментті тексереміз:

Осылайша дисплей көрсетіледі. Негізінде, оларды пайдалану оңай, оларды қуаттайды және жанып тұрады. Олар тітіркендіргіш болуы мүмкін, өйткені олардың қандай да бір полярлығы бар, яғни олар дұрыс қосылса ғана жұмыс істейді. Оң және теріс кернеуден бас тартсаңыз, олар мүлдем жанбайды.

Бұл тітіркендіргіш болғанымен, бұл өте пайдалы. Басқа сым - катод. Катод жерге қосылған. Негізінде, ол осыған дейін жетеді. Жалпы катод үшін сіз қосқыңыз келетін түйреуіштерге ток қолданасыз. Мультиплекстеу. Бағдарламалық құралды ауыстыру туралы алаңдағыңыз келмесе, бұл үшін дисплей контроллері де бар.

Ой, бір сегмент өртеніп кетті, сондықтан біз басқа сегменттерді дәл осылай тексереміз.

Кейде мультфильмдегі кернеу индикатор сегменттерін тексеру үшін жеткіліксіз. Сондықтан біз қуат көзін аламыз, оны 5 вольтке орнатамыз, қуат көзінің бір терминалына 1-2 килоОм резисторды бекітеміз және жеті сегментті блокты тексеруді бастаймыз.

7 сегментті дисплейді басқару

Сонымен, сізде 4-таңбалы, мультиплексирленген 7 сегмент, жалпы анод болған кезде. Біріншіден, бізде дисплейдің қандай түрі бар екенін білу керек, өйткені екі мүмкін пішін бар: жалпы катод және жалпы анод. Бұл оқулық үшін қажет нәрселер. Сол жақта: ішкі сымдар мен түйреуіш орындарының бір жалпы орналасуын көрсететін 7 сегментті дисплейдің графикалық көрінісі.

Бұл кезде бастапқы шығысқа назар аударыңыз, себебі ол кейінірек бағдарламаны жүктеген кезде қажет болады. Егер дисплей кәдімгі катод болса, біз оны тоқтатар едік. Мақаланың төменгі жағында менің прототиптік тақтада орналасқан схеманың фотосы бар. Біз сонымен қатар бірнеше дисплейді басқаруға арналған кітапхананы береміз.

Неліктен бізге резистор қажет? Светодиодқа кернеу қолданылғанда, ол қосылған кезде токты күрт тұтына бастайды. Сондықтан, осы сәтте ол жанып кетуі мүмкін. Токты шектеу үшін резистор жарық диодымен қатар қосылады. Толығырақ осы мақалада оқи аласыз.

Бір 7 сегментті дисплейде он алтылық санау

Кемшілігі - олар ресурстарды көп қажет етеді. Бұл арнайы дисплейде төрт сан және екі қос нүкте дисплейі бар. Дегенмен, құрылғы да қамтамасыз етеді сандық бақылауішкі кең жолақты модулятор арқылы жарықтылықты көрсету. Мұндай жағдайларда шығыс бірнеше 7 сегментті дисплейлерде жасалуы мүмкін.

Бұл корпустағы контактілерді, содан кейін басқару элементін сақтайды. Тиісінше, жалпы анодты немесе жалпы катодты дисплейлерге сілтеме жасалады. Сегментке немесе ондық нүктеге сәйкес келетін нәтиже көрсету үшін деректер парағынан жақсы шығарылады. Әдеттегі 10-20 мА үшін есептелген 7 сегментті дисплей күңгірт болса да жанады. Бірақ бұл контактілерді тағайындауды қажет етпейді. Бұл сегменттің келесі таралуы негізделген.

Дәл осылай төрт таңбалы жеті сегментті қытай радиосынан тексереміз

Менің ойымша, бұл үшін ерекше қиындықтар болмауы керек. Тізбектерде жеті сегментті тізбектер әрбір түйреуіште резисторларға қосылады. Бұл сонымен қатар жарықдиодты шамдар кернеуді қолданған кезде токты қатты тұтынады және жанып кетеді.

Егер басқа мақсат пайдаланылса, бұл негізінен мүмкін, бірақ бағдарламалау кезінде ескеру қажет. Жеке сандарды белгілі бір шығыс үлгісіне түрлендіру деп аталатын нәрсе арқылы жасалуы мүмкін. Барлық қалған сегменттер қараңғы болуы керек. Бұл құсбелгі барлық сандар үшін белгіленсе, келесі кесте беріледі.

IN сынақ бағдарламасы 0-ден 9-ға дейінгі сандар 7 сегментті дисплейде ретімен көрсетіледі. Шығару нөмірі регистрлік есептегіште сақталады және цикл ішінде 1-ге артады. Егер регистр 10 мәніне жетсе, ол қайтадан 0-ге қалпына келтіріледі.Көтерілгеннен кейін келесі шығарылымда белгілі бір уақыттың өткенін қамтамасыз ететін күту циклі пайда болады. Әдетте мұндай ұзақ күту циклдарын жасамас едіңіз, бірақ бұл күту туралы емес, 7 сегментті дисплейді басқару туралы. Бұл үшін таймерді пайдалану тым көп күш жұмсайды.

Біздің қазіргі әлемде жеті сегментті құрылғылар қазірдің өзінде мүлдем басқа ақпаратты көрсете алатын СКД индикаторларымен ауыстырылады

бірақ оларды пайдалану үшін мұндай құрылғылардың схемасын жобалауда белгілі бір дағдылар қажет. Әзірге жеті сегментті жарықдиодты индикаторлардан қарапайым немесе арзан ештеңе жоқ.

Нақты мәселе, демек, осы мақаланың қызықты бөлігі, алайда, жапсырма циклінен кейін тікелей орын алады. Есептегіш мәнді екі есе көбейту керек екенін ескеріңіз. Бұл флэш-жадтың байт бойынша емес, сөздік болуымен тікелей байланысты. Бұл беттегі екінші мысал мұны басқаша жасайды. Ол басқа кесте жазбасы арқылы ассемблер толтырғыш байттардың генерациясын қалай болдырмауға болатынын көрсетеді. Бір қызығы, есептеу үшін 0 мәні бар регистр қажет.

Сондықтан бұл тұрақтыны алдымен регистрге жүктеу керек, содан кейін ғана осы регистрдің көмегімен қосуды орындауға болады. Бір қызығы, бұл факт көптеген бағдарламаларда кездеседі, ал константалар көп жағдайда тұрақты 0 болып табылады. Сондықтан көптеген программистер бұл үшін регистрді басынан бастап резервтейді және оны нөлдік регистр деп атайды.

Бұл мақалада біз сандық дисплей туралы айтатын боламыз.
Жеті сегментті жарықдиодты индикаторлар 0-ден 9-ға дейінгі араб сандарын көрсетуге арналған (1-сурет).

Мұндай көрсеткіштер бір таңбалы болып табылады, олар тек бір санды көрсетеді, бірақ бір корпусқа біріктірілген жеті сегментті топтар көбірек болуы мүмкін (көптаңбалы). Бұл жағдайда сандар ондық үтірмен бөлінеді (2-сурет)

Өкінішке орай, мәселе бар, себебі дисплей сегіз портты қажет етеді - төрт жарнама 32 портты қажет етеді. Бірақ бірнеше жолы бар. Ауысым регистрлері басқа оқулықта сипатталған. Бұл тек үш түйреуішпен қажетті 32 шығыс жолын жасауды жеңілдетеді. Басқару принципі бір 7 сегментті дисплейді басқарудан еш айырмашылығы жоқ, тек «шығыс түйреуіштерінің» олардың мәндеріне қалай жақындағаны әртүрлі және ауысым регистрлерін пайдалану арқылы анықталады. Қосулы осы сәтдегенмен, басқа басқару опциясы көрсетілуі керек.



2-сурет.

Көрсетілетін таңба жеті бөлек сегменттен құрастырылғандықтан, индикатор жеті сегментті деп аталады. Мұндай индикатордың корпусының ішінде жарықдиодты шамдар бар, олардың әрқайсысы өз сегментін жарықтандырады.
Мұндай көрсеткіштерде әріптер мен басқа белгілерді көрсету қиын, сондықтан бұл мақсаттар үшін 16 сегментті индикаторлар қолданылады.

Төменде мультиплексирлеуді қайта қарастырамыз. Мультиплекстеу барлық төрт дисплейдің бір уақытта қосылмағанын, бірақ бір уақытта бір ғана қосылатынын білдіреді қысқа уақыт. Егер дисплейлер арасындағы өзгеріс біз адамдар қабылдайтыннан жылдамырақ болса, тек біреуі бір қысқа уақыт ішінде жанып тұрса да, төрт шамның барлығы бір уақытта жұмыс істеп тұрған сияқты. Осылайша, төрт дисплей жеке сегмент сегменттерін бөлісе алады және дисплей қосылған 4 дисплей үшін 4 қосымша басқару сызығы қажет.

Басқарудың бұл түрінің бір аспектісі мультиплекстеу жиілігі, яғни бір дисплейден екіншісіне өтудің толық циклі болып табылады. Ол дисплейдің жыпылықтауын болдырмау үшін жеткілікті жоғары болуы керек. Адамның көзі баяу, кинотеатрда секундына 24 кадр, теледидар қауіпсіз жағында болуы үшін, сонымен қатар қозғалыссыз кескіндер тыныш, әрбір сегментті кем дегенде 100 Гц басқару керек, сондықтан ол кем дегенде әрбір 10 мс сайын қосылады. Дегенмен, ерекше жағдайларда, дисплей жылдам қозғалғанда немесе айнымалы токпен жұмыс істейтін жасанды жарық көздерімен кедергі пайда болғанда, тіпті 100 Гц жиілігі де жыпылықтауы мүмкін.

Жарықдиодты индикаторлар екі түрге бөлінеді.
Олардың біріншісінде барлық катодтар, яғни. барлық жарық диодтарының теріс терминалдары біріктірілген және олар үшін корпуста сәйкес терминал бөлінген.
Индикатордың қалған терминалдары әрбір жарықдиодтың анодына қосылған (Cурет 3, а). Бұл схема «жалпы катод тізбегі» деп аталады.
Сондай-ақ әрбір сегменттің жарық диодтары жалпы аноды бар схемаға сәйкес қосылған индикаторлар бар (3-сурет, б).



3-сурет.

Әрбір сегмент сәйкес әріппен белгіленеді. 4-суретте олардың орналасуы көрсетілген.

4-сурет.

Мысал ретінде екі таңбалы жеті сегментті GND-5622As-21 қызыл индикаторын қарастырыңыз. Айтпақшы, модельге байланысты басқа түстер бар.
Үш вольтты аккумуляторды пайдаланып, сегменттерді қосуға болады, егер сіз түйреуіштер тобын топтамаға біріктіріп, оларға қуат берсеңіз, тіпті сандарды көрсете аласыз. Бірақ бұл әдіс ыңғайсыз, сондықтан жеті сегментті көрсеткіштерді басқару үшін ауысымдық регистрлер мен дешифраторлар қолданылады. Сондай-ақ, жиі индикаторлық түйреуіштер микроконтроллердің шығыстарына тікелей қосылады, бірақ ток тұтынуы аз индикаторлар пайдаланылған кезде ғана. 5-суретте PIC16F876A пайдаланатын тізбектің фрагменті көрсетілген.



5-сурет.

Жеті сегментті индикаторды басқару үшін K176ID2 декодері жиі қолданылады.
Бұл чип нөлдер мен бірліктерден тұратын екілік кодты 0-ден 9-ға дейінгі ондық сандарға түрлендіруге қабілетті.

Мұның бәрі қалай жұмыс істейтінін түсіну үшін қарапайым схеманы жинау керек (6-сурет). K176ID2 декодері DIP16 бумасында орналасқан. Оның әрқайсысы белгілі бір сегментке арналған 7 шығыс түйреуіштері бар (9 - 15). Мұнда нүктені басқару қарастырылмаған. Микросұлбада екілік кодты беруге арналған 4 кіріс (2 - 5 түйреуіштер) бар. 16-шы және 8-ші түйреуіштер тиісінше плюс және минус қуатпен қамтамасыз етіледі. Қалған үш тұжырым көмекші болып табылады, мен олар туралы сәл кейінірек айтамын.



6-сурет.

DD1 - K176ID2
R1 - R4 (10 - 100 кОм)
HG1 - GND-5622As-21

Схемада 4 ауыстырып қосқыш бар (кез келген түймелер мүмкін), оларды басқан кезде логикалық қосқыш қуат көзінен плюс декодер кірістеріне беріледі. Айтпақшы, микросұлбаның өзі 3-тен 15 вольтке дейінгі кернеумен қоректенеді. Бұл мысалда бүкіл тізбек 9 вольтты қуат көзінен қуат алады.

Сонымен қатар тізбекте 4 резистор бар. Бұл тартылатын резисторлар деп аталады. Олар сигнал болмаған кезде логикалық кірістің төмен болуын қамтамасыз ету үшін қажет. Оларсыз индикатордағы көрсеткіштер дұрыс көрсетілмеуі мүмкін. Дәл солай пайдалану ұсыныладыкедергісі 10 кОм-дан 100 кОм-ға дейін.

Диаграммада HG1 индикаторының 2 және 7 түйреуіштері қосылмаған. Егер сіз DP істікшесін минус қуат көзіне қоссаңыз, ондық нүкте жанады. Ал егер Dig.2 шығысына минус қолдансаңыз, онда сегменттердің екінші тобы да жанады (сол таңба көрсетіледі).

Декодер кірістері индикаторда 1, 2, 4 және 8 сандарын көрсету үшін бір түймені басу қажет болатындай етіп жасалған (орналасуда D0, D1, D2 және D3 кірістеріне сәйкес келетін ауыстырып қосқыштар бар). Сигнал болмаса, нөл саны көрсетіледі. D0 кірісіне сигнал берілгенде, 1 саны көрсетіледі және т.б. Басқа сандарды көрсету үшін ауыстырып қосқыштар тіркесімін басу керек. 1-кесте бізге қайсысын басу керектігін айтады.


1-кесте.

«3» санын көрсету үшін D0 және D1 кірісіне логикалық санды қолдану керек. Егер сіз D0 және D2 сигналдарын қолдансаңыз, «5» саны көрсетіледі(Cурет 6).



6-сурет.

Мұнда біз күтілетін фигураны ғана емес, сонымен қатар осы фигураны құрайтын сегменттерді (a - g) көретін кеңейтілген кесте.



2-кесте.

Микросұлбаның 1, 6 және 7 түйреуіштері көмекші болып табылады (тиісінше S, M, K).

Диаграммада (6-сурет) 6-шы түйреуіш «М» жерге тұйықталған (қуат көзіне минус) және жалпы катодты индикатормен жұмыс істеуге арналған микросұлбаның шығысында оң кернеу бар. Егер жалпы аноды бар индикатор пайдаланылса, онда біреуін 6-шы түйреуішке қолдану керек.

Егер логикалық белгі 7-ші «K» істікшесіне қолданылса, индикаторлық белгі сөнеді, нөл көрсеткішке мүмкіндік береді. Схемада бұл қорытындыжерге қосылған (қуат көзіне минус).

Декодердің бірінші шығысына логикалық блок (плюс қуат) беріледі, ол түрлендірілген кодты индикаторда көрсетуге мүмкіндік береді. Бірақ егер сіз осы түйреуішке (S) логикалық нөлді қолдансаңыз, кірістер сигнал қабылдауды тоқтатады және ағымдағы көрсетілген белгі индикаторда қатып қалады.

Бір қызығы, D0 ауыстырып қосқышы «1» санын, ал D1 ауыстырып қосқышы «2» санын қосатынын білеміз. Екі ауыстырып қосқышты бассаңыз, 3 саны көрсетіледі (1+2=3). Ал басқа жағдайларда индикатор осы комбинацияны құрайтын сандардың қосындысын көрсетеді. Декодер кірістері ойластырылған түрде орналастырылған және өте логикалық комбинацияларға ие деген қорытындыға келеміз.

Сондай-ақ, сіз осы мақалаға арналған бейнені көре аласыз.

Жеті сегментті жарықдиодты индикаторды Arduino тақтасына қосып, оны Led4Digits.h кітапханасы арқылы басқаруды үйренейік.

Алдыңғы сабақта микроконтроллерлер егжей-тегжейлі сипатталған. Мұндай көрсеткішті Arduino тақтасына қосайық.

Индикаторды Arduino тақтасына қосу диаграммасы келесідей көрінеді.

Мен оны схемалық тақтаға жинадым.

Көрсеткіштерді басқару үшін мен Led4Digits.h кітапханасын жаздым:

Және төлеңіз.

Кітапхана жеті сегментті көрсеткіштерді басқаруға мүмкіндік береді:

  • өлшемі төрт цифрға дейін;
  • басқару импульсінің полярлықтарының кез келген нұсқаларымен (барлығы);
  • параллельді процесте жұмыс істейді;
  • индикаторда көрсетуге мүмкіндік береді:
    • әр санаттың сегменттері;
    • әр цифрдың цифры;
    • бүтін 0 ... 9999;
  • бүтін санды шығару үшін цифрлар санын көрсетуге болады;
  • Маңызды емес сандарды басу режимі бар.

Led4Digits.h кітапханасын мына сілтемеден жүктеп алуға болады:

Және төлеңіз. Бар болғаны 40 руб. барлық сайт ресурстарына қол жеткізу үшін айына!

Орнату жолында жазылған.

Мен бастапқы мәтіндерді бермеймін. Оларды кітапхана файлдарынан іздеуге болады. Әдеттегідей, мұнда көптеген пікірлер бар. Мен кітапхананы қалай пайдалану керектігін мысалдармен егжей-тегжейлі сипаттаймын.

Arduino Led4Digits үшін жарық диодты басқару кітапханасы.

Міне, сыныптың сипаттамасы. Мен тек жалпыға ортақ әдістер мен сипаттарды бердім.

класс Led4Digits (
қоғамдық:
байт цифры; // разрядты басқару кодтары
void regen(); // регенерация, әдісті жүйелі түрде шақыру керек
void tetradToSegCod(байт қазу, байт тетрад); // тетрады сегменттік кодтарға түрлендіру
логикалық басып шығару(таңбасыз int мәні, digitNum байт, бос байт); // бүтін шығыс



} ;

Конструктор.

Led4Digits (байт түріLed, байт цифрыPin0, байт цифрыPin1, байт цифрыPin2, байт цифрыPin3,
байт segPinA, байт segPinB, байт segPinC, байт segPinD,
байт segPinE, байт segPinF, байт segPinG, байт segPinH);

typeLedБитті және сегментті таңдау сигналдары үшін басқару импульсінің полярлығын орнатады. Кез келген қосылу схемаларын қолдайды ().

typeLed Санат таңдау Сегмент таңдау Схема түрі
0 -_- -_- Разряд таңдау пернелері бар жалпы анод
1 _-_ -_- Жалпы анод
2 -_- _-_ Жалпы катод
3 _-_ _-_ Разряд таңдау пернелері бар жалпы катод

digitPin0...digitPin3– сандарды таңдауға арналған шығыстар. Егер digitPin = 255 болса, онда цифр өшірілген. Бұл аз сандары бар көрсеткіштерді қосуға мүмкіндік береді. digitPin0 – төменгі (оң) сан.

segPinA...segPinH– сегментті басқару шығыстары.

Мысалы,

білдіреді: 1 типті көрсеткіш; разряд шығыстары 5,4,3,2; 6,7,8,9,10,11,12,13 сегменттерінің шығыстары.

void regen() әдісі

Әдіс параллельді процесте жүйелі түрде шақырылуы керек. Ол индикаторлардағы кескінді қалпына келтіреді. Регенерация циклінің уақыты бит санына көбейтілген әдісті шақыру кезеңіне тең.

Мысалы,

// үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Байттық цифрлық массив

Сегменттердің күйін қамтиды. цифр – ең аз маңызды бит, цифрдың ең аз маңызды биті – ең аз маңызды биттің “А” сегменті. 1 бит күйі сегменттің жанып тұрғанын білдіреді.

Мысалы,

цифр = B0000101;

екінші санда «A» және «C» сегменттері жанып тұрғанын білдіреді.

Әрбір цифрдың барлық сегменттерін дәйекті түрде жарықтандыратын бағдарламаның мысалы.

// жүгіру сегменттері
#қосу
#қосу

//
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

жарамсыз орнату() (
таймерді үзу 2 мс
MsTimer2::start(); // үзу қосу
}

жарамсыз цикл() (
үшін (int i = 0; i< 32; i++) {
егер (i == 0) дисп.разряд= 1;
else if (i == 8) disp.digit= 1;
else if (i == 16) disp.digit= 1;
else if (i == 24) disp.digit= 1;
басқа(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
кешіктіру(250);
}
}

//үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Цифрлық массивте 1 жылжытылады және индикаторлар мұны көрсетеді.

TetradToSegCod жарамсыз әдіс(байт қазу, байт тетрад)

Бұл әдіс он алтылық кодтың сандары мен әріптерін жеке сандармен көрсетуге мүмкіндік береді. Аргументтер бар:

  • dig – 0 ... 3 цифры;
  • tetrad – ондық таңбалы код. 0 коды «0» санын, 1 коды «1» санын, 14 коды «E» әрпін көрсетеді.

Мысалы,

тетрада(2, 7);

үшінші санда «7» санын көрсетеді.

Әрбір цифрдағы таңбаларды кезекпен өзгертетін бағдарламаның мысалы.

// сандар бірінен соң бірі
#қосу
#қосу

// 1 типті көрсеткіш; разряд шығыстары 5,4,3,2; сегмент шығыстары 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

жарамсыз орнату() (
MsTimer2::set(2, timerInterrupt); // таймерді үзу 2 мс
MsTimer2::start(); // үзу қосу
}

жарамсыз цикл() (
үшін (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
кешіктіру(250);
}
}

// үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Логикалық басып шығару әдісі (таңбасыз int мәні, digitNum байт, бос байт)

Әдіс индикаторларда бүтін санды көрсетеді. Ол әрбір цифр үшін екілік санды BCD-ге түрлендіреді. Аргументтері бар:

  • мән – индикаторда көрсетілетін сан.
  • digitNum – санға арналған цифрлар саны. Мұны индикатор цифрларының санымен шатастырмау керек. Санды 2 санға, ал қалған екеуіне таңбаларды цифр арқылы көрсеткіңіз келуі мүмкін.
  • бос – елеусіз сандарды басудың белгісі. blank=0 санды барлық нөлдермен көрсету керек дегенді білдіреді. «7» саны «0007» сияқты болады. Егер бос 0-ден өзгеше болса, елеусіз нөлдер басылады.

Егер санның мәні таңдалған сандар саны (digitNum) үшін рұқсат етілген саннан асып кетсе, функция индикаторда “---” көрсетеді және жалған мәнін береді.

Сандарды шығару бағдарламасының мысалы.

// шығыс нөмірі
#қосу
#қосу

// 1 типті көрсеткіш; разряд шығыстары 5,4,3,2; сегмент шығыстары 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

жарамсыз орнату() (
MsTimer2::set(2, timerInterrupt); // таймерді үзу 2 мс
MsTimer2::start(); // үзу қосу
}

жарамсыз цикл() (
үшін (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
кешіктіру(50);
}
}

// үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Соңғы екі әдіс «H» сегментінің күйін өзгертпейді - ондық бөлшек. Нүкте күйін өзгерту үшін мына пәрмендерді пайдалануға болады:

цифр |= 0x80; // ондық нүктені жағыңыз
цифр &= 0x7f; // ондық бөлшекті өшіріңіз

Теріс сандар көрсеткіштеріне шығару (int).

Теріс сандарды келесідей шығаруға болады:

  • Санның белгісін тексеріңіз.
  • Егер сан теріс болса, ең маңызды санға минус белгісін басып шығарыңыз және print() функциясында санның таңбасын оңға өзгертіңіз.
  • Егер сан оң болса, белгіні өшіріп, басып шығару() функциясын пайдаланып нөмірді басып шығарыңыз.

Міне, осы әдісті көрсететін бағдарлама. Ол -999-дан 999-ға дейінгі сандарды шығарады.

// теріс сандарды шығарады
#қосу
#қосу

// 1 типті көрсеткіш; разряд шығыстары 5,4,3,2; сегмент шығыстары 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

жарамсыз орнату() (
MsTimer2::set(2, timerInterrupt); // таймерді үзу 2 мс
MsTimer2::start(); // үзу қосу
}

жарамсыз цикл() (

үшін (int i = -999; i< 1000; i++) {

Егер мен< 0) {
// саны теріс
disp.digit= B01000000; // белгісі -
disp.print(i * -1, 3, 1);
}
басқа(
disp.digit= B00000000; // белгіні тазалаңыз
disp.print(i, 3, 1);
}

кешіктіру(50);
}
}

// үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Бөлшек сандардың көрсеткіштеріне шығару, float форматы.

Стандартты Си тілінің функцияларын пайдаланып өзгермелі нүкте сандарын (флоаттарды) көрсетудің көптеген жолдары бар.Бұл ең алдымен sprint() функциясы. Ол өте баяу жұмыс істейді, таңба кодтарын екілік ондық кодтарға қосымша түрлендіруді талап етеді, жолдан нүктені шығару керек. Басқа функциялармен бірдей мәселелер.

Мен индикаторларда өзгермелі айнымалы мәндерді көрсету үшін басқа әдісті қолданамын. Әдіс қарапайым, сенімді, жылдам. Келесі операцияларға дейін азайтады:

  • Жылжымалы нүкте саны ондық таңбалардың қажетті санына сәйкес келетін дәрежеге дейін 10-ға көбейтіледі. Көрсеткіштерде 1 ондық таңбаны көрсету қажет болса, 10-ға көбейтіңіз, егер 2 болса, онда 100-ге, 3 ондық таңбаны 1000-ға көбейтіңіз.
  • Содан кейін өзгермелі нүкте саны анық бүтін санға (int) түрлендіріледі және print() функциясын пайдаланып индикаторларда көрсетіледі.
  • Қажетті санға нүкте қойылады.

Мысалы, келесі жолдар жеті сегментті жарық диодтарына екі ондық таңбалары бар өзгермелі айнымалы мәнді шығарады.

float x = 2,12345;

disp.digit |= 0x80; //

Санды 100-ге көбейтеміз, ал үшінші цифрға нүкте қою арқылы нәтижені 100-ге бөлеміз.

Міне, индикаторларда 0,00-ден 99,99-ға дейінгі өзгермелі нүкте сандарын көрсететін бағдарлама.

// өзгермелі нүктенің шығуы
#қосу
#қосу

// 1 типті көрсеткіш; разряд шығыстары 5,4,3,2; сегмент шығыстары 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

жарамсыз орнату() (
MsTimer2::set(2, timerInterrupt); // таймерді үзу 2 мс
MsTimer2::start(); // үзу қосу
}

жарамсыз цикл() (
float x = 0;

үшін (int i = 0; i< 10000; i++) {
x += 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // үшінші деңгей нүктесін жанады

кешіктіру(50);
}
}

//үзу өңдеушісі 2 мс
void timerInterrupt() (
disp.regen(); // индикатордың регенерациясы
}

Көріп отырғаныңыздай, Led4Digits.h кітапханасы Arduino тақтасына қосылған жеті сегментті жарық диодының (LED) индикаторларымен жұмыс істеуді айтарлықтай жеңілдетеді. Мен мұндай кітапхананың аналогын таппадым.

Ауысым регистрі арқылы жарықдиодты дисплейлермен жұмыс істеуге арналған кітапханалар бар. Біреу маған Arduino тақтасына тікелей қосылған LED дисплеймен жұмыс істейтін кітапхананы тапқанын жазды. Бірақ оны пайдаланған кезде индикатор сандары біркелкі жарқырап, жыпылықтайды.

Оның аналогтарынан айырмашылығы, Led4Digits.h кітапханасы:

  • Параллель процесс ретінде орындалады. Негізгі циклде бағдарлама деректерді дисплейде автоматты түрде көрсетілетін белгілі бір айнымалыларға жүктейді. Ақпаратты шығару және индикаторды қалпына келтіру негізгі бағдарламаға көрінбейтін таймер үзілісінде орын алады.
  • Дисплей сандары жыпылықтамай біркелкі жанады. Бұл қасиет регенерацияның таймер үзуімен қатаң анықталған циклде орын алуымен қамтамасыз етіледі.
  • Кітапханада ықшам код бар, жылдам орындалады және контроллерді ең аз жүктейді.

Келесі сабақта біз Arduino тақтасына LED индикаторы мен түйме матрицасын бір уақытта қосамыз. Осындай дизайн үшін кітапхана жазайық.

Санат: . Оны бетбелгілеуге болады.


Жоғарғы