Dört haneli yedi segmentli gösterge pin çıkışı. Yedi segmentli bir gösterge nasıl çalışır? LED gösterge türleri

  • 04.11.2019

Yedi segmentli gösterge, üst yüzeyinde LED'lerin bulunduğu bir mikro devredir. Bu göstergeler oldukça kullanışlı ve kullanımı kolay bir sayısal görüntüleme cihazıdır. İçlerinde, kural olarak, tüm LED'ler bir katot (ortak katot) veya bir anot (ortak anot) ile birbirine bağlanır.

Bence en iyi göstergeler KingBright tarafından üretilir. Çok çeşitli renklerde, boyutlarda ve alfasayısal ve nokta vuruşlu ekranlarda gelirler. Ancak ikincisi ile çalışmak birçok açıdan yedi segmentli olanların kullanımına benzer ve yedi segmentli olanları kullanmayı öğrenerek onlarla kolayca başa çıkabilirsiniz. Aynı serinin tüm göstergeleri aynı pin çıkışına sahiptir ve sadece renk olarak farklılık gösterebilir. Bu, göstergeyi mikro devreler için sokete takarak, farklı bir renkteki bir göstergeyle değiştirmek kolaydır.

Örnek olarak, iki göstergeyi ele alalım: SA39-11xxx (xxx, bir rengi kodlayan üç veya dört harftir, benim durumumda GWA) ve BC56-12xxx (xxx = SRWA'ya sahibim). Aşağıda renklerin bir listesi bulunmaktadır:

  • HWA - galyum fosfit GaP üzerinde parlak kırmızı, 700 nm
  • EWA - fosfit-arsenid ve galyum fosfit üzerinde yüksek performanslı kırmızı GaAsP / GaP, 625 nm
  • GWA - galyum fosfit GaP üzerinde yeşil, 565 nm
  • YWA - galyum arsenit fosfit ve galyum fosfit üzerinde sarı GaAsP / GaP, 590 nm
  • SRWA - galyum alüminyum arsenit GaAlAs üzerinde süper parlak kırmızı, 660 nm

Göstergeler adına, ikinci harf LED bağlantısının türünü belirtir: C - ortak katot, A - ortak anot. Aşağıda SA39 ve SC39 için bağlantı şeması ve çizim bulunmaktadır. Her segmenti (a-g) ve nokta atamasını (DP) temsil eden harflere dikkat edin. Makroları bildirmek için program kodunda bu isimleri kullanacağız. Bu, programın elektrik devresinden, göstergeyi ve MC'yi bağlama yönteminden mümkün olduğunca soyutlamasına izin verecektir.

Bu, "bacakların" 3 ve 8'in +5 V veriyoluna (veya aşırı durumlarda, onlara MK'den +5 V beslemesi için, ancak bu önerilmez) ve geri kalanının - bazılarına bağlanması gerektiği anlamına gelir. MK limanı. Bu durumda, hangi sırayla çok önemli değildir, çünkü bir hata durumunda göstergede bir sayı değil, bir miktar "si" harfi göreceksiniz. O zaman ya farklı bir şekilde bağlanmanız ya da programda küçük değişiklikler yapmanız gerekir. Genel olarak, göstergede görüntülenen karakter, bağlantı noktasına hangi numaranın gönderileceğine bağlıdır. Toplamda 255 kombinasyon vardır ve bunların hepsi bağlantı yönteminden bağımsız olarak mümkündür. Göstergeyi bağlamak için D bağlantı noktasını kullandım.

Geriye sadece basit bir program yazmak kalıyor:

#Dahil etmek"iom16.h" #tanımlamak 1 // Bu makrolar 2'ye karşılık gelen sayıları içerir, #tanımlamak b2 // bunun "bacak" sayısına eşit güce yükseltildi #tanımlamak c4 // gösterge segmentinin bağlı olduğu port #tanımlamak 128 // aynı ada sahip makronun adı. geri çekilmek için #tanımlamak 64 // gösterge için herhangi bir sayı, porta göndermeniz gerekiyor #tanımlamak f32 // sayı 255 eksi segmentlere karşılık gelen makroların toplamı. #tanımlamak g16 // Bu sayılar program bağlantısını bağımsız kılar. #tanımlamak DP 8 // Göstergede "si" harfi görüntüleniyorsa bu sayıları değiştirin kısa imzasız int ben = 1; imzasız karakter DigNumber = 0; imzasız karakter kazmak; // İhtiyacınız olan sayıları saklayan bir dizi // sayıya eşit bir rakam göstermesi için port üzerinden göstergeye çıktı // dizi öğesi. Rakamlar yalnızca makrolara bağlıdır. geçersiz io_init() (DDRD = 0xFF; // D portuna bir gösterge bağlı PORTD = 0xFF; ) geçersiz timer0_init() (OCR0 = 15; // Zamanlayıcı her 1024 tıklamada bir çalışır. Her // 1024 * 16 saat döngüsünde bir kesinti yapın. TCCR0 | = (1 geçersiz Dig_init () (Dig = 255 - (a + b + c + d + e + f); // İndikatör ortak anotlu ise, Kazı = 255 - (b + c); // makroların toplamını şundan çıkarmanız gerekiyor Dig = 255 - (a + b + g + e + d); // 255. Ortak bir katot varsa, o zaman Dig = 255 - (a + b + g + c + d); // çıkarmaya gerek yok. Dig = 255 - (f + g + b + c); // Makro adları eşleşiyor Dig = 255 - (a + f + g + c + d); // gösterge bölümlerinin adları Dig = 255 - (a + f + g + c + d + e); Dig = 255 - (a + b + c); Dig = 255 - (a + b + c + d + e + f + g); Dig = 255 - (a + b + c + d + f + g); ) geçersiz main () (io_init (); timer0_init (); Dig_init (); SREG | = (1 // Göstergede "0" sayısını göster süre(1) {} } #pragma vektör = TIMER0_COMP_vect __interrupt void Indic_change() ( Eğer(i // 675 * 16 * 1024 = 11.0592 MHz ( // Göstergedeki sayı her saniye değişir ben ++; ) Başka(i = 1; Eğer(DigNumber başka DigNumber = 0; PORTD = Dig;))

Nasıl çalıştığı, bence, yorumlardan koda kadar açık. #define'den sonraki makrolar, kodun gösterge bağlantı yönteminden neredeyse bağımsız olmasını sağlar. Örneğin, göstergenin 5. çıkışını (d-segmenti) MK'nin PD3 pinine bağladıysanız, her şeyin doğru çalışması için 2 3 = 8 sayısını d makrosu ile eşleştirmeniz gerekir. yazı

#define d 8

Programı derleyip MK'ye yükledikten sonra, her şey doğru bir şekilde bağlanmış ve #define'de buna göre tanımlanmışsa, 10'a kadar sayabilen bir dijital elektronik saat elde ederiz. 11.0592 MHz'de bir rezonatörünüz varsa, bu saat işleyecektir. saniyede bir ve şaşırtıcı bir doğrulukla görünüyor: bir saat içinde bir saniye için yoldan çıkmayacaklar! Ancak burada şaşırtıcı bir şey yok: tüm doğruluk, rezonatörün kalitesine ve programda hata olmamasına bağlıdır. Bu arada, bir elektronik saatte, yalnızca daha küçük boyut ve frekanslarda (genellikle 3 KHz) aynı rezonatörler vardır. Ancak MK'da saat toplamak biraz mantıksız, çünkü bunun için saati, tarihi, ayı, haftanın gününü, yılı vb. Sayabilen özel mikro devreler var. Bir MK'yi böyle bir mikro devre ile bağlayarak, ona zamanı "hissetmeyi" öğretebilirsiniz.

Ancak makalemizin konusundan biraz uzaklaşıyoruz. Şimdi, BC56-12xxx olan üç basamaklı bir göstergeyle çalışmayı düşünmenin zamanı geldi. Mantıksal olarak 8*3+1=25 pin olması gerekir. Ama sadece 12'si var. Belgelerine bir bakalım.

İçinde paralel bağlı üç yedi segmentli gösterge olduğu ve her birinden bir ortak elektrot (katot veya anot) çıktığı ortaya çıktı. Daha açık hale getirmek için elektrik şemasını göstereceğim:

Böylece, 1, 2, 3, 4, 5, 7, 10, 11 pinlerine voltaj uygulayarak bir rakam (sembol) oluştururlar, onlara bilgi veya veri yolu diyeceğiz ve 8, 9, 12 pinlerini kontrol ederek belirleyelim. bu rakamın konumu. 8, 9, 12 pinleri, cihaz seçim pinleri veya adres veri yolu olarak adlandırılacaktır. Aynı anda iki veya üç farklı numarayı yakamayacağınız açıktır. Strobing, yani sayıları tek tek yüksek hızda yakmamız gerekecek. Titreyecekler, ancak gözün fark edecek zamanı olmayacak.

Bu, 1, 2, 3, 4, 5, 7, 10, 11 sonuçlarıyla çalışmanın tamamen benzer olduğu anlamına gelir. Ve sonuçlar 8, 9, 12 sırayla zemine kapalı olmalıdır. Görünüşe göre daha kolay olan - onları MK'ye eklemek ve hepsi bu. Ancak, daha önce de söylediğim gibi, MK'ye ortak bir elektrot takmamalısınız - bu onun için çok fazla yük ve G / Ç bağlantı noktası yanabilir. Önceki makalede anlatıldığı gibi alan etkili transistörleri kullanın.

Bana öyle geliyor ki, şifreleyiciler ve kod çözücüler hakkında konuşma zamanı geldi. Kod çözücüler, girişlerindeki n-bitlik ikili kodu, ondalık sayı ikili koda karşılık gelen, çıkışta görünen mantıksal bir sinyale dönüştüren birleşimsel cihazlardır. Kod çözücüler genellikle sırasıyla 3 veya 4 girişe ve 8 veya 16 çıkışa sahiptir. Bir kod çözücü nasıl çalışır? Girişe ikili kodda bir sayı verelim, örneğin 5, günlüğü ayarlayalım. 1, birinci ve üçüncü giriş pinlerinde. Ardından bir günlük görünecektir. Beşinci çıkışta 1. Karıştırıcılar tam tersi işlemi gerçekleştirir - bir günlük gönderirseniz. Girişlerden birine 1, bu girişin sayısının ikili kodu çıkışta görünecektir.

Kod çözücüler, çıktı sıkıntısı sorununu çözebilir. Örneğin, MK bir cihaz seçmek için 3 boş çıkışa sahiptir ve yedi cihazı bağlamak istiyoruz. Ancak bu üç çıktının 8 farklı durumu olabilir! Dekoderi bağladıktan sonra, sırayla çalışan üç çıkıştan sekizini yapacağız ve buna karar vereceğiz. sorun.

Okullarda ve özellikle üniversitelerde, genellikle bilgisayar bilimi derslerinde, bir bellek hücresi, bir tür veri yolu almak için bir yığın mantıksal "VE" ve / veya "VEYA" öğelerinin bulunduğu bellek işleminin mantıksal bir diyagramını çizerler, bir adres veriyolu, hafıza hücreleri... Kısacası, genellikle öğretmenin kendisi ne çizdiğini, nasıl çalıştığını anlayamaz ve eğilmez. Görünüşe göre orada bir kod çözücü var ve her şey çok basit çalışıyor. İkili koddaki bir bellek hücresinin adresi, içine bilginin yazılması (veya okunması) gereken adres yolu boyunca gelir ve kod çözücüye girer. Dekoder, gerekli hücreyi güç devresine bağlar, hücre çalışmaya başlar ve veri yolunda kurulu olan ikili kodu saklar (veya içeriğini oraya verir). Bundan sonra, adres yolundaki adres kaybolur ve kod çözücü bir sonraki kullanıma kadar bu hücreyi kapatır. Bilgisayar başladığında, Kurulum programında CPU'ya giden voltajı ayarlayabilirsiniz (orada birkaç değer arasından seçim yapabilirsiniz). Bu nasıl olur? İkili kodun kod çözücüye girdiği özel bir veri yolu vardır. Dekoder birkaç transistörden birini açar ve gerekli voltaj bu transistör aracılığıyla CPU'ya sağlanır.

MK'yi programlarken, ona çok sayıda cihaz bağlamanız gerektiğinde bir durum ortaya çıkabilir. Daha sonra kod çözücüleri hatırlamanız, tüm cihazlar için bir veri yolu ve kod çözücüye giden bir adres yolu düzenlemeniz gerekecektir. Ve zaten kod çözücüye transistörler aracılığıyla MC'yi veya kod çözücüyü yüklememek için (bu önemlidir, ancak bu genellikle unutulur) cihazları bağlamak için. Bu eğitim yazılarında böyle bir durumla karşılaşacağımızı sanmıyorum ama ilerisi için bunu hatırlamakta fayda var.

Gelelim yapımıza. Devre çok basit. Geniş mikro devreler için bir soketin yarısını A portuna bağladım, böylece içine yerleştirilmiş yedi segmentli gösterge BC56-12xxx'in 1, 2, 3, 4, 5, 7, 10, 11 pinlerinin bağlı olduğu ortaya çıktı. Diğer üç pin, zaten bilinen IRF7311 transistörleri aracılığıyla C portunun pinlerine bağlanır (pin 12 ila PC5, 9 ila PC6, 8 ila PC7). Transistörlerden biri (iki durum var ve bunlardan dördü var) yedekte kaldı.

Program kodu aşağıda gösterilmiştir. Gelecekte, bir değişkende saklanan üç basamaklı bir sayının gösterge üzerinde gösterilmesi gerekebileceğinden, bunun için bazı özel işlevler yazmak güzel olurdu. Buna Ekran () diyelim. Bunu uygulamak çok basit gibi görünüyor, sayıyı 100'e bölmeniz, tamsayıyı bölme ve kalandan bulmanız ve ardından 10'a bölmeniz gerekiyor. Ama ... Ama MK mod ve div'i bilmiyor fonksiyonlar. Bu ilk şey. İkincisi, bölme için matematiksel bir yardımcı işlemcisi yoktur ve bir bölme işlemi, toplama / çıkarma (char için 1 saat döngüsü) ve bir tamsayı ile çarpmanın (char için 2 saat döngüsü) aksine yüzlerce hatta binlerce işlemci döngüsü alabilir. . Bu nedenle, mümkünse bölümü her zaman başka bir şeyle değiştirmeye çalışın. Bazen bir COM portu üzerinden bir bilgisayara bazı verileri göndermek, orada hesaplamalar yapmak ve sonucu geri döndürmek daha da mantıklıdır. Bir sonraki makalede bunun nasıl uygulanacağı. Şimdi açıklayıcı bir örneğe bakalım.

Diyelim ki banyonuza, duştaki suyun sıcaklığını özel bir sensörle sürekli ölçen ve bir motor yardımıyla musluğu çevirerek sıcaklığın düşmesini sağlayacak şekilde çeviren MK üzerine elektronik bir su sıcaklık regülatörü koymaya karar verdiniz. ayarlanan değer. Ve bu süreci çok yüksek doğrulukla kontrol etmenizi sağlayan belirli bir algoritma kullanıyorsunuz. Ancak algoritma, bölme işlemlerini, bir kökün çıkarılmasını, logaritmanın hesaplanmasını, kosinüs ve tabii ki integrali içerir. Ve yıkamaya gittiğinizde, sıcaklık ayar düğmesini çevirdikten sonra, MK "donacak" ve 70-80 ° C sıcaklıkta birkaç saniye üzerinize su dökecek ve ardından her şeyi hesapladığında, İLE ihtiyacınız olan 28.32204 ° 'yi büyük bir doğrulukla ayarlayın. :)

Bu örnek (bunu ben bulmadım), doğruluğun performans kadar önemli olmadığını gösteriyor ve gayet iyi gösteriyor. İşte program kodu. Optimizasyonu devre dışı bırakmayı unutmayın.

#Dahil etmek"iom16.h" #tanımlamak 1 #tanımlamak b4 #tanımlamak c16 #tanımlamak 64 // Bu sayıları başka bir gösterge için değiştirin #tanımlamak e 128 #tanımlamak f2 #tanımlamak g8 #tanımlamak DP32 kısa imzasız int ben = 1; kısa imzasız int Sayı = 0; imzasız karakter kazmak; // Bu değişkenler görüntülenmesi gereken sayıları saklar karakter Disp5, Disp6, Disp7; // İşlev, üç basamaklı bir sayıdan basamakları çıkarır Sayı geçersiz Görüntüle (kısa imzasız int Numarası) ( imzasız karakter Num1, Num2, Num3; Sayı1 = Sayı2 = 0; süre(Sayı> = 100) (Sayı - = 100; Sayı1 ++;) süre(Sayı> = 10) (Sayı - = 10; Sayı2 ++;) Sayı3 = Sayı; Disp5 = Kaz; Disp6 = Kaz; Disp7 = Kaz; ) geçersiz io_init () // G / Ç bağlantı noktalarını başlat(DDRA = 0xFF; PORTA = 0; DDRC | = (1 geçersiz timer0_init () (OCR0 = 15; TCCR0 | = (1 geçersiz Dig_init()) (Dig = (a + b + c + d + e + f); // Şimdi ortak katotlu bir devremiz var Kazı = (b + c); Dig = (a + b + g + e + d); Dig = (a + b + g + c + d); Dig = (f + g + b + c); Dig = (a + f + g + c + d); Dig = (a + f + g + c + d + e); Dig = (a + b + c); Dig = (a + b + c + d + e + f + g); Dig = (a + b + c + d + f + g); ) geçersiz ana () (işaretsiz karakter j, k = 0; Dig_init (); Görüntü (0); io_init (); timer0_init (); SREG | = (1 süre (1) ( için(j = 0; j // Basamak gösterme gecikmesi (k == 3)? k = 0: k ++; PORTC & = 31; // PC7, PC6, PC5'i temizle için(j = 0; j // Transistörü kapatma gecikmesi değiştirmek(k) ( durum 0: PORTC | = (1 // PORTA Birimleri = Disp7; kırmak; durum 1: PORTC | = (1 // Onlarca PORTA = Disp6; kırmak; durum 2: PORTC | = (1 // Yüzlerce PORTA = Disp5;))) #pragma vektör = TIMER0_COMP_vect __interrupt void Indic_change() ( Eğer(i başka (i=1; Eğer(Sayı başka Sayı = 0; PORTB++; Ekran (Sayı); // Görüntülenen sayıyı artırın. } }

Görüntüle (Sayı) işlevi, Sayı sayısını alır ve Sayı 100'den küçük olana kadar ondan yüz çıkarır. Çıkarılan yüzlerin sayısı Sayı1'de saklanır. Aynı şekilde, düzinelerce daha sonra çıkarılır. Onlarca sayı Num2 değişkenindedir. Kalan (birimler) Num3'te saklanır. Disp5, Disp6, Disp7 global değişkenlerine, orijinal Numarayı görüntülemek için A bağlantı noktasına gönderilmesi gereken değerler atanır. Programı MK'ye yüklediğinizde nasıl çalıştığını göreceksiniz.

© Kiselev Roman
Haziran 2007

Yalnızca bir göstergeden ziyade nesnel bilgi sağlamanın daha uygun olacağı parametreler vardır. Örneğin, dışarıdaki hava sıcaklığı veya çalar saatteki saat. Evet, tüm bunlar ışıklı ampuller veya LED'ler ile yapılabilir. Bir derece - bir yanan LED veya ampul, vb. Ama bu ateşböceklerini sayarsak - hayır, hayır! Ancak dedikleri gibi, en basit çözümler en güvenilir olanlardır. Bu nedenle, geliştiriciler tereddüt etmeden basit LED şeritler aldı ve bunları doğru sırayla yerleştirdi.

Yirminci yüzyılın başında, elektronik tüplerin ortaya çıkmasıyla birlikte ilk gaz deşarj göstergeleri ortaya çıktı.

Bu tür göstergelerin yardımıyla dijital bilgileri Arap rakamlarıyla görüntülemek mümkün oldu. Daha önce, enstrümanlar ve diğer elektronik cihazlar için çeşitli göstergeler bu tür lambalarda yapıldı. Şu anda, gaz tahliye elemanları neredeyse hiçbir yerde kullanılmamaktadır. Ancak retro her zaman modadır, bu nedenle birçok radyo amatörü, kendileri ve sevdikleri için gaz deşarj göstergelerinde güzel saatler toplar.


Gaz deşarjlı lambaların dezavantajı, çok fazla elektrik tüketmeleridir. Dayanıklılığı tartışılır. Üniversitemizde halen laboratuvar odalarında gaz-deşarj göstergelerinde frekans ölçerler kullanılmaktadır.

Yedi segmentli göstergeler

LED'lerin ortaya çıkmasıyla, durum daha iyiye doğru çarpıcı biçimde değişti. LED'lerin kendileri az akım tüketir. Onları doğru konumda düzenlerseniz, kesinlikle herhangi bir bilgiyi görüntüleyebilirsiniz. Tüm Arap rakamlarını vurgulamak için sadece yedi ışıklı LED şerit yeterlidir - belirli bir şekilde ayarlanmış segmentler:

Neredeyse tüm bu yedi segmentli göstergelere, sekizinci bir segment de eklenir - herhangi bir parametrenin tamsayı ve kesirli değerini göstermek için bir nokta

Teoride, sekiz segmentli bir gösterge elde ederiz, ancak eski moda bir şekilde yedi segmentli bir gösterge olarak da adlandırılır.

Sonuç nedir? Yedi segmentli ekrandaki her şerit, bir LED veya bir grup LED ile aydınlatılır. Sonuç olarak, belirli bölümleri vurgulayarak, 0'dan 9'a kadar bir rakamın yanı sıra harf ve sembolleri görüntüleyebiliriz.

Diyagramdaki tipler ve atama

Tek haneli, iki haneli, üç haneli ve dört haneli yedi segmentli göstergeler vardır. Dörtten fazla kategori görmedim.

Diyagramlarda, yedi segmentli bir gösterge şuna benzer:

Gerçekte, ana sonuçlara ek olarak, her yedi segmentli gösterge ayrıca ortak bir anot (OA) veya ortak bir katot (OK) ile ortak bir terminale sahiptir.

Ortak anotlu yedi segmentli bir ekranın dahili devresi şöyle görünecektir:


ve bunun gibi ortak bir katot ile:


Ortak anotlu (OA) yedi segmentli bir göstergemiz varsa, devrede bu çıkışa bir “artı” güç sağlamalıyız ve ortak bir katot (OK) varsa, o zaman “eksi” veya topraklama yapmalıyız.

Yedi segmentli bir gösterge nasıl kontrol edilir

Aşağıdaki göstergelere sahibiz:


Modern bir yedi segmentli göstergeyi kontrol etmek için diyot süreklilik fonksiyonlu bir multimetre bizim için yeterlidir. Başlamak için genel bir sonuç arıyoruz - OA veya OK olabilir. Burada, sadece yazarak. Öyleyse, göstergenin kalan bölümlerinin performansını yukarıdaki şemalara göre kontrol ediyoruz.

Aşağıdaki fotoğrafta da görebileceğiniz gibi, test edilen segment yanıyor. Diğer segmentleri de aynı şekilde kontrol ediyoruz. Tüm segmentler yanıyorsa, böyle bir gösterge sağlamdır ve tasarımlarınızda kullanabilirsiniz.


Bazen multimetredeki voltaj bir segmenti test etmek için yeterli değildir. Bu nedenle, güç kaynağı ünitesini alıp üzerine 5 volt ayarlıyoruz. Segmentten geçen akımı sınırlamak için 1-2 Kilo-ohm'luk bir direnci kontrol edin.


Aynı şekilde, Çinli alıcıdan gelen göstergeyi kontrol ediyoruz.


Devrelerde, her pindeki dirençlere yedi segmentli göstergeler bağlanır.

Modern dünyamızda, yedi segmentli göstergelerin yerini kesinlikle herhangi bir bilgiyi gösterebilen likit kristal göstergeler alıyor.

ancak bunları kullanmak için bu tür cihazların devrelerinde belirli becerilere ihtiyacınız var. Bu nedenle, düşük maliyeti ve kullanım kolaylığı nedeniyle yedi segmentli göstergeler günümüzde hala kullanılmaktadır.

Derste, yedi segmentli LED göstergeleri mikrodenetleyicilere bağlama şemalarını, göstergelerin nasıl kontrol edileceğini öğreneceğiz.

Yedi segmentli LED göstergeler, dijital bilgileri görüntülemek için en popüler öğelerden biri olmaya devam ediyor.

Bu, aşağıdaki niteliklerle kolaylaştırılmıştır.

  • Düşük fiyat. Gösterge araçlarında LED dijital göstergelerden daha ucuz bir şey yoktur.
  • Çeşitli boyutlar. En küçük ve en büyük göstergeler LED'dir. 2,5 mm'den 32 cm'ye kadar basamak yüksekliğine sahip LED göstergeleri biliyorum.
  • Karanlıkta parla. Bazı uygulamalarda bu özellik neredeyse belirleyicidir.
  • Çeşitli parlak renklere sahiptirler. Hatta iki renkli olanları bile var.
  • Yeterince küçük kontrol akımları. Modern LED göstergeler, ek anahtarlar olmadan mikrodenetleyici pinlerine bağlanabilir.
  • Zorlu çalışma koşullarına (sıcaklık aralığı, yüksek nem, titreşimler, agresif ortamlar vb.) izin verir. Bu kalite için LED göstergeler, diğer ekran öğeleri türleri arasında benzersizdir.
  • Sınırsız hizmet ömrü.

LED gösterge türleri.

Yedi segmentli LED, yedi LED segment numarası kullanan bir karakter görüntüler. Sekizinci LED ondalık noktayı aydınlatır. Yani yedi segmentli bir ekranda 8 segment var.

Segmentler, "A" ile "H" arasındaki Latin harfleriyle belirtilir.

Her LED'in anotları veya katotları göstergede birleştirilir ve ortak bir kablo oluşturur. Bu nedenle, ortak anotlu ve ortak katotlu göstergeler vardır.

Ortak anot LED göstergesi.

Ortak katot LED göstergesi.

LED göstergesinin statik kontrolü.

LED göstergelerini akım sınırlayıcı dirençler aracılığıyla mikrodenetleyiciye bağlamak gerekir.

Direnç hesaplaması, bireysel LED'lerle aynıdır.

R = (U kaynağı - U segmenti) / I segmenti

Bu devre için: I segmenti = (5 - 1.5) / 1000 = 3.5 mA

Modern LED göstergeler, 1 mA'lık bir akımda bile oldukça parlak bir şekilde parlıyor. Ortak anotlu bir devre için, mikrodenetleyicinin düşük bir seviye oluşturacağı kontrol çıkışlarında segmentler yanacaktır.

Ortak katotlu göstergenin bağlantı şemasında, güç kaynağının ve kontrol sinyallerinin polaritesi değiştirilir.

Kontrol pininde yüksek seviye (5 V) oluşturulacak bir segment yanacaktır.

LED göstergeler için çoğullanmış kontrol modu.

Her yedi segmentli göstergeyi mikrodenetleyiciye bağlamak için sekiz pim gereklidir. Göstergeler (rakamlar) 3 - 4 ise, görev neredeyse imkansız hale gelir. Yeterli mikrodenetleyici pimi olmayacak. Bu durumda göstergeler çoklamalı modda, dinamik gösterge modunda bağlanabilir.

Her göstergenin aynı adlı bölümlerinin sonuçları birleştirilir. Segmentlerin pinleri ile göstergelerin ortak pinleri arasına bağlı bir LED matrisi ortaya çıkıyor. İşte 3 basamaklı ortak anot göstergesinin çoğul kontrolü için bir devre.

Üç göstergeyi bağlamak için, statik kontrol modunda olduğu gibi 24 değil, 11 pin gerekliydi.

Dinamik gösterge ile bir seferde sadece bir rakam yanar. Rakamlardan birinin ortak çıkışına yüksek seviyeli bir sinyal (5 V) uygulanır ve bu bitte yanması gereken segmentler için segment çıkışlarına düşük seviyeli sinyaller gönderilir. Belirli bir süre sonra, bir sonraki deşarj ateşlenir. Ortak terminaline yüksek bir seviye uygulanır ve bu bit için durum sinyalleri segment çıkışlarına uygulanır. Ve böylece sonsuz bir döngüdeki tüm rakamlar için. Döngü süresine gösterge rejenerasyon süresi denir. Rejenerasyon süresi yeterince kısaysa, insan gözü deşarjların değişimini fark etmeyecektir. Görünüşe göre tüm deşarjlar sürekli parlıyor. Göstergelerin titremesini önlemek için, rejenerasyon döngüsünün frekansının en az 70 Hz olması gerektiği kabul edilir. En az 100Hz kullanmaya çalışıyorum.

Ortak katotlu LED'ler için dinamik gösterge devresi şuna benzer.

Tüm sinyallerin polaritesi tersine çevrilir. Şimdi aktif deşarjın ortak teline düşük bir seviye verilir ve aydınlatılması gereken segmentlere yüksek bir seviye uygulanır.

Işık yayan diyot (LED) göstergelerinin dinamik gösterge elemanlarının hesaplanması.

Hesaplama, statik rejimden biraz daha karmaşıktır. Hesaplama sırasında şunları belirlemek gerekir:

  • ortalama segment akımı;
  • segmentlerin darbe akımı;
  • segment direnci direnci;
  • ortak deşarj terminallerinin darbe akımı.

Çünkü gösterge boşalır, sırayla yanar, ışımanın parlaklığı ortalama akımı belirler. Göstergenin parametrelerine ve gerekli parlaklığa göre seçmeliyiz. Ortalama akım, aynı sabit akımla statik kontrole karşılık gelen bir seviyede göstergenin parlaklığını belirleyecektir.

Ortalama 1 mA segment akımı seçelim.

Şimdi segmentin darbe akımını hesaplayalım. Gerekli ortalama akımı sağlamak için darbe akımı N kat daha büyük olmalıdır. N, gösterge basamaklarının sayısıdır.

segtim. imp. = ben bölüyorum. ortalama * N

Şemamız için ben segm. imp. = 1 * 3 = 3 mA.

Akım sınırlama dirençlerinin direncini hesaplıyoruz.

R = (U kaynağı - U segmenti) / I segmenti. imp.

R = (5 - 1.5) / 0,003 = 1166 Ohm

Ortak deşarj terminallerinin darbe akımlarını belirleyin. Aynı zamanda 8 segment parlayabilir, bu da bir segmentin darbe akımının 8 ile çarpılması gerektiği anlamına gelir.

I kategorisi imp. = ben bölüyorum. imp. * sekiz

1. kategori şemamız için, imp. = 3 * 8 = 24 mA.

  • dirençlerin direncini 1.1 kOhm seçiyoruz;
  • segment kontrol mikro denetleyicisinin çıkışları en az 3 mA akım sağlamalıdır;
  • gösterge biti seçiminin mikrodenetleyici çıkışları en az 24 mA akım sağlamalıdır.

Bu tür akım değerleri ile gösterge, ek tuşlar kullanılmadan doğrudan Arduino kartının terminallerine bağlanabilir. Parlak göstergeler için bu tür akımlar oldukça yeterlidir.

Ek anahtarlarla şemalar.

Göstergeler daha fazla akım gerektiriyorsa, özellikle basamak seçimi sinyalleri için ek anahtarların kullanılması gerekir. Toplam deşarj akımı, bir segmentin akımının 8 katıdır.

Rakamları seçmek için transistör anahtarları ile çoğullanmış modda ortak bir anotlu bir LED göstergesinin bağlantı şeması.

Bu devrede bir deşarj seçmek için düşük seviyeli bir sinyal üretmek gerekir. İlgili anahtar açılacak ve gösterge deşarjına güç sağlayacaktır.

Rakamları seçmek için transistör anahtarları ile çoğullanmış modda ortak bir katotlu bir LED göstergesinin bağlantı şeması.

Bu devrede bir deşarj seçmek için yüksek seviyeli bir sinyal üretmek gerekir. İlgili anahtar, ortak deşarj terminalini toprağa açacak ve kapatacaktır.

Her iki segment ve ortak deşarj pimleri için transistör anahtarlarının kullanılmasının gerekli olduğu devreler olabilir. Bu tür devreler önceki ikisinden kolayca sentezlenir. Gösterilen tüm devreler, gösterge mikrodenetleyicininkine eşit bir voltajla beslendiğinde kullanılır.

Artırılmış besleme voltajına sahip göstergeler için tuşlar.

Her bölümün seri olarak bağlanmış birkaç LED'den oluştuğu büyük göstergeler vardır. Bu tür göstergelere güç sağlamak için, 5 V'tan daha büyük bir voltaja sahip bir kaynak gereklidir.Anahtarlar, mikrodenetleyici seviyelerinin (genellikle 5 V) sinyallerinden kontrol ile artan voltajın anahtarlanmasını sağlamalıdır.

Gösterge sinyallerini toprağa kısa devre yapan anahtarların devresi değişmeden kalır. Ve güç tuşları, örneğin bu gibi farklı bir şemaya göre oluşturulmalıdır.

Bu şemada, aktif bit, kontrol sinyalinin yüksek seviyesi tarafından seçilir.

Gösterge basamaklarının değiştirilmesi arasında tüm segmentler kısa bir süre (1-5 μs) kapatılmalıdır. Bu süre, anahtar değiştirmenin geçici işlemlerini tamamlamak için gereklidir.

Yapısal olarak, boşaltma pimleri bir çok haneli gösterge durumunda birleştirilebilir veya çok haneli bir gösterge ayrı tek haneli olanlardan birleştirilebilir. Ayrıca, segmentler halinde birleştirilmiş ayrı LED'lerden bir gösterge oluşturabilirsiniz. Bu genellikle çok büyük bir göstergenin monte edilmesi gerektiğinde yapılır. Yukarıdaki tüm şemalar bu tür seçenekler için geçerli olacaktır.

Bir sonraki derste Arduino kartına yedi segmentli bir LED göstergesi bağlayacağız, onu kontrol etmek için bir kütüphane yazacağız.

Kategori:. Yer imlerine ekleyebilirsiniz.

Bugünkü yazımızda 7-segment göstergelerinden ve Arduino ile nasıl “arkadaş olunacağından” bahsedeceğiz. Birkaç seçenek var. En kolayı tabii ki gitmek ve entegre kalkanlı hazır bir gösterge satın alın (bu, eşleşen eşarbın adıdır), ancak kolay yollar aramıyoruz, bu yüzden biraz daha zor gideceğiz. Yeni başlayanlar - endişelenmeyin, bu makale, önceki makalelerim gibi ( ve ) sadece senin için. Bırakın gurular aynı deneyimli gurular için yazsın ve ben acemiyim - yeni başlayanlar için yazıyorum.

Neden tam olarak 7 segmentli bir gösterge? Ne de olsa, çok sayıda karakter, çizgi, çeşitli köşegenler ve çözünürlükler, siyah beyaz ve renkli, en uygun fiyatı birkaç dolara mal olan pek çok farklı ekran var ... Ve işte: "eski", son derece basit, ancak çok sayıda pim gerektiren 7 segment göstergesi, ancak yine de bu "yaşlı adam" bir avantaja sahip. Gerçek şu ki, burada verilen eskizleri kullanarak, yalnızca 14 mm basamak yüksekliğinde bir göstergeyi değil, aynı zamanda daha ciddi (zaten kendi kendine yapılmış olsa da) projeleri canlandırabilirsiniz ve bu durumda sayaç basamakları sınırdan uzaktır. Başkent sakinleri bu kadar ilgilenmeyebilir, ancak Novokatsapetovka veya Nizhnyaya Kedrovka nüfusu, bir kulüp veya köy konseyinde hala tarih ve sıcaklığı gösterebilen bir saat belirirse çok mutlu olacak ve bunun yaratıcısı hakkında konuşacaklar. çok uzun bir süre için saat. Ancak, böyle bir saat ayrı bir makalenin konusudur: ziyaretçiler arasında bir arzu olacak - Yazacağım. Yukarıda yazılan her şey bir giriş sayılabilir. Son yazım gibi bu da bölümlerden oluşacak, bu sefer iki parça. İlk bölümde, göstergeyi basitçe "kontrol ediyoruz" ve ikincisinde, onu en azından biraz yararlı bir şeye uyarlamaya çalışacağız. Öyleyse devam edelim:

Bölüm Bir. Deneysel - bilişsel

Bu proje, önceki makalelerden zaten iyi bilinen ARDUINO UNO'ya dayanmaktadır. Bunu elde etmenin en kolay yolunun burada olduğunu hatırlatmama izin verin: Veya burada: ayrıca 4 haneli, 7 segmentli bir ekrana ihtiyacınız olacak. Özellikle bir GNQ-5641BG-11'im var. Neden bu? Evet, sadece 5 yıl önce yanlışlıkla aldığım için değiştirmek için çok tembeldi, bu yüzden bunca zaman yalan söylüyor, kanatlarda bekliyordu. Ortak anodu olan herhangi birinin yapacağını düşünüyorum (ve ortak bir katotla yapabilirsiniz, ancak dizi verilerini ve bağlantı noktası değerlerinin geri kalanını ters çevirmeniz gerekecek - yani, bunları tam tersine değiştirin), yani Arduinka'yı yakmamak için çok güçlü olmamak için. Ek olarak, her biri yaklaşık 100 Ohm olan 4 akım sınırlayıcı direnç ve 12 pim (çekirdek) için bir döngü parçası (10 cm benim için yeterliydi) yaptığım daha geniş olandan “kopturulabilir”. Ve genellikle ayrı tellerle lehimleyebilirsiniz, sorun olmaz. Ayrıca tahta için pimlere de ihtiyacınız olacak (11 adet), Onlarsız dikkatli olmanıza rağmen. Göstergenin bir taslağı Şekil 1'de ve diyagramı Şekil 2'de görülebilir. Ayrıca, bu göstergenin her bir bölümüne (100 ohm'luk dirençlerle sınırlı) 2,1V'den fazla beslememenin daha iyi olduğunu ve bu durumda 20 mA'dan fazla tüketmeyecektir. Eğer "8" sayısı yanıyorsa tüketim 7x20 = 140 mA'yı geçmez ki bu Arduino çıkışları için oldukça kabul edilebilir bir durumdur. Meraklı bir okuyucu şu soruyu soracaktır: "Fakat 140 mA'lık 4 deşarj zaten 4x140 = 560 mA'dır ve bu zaten biraz fazla!" Cevap vereceğim - 140 olacak. Nasıl? Okumaya devam etmek! Pimlerin indikatör üzerindeki yeri Şekil 3'te görülebilir. Ve bağlantıyı Tablo 1'e göre yapıyoruz.


Pirinç. 1 - Göstergenin taslağı


Pirinç. 2 - Göstergenin şeması


Pirinç. 3 - Pimlerin konumu

tablo 1

Arduino Uno'yu Sabitle

Gösterge pimi

Not

G segmenti

F segmenti

E Segmenti

D segmenti

Segment C

B segmenti

Segment A

Segment 1'in ortak anodu, 100 Ohm'luk bir dirençle bağlayın.

2. segmentin ortak anodu, 100 Ohm'luk bir dirençle bağlayın.

Segment 3'ün ortak anodu, 100 Ohm'luk bir dirençle bağlayın.

6. segmentin ortak anodu, 100 Ohm'luk bir dirençle bağlayın.



0'dan 9'a kadar basit bir "geri sayım" olan basit bir çizimi doldurun:


Ve şimdi küçük bir açıklama. DDRD, "korkunç" "kayıt" kelimesinin arkasındaki D bağlantı noktasının (DDRB - sırasıyla bağlantı noktası B) kaydıdır. bir şey olacak sonra yaz (bilgi verin). Bu durumda, DDRD = B11111111 satırı; D bağlantı noktasının tüm pinlerinin çıkış olduğunu gösterir, yani. onlardan bilgi çıkacaktır. "B" harfi, kayıt defterine ikili (ikili) bir sayı yazıldığı anlamına gelir. Sabırsız okuyucu hemen soracaktır: "Ondalık sayı mümkün mü!?!". Seni rahatlatmak için acele ediyorum - yapabilirsin, ama daha sonra. Portun yarısını giriş, yarısını çıkış için kullanmak istersek şunu belirtebiliriz: DDRD = B11110000; birler bilgi verecek pinleri ve sıfırlar - bu bilgiyi alacak olanları gösterir. Kaydın ana kolaylığı, tüm pinleri 8 kez kaydetmenin gerekli olmamasıdır, yani. programda 7 satır kaydediyoruz. Şimdi aşağıdaki satırı inceleyelim:

PORTB = B001000; // B bağlantı noktasının yüksek seviye 11 pinini ayarla

PORTB, Port B veri kaydıdır, yani. içine herhangi bir sayı yazdıktan sonra, portun hangi pininde bir tane olacağını ve hangisinin sıfır olacağını belirtiyoruz. Yoruma ek olarak şunu söyleyeceğim ki Arduino Uno'yu kontrolcü ve dijital pinleri yukarıdan görebileceğiniz şekilde alırsanız register'a giriş net olacaktır yani. hangi "sıfır" (veya "bir") hangi pinden sorumludur, yani. B bağlantı noktasının en sağdaki sıfırı 8. pinden ve en soldaki sıfır ise (yerleşik bir LED'i olan) 13. pinden sorumludur. Sırasıyla D portu için, pin 0 için sağ, pin 7 için sol.
Umarım bu kadar ayrıntılı açıklamalardan sonra her şey açıktır, ancak açık olduğu için çocukluktan beri bildiğimiz ve çok sevdiğimiz ondalık sayı sistemine dönmeyi öneriyorum. Ve yine de - 25 satırlık bir taslak küçük görünüyor, ancak yeni başlayanlar için hala biraz hantal. azalacağız.

Daha da basit bir taslağı doldurun, aynı "kafiyeli sayma":


1. video.
Sadece 11 satır! Bu bizim yolumuz, "acemi tarzı"! Lütfen ikili sayılar yerine ondalık sayıların kayıtlara yazılmasına dikkat ediniz. Doğal olarak, ondalık sayılar için önde harf gerekmez. Tüm sayıları tablolara almanın gereksiz olmayacağını düşünüyorum.

Tablo 2. Görüntülenen işaretin bağlantı noktası verilerine uygunluğu

ortak anot

ortak katot

İkili sistem

Ondalık sistem

İkili sistem

Ondalık sistem

Tablo 3. Görüntülenen bitin bağlantı noktası verilerine uygunluğu

ortak anot

ortak katot

İkili sistem

Ondalık sistem

İkili sistem

Ondalık sistem



Dikkat! Tablo 2 ve 3'teki veriler yalnızca tablo 1'e göre kablolama için geçerlidir.
Şimdi 0'dan 9999'a kadar bir "sayma" ile bir çizimi dolduralım:




Pirinç. 4 - Okuyucu

Kroki çalışması şurada görülebilir:2. video.

Bu taslakta kodun kendisinden daha fazla yorum var. Herhangi bir soru olmamalı…. Bir şey dışında, aslında orada titreyen bu “titreme döngüsü” nedir ve ne için? Ve ayrıca bunun için bir çeşit değişken ...
Ve bütün mesele şu ki, dört hanenin tümünün aynı adı taşıyan bölümleri bir noktada birbirine bağlı. A1, A2, A3 ve A4'ün ortak bir katodu vardır; A1, B1,… ..G1 ortak anot. Yani 4 haneli göstergeye aynı anda “1234” uygularsak “8888” elde ederiz ve buna çok şaşırırız. Bunun olmasını önlemek için, deşarjınızda önce "1" yakmalı, sonra söndürmeli, sizinkinde "2" yakmalı vb. Bunu çok hızlı yaparsanız, sayıların titremesi filmdeki kareler gibi birleşecek ve gözler bunu pek fark etmeyecektir. Ve bu durumda titreme değişkeninin maksimum değeri, göstergedeki sayıların değişme hızını kontrol eder. Bu arada, bu "titreme" sayesinde maksimum akım tüketimi 560 yerine sadece 140 mA. Ve şimdi daha kullanışlı bir şeye geçmeyi öneriyorum.

Bölüm iki. En azından biraz faydalı

Bu bölümde kişisel bir bilgisayardan karakterleri ARDUINO MEGA kullanarak 7 segmentli bir ekranda görüntüleyeceğiz. Neden birdenbire "geçitte at değiştirme" fikrine kapıldın? Bunun iki nedeni var: birincisi - bundan önce makalelerimde ARDUINO MEGA'yı hiç düşünmemiştim; ve ikincisi - ARDUINO UNO'da COM portunu ve D portunu dinamik olarak nasıl değiştireceğimi hala çözemedim. Ama ben acemiyim - affedildim. Bu denetleyiciyi elbette buradan satın alabilirsiniz: ... Planı uygulamak için bir havya almam ve döngüyü Arduino tarafından yeniden lehimlemem ve ayrıca yeni bir çizim yazmam gerekiyordu. Döngünün nasıl lehimlendiği Şekil 5'te görülebilir. Mesele şu ki ARDUINO MEGA ve ARDUINO UNO'nun farklı port pin çıkışları var ve Mega'da daha birçok port var. Kullanılan pinlerin yazışmaları Tablo 4'ten görülebilir.



Pirinç. 5 - Döngünün yeni kablolaması

Tablo 4

liman mega


Dikkat! Bu tablo sadece bu proje için geçerlidir!

Ayrıca, Arduino Mega'daki C bağlantı noktasının, pim 37'den ve azalan sırada "başladığı" ve bağlantı noktası A - pim 22'den ve artan sırada "başladığına" dikkat edilmelidir.



Pirinç. 6 - Genel görünüm



Küçük uygulama özellikleri: 4 karakter göstereceğiz. Semboller sayı olmalıdır. “1234” girdiysek ve “1234” gördüysek, “123456” girdiyse yine “1234” göreceğiz, “itsuk”, “phiva1234”, “otiog485909oapom” girdiysek - hiçbir şey görmeyeceğiz. "pp2345mm" girdiyseniz, "23" göreceğiz yani. küçük, yerleşik "kusursuz".

Krokinin kendisi:



Ve bu programın nasıl çalıştığı şurada görülebilir:Video 3.



Pavel Sergeev tarafından hazırlanan inceleme

İyi günler! Uzun ve zorunlu bir aradan sonra Arduino Programlama kursuna devam edeceğiz. Önceki derslerimizden birinde zaten bir dizi LED ile çalıştık, şimdi eğitimin bir sonraki adımına geçme zamanı. Bugünkü yazımızın konusu 7 segment göstergesi olacak.

7 segmentli ekrana giriş iki bölümden oluşacak. İlk bölümde, teorik bileşeni yüzeysel olarak "üzerinden geçeceğiz", donanımla çalışacağız ve basit programlar yazacağız.

En son 8 LED dizisi ile çalıştığımızda, bugün de 8 (7 - LED şerit ve 1 nokta) olacak. Önceki dizinin aksine, bu kümenin öğeleri sıralanmaz (birbiri ardına), ancak belirli bir sırayla düzenlenir. Bu nedenle, yalnızca bir bileşen kullanarak 10 basamak (0'dan 9'a kadar) görüntüleyebilirsiniz.

Bu göstergeyi basit LED'lerin arka planında öne çıkaran bir diğer önemli fark. Ortak bir katoda sahiptir (veya daha doğrusu, katodun bağlı olduğu iki eşdeğer bacak 3 ve 8). Sadece katotlardan birini toprağa bağlamak yeterlidir ( GND). Tüm gösterge elemanlarının ayrı anotları vardır.

Küçük bir arasöz. Yukarıdakilerin tümü, ortak bir katoda sahip 7 segmentli ekranlar için geçerlidir. Ancak, ortak anotlu göstergeler vardır. Bu tür göstergeleri bağlamanın önemli farklılıkları vardır, bu nedenle lütfen "günahkar" ile doğruyu karıştırmayın. Elinizde nasıl bir yedi segmentli oyuncu olduğunu net bir şekilde anlamak gerekiyor!

Basit LED'ler ile 7 segmentli ekranlar arasındaki farkların yanı sıra benzerlikler de var. Örneğin: LED'ler gibi göstergeler iki, üç, dört basamaklı sayıları (rakamları) görüntülemek için bir sıraya (sıraya) monte edilebilir. Ancak, segment setlerinin kendi kendine montajı konusunda çok fazla uğraşmanızı tavsiye etmiyorum. Satışta tek haneli göstergelerin "yanında", çok haneli göstergeler de satılmaktadır.

Umarım LED'leri bağlarken akım sınırlayıcı dirençler kullanma gereğini unutmamışsınızdır. Aynısı göstergeler için de geçerlidir: göstergenin her elemanının bağlı kendi direnci olmalıdır. 8 eleman (7 + 1) - 8 direnç.

Elimde 5161AS (ortak katot) olarak işaretlenmiş yedi segmentli bir cihaz vardı. Kişilerin pin çıkışı:



Şematik diyagram

Daha önce söylediğim gibi, "A" segmentini açmak için "topraklamayı" herhangi bir ortak kontağa (3 veya 8) bağlayın ve pim 7'ye 5V güç sağlayın. Gösterge ortak bir anotluysa, anoda 5V ve segmentin çıkışına “topraklama” sağlarız!

Bir test tezgahı oluşturalım. Arduino kartının 2. pinine giden ilk bacaktan başlayarak sırayla kabloları bağlıyoruz. Toprağı göstergenin 8. çıkışına bağlayın.

Stand monte edildikten sonra ürün yazılımını yazmaya başlayabilirsiniz.

Göstergeyi kontrol etmek için yazılı programı çalıştıralım. "A" öğesini seçin ve yanıp sönün.


Şimdi 2 sayısını yanıp sönelim. Bunu yapmak için birkaç öğeyi daha açın.

Bir rakamı görüntülemek için, n sayıda kod satırı yazmanız gerekir. Zor, sence de öyle değil mi?

Başka bir yol var. Göstergede herhangi bir rakamı görüntülemek için, önce belirli bir bit dizisi olarak temsil edilmelidir.

yazışma tablosu.

Ekranda ortak bir anot varsa, 1'in 0 ile ve 0'ın 1 ile değiştirilmesi gerekir!

Onaltılı sütun, bir basamağın bayt temsilidir (bunun hakkında ikinci bölümde daha ayrıntılı konuşacağız).

İkili gösterimde bir sayı aşağıdaki gibi yazılır: 0b00000000. 0b- İkili sistem. Sıfırlar, tüm LED'lerin kapalı olduğu anlamına gelir.

Bağlanırken 2'den 9'a kadar olan pinleri kullandık. Pin 2'yi açmak için bir birim yazın = 0b00000001. Sağdan dördüncü bit noktadan sorumludur. En son bit, göstergenin ortasındaki çizgiden sorumludur.

0 rakamının çıktısını almak için bir örnek yazalım.

Yazılan satır sayısını azaltmak için, 8 bitin tümünü "yinelememize" izin veren bir döngü kullanacağız. Değişken Enable_segment okunacak bitin değeri atanır. Bundan sonra, mevcut pin uygun moda ayarlanır ( sinyalin varlığı veya yokluğu).

Not: bitRead () işlevi belirtilen bitin durumunu okur ve durum değerini (0 veya 1) döndürür.bitOkuma (x, n)burada x, biti okunması gereken sayıdır; n, durumu okunacak olan bitin sayısıdır. Numaralandırma, 0 ile numaralandırılmış en az anlamlı bit (en sağda) ile başlar.

Ve ilk bölümün sonunda küçük bir sayaç yazacağız.