4 rəqəmli göstərici Arduino bağlantısı. Yeddi seqmentli göstərici. Kəsr ədədlərin göstəricilərinə çıxış, float formatı

Elə parametrlər var ki, onlar üçün sadəcə göstərici deyil, obyektiv məlumat vermək daha rahat olardı. Məsələn, çöldəki havanın temperaturu və ya zəngli saatdakı vaxt. Bəli, bütün bunlar parlaq lampalar və ya LED-lərlə edilə bilər. Bir dərəcə - bir yanan LED və ya ampul və s. Ancaq bu atəşböcəkləri saymaqla - yaxşı, yox! Ancaq necə deyərlər, ən çox sadə həllər- ən etibarlı. Buna görə də, uzun müddət düşünmədən, tərtibatçılar sadə LED şeritlərini götürdülər və onları düzgün qaydada təşkil etdilər.

Advent ilə iyirminci əsrin əvvəllərində vakuum boruları ilk qaz-boşaltma göstəriciləri meydana çıxdı

Belə göstəricilərin köməyi ilə nəticə çıxarmaq mümkün idi rəqəmsal məlumatərəb rəqəmləri ilə. Əvvəllər bu cür lampalarda cihazlar və digərləri üçün müxtəlif göstəricilər edilirdi elektron cihazlar. Hazırda qaz-boşaltma elementləri demək olar ki, heç bir yerdə istifadə edilmir. Ancaq retro həmişə dəbdədir, buna görə də bir çox radio həvəskarları özləri və yaxınları üçün qaz boşaltma göstəricilərində gözəl saatlar toplayırlar.


Qaz boşaltma lampalarının dezavantajı çoxlu elektrik enerjisi istehlak etməsidir. Davamlılıq haqqında mübahisə etmək olar. Universitetimizdə hələ də laboratoriya otaqlarımızda tezlik sayğaclarından istifadə edirik. qaz boşalma göstəriciləri.

Yeddi seqmentli göstəricilər

LED-lərin meydana gəlməsi ilə vəziyyət yaxşılığa doğru kəskin şəkildə dəyişdi. LED-lər özləri istehlak edirlər kiçik cərəyan. Onları düzgün mövqedə yerləşdirsəniz, tamamilə hər hansı bir məlumatı göstərə bilərsiniz. Bütün ərəb rəqəmlərini vurğulamaq üçün yalnız yeddi işıqlı LED şeridi kifayətdir - müəyyən bir şəkildə qurulmuş seqmentlər:

Demək olar ki, bütün belə yeddi seqmentli göstəricilərə səkkizinci seqment də əlavə olunur - nöqtə, beləliklə istənilən parametrin tam və kəsr dəyərini göstərmək mümkün olsun.

Nəzəri olaraq biz səkkiz seqmentli göstərici alırıq, lakin köhnə üsulla onu yeddi seqmentli göstərici də adlandırırlar.

Nəticə nədir? Yeddi seqmentli göstəricinin hər bir zolağı bir LED və ya LED qrupu ilə işıqlandırılır. Nəticədə, müəyyən seqmentləri vurğulayaraq, 0-dan 9-a qədər rəqəmləri, həmçinin hərfləri və simvolları göstərə bilərik.

Diaqramdakı növlər və təyinat

Birrəqəmli, ikirəqəmli, üçrəqəmli və dördrəqəmli yeddi seqmentli göstəricilər var. Mən dörd kateqoriyadan artıq görməmişəm.

Diaqramlarda yeddi seqmentli göstərici belə görünür:

Əslində, əsas terminallara əlavə olaraq, hər bir yeddi seqmentli göstərici ümumi anod (OA) və ya ümumi katod (OC) ilə ümumi terminala malikdir.

Ümumi anodlu yeddi seqmentli bir göstəricinin daxili dövrəsi belə görünəcək:


və buna bənzər ümumi katodla:


Ümumi bir anod (OA) olan yeddi seqmentli bir göstəricimiz varsa, dövrədə bu pinə "artı" güc verməliyik və ümumi bir katod (OC) varsa, "mənfi" və ya torpaq.

Yeddi seqmentli göstəricini necə yoxlamaq olar

Aşağıdakı göstəricilərimiz var:


Müasir yeddi seqmentli göstəricini yoxlamaq üçün bizə yalnız diod test funksiyası olan bir multimetr lazımdır. Başlamaq üçün ümumi bir nəticə axtarırıq - bu, ya OA, ya da OK ola bilər. Burada yalnız təsadüfi. Yaxşı, sonra yuxarıdakı diaqramlara uyğun olaraq göstəricinin qalan seqmentlərinin işini yoxlayırıq.

Aşağıdakı fotoda gördüyünüz kimi, sınaqdan keçirilən seqment yanır. Eyni şəkildə digər seqmentləri yoxlayırıq. Bütün seqmentlər yanıbsa, onda belə bir göstərici toxunulmazdır və inkişaflarınızda istifadə edilə bilər.


Bəzən bir seqmenti yoxlamaq üçün multimetrdəki gərginlik kifayət deyil. Buna görə bir enerji təchizatı götürürük və onu 5 Volta qoyuruq. Seqmentdən keçən cərəyanı məhdudlaşdırmaq üçün 1-2 Kilo-Ohm müqavimətini yoxlayırıq.


Eyni şəkildə Çin qəbuledicisindən göstəricini yoxlayırıq


Sxemlərdə yeddi seqmentli göstəricilər hər bir pində rezistorlara qoşulur

Bizim müasir dünya yeddi seqmentli göstəricilər tamamilə istənilən məlumatı göstərə bilən maye kristal göstəricilərlə əvəz olunur

lakin onlardan istifadə etmək üçün bu cür cihazların dövrə dizaynında müəyyən bacarıqlara ehtiyacınız var. Buna görə də yeddi seqmentli göstəricilər aşağı qiymətə və istifadənin asanlığına görə bu gün də istifadə olunur.

Yeddi seqmentli LED göstəricilər rəqəmsal dəyər göstərən cihazlar arasında çox populyardır və mikrodalğalı sobaların ön panellərində istifadə olunur, paltaryuyan maşınlar, rəqəmsal saatlar, sayğaclar, taymerlər və s. LCD göstəriciləri ilə müqayisədə LED göstərici seqmentləri parlaq şəkildə parlayır və uzun məsafədə və geniş baxış bucağında görünür. Yeddi seqmentli 4 bitlik göstəricini mikro nəzarətçiyə qoşmaq üçün ən azı 12 giriş/çıxış xətti tələb olunacaq. Buna görə də, bu göstəriciləri az sayda pinli mikrokontrollerlərlə, məsələn, şirkət seriyasından istifadə etmək demək olar ki, mümkün deyil. Əlbəttə istifadə edə bilərsiniz müxtəlif üsullar multipleksləşdirmə (təsvirini veb saytında "Sxemlər" bölməsində tapa bilərsiniz), lakin bu vəziyyətdə də hər bir metod üçün müəyyən məhdudiyyətlər var və onlar çox vaxt mürəkkəb proqram alqoritmlərindən istifadə edirlər.

Biz mikrokontrolörün yalnız 3 giriş/çıxış xəttini tələb edəcək SPI interfeysi vasitəsilə göstəricini birləşdirmək üsulunu nəzərdən keçirəcəyik. Eyni zamanda, bütün göstərici seqmentlərinə nəzarət qalacaq.

4 bitlik göstəricini SPI avtobusu vasitəsilə mikrokontrollerə qoşmaq üçün şirkət tərəfindən istehsal olunan xüsusi sürücü çipindən istifadə olunur. Mikrosxem ümumi katodla səkkiz yeddi seqmentli göstəricini idarə etməyə qadirdir və BCD dekoderini, seqment sürücülərini, multipleksləmə dövrəsini və rəqəm dəyərlərini saxlamaq üçün statik RAM ehtiva edir.

Göstərici seqmentləri vasitəsilə cərəyan yalnız bir xarici rezistordan istifadə edərək təyin olunur. Bundan əlavə, çip daxili PWM istifadə edərək göstərici parlaqlığına (16 parlaqlıq səviyyəsi) nəzarəti dəstəkləyir.

Məqalədə müzakirə olunan sxem həvəskar radio dizaynlarında istifadə edilə bilən SPI interfeysi ilə ekran modulu sxemidir. Bizi daha çox dövrənin özü deyil, SPI interfeysi vasitəsilə mikrosxemlə işləmək maraqlandırır. +5 V modul gücü Vcc pininə verilir, siqnal xətləri MOSI, CLK və CS əsas cihaz (mikrokontroller) və kölə cihaz (MAX7219 çipi) arasında əlaqə üçün nəzərdə tutulmuşdur.

Mikrosxem standart bir əlaqədə istifadə olunur; lazım olan yeganə xarici komponentlər seqmentlər vasitəsilə cərəyanı təyin edən bir rezistor, enerji təchizatı üçün qoruyucu diod və enerji təchizatı üçün bir filtr kondansatörüdür.

Məlumat 16 bitlik paketlərdə (iki bayt) çipə ötürülür, bunlar CLK siqnalının hər yüksələn kənarında quraşdırılmış 16 bitlik sürüşmə registrinə yerləşdirilir. 16 bitlik paketi D0-D15 kimi işarə edirik, burada D0-D7 bitləri verilənləri, D8-D11 registr ünvanını ehtiva edir, D12-D15 bitlərinin heç bir mənası yoxdur. Bit D15 ən əhəmiyyətli bitdir və alınan ilk bitdir. Çip səkkiz göstəricini idarə etməyə qadir olsa da, biz yalnız dördü ilə işləməyi nəzərdən keçirəcəyik. Onlar sağdan sola ardıcıllıqla yerləşən DIG0 - DIG3 çıxışları ilə idarə olunur, onlara uyğun gələn 4 bitlik ünvanlar (D8-D11) 0x01, 0x02, 0x03 və 0x04 (onaltılıq format) təşkil edir. Rəqəm reyestri 8x8 təşkili ilə çipli RAM istifadə edərək həyata keçirilir və ekrandakı hər bir fərdi rəqəmin istənilən vaxt yenilənməsi üçün birbaşa ünvanlanır. Aşağıdakı cədvəl MAX7219 çipinin ünvanlı rəqəmlərini və nəzarət registrlərini göstərir.

Qeydiyyatdan keçin

Ünvan

HEX dəyəri

Əməliyyat yoxdur

Deşifrə rejimi

Göstəricilərin sayı

Söndür

Göstərici testi

Nəzarət registrləri

MAX1792 çipində 5 idarəedici registr var: dekodlaşdırma rejimi (Decode-Mode), göstərici parlaqlığına nəzarət (İntensivlik), qoşulmuş göstəricilərin sayının reyestri (Scan Limit), yandırma/söndürmə nəzarəti (Söndürmə), test rejimi (Ekran Testi).

Çipin yandırılması və söndürülməsi

Çipə enerji verildikdə bütün registrlər sıfırlanır və o, Kapatma rejiminə keçir. Bu rejimdə ekran sönür. Normal iş rejiminə keçmək üçün Söndürmə registrinin (ünvan 0Сh) D0 biti təyin edilməlidir. Sürücünü söndürməyə məcbur etmək üçün bu bit istənilən vaxt təmizlənə bilər və bütün registrlərin məzmunu dəyişməz qalır. Bu rejim enerjiyə qənaət etmək və ya siqnal rejimində göstəricinin yanıb-sönməsi ilə istifadə edilə bilər (Söndürmə rejiminin ardıcıl aktivləşdirilməsi və söndürülməsi).

Ünvanı (0Сh) və məlumatları (00h) ardıcıl olaraq ötürməklə və 0Ch (ünvan) ötürməklə mikrosxem Kapatma rejiminə keçirilir və sonra 01h (məlumat) normal işə qayıdır.

Deşifrə rejimi

Deşifrə rejiminin seçilməsi registrindən (ünvan 09h) istifadə edərək, BCD kodu B deşifrəsindən (0-9, E, H, L, P, - simvollarını göstərin) və ya hər bir rəqəm üçün dekodlaşdırmadan istifadə edə bilərsiniz. Registrdəki hər bir bit bir rəqəmə uyğundur, məntiqi olanın qoyulması bu bit üçün dekoderin işə salınmasına uyğundur, 0 qoyulması dekoderin söndürülməsi deməkdir. Bir BCD dekoderindən istifadə edilərsə, rəqəm registrlərindəki məlumatların yalnız ən aşağı nibbles (D3-D0) nəzərə alınır, D4-D6 bitləri nəzərə alınmır, bit D7 BCD dekoderindən asılı deyil və işə salınmağa cavabdehdir. D7 = 1 olduqda indikatordakı onluq nöqtə. Məsələn, 02h və 05h baytları ardıcıl olaraq göndərildikdə, DIG1 indikatoru (sağdan ikinci rəqəm) 5 rəqəmini göstərəcək. Eynilə, 01h və 89h göndərilərkən, DIG0 indikatoru onluq nöqtə ilə birlikdə 9 rəqəmini göstərəcək. . Aşağıdakı cədvəl göstərir tam siyahıçipin BCD dekoderindən istifadə edərkən göstərilən simvollar.

Simvol

Reyestrlərdəki məlumatlar

Aktivləşdirilmiş seqmentlər = 1

Boş

*Onluq nöqtəsi D7=1 biti ilə təyin olunur

BCD dekoderi işdən çıxarıldıqda, məlumat bitləri D7-D0 göstəricinin seqment xətlərinə (A-G və DP) uyğun gəlir.

Göstərici parlaqlığına nəzarət

Çip, quraşdırılmış PWM-dən istifadə edərək göstəricilərin parlaqlığını proqramlı şəkildə idarə etməyə imkan verir. PWM çıxışı, 16 parlaqlıq səviyyəsindən birini təyin etməyə imkan verən İntensivlik registrinin (ünvan 0Ah) aşağı dərəcəli nibble (D3-D0) tərəfindən idarə olunur. Bir dişləmənin bütün bitləri 1-ə təyin edildikdə, göstəricinin maksimum parlaqlığı seçilir.

Bağlı göstəricilərin sayı

Scan-Limit registri (ünvan 0Bh) mikrosxem tərəfindən xidmət edilən bitlərin sayının qiymətini təyin edir (1 ... 8). 4 bitlik versiyamız üçün 03h dəyəri registrə yazılmalıdır.

Göstərici testi

Bu rejim üçün məsul registr 0Fh ünvanında yerləşir. Reyestrdə D0 bitini təyin etməklə istifadəçi bütün göstərici seqmentlərini işə salır, eyni zamanda idarəetmə və məlumat registrlərinin məzmunu dəyişmir. Display-Test rejimini söndürmək üçün D0 biti 0 olmalıdır.

Mikro nəzarətçi ilə interfeys

Göstərici modulu üç pulsuz giriş/çıxış xətti olan istənilən mikrokontrollerə qoşula bilər. Mikrokontrolörün daxili SPI aparat modulu varsa, o zaman göstərici modulu avtobusda kölə qurğu kimi qoşula bilər. Bu halda, mikro nəzarətçinin SPI siqnal xətləri SDO (seriyalı məlumat çıxışı), SCLK (seriya saatı) və SS (qul seçimi) MAX7219 çipinin (modul) MOSI, CLK və CS pinlərinə birbaşa qoşula bilər. CS siqnalı aktiv aşağıdır.

Mikrokontrolörün hardware SPI yoxdursa, interfeys proqram təminatında təşkil edilə bilər. MAX7219 ilə əlaqə CS xəttini aşağı çəkib tutaraq, sonra CLK siqnalının yüksələn kənarındakı MOSI xəttinə ardıcıl olaraq 16 bit məlumat göndərməklə (ilk öncə MSB) başlayır. Ötürmə başa çatdıqdan sonra CS xətti yenidən yüksəlir.

Yükləmələr bölməsində istifadəçilər sınaq proqramının mənbə mətnini və SPI interfeysi olan göstərici modulunda dəyərləri əks etdirən adi 4 bitlik sayğac tətbiq edən proqram təminatının HEX faylını yükləyə bilərlər. İstifadə olunan mikrokontroller proqram təminatında həyata keçirilən interfeysdir, göstərici modulunun CS, MOSI və CLK siqnal xətləri müvafiq olaraq GP0, GP1 və GP2 portlarına qoşulur. mikroC kompilyatoru üçün istifadə olunur PIC mikro nəzarətçiləri(mikroelektronika

Saytdan materialları şərh etmək və almaq tam giriş forumumuza ehtiyacınız var qeydiyyatdan keçin .


Bir rəqəmli yeddi seqmentli göstərici üçün əlaqə diaqramı
Çoxrəqəmli yeddi seqmentli göstərici üçün əlaqə diaqramı

Rəqəmsal məlumatı göstərən cihaz. Bu, ərəb rəqəmlərini göstərə bilən göstəricinin ən sadə tətbiqidir. Hərfləri göstərmək üçün daha mürəkkəb çoxseqmentli və matrisli göstəricilərdən istifadə olunur.

Adından da göründüyü kimi, o, ayrıca açılan və sönən yeddi displey elementindən (seqmentlərdən) ibarətdir. Onları müxtəlif kombinasiyalara daxil etməklə ərəb rəqəmlərinin sadələşdirilmiş təsvirlərini yaratmaq üçün istifadə edilə bilər.
Seqmentlər A-dan G hərfləri ilə təyin olunur; səkkizinci seqment - onluq nöqtə (onluq nöqtə, DP), kəsr ədədləri göstərmək üçün nəzərdə tutulmuşdur.
Bəzən yeddi seqmentli göstəricidə hərflər göstərilir.

Onlar müxtəlif rənglərdə olur, adətən ağ, qırmızı, yaşıl, sarı və mavi. Bundan əlavə, onlar müxtəlif ölçülərdə ola bilər.

Həmçinin, LED göstəricisi tək rəqəmli (yuxarıdakı şəkildəki kimi) və ya çoxrəqəmli ola bilər. Praktikada əsasən bir, iki, üç və dörd rəqəmli LED göstəriciləri istifadə olunur:

On rəqəmə əlavə olaraq, yeddi seqmentli göstəricilər hərfləri göstərməyə qadirdir. Ancaq bir neçə hərf intuitiv yeddi seqmentli təmsilə malikdir.
Latın dilində: böyük hərf A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, kiçik a, b, c, d, e, g , h, i, n, o, q, r, t, u.
Kiril əlifbasında: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (iki rəqəm), b, E/Z.
Buna görə yeddi seqmentli göstəricilər yalnız sadə mesajları göstərmək üçün istifadə olunur.

Ümumilikdə yeddi seqmentli LED göstərici 128 simvol göstərə bilər:

Tipik bir LED göstəricinin doqquz aparıcısı var: biri bütün seqmentlərin katodlarına, digər səkkizi isə hər seqmentin anoduna gedir. Bu sxem deyilir "ümumi katod dövrəsi", sxemləri də var ümumi anod ilə(onda əksinədir). Çox vaxt bazanın müxtəlif uclarında bir deyil, iki ümumi terminal hazırlanır - bu, ölçüləri artırmadan naqilləri asanlaşdırır. “Universal” deyilənlər də var, amma mən şəxsən belələrinə rast gəlməmişəm. Bundan əlavə, quraşdırılmış növbə registrinə malik göstəricilər var ki, bu da daxil olan mikrokontroller port pinlərinin sayını xeyli azaldır, lakin onlar daha bahalıdır və praktikada nadir hallarda istifadə olunur. Nəhəngliyi dərk etmək mümkün olmadığından, hələlik bu cür göstəriciləri nəzərdən keçirməyəcəyik (lakin daha çox sayda seqment, matris olan göstəricilər də var).

Çoxrəqəmli LED göstəriciləri tez-tez dinamik prinsip üzərində işləyir: bütün rəqəmlərin eyni adlı seqmentlərinin çıxışları bir-birinə bağlıdır. Belə bir göstərici haqqında məlumatı göstərmək üçün idarəetmə mikrosxemi bütün rəqəmlərin ümumi terminallarını dövri olaraq cərəyanla təmin etməlidir, cərəyan isə verilmiş seqmentin verilmiş rəqəmdə işıqlandırılmasından asılı olaraq seqment terminallarına verilir.

Bir rəqəmli yeddi seqmentli göstəricinin mikrokontrollerə qoşulması

Aşağıdakı diaqram necə olduğunu göstərir birrəqəmli yeddi seqmentli göstərici birləşdirilir mikro nəzarətçiyə.
Nəzərə almaq lazımdır ki, əgər göstərici ilə ÜMUMİ KATOD, sonra onun ümumi çıxışı birləşdirilir "yer", və seqmentlər qidalanma ilə alovlanır məntiqi vahid port çıxışına.
Göstərici olarsa ÜMUMİ ANOD, sonra onun ümumi naqilinə verilir "artı" gərginlik və seqmentlər port çıxışını vəziyyətə keçirərək alovlanır məntiqi sıfır.

Bir rəqəmli LED göstəricisində göstərici müvafiq məntiqi səviyyənin müvafiq rəqəminin mikrokontroller portunun sancaqlarına ikili kod tətbiq etməklə həyata keçirilir (OK olan göstəricilər üçün - məntiqi olanlar, OA ilə göstəricilər üçün - məntiqi sıfırlar).

Cərəyanı məhdudlaşdıran rezistorlar diaqramda ola bilər və ya olmaya bilər. Hamısı göstəriciyə verilən təchizatı gərginliyindən və asılıdır texniki xüsusiyyətləri göstəricilər. Məsələn, seqmentlərə verilən gərginlik 5 voltdursa və onlar 2 volt işləmə gərginliyi üçün nəzərdə tutulubsa, cərəyanı məhdudlaşdıran rezistorlar quraşdırılmalıdır (artan təchizatı gərginliyi üçün onlardan keçən cərəyanı məhdudlaşdırmaq və yanmamaq üçün təkcə göstərici deyil, həm də mikrokontroller portu).
Babanın düsturundan istifadə edərək, cərəyan məhdudlaşdıran rezistorların dəyərini hesablamaq çox asandır Ohm.
Məsələn, göstəricinin xüsusiyyətləri aşağıdakılardır (məlumat vərəqindən götürülmüşdür):
— iş gərginliyi — 2 volt
— iş cərəyanı — 10 mA (=0,01 A)
— təchizatı gərginliyi 5 volt
Hesablama düsturu:
R = U/I (bu düsturdakı bütün dəyərlər Ohm, Volt və Amperdə olmalıdır)
R= (təchizat gərginliyi - iş gərginliyi)/iş cərəyanı
R= (5-2)/0,01 = 300 Ohm

Çoxrəqəmli yeddi seqmentli LED göstərici üçün əlaqə diaqramıƏsasən bir rəqəmli göstəricini birləşdirərkən olduğu kimi. Yeganə odur ki, göstəricilərin katodlarına (anodlarına) nəzarət tranzistorları əlavə olunur:

Diaqramda göstərilmir, lakin tranzistorların əsasları və mikrokontroller portunun sancaqları arasında müqaviməti tranzistorun növündən asılı olan rezistorlar daxil edilməlidir (rezistor dəyərləri hesablanır, lakin nominal dəyəri 5-10 kOhm olan rezistorlardan istifadə etməyə cəhd edə bilərsiniz).

Boşaltmaların göstəricisi dinamik şəkildə həyata keçirilir:
— 1-ci rəqəm üçün PB portunun çıxışlarında müvafiq rəqəmin ikili kodu təyin edilir, sonra məntiqi səviyyə birinci rəqəmin idarəetmə tranzistoruna tətbiq edilir.
— 2-ci rəqəm üçün PB portunun çıxışlarında müvafiq rəqəmin ikili kodu təyin edilir, sonra ikinci rəqəmin idarəetmə tranzistoruna məntiqi səviyyə tətbiq edilir.
— 3-cü rəqəm üçün PB portunun çıxışlarında müvafiq rəqəmin ikili kodu təyin edilir, sonra üçüncü rəqəmin idarəetmə tranzistoruna məntiqi səviyyə tətbiq edilir.
- beləliklə bir dairədə
Bu halda nəzərə almaq lazımdır:
— ilə göstəricilər üçün tamam idarəetmə tranzistor strukturundan istifadə olunur NPN(məntiqi vahid tərəfindən idarə olunur)
- ilə göstərici üçün OA- struktur tranzistor PNP(məntiq sıfır ilə idarə olunur)

Radiotexnika və elektronikanın meydana çıxmasından bəri Əlaqə elektron cihaz və şəxs müxtəlif siqnal işıqları, düymələr, keçid açarları, zənglər (mikrodalğalı soba hazır siqnal - ding!) ilə müşayiət olunurdu. Bəzi elektron qurğular minimum məlumat verir, çünki daha çoxu lazımsız olardı. Məsələn, Çin telefonunuzun şarj cihazında işıqlı bir işıq diodu şarj cihazının qoşulduğunu və enerji aldığını göstərir. Amma elə parametrlər də var ki, onlar üçün obyektiv məlumat vermək daha rahat olardı. Məsələn, çöldəki havanın temperaturu və ya zəngli saatdakı vaxt. Bəli, bütün bunlar parlayan lampalar və ya LED-lərlə də edilə bilər. Bir dərəcə - bir yanan diod və ya ampul. Neçə dərəcə var, o qədər göstəricilər yanır. Bu atəşböcəkləri saymaq adi bir şey ola bilər, amma yenə də temperaturu dərəcənin onda biri qədər dəqiqliklə göstərmək üçün bu işıqlardan neçəsinə ehtiyac olacaq? Və ümumiyyətlə, bu LED və işıq lampaları elektron cihazda hansı ərazini tutacaq?

Praktiki yeddi seqmentli displey qurğularında ən azı səkkiz xarici əlaqə terminalı olmalıdır; onlardan yeddisi fərdi fotovoltaik seqmentlərə çıxışı təmin edir, səkkizincisi isə bütün seqmentlərə ümumi əlaqəni təmin edir. Birinci halda, cihaz yeddi seqmentli ümumi anod displey kimi tanınır; sonuncu halda cihaz yeddi seqmentli ümumi katodlu displey kimi tanınır.

Ümumi anod displeyini idarə etmək üçün sürücünün aktiv-aşağı çıxışı olmalıdır, burada hər bir seqment sürücüsü normal olaraq yüksəkdir, lakin seqmenti işə salmaq üçün aşağı enir. Ümumi katod displeyini idarə etmək üçün sürücünün aktiv aktiv çıxışı olmalıdır.

XX əsrin əvvəllərində elektron boruların meydana gəlməsi ilə ilk qaz boşalma göstəriciləri ortaya çıxdı.

Belə göstəricilərin köməyi ilə rəqəmsal məlumatları ərəb rəqəmləri ilə göstərmək mümkün olub. Əvvəllər bu lampalar alətlər və digər elektron cihazlar üçün müxtəlif göstəricilər hazırlamaq üçün istifadə olunurdu. Hazırda qaz-boşaltma elementləri demək olar ki, heç bir yerdə istifadə edilmir. Ancaq retro həmişə dəbdədir, buna görə bir çox radio həvəskarları özləri və yaxınları üçün gözəl qaz boşalma saatları toplayırlar.

Bunun tam izahı aşağıdakı kimi bir az daha mürəkkəbdir. Gərginlik sıfır olduqda, seqment effektiv şəkildə görünməzdir. Bununla belə, giriş gərginliyi əhəmiyyətli dərəcədə müsbət və ya mənfi olduqda, seqment effektiv şəkildə görünən olur, lakin sürücünün gərginliyi bir neçə yüz millisaniyədən çox saxlanılırsa, seqment daimi olaraq görünə bilər və əlavə mənası yoxdur.

Bu şərtlərdə seqment qeyri-aktivdir. Beləliklə, seqment bu şərtlərə daxil edilir. Sürücünün bu forması ümumiyyətlə gərginliyin ikiqat artırılması "körpü sürücüsü" sistemi kimi tanınır. Sxemin hərəkətlərinin ardıcıllığı aşağıdakı kimidir. Daha əvvəl təsvir edilən sadə kaskad sistemi ciddi bir qüsurdan əziyyət çəkir ki, ekran faktiki hesablama dövründə bulanıqlaşır, yalnız hər bir sayma tamamlandıqdan və giriş qapısı bağlandıqda sabit və oxunaqlı olur. Bu "bulanıq və oxunan" tipli ekrana baxmaq çox zəhlətökəndir.

Qaz boşaltma lampalarının dezavantajları - onlar çox yeyirlər. Davamlılıq haqqında mübahisə etmək olar. Universitetimizdə hələ də laboratoriya otaqlarında qaz boşaldıcılarında tezlik sayğaclarından istifadə edirik.

LED-lərin meydana gəlməsi ilə vəziyyət kəskin şəkildə dəyişdi. LED-lərin özləri az miqdarda cərəyan istehlak edirlər. Onları düzgün mövqedə yerləşdirsəniz, tamamilə hər hansı bir məlumatı göstərə bilərsiniz. Bütün ərəb rəqəmlərini vurğulamaq üçün sadəcə bir şey kifayət idi yeddi (buna görə də adı yeddi seqmentli göstərici) müəyyən bir şəkildə düzülmüş parlaq LED şeritləri:

Şəkil 13 yuxarıdakı qüsuru aradan qaldırmaq üçün displey kilidindən istifadə edən təkmilləşdirilmiş tezlik sayğacını göstərir. Bu sxem aşağıdakı kimi işləyir. Eyni zamanda, giriş qapısı açılır və sayğaclar giriş siqnalının impulslarını yekunlaşdırmağa başlayır. Bu sayğac tam olaraq bir saniyə davam edir və bu müddət ərzində dörd bitlik kilidlər sayğac çıxışının displey sürücülərinə çatmasına mane olur; ekran bu müddət ərzində sabit qalır.

Bir neçə saniyədən sonra ardıcıllıq yenidən təkrarlanır, sayğaclar yenidən işə salınır və sonra giriş tezliyi impulslarını bir saniyə ərzində hesablayır, bu müddət ərzində displey əvvəlki sayımın davamlı oxunmasını verir və s.

Demək olar ki, bütün belə yeddi seqmentli göstəricilər həm də səkkizinci seqment - nöqtə əlavə edir ki, istənilən parametrin tam və kəsr qiymətini göstərmək mümkün olsun.

Beləliklə, Şəkil 13-dəki sxem saniyədə bir dəfə yenilənən sabit bir displey yaradır; praktikada bunun və Şəkil 12-dəki diaqramın faktiki hesablama dövrü, çıxış displeyini müvafiq olaraq miqyaslaşdırmaq şərti ilə çoxlu və ya qismən saniyələrlə istənilən onillikdə edilə bilər.

Qeyd edək ki, üç rəqəmli tezlik sayğacı bir saniyəlik zaman bazasından istifadə edərkən 999 Hz, 100 ms vaxt bazasından istifadə edərkən 99 kHz, 10 ms vaxt bazasından istifadə edərkən 9 kHz və 999 kHz tezlikləri göstərə bilər. 1 ms vaxt bazası.

Nəzəri olaraq səkkiz seqmentli göstərici olduğu ortaya çıxır, lakin köhnə üsulla yeddi seqmentli də adlanır və bunda heç bir səhv yoxdur.

Bir sözlə, yeddi seqmentli bir göstərici müəyyən bir qaydada bir-birinə nisbətən yerləşmiş və bir korpusa daxil edilmiş LED-lərdir.

Bu üsul Şəkil 14 və 15-in köməyi ilə başa düşülə bilər. Bu açarlar bir-birinə bağlıdır və faktiki multipleksor hərəkətini təmin edir və 1, 2 mövqeləri və əməliyyatların ardıcıllığı ilə dəfələrlə dəyişdirilən yüksək sürətli elektron açarlar kimi qəbul edilməlidir. dövrə aşağıdakı kimidir. Əvvəlcə keçidin yerində olduğunu fərz edək.

Bir neçə dəqiqədən sonra açar 3-cü mövqeyə keçir və bir neçə dəqiqədən sonra 3-cü displeydə rəqəm göstərilməsinə səbəb olur, bütün dövr təkrar təkrarlanmağa başlayır və s., sonsuzluq əlavə edir. Təcrübədə bu dövrələrin təxminən 50-si hər saniyədə baş verir, buna görə də göz displeylərin ayrı-ayrılıqda açılıb-söndüyünü görmür, lakin onları 327 rəqəmini və ya məlumat seqmentinin diktə etdiyi hər hansı digər rəqəmi göstərən zahirən sabit displey kimi qəbul edir.

Tək yeddi seqmentli göstəricinin diaqramını nəzərdən keçirsək, belə görünür:

Gördüyümüz kimi, yeddi seqmentli göstərici ya ilə ola bilər ümumi anod (CA), beləliklə ümumi katod (OC). Kobud desək, ümumi anodlu (OA) yeddi seqmentimiz varsa, dövrədə bu sancağa "artı" asmalıyıq və ümumi katod (OC) varsa, "mənfi" və ya torpaq. . Hansı pinə gərginlik tətbiq etsək, bu LED yanacaq. Bütün bunları praktikada nümayiş etdirək.

Praktik multipleksorlarda kifayət qədər ekran parlaqlığını təmin etmək üçün pik displey cərəyanı kifayət qədər yüksəkdir. şək. Şəkil 15 üçrəqəmli tezlik sayğacına tətbiq edilən təkmilləşdirilmiş multipleksləşdirmə metodunun nümunəsini göstərir. Bu metodun iki əsas üstünlüyü var.

Əgər bu terminallar aktiv yüksəkdirsə, onlar aşağıdakı xüsusiyyətlərə malik olacaqlar. Şek. 18 və 19. Şəkil 18 kəmiyyəti oxuyan dörd rəqəmli displeydə aparıcı sıfır yatırmanı təmin etmək üçün istifadə edilən dalğalanmanın qarşısının alınması texnikasını göstərir.

Stokda aşağıdakı LED göstəriciləri var:

Gördüyümüz kimi, yeddi seqmentli qurğular tək və çox bitli, yəni bir halda iki, üç, dörd yeddi seqmentli qurğular ola bilər. Müasir yeddi seqmentli cihazı yoxlamaq üçün bizə yalnız diod test funksiyası olan bir multimetr lazımdır. Biz ümumi bir nəticə axtarırıq - bu ya OA, ya da OK ola bilər - təsadüfi olaraq və sonra göstəricinin bütün seqmentlərinin performansına baxırıq. Üç bitlik yeddi seqmenti yoxlayırıq:

Beləliklə, ekran göstərilir. Əsasən, onlardan istifadə etmək asandır, onları gücləndirir və işıqlandırırlar. Onlar əsəbi ola bilər, çünki onların bir növ polaritesi var, yəni onları düzgün birləşdirsəniz, işləyəcəklər. Müsbət və mənfi gərginliyi ləğv etsəniz, onlar heç yanmayacaqlar.

Nə qədər bezdirici olsa da, həm də olduqca faydalıdır. Digər tel katoddur. Katod yerə bağlıdır. Prinsipcə, buna qədər gələcək. Ümumi katod üçün siz açmaq istədiyiniz sancaqlara cərəyan tətbiq edirsiniz. Multipleksləmə. Proqramınızı dəyişdirməkdən narahat olmaq istəmirsinizsə, bunun üçün hətta displey nəzarətçiləri də var.

Vay, bir seqment yanıb, ona görə də digər seqmentləri eyni şəkildə yoxlayırıq.

Bəzən cizgi filmindəki gərginlik göstərici seqmentlərini yoxlamaq üçün kifayət deyil. Buna görə enerji təchizatı götürürük, onu 5 Volta qoyuruq, enerji təchizatının bir terminalına 1-2 kiloOhm rezistor əlavə edirik və yeddi seqmentli bölməni yoxlamağa başlayırıq.

7 seqmentli displey nəzarəti

Beləliklə, 4 rəqəmli, multipleksləşdirilmiş 7 seqment, ümumi anodunuz olduqda. Birincisi, biz hansı növ ekrana malik olduğumuzu bilməliyik, çünki iki mümkün forma var: ümumi katod və ümumi anod. Bu dərslik üçün sizə lazım olacaq şeylər. Solda: Daxili naqillər və pin yerləri üçün ümumi planı göstərən 7 seqmentli ekranın qrafik görünüşü.

Bu zaman ilkin çıxışa diqqət yetirin, çünki proqramı yükləyərkən daha sonra ehtiyacınız olacaq. Ekran adi bir katod olsaydı, onu ləğv edərdik. Məqalənin altındakı prototip lövhəmdə gedən sxemlərin bir fotoşəkili var. Biz həmçinin birdən çox ekrana nəzarət etmək üçün kitabxana təqdim edirik.

Niyə bir rezistora ehtiyacımız var? LED-ə gərginlik tətbiq edildikdə, açıldıqda cərəyanı kəskin şəkildə istehlak etməyə başlayır. Buna görə də, bu anda yanmağa başlaya bilər. Cərəyanı məhdudlaşdırmaq üçün bir rezistor LED ilə ardıcıl olaraq bağlanır. Bu məqalədə daha ətraflı oxuya bilərsiniz.

Bir 7 seqmentli displeydə altıbucaqlı hesablama

Mənfi cəhəti odur ki, onlar resurs tələb edir. Bu xüsusi ekranda dörd rəqəm və iki iki nöqtəli displey var. Bununla belə, cihaz da təmin edir rəqəmsal nəzarət daxili genişzolaqlı modulator vasitəsilə parlaqlığı göstərin. Belə hallarda çıxış çoxlu 7 seqmentli displeylərdə edilə bilər.

Bu, kontaktları korpusda, sonra isə idarəetmədə saxlayır. Müvafiq olaraq, ümumi anod və ya ümumi katod ekranlarına istinad edilir. Seqmentə və ya onluq nöqtəyə uyğun gələn çıxış ən yaxşı nümayiş üçün məlumat vərəqindən çıxarılır. Adi 10-20mA üçün qiymətləndirilən 7 seqmentli displey zəif də olsa, yenə də yanacaq. Ancaq bu, kontaktların təyin edilməsini tələb etmir. Bu seqmentin aşağıdakı paylanması əsaslanır.

Eyni şəkildə Çin radiosundan dörd rəqəmli yeddi seqmenti yoxlayırıq

Düşünürəm ki, bununla bağlı heç bir xüsusi çətinlik olmamalıdır. Sxemlərdə yeddi seqmentli sxemlər hər bir pində rezistorlara qoşulur. Bu, həm də LED-lərin onlara gərginlik tətbiq edildikdə, cərəyanı qəzəblə istehlak etməsi və yanması ilə əlaqədardır.

Fərqli məqsəddən istifadə edilərsə, bu, prinsipcə mümkündür, lakin proqramlaşdırma zamanı nəzərə alınmalıdır. Fərdi rəqəmləri müəyyən bir çıxış nümunəsinə çevirmək adlanan bir şeydən istifadə etməklə edilə bilər. Bütün digər seqmentlər qaranlıq olmalıdır. Bütün rəqəmlər üçün bu onay qutusu seçilərsə, aşağıdakı cədvəl verilir.

IN test proqramı 0-dan 9-a qədər rəqəmlər 7 seqmentli displeydə ardıcıl olaraq göstərilir. Çıxış nömrəsi registr sayğacında saxlanılır və dövr ərzində 1-ə qədər artırılır. Əgər registr 10 dəyərinə çatarsa, o, yenidən 0-a sıfırlanır.Yaldırıldıqdan sonra növbəti buraxılışda müəyyən vaxtın keçməsini təmin edən gözləmə dövrü baş verir. Normalda belə uzun gözləmə dövrləri etməzdiniz, lakin bu, gözləmək deyil, 7 seqmentli displey idarə etməkdir. Bunun üçün taymerdən istifadə etmək çox səy tələb edir.

Müasir dünyamızda artıq yeddi seqmentli qurğular tamamilə fərqli məlumatları əks etdirə bilən LCD göstəriciləri ilə əvəz olunur

lakin onlardan istifadə etmək üçün bu cür cihazların dövrə dizaynında müəyyən bacarıqlara ehtiyacınız var. İndiyə qədər yeddi seqmentli LED göstəricilərindən daha sadə və ya ucuz bir şey yoxdur.

Bununla belə, faktiki problem və buna görə də bu məqalənin maraqlı hissəsi etiket döngəsindən sonra baş verir. Nəzərə alın ki, sayğac dəyəri iki dəfə artırılmalıdır. Bu bilavasitə flaş yaddaşın bayt deyil, söz baxımından olması ilə bağlıdır. Bu səhifədəki ikinci nümunə bunu fərqli edir. Bu, başqa bir cədvəl girişi vasitəsilə padding baytlarının yaranmasının assembler tərəfindən qarşısının alına biləcəyini göstərir. Həm də maraqlıdır ki, hesablama 0 dəyərini ehtiva edən registr tələb edir.

Buna görə də bu sabit əvvəlcə registrə yüklənməlidir və yalnız bundan sonra bu registrdən istifadə etməklə əlavə edilə bilər. Maraqlısı odur ki, bu fakta bir çox proqramlarda rast gəlinir və əksər hallarda sabitlər sabit 0-dır. Ona görə də bir çox proqramçılar bunun üçün əvvəldən registr rezerv edir və onu sıfır registr adlandırırlar.

Bu yazıda rəqəmsal displey haqqında danışacağıq.
Yeddi seqmentli LED göstəriciləri 0-dan 9-a qədər ərəb rəqəmlərini göstərmək üçün nəzərdə tutulmuşdur (şək. 1).

Bu cür göstəricilər yalnız bir nömrəni göstərən bir rəqəmlidir, lakin bir korpusda birləşdirilmiş daha çox yeddi seqmentli qrup ola bilər (çoxrəqəmli). Bu halda, ədədlər onluq nöqtə ilə ayrılır (şək. 2)

Təəssüf ki, problem var, çünki ekran səkkiz port tələb edir - dörd reklam üçün 32 port tələb olunur. Ancaq bir neçə yol var. Shift registrləri artıq başqa bir təlimatda təsvir edilmişdir. Bu, yalnız üç sancaqla tələb olunan 32 çıxış xəttini yaratmağı asanlaşdıracaq. İdarəetmə prinsipi tək 7 seqmentli ekranı idarə etməkdən fərqlənmir, yalnız "çıxış pinləri" nin öz dəyərlərinə necə yanaşması fərqlidir və sürüşmə registrlərinin istifadəsi ilə müəyyən edilir. Aktiv Bu an lakin, başqa bir nəzarət variantı göstərilməlidir.



Şəkil 2.

Göstərilən simvolun yeddi ayrı seqmentdən qurulduğuna görə göstərici yeddi seqment adlanır. Belə bir göstəricinin korpusunun içərisində hər biri öz seqmentini işıqlandıran LED-lər var.
Belə göstəricilərdə hərflərin və digər simvolların göstərilməsi problemlidir, ona görə də bu məqsədlər üçün 16 seqmentli göstəricilərdən istifadə olunur.

Multipleksləşdirməyə aşağıda yenidən baxacağıq. Multipleksləmə o deməkdir ki, bütün dörd displey eyni vaxtda deyil, eyni vaxtda yalnız biri açılır qısa müddət. Displeylər arasında dəyişiklik bizim insanların qəbul edə biləcəyindən daha sürətli baş verərsə, yalnız biri qısa müddət ərzində yansa da, dörd işığın hamısı eyni vaxtda işləyir. Bu yolla dörd displey fərdi seqment seqmentlərini paylaşa bilər və tələb olunanların hamısı ekranın aktivləşdirildiyi 4 displey üçün 4 əlavə idarəetmə xəttidir.

Bu tip idarəetmənin bir aspekti multipleksləşdirmə tezliyi, yəni bir displeydən digərinə keçidin tam dövrüdür. Ekranın titrəməsinin qarşısını almaq üçün kifayət qədər yüksək olmalıdır. İnsan gözü ləngdir, kinoteatrda saniyədə 24 kadr, televizorun təhlükəsiz tərəfdə olması və hərəkətsiz görüntülərin də sakit olması üçün hər seqment ən azı 100 Hz nəzarət edilməlidir, buna görə də ən azı hər 10 ms-də birləşir. İstisna hallarda, məsələn, displey sürətlə hərəkət etdikdə və ya alternativ cərəyanla işləyən süni işıq mənbələri ilə müdaxilə baş verdikdə, hətta 100 Hz hələ də yanıb-sönə bilər.

LED göstəriciləri iki növdə olur.
Onlardan birincisində bütün katodlar, yəni. bütün LED-lərin mənfi terminalları birlikdə birləşdirilir və işdə onlar üçün müvafiq terminal ayrılır.
Göstəricinin qalan terminalları hər bir LED-in anoduna bağlıdır (şəkil 3, a). Bu dövrə "ümumi katod dövrəsi" adlanır.
Hər bir seqmentin LED-lərinin ümumi anodlu bir dövrə uyğun olaraq bağlandığı göstəricilər də var (şəkil 3, b).



şək.3.

Hər bir seqment müvafiq hərflə təyin olunur. Şəkil 4 onların yerini göstərir.

Şəkil 4.

Nümunə olaraq, iki rəqəmli yeddi seqmentli göstərici GND-5622As-21 qırmızısını nəzərdən keçirin. Yeri gəlmişkən, modeldən asılı olaraq başqa rənglər də var.
Üç voltluq batareyadan istifadə edərək, seqmentləri aça bilərsiniz və bir qrup pinləri bir dəstəyə birləşdirsəniz və onlara güc tətbiq etsəniz, hətta nömrələri göstərə bilərsiniz. Lakin bu üsul əlverişsizdir, ona görə də yeddi seqmentli göstəriciləri idarə etmək üçün shift registrləri və dekoderlərdən istifadə olunur. Həmçinin, tez-tez göstərici pinləri birbaşa mikrokontrolörün çıxışlarına qoşulur, lakin yalnız aşağı cərəyan istehlakı olan göstəricilər istifadə edildikdə. Şəkil 5-də PIC16F876A istifadə edən dövrənin bir parçası göstərilir.



Şəkil 5.

Yeddi seqmentli göstəricini idarə etmək üçün K176ID2 dekoderi tez-tez istifadə olunur.
Bu çip sıfır və birlərdən ibarət ikili kodu 0-dan 9-a qədər onluq rəqəmlərə çevirə bilir.

Bütün bunların necə işlədiyini başa düşmək üçün sadə bir dövrə yığmaq lazımdır (şəkil 6). K176ID2 dekoderi DIP16 paketində yerləşdirilib. Hər biri müəyyən bir seqmentə həsr olunmuş 7 çıxış pininə malikdir (9 - 15). Burada nöqtə nəzarəti təmin edilmir. Mikrosxemdə həmçinin ikili kodu təmin etmək üçün 4 giriş (pinlər 2 - 5) var. 16-cı və 8-ci pinlər müvafiq olaraq artı və mənfi güclə təmin edilir. Qalan üç nəticə köməkçidir, onlar haqqında bir az sonra danışacağam.



Şəkil 6.

DD1 - K176ID2
R1 - R4 (10 - 100 kOhm)
HG1 - GND-5622As-21

Dövrədə 4 keçid açarı var (istənilən düymələr mümkündür), onları basdığınız zaman enerji təchizatı plus-dan dekoder girişlərinə məntiqi biri verilir. Yeri gəlmişkən, mikrosxem özü 3 ilə 15 Volt arasında bir gərginliklə təchiz edilmişdir. Bu nümunədə, bütün dövrə 9 voltluq enerji təchizatı ilə təchiz edilmişdir.

Həmçinin dövrədə 4 rezistor var. Bunlar pull-up rezistorları adlanır. Onlar heç bir siqnal olmadıqda məntiq girişinin aşağı olmasını təmin etmək üçün lazımdır. Onlar olmadan, göstəricidəki oxunuşlar düzgün göstərilməyə bilər. Eyni şəkildə istifadə etmək tövsiyə olunur10 kOhm-dan 100 kOhm-a qədər müqavimət.

Diaqramda HG1 göstəricisinin 2 və 7 sancaqları birləşdirilməyib. DP pinini mənfi enerji təchizatı ilə birləşdirsəniz, ondalık nöqtə yanır. Əgər Dig.2 çıxışına bir mənfi tətbiq etsəniz, ikinci qrup seqmentlər də yanacaq (eyni simvolu göstərəcək).

Dekoder girişləri elə qurulub ki, göstəricidə 1, 2, 4 və 8 rəqəmlərini göstərmək üçün yalnız bir düyməni sıxmaq lazımdır (düzgündə D0, D1, D2 və D3 girişlərinə uyğun keçid açarları var). Siqnal yoxdursa, sıfır rəqəmi göstərilir. D0 girişinə siqnal verildikdə 1 rəqəmi göstərilir və s. Digər nömrələri göstərmək üçün keçid açarlarının birləşməsinə basmalısınız. Cədvəl 1 bizə hansıları basmağımız lazım olduğunu söyləyəcək.


Cədvəl 1.

"3" rəqəmini göstərmək üçün D0 və D1 girişinə məntiqi birini tətbiq etməlisiniz. D0 və D2-yə siqnal tətbiq etsəniz, “5” rəqəmi görünəcək(Şəkil 6).



Şəkil 6.

Budur, yalnız gözlənilən rəqəmi deyil, həm də bu rəqəmi təşkil edəcək seqmentləri (a - g) gördüyümüz genişləndirilmiş cədvəldir.



Cədvəl 2.

Mikrosxemin 1-ci, 6-cı və 7-ci pinləri köməkçidir (müvafiq olaraq S, M, K).

Diaqramda (Şəkil 6) 6-cı pin "M" torpaqlanır (enerji təchizatı mənfi) və ümumi katodlu bir göstərici ilə işləmək üçün mikrosxemin çıxışında müsbət gərginlik var. Ümumi anodlu bir göstərici istifadə edilərsə, onda biri 6-cı pinə tətbiq edilməlidir.

7-ci "K" pininə məntiqi bir tətbiq edilərsə, göstərici işarəsi sönür, sıfır göstəriciyə icazə verir. Sxemdə bu nəticə torpaqlanmış (enerji təchizatı mənfi).

Dekoderin ilk çıxışına məntiqi vahid (plus güc) verilir ki, bu da çevrilmiş kodun göstəricidə göstərilməsinə imkan verir. Lakin bu pinə (S) məntiqi sıfır tətbiq etsəniz, girişlər siqnal qəbul etməyi dayandıracaq və indiki işarə indikatorda donacaq.

Maraqlı bir məqamı qeyd etmək lazımdır ki, biz bilirik ki, D0 keçid açarı "1" rəqəmini, D1 keçid açarı isə "2" rəqəmini işə salır. Hər iki keçid düyməsini basarsanız, 3 rəqəmi görünəcək (1+2=3). Və digər hallarda, göstərici bu birləşməni təşkil edən nömrələrin cəmini göstərir. Dekoder girişlərinin düşünülmüş şəkildə qurulduğu və çox məntiqli birləşmələri olduğu qənaətinə gəlirik.

Bu məqalə üçün videoya da baxa bilərsiniz.

Yeddi seqmentli LED göstəricini Arduino lövhəsinə qoşaq və Led4Digits.h kitabxanasından istifadə edərək onu idarə etməyi öyrənək.

Əvvəlki dərsdə mikrokontrollerlər ətraflı təsvir edilmişdir. Belə bir göstəricini Arduino lövhəsinə bağlayaq.

Göstəricini Arduino lövhəsinə qoşmaq üçün diaqram bu kimi görünür.

Mən onu dövrə lövhəsinə yığdım.

Göstəriciləri idarə etmək üçün Led4Digits.h kitabxanasını yazdım:

Və ödəyin.

Kitabxana yeddi seqmentli göstəriciləri idarə etməyə imkan verir:

  • dörd rəqəmə qədər ölçü;
  • nəzarət impuls polaritesinin hər hansı variantları ilə (hamısı);
  • paralel prosesdə işləyir;
  • göstəricidə göstərməyə imkan verir:
    • hər bir kateqoriyanın seqmentləri;
    • hər rəqəmin rəqəmi;
    • tam 0 ... 9999;
  • tam ədədi çıxarmaq üçün rəqəmlərin sayını təyin etmək olar;
  • Əhəmiyyətsiz rəqəmləri sıxışdırmaq üçün bir rejim var.

Led4Digits.h kitabxanasını bu linkdən yükləyə bilərsiniz:

Və ödəyin. Cəmi 40 rub. bütün sayt resurslarına daxil olmaq üçün ayda!

Necə quraşdırmaq barədə yazılıb.

Mənbə mətnləri verməyəcəyəm. Siz onları kitabxana fayllarında axtara bilərsiniz. Həmişə olduğu kimi orada da çoxlu şərhlər var. Kitabxanadan necə istifadə edəcəyimi misallarla ətraflı təsvir edəcəyəm.

Arduino Led4Digits üçün LED idarəetmə kitabxanası.

Budur sinif təsviri. Mən yalnız ictimai üsulları və xüsusiyyətləri təqdim etdim.

sinif Led4Rəqəmləri (
ictimai:
bayt rəqəmi; // bit seqment idarəetmə kodları
void regen(); // regenerasiya, üsul müntəzəm olaraq çağırılmalıdır
void tetradToSegCod(bayt qazma, bayt tetrad); // tetradın seqment kodlarına çevrilməsi
boolean çap (imzasız int dəyəri, bayt rəqəmliNum, bayt boş); // tam çıxış



} ;

Konstruktor.

Led4Rəqəmləri (bayt növüLed, bayt rəqəmliPin0, bayt rəqəmliPin1, bayt rəqəmliPin2, bayt rəqəmliPin3,
bayt segPinA, bayt segPinB, bayt segPinC, bayt segPinD,
bayt segPinE, bayt segPinF, bayt segPinG, bayt segPinH);

typeLed Bit və seqment seçimi siqnalları üçün nəzarət impuls polaritelerini təyin edir. İstənilən əlaqə sxemlərini dəstəkləyir ().

typeLed Kateqoriya seçimi Seqment seçimi Dövrə növü
0 -_- -_- Boşaltma seçim düymələri ilə ümumi anod
1 _-_ -_- Ümumi anod
2 -_- _-_ Ümumi katod
3 _-_ _-_ Boşaltma seçim düymələri ilə ümumi katod

rəqəmliPin0...rəqəmliPin3– rəqəmlərin seçilməsi üçün çıxışlar. digitPin = 255 olarsa, rəqəm deaktivdir. Bu, göstəriciləri daha az rəqəmlə birləşdirməyə imkan verir. digitPin0 – aşağı (sağ) rəqəm.

segPinA...segPinH– seqment idarəetmə çıxışları.

Misal üçün,

deməkdir: göstərici növü 1; boşalma çıxışları 5,4,3,2; 6,7,8,9,10,11,12,13 seqmentlərinin nəticələri.

void regen() metodu

Metod paralel prosesdə müntəzəm olaraq çağırılmalıdır. O, göstəricilər üzərində təsviri bərpa edir. Regenerasiya dövrünün müddəti bitlərin sayına vurulan metod çağırış müddətinə bərabərdir.

Misal üçün,

// kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Bayt rəqəm massivi

Seqmentlərin vəziyyətini ehtiva edir. rəqəm ən az əhəmiyyətli bitdir, rəqəmin ən az əhəmiyyətli biti ən az əhəmiyyətli bitin “A” seqmentidir. 1 bit statusu seqmentin yandığını bildirir.

Misal üçün,

rəqəm = B0000101;

o deməkdir ki, ikinci rəqəmdə “A” və “C” seqmentləri yanır.

Hər bir rəqəmin bütün seqmentlərini ardıcıl olaraq işıqlandıran proqram nümunəsi.

// çalışan seqmentlər
#daxildir
#daxildir

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

ləğv quraşdırma() (
taymer kəsilməsi 2 ms
MsTimer2::start(); // müdaxiləni aktivləşdirin
}

boş döngə () (
üçün (int i = 0; i< 32; i++) {
əgər (i == 0) disp.digit= 1;
başqa əgər (i == 8) disp.digit= 1;
başqa əgər (i == 16) disp.digit= 1;
başqa əgər (i == 24) disp.digit= 1;
başqa(
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
disp.digit = disp.digit<< 1;
}
gecikmə (250);
}
}

//kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Rəqəmlər massivində 1 sürüşdürülür və göstəricilər bunu göstərir.

Metod etibarsız tetradToSegCod(bayt qazma, bayt tetrad)

Metod, onaltılıq kodun rəqəmlərini və hərflərini fərdi rəqəmlərdə göstərməyə imkan verir. Arqumentləri var:

  • qazmaq – rəqəm nömrəsi 0 ... 3;
  • tetrad - onluq simvol kodu. Kod 0 "0" rəqəmini, kod 1 - "1" rəqəmini, kod 14 - "E" hərfini göstərəcəkdir.

Misal üçün,

tetrad(2, 7);

üçüncü rəqəmdə “7” rəqəmini göstərəcək.

Hər bir rəqəmdəki simvolları növbə ilə dəyişən proqram nümunəsi.

// nömrələri bir-bir
#daxildir
#daxildir

// göstərici növü 1; boşalma çıxışları 5,4,3,2; seqment çıxışları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

ləğv quraşdırma() (
MsTimer2::set(2, timerInterrupt); // taymer kəsilməsi 2 ms
MsTimer2::start(); // müdaxiləni aktivləşdirin
}

boş döngə () (
üçün (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
gecikmə (250);
}
}

// kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Boolean çap üsulu (imzasız int dəyəri, bayt rəqəmliNum, bayt boş)

Metod göstəricilər üzərində tam ədəd göstərir. O, hər bir rəqəm üçün ikili ədədi BCD-yə çevirir. Arqumentləri var:

  • dəyər – göstəricidə göstərilən nömrə.
  • digitNum – nömrə üçün rəqəmlərin sayı. Bu göstərici rəqəmlərin sayı ilə qarışdırılmamalıdır. Siz rəqəmi 2 rəqəmdə, digər iki rəqəmdə isə simvol göstərmək istəyə bilərsiniz.
  • boş - əhəmiyyətsiz rəqəmlərin sıxışdırılması əlaməti. boş=0 o deməkdir ki, nömrə bütün sıfırlarla göstərilməlidir. "7" rəqəmi "0007" kimi görünəcək. Boş 0-dan fərqlidirsə, əhəmiyyətsiz sıfırlar sıxışdırılacaq.

Rəqəmlərin dəyəri seçilmiş rəqəmlər (digitNum) üçün icazə verilən rəqəmi keçərsə, funksiya indikatorda “---” göstərəcək və yalanı qaytaracaq.

Nömrə çıxarma proqramının nümunəsi.

// çıxış nömrəsi
#daxildir
#daxildir

// göstərici növü 1; boşalma çıxışları 5,4,3,2; seqment çıxışları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

ləğv quraşdırma() (
MsTimer2::set(2, timerInterrupt); // taymer kəsilməsi 2 ms
MsTimer2::start(); // müdaxiləni aktivləşdirin
}

boş döngə () (
üçün (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
gecikmə (50);
}
}

// kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Son iki üsul "H" seqmentinin vəziyyətini dəyişmir - onluq nöqtə. Nöqtənin vəziyyətini dəyişdirmək üçün əmrlərdən istifadə edə bilərsiniz:

rəqəm |= 0x80; // ondalık nöqtəni yandırın
rəqəm &= 0x7f; // onluq nöqtəni söndürün

Mənfi ədədlərin göstəricilərinə çıxış (int).

Mənfi ədədlər aşağıdakı kimi çıxarıla bilər:

  • Nömrənin işarəsini yoxlayın.
  • Rəqəm mənfi olarsa, ən əhəmiyyətli rəqəmdə mənfi işarəni çap edin və print() funksiyasında ədədin işarəsini müsbətə dəyişdirin.
  • Əgər rəqəm müsbətdirsə, işarə bitini söndürün və print() funksiyasından istifadə edərək nömrəni çap edin.

Budur, bu üsulu nümayiş etdirən bir proqram. -999-dan 999-a qədər rəqəmlər çıxarır.

// mənfi ədədlər çıxarın
#daxildir
#daxildir

// göstərici növü 1; boşalma çıxışları 5,4,3,2; seqment çıxışları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

ləğv quraşdırma() (
MsTimer2::set(2, timerInterrupt); // taymer kəsilməsi 2 ms
MsTimer2::start(); // müdaxiləni aktivləşdirin
}

boş döngə () (

üçün (int i = -999; i< 1000; i++) {

Əgər mən< 0) {
// rəqəm mənfidir
disp.digit= B01000000; // işarəsi -
disp.print(i * -1, 3, 1);
}
başqa(
disp.digit= B00000000; // işarəni təmizləyin
disp.print(i, 3, 1);
}

gecikmə (50);
}
}

// kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Kəsr ədədlərin göstəricilərinə çıxış, float formatı.

Standart C dili funksiyalarından istifadə edərək üzən nöqtə nömrələrini (floats) göstərməyin bir çox yolu var.Bu, ilk növbədə sprint() funksiyasıdır. Çox yavaş işləyir, simvol kodlarının ikili onluq kodlara əlavə çevrilməsini tələb edir, bir sətirdən bir nöqtə çıxarmaq lazımdır. Digər funksiyalarla eyni problemlər.

Mən göstəricilərdə float dəyişənlərinin dəyərlərini göstərmək üçün fərqli bir üsuldan istifadə edirəm. Metod sadə, etibarlı, sürətlidir. Aşağıdakı əməliyyatlara qədər azaldır:

  • Üzən nöqtə nömrəsi lazımi onluq yerlərin sayına uyğun gələn gücə 10 ilə vurulur. Göstəricilərdə 1 onluq yer göstərmək lazımdırsa, 10-a, 2-dirsə, 100-ə, 3 onluq yerini 1000-ə vurun.
  • Sonra üzən nöqtə nömrəsi açıq şəkildə tam ədədə (int) çevrilir və print() funksiyasından istifadə edərək göstəricilərdə göstərilir.
  • Lazım olan rəqəmə bir nöqtə qoyulur.

Məsələn, aşağıdakı sətirlər yeddi seqmentli LED-lərə iki onluq yerdən ibarət float dəyişənini çıxaracaq.

float x = 2.12345;

disp.digit |= 0x80; //

Ədədi 100-ə vururuq və üçüncü rəqəmə nöqtə qoyaraq nəticəni 100-ə bölürük.

Budur, göstəricilərdə 0,00-dan 99,99-a qədər üzən nöqtə nömrələrini göstərən bir proqram.

// üzən nöqtə çıxışı
#daxildir
#daxildir

// göstərici növü 1; boşalma çıxışları 5,4,3,2; seqment çıxışları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

ləğv quraşdırma() (
MsTimer2::set(2, timerInterrupt); // taymer kəsilməsi 2 ms
MsTimer2::start(); // müdaxiləni aktivləşdirin
}

boş döngə () (
float x = 0;

üçün (int i = 0; i< 10000; i++) {
x += 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // üçüncü səviyyəli nöqtəni yandırın

gecikmə (50);
}
}

//kəsmə idarəedicisi 2 ms
void timerInterrupt() (
disp.regen(); // göstərici bərpası
}

Gördüyünüz kimi, Led4Digits.h kitabxanası Arduino lövhəsinə qoşulmuş yeddi seqmentli işıq yayan diod (LED) göstəriciləri ilə işi xeyli asanlaşdırır. Mən belə bir kitabxananın analoqunu tapmadım.

Növbəli registr vasitəsilə LED displeylərlə işləmək üçün kitabxanalar mövcuddur. Biri mənə yazdı ki, onlar birbaşa Arduino lövhəsinə qoşulmuş LED displeylə işləyən kitabxana tapıblar. Ancaq istifadə edərkən göstərici rəqəmləri qeyri-bərabər parlayır və göz qırpır.

Analoqlarından fərqli olaraq Led4Digits.h kitabxanası:

  • Paralel proses kimi işləyir. Əsas dövrədə proqram məlumatları avtomatik olaraq ekranda göstərilən müəyyən dəyişənlərə yükləyir. İnformasiya çıxışı və göstəricinin bərpası əsas proqrama görünməyən taymer fasiləsində baş verir.
  • Ekran nömrələri yanıb-sönmədən bərabər şəkildə parlayır. Bu xüsusiyyət regenerasiyanın taymer kəsilməsi ilə ciddi şəkildə müəyyən edilmiş dövrədə baş verməsi ilə təmin edilir.
  • Kitabxana kompakt koda malikdir, tez icra olunur və nəzarətçini minimum yükləyir.

Növbəti dərsdə Arduino lövhəsinə LED göstərici və düymə matrisini eyni vaxtda birləşdirəcəyik. Belə bir dizayn üçün kitabxana yazaq.

Kateqoriya: . Siz onu işarələyə bilərsiniz.


Üst