4 haneli gösterge Arduino bağlantısı. Yedi bölümlü gösterge. Kesirli sayıların göstergelerine çıktı, değişken format

Sadece bir gösterge yerine objektif bilgi sağlamanın daha uygun olacağı parametreler vardır. Örneğin dışarıdaki hava sıcaklığı veya alarm saatindeki saat. Evet, tüm bunlar parlayan ampuller veya LED'ler ile yapılabilir. Bir derece – bir yanan LED veya ampul vb. Ama bu ateşböceklerini sayarsak - hayır! Ama dedikleri gibi, en çok basit çözümler- en güvenilir olanı. Bu nedenle geliştiriciler uzun süre düşünmeden basit LED şeritleri aldılar ve bunları doğru sıraya yerleştirdiler.

Yirminci yüzyılın başlarında gelişiyle vakum tüpleri ilk gaz deşarj göstergeleri ortaya çıktı

Bu tür göstergelerin yardımıyla şu sonuca varmak mümkündü: dijital bilgi Arap rakamlarıyla. Daha önce, bu tür lambalar üzerinde cihazlar ve diğer cihazlar için çeşitli göstergeler yapılıyordu. elektronik aletler. Şu anda, gaz deşarj 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östergelerine ilişkin harika saatler toplar.


Gaz deşarjlı lambaların dezavantajı ise çok fazla elektrik tüketmeleridir. Dayanıklılık konusunda tartışılabilir. Üniversitemizde halen laboratuvar odalarımızda frekans sayaçları kullanılmaktadır. gaz deşarj göstergeleri.

Yedi bölümlü göstergeler

LED'lerin ortaya çıkışıyla durum daha iyiye doğru dramatik bir şekilde değişti. LED'lerin kendileri tüketiyor küçük akım. Bunları doğru konuma yerleştirirseniz, kesinlikle her türlü bilgiyi görüntüleyebilirsiniz. Tüm Arap rakamlarını vurgulamak için yalnızca yedi adet parlak LED şerit yeterlidir - belirli bir şekilde ayarlanmış segmentler:

Bu tür yedi bölümlü göstergelerin neredeyse tamamına, sekizinci bölüm de eklenir - bir nokta, böylece herhangi bir parametrenin tamsayı ve kesirli değerini göstermek mümkündür

Teorik olarak sekiz bölümlü bir gösterge elde ederiz, ancak eski usulde buna yedi bölümlü gösterge de denir.

Sonuç nedir? Yedi bölümlü göstergedeki her şerit bir LED veya LED grubuyla aydınlatılır. Sonuç olarak, belirli bölümleri vurgulayarak 0'dan 9'a kadar sayıların yanı sıra harf ve sembolleri de görüntüleyebiliriz.

Diyagramdaki tipler ve tanımlar

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

Diyagramlarda yedi bölümlü gösterge şuna benzer:

Aslında, ana terminallere ek olarak, her yedi bölümlü göstergenin aynı zamanda ortak anotlu (OA) veya ortak katotlu (OC) ortak bir terminali vardır.

Ortak anotlu yedi bölümlü bir göstergenin iç devresi şöyle görünecektir:


ve bunun gibi ortak bir katotla:


Ortak anoda (OA) sahip yedi segmentli bir göstergemiz varsa, devrede bu pime "artı" güç sağlamalıyız ve ortak bir katot (OC) varsa, o zaman "eksi" veya toprak vermeliyiz.

Yedi bölümlü gösterge nasıl kontrol edilir

Aşağıdaki göstergelere sahibiz:


Modern bir yedi segmentli göstergeyi kontrol etmek için yalnızca diyot test işlevine sahip bir multimetreye ihtiyacımız var. Başlangıç ​​​​olarak genel bir sonuç arıyoruz - bu ya OA ya da OK olabilir. Burada sadece rastgele. O zaman göstergenin geri kalan bölümlerinin performansını yukarıdaki diyagramlara göre kontrol ediyoruz.

Aşağıdaki fotoğrafta görebileceğiniz gibi test edilen segmentin ışığı yanıyor. Diğer bölümleri de aynı şekilde kontrol ediyoruz. Tüm bölümler yanıyorsa, bu gösterge sağlamdır ve geliştirmelerinizde kullanılabilir.


Bazen multimetre üzerindeki voltaj bir segmenti test etmek için yeterli olmayabilir. Bu nedenle bir güç kaynağı alıp 5 Volt'a ayarlıyoruz. Segment boyunca akımı sınırlamak için 1-2 Kilo-Ohm'luk bir direnci kontrol ediyoruz.


Aynı şekilde Çinli alıcının göstergesini de kontrol ediyoruz.


Devrelerde her pinteki dirençlere yedi segmentli göstergeler bağlanır

bizim modern dünya yedi bölümlü göstergelerin yerini kesinlikle her türlü bilgiyi görüntüleyebilen sıvı kristal göstergeler aldı

ancak bunları kullanabilmek için bu tür cihazların devre tasarımında belirli becerilere sahip olmanız gerekir. Bu nedenle, düşük maliyetleri ve kullanım kolaylıkları nedeniyle yedi bölümlü göstergeler günümüzde hala kullanılmaktadır.

Yedi segmentli LED göstergeler dijital değer gösterge cihazları arasında oldukça popüler olup, mikrodalga fırınların ön panellerinde kullanılmaktadır. çamaşır makineleri, dijital saatler, sayaçlar, zamanlayıcılar vb. LCD göstergelerle karşılaştırıldığında, LED gösterge segmentleri parlak bir şekilde parlıyor ve uzun bir mesafeden ve geniş bir görüş açısıyla görülebiliyor. Yedi segmentli 4 bitlik bir göstergeyi bir mikro denetleyiciye bağlamak için en az 12 I/O hattı gerekli olacaktır. Dolayısıyla bu göstergelerin az sayıda pinli mikrodenetleyicilerle, örneğin firmanın serileriyle kullanılması neredeyse imkansızdır. Tabii ki kullanabilirsiniz farklı yöntemlerçoğullama (bununla ilgili bir açıklama web sitesinde "Şemalar" bölümünde bulunabilir), ancak bu durumda bile her yöntem için belirli sınırlamalar vardır ve genellikle karmaşık yazılım algoritmaları kullanırlar.

Mikrodenetleyicinin yalnızca 3 I/O hattını gerektirecek olan SPI arayüzü üzerinden bir gösterge bağlama yöntemine bakacağız. Aynı zamanda tüm gösterge segmentlerinin kontrolü devam edecek.

4 bitlik bir göstergeyi SPI veri yolu aracılığıyla bir mikro denetleyiciye bağlamak için şirket tarafından üretilen özel bir sürücü çipi kullanılır. Mikro devre, ortak bir katotla sekiz yedi bölümlü göstergeyi çalıştırabilir ve bir BCD kod çözücü, bölüm sürücüleri, bir çoğullama devresi ve rakam değerlerini depolamak için statik RAM içerir.

Gösterge bölümlerinden geçen akım yalnızca bir harici direnç kullanılarak ayarlanır. Ek olarak çip, dahili PWM kullanarak gösterge parlaklığının (16 parlaklık seviyesi) kontrolünü destekler.

Yazıda ele alınan devre amatör radyo tasarımlarında kullanılabilecek SPI arayüzlü bir ekran modülü devresidir. Ve biz daha çok devrenin kendisiyle değil, SPI arayüzü aracılığıyla mikro devre ile çalışmakla ilgileniyoruz. +5 V modül gücü Vcc pinine beslenir, sinyal hatları MOSI, CLK ve CS, bir ana cihaz (mikrodenetleyici) ile bir yardımcı cihaz (MAX7219 yongası) arasındaki iletişim için tasarlanmıştır.

Mikro devre standart bir bağlantıda kullanılır; ihtiyaç duyulan tek harici bileşenler, segmentler boyunca akımı ayarlayan bir direnç, güç kaynağı için koruyucu bir diyot ve güç kaynağı için bir filtre kapasitörüdür.

Veriler, CLK sinyalinin her yükselen kenarında yerleşik 16 bitlik kaydırma yazmacına yerleştirilen 16 bitlik paketler (iki bayt) halinde çipe aktarılır. 16 bitlik bir paketi D0-D15 olarak belirtiriz, burada D0-D7 bitleri veri içerir, D8-D11 kayıt adresini içerir, D12-D15 bitlerinin hiçbir anlamı yoktur. Bit D15 en önemli bittir ve alınan ilk bittir. Çip sekiz göstergeyi kontrol edebilse de yalnızca dört göstergeyle çalışmayı değerlendireceğiz. Sağdan sola sırayla yerleştirilmiş DIG0 - DIG3 çıkışları tarafından kontrol edilirler, bunlara karşılık gelen 4 bitlik adresler (D8-D11) 0x01, 0x02, 0x03 ve 0x04'tür (onaltılık format). Rakam kaydı, 8x8 organizasyona sahip çip üzerinde RAM kullanılarak uygulanır ve ekrandaki her bir rakamın herhangi bir zamanda güncellenebilmesi için doğrudan adreslenebilir. Aşağıdaki tablo MAX7219 yongasının adreslenebilir rakamlarını ve kontrol kayıtlarını göstermektedir.

Kayıt olmak

Adres

HEX değeri

İşlem yok

Kod çözme modu

Gösterge sayısı

Kapat

Gösterge testi

Kontrol kayıtları

MAX1792 yongasında 5 kontrol kaydı bulunur: kod çözme modu (Kod Çözme Modu), gösterge parlaklık kontrolü (Yoğunluk), bağlı göstergelerin sayısının kaydı (Tarama Limiti), açma/kapama kontrolü (Kapatma), test modu (Ekran Testi).

Çipi açma ve kapatma

Çipe güç uygulandığında tüm kayıtlar sıfırlanır ve Kapatma moduna geçer. Bu modda ekran kapatılır. Normal çalışma moduna geçmek için Kapatma kaydının (adres 0Сh) D0 biti ayarlanmalıdır. Bu bit, sürücüyü kapanmaya zorlamak ve tüm kayıtların içeriğini değiştirmeden bırakmak için herhangi bir zamanda temizlenebilir. Bu mod, enerji tasarrufu sağlamak için veya göstergenin yanıp sönmesiyle alarm modunda kullanılabilir (Kapatma modunun sıralı olarak etkinleştirilmesi ve devre dışı bırakılması).

Mikro devre, adresi (0Сh) ve verileri (00h) sırayla ileterek ve 0Ch (adres) ve ardından 01h (veri) aktarılarak normal çalışmaya geri dönerek Kapatma moduna geçirilir.

Kod Çözme Modu

Kod çözme modu seçim kaydını (adres 09h) kullanarak, her rakam için BCD kod B kod çözmeyi (0-9, E, H, L, P, - karakterlerini gösterme) veya kod çözme olmadan kullanabilirsiniz. Kayıttaki her bit bir rakama karşılık gelir, mantıksal bir bitin ayarlanması bu bit için kod çözücünün açılmasına karşılık gelir, 0 ayarı kod çözücünün devre dışı olduğu anlamına gelir. Bir BCD kod çözücü kullanılırsa, rakam kayıtlarındaki (D3-D0) yalnızca en düşük veri dikkate alınır, D4-D6 bitleri göz ardı edilir, D7 biti BCD kod çözücüye bağlı değildir ve açılmasından sorumludur. D7 = 1 ise göstergedeki ondalık nokta. Örneğin, 02h ve 05h baytları sırayla gönderildiğinde, DIG1 göstergesi (sağdan ikinci rakam) 5 sayısını gösterecektir. Benzer şekilde, 01h ve 89h gönderilirken DIG0 göstergesi ondalık nokta dahil 9 sayısını gösterecektir. . Aşağıdaki tablo göstermektedir tam listeÇipin BCD kod çözücüsü kullanıldığında görüntülenen karakterler.

Sembol

Kayıtlardaki veriler

Etkinleştirilen segmentler = 1

Boş

*Ondalık nokta D7=1 bitiyle ayarlanır

BCD kod çözücü çalışma dışı bırakıldığında, D7-D0 veri bitleri göstergenin segment çizgilerine (A-G ve DP) karşılık gelir.

Gösterge parlaklık kontrolü

Çip, yerleşik PWM'yi kullanarak göstergelerin parlaklığını programlı olarak kontrol etmenizi sağlar. PWM çıkışı, 16 parlaklık seviyesinden birini ayarlamanıza izin veren Yoğunluk kaydının (adres 0Ah) düşük dereceli yarım baytı (D3-D0) tarafından kontrol edilir. Bir yarım baytın tüm bitleri 1'e ayarlandığında göstergenin maksimum parlaklığı seçilir.

Bağlı göstergelerin sayısı

Tarama Sınırı kaydı (adres 0Bh), mikro devrenin (1 ... 8) hizmet verdiği bit sayısının değerini ayarlar. 4 bitlik versiyonumuz için kaydediciye 03h değerinin yazılması gerekmektedir.

Gösterge testi

Bu moddan sorumlu kayıt 0Fh adresinde bulunur. Kayıttaki D0 bitini ayarlayarak kullanıcı tüm gösterge bölümlerini açar, kontrol ve veri kayıtlarının içeriği değişmez. Görüntü Testi modunu devre dışı bırakmak için bit D0'ın 0 olması gerekir.

Mikrodenetleyici ile arayüz

Gösterge modülü, üç serbest I/O hattına sahip herhangi bir mikro denetleyiciye bağlanabilir. Mikrodenetleyicinin yerleşik bir SPI donanım modülü varsa, gösterge modülü veri yoluna bağımlı cihaz olarak bağlanabilir. Bu durumda mikro denetleyicinin SPI sinyal hatları SDO (seri veri çıkışı), SCLK (seri saat) ve SS (slave seçimi) doğrudan MAX7219 yongasının (modül) MOSI, CLK ve CS pinlerine bağlanabilir. CS sinyali aktif düşük.

Mikrodenetleyicinin donanım SPI'sı yoksa arayüz yazılımda düzenlenebilir. MAX7219 ile iletişim, CS hattının çekilip düşük tutulmasıyla başlar, ardından CLK sinyalinin yükselen kenarındaki MOSI hattına sırayla 16 bit veri (önce MSB) gönderilir. İletimin tamamlanmasının ardından CS hattı tekrar yükselir.

İndirilenler bölümünde kullanıcılar, test programının kaynak metnini ve SPI arayüzlü bir gösterge modülünde değerlerin görüntülendiği geleneksel 4 bitlik bir sayacı uygulayan ürün yazılımının HEX dosyasını indirebilirler. Kullanılan mikro denetleyici, yazılımda uygulanan bir arayüzdür; gösterge modülünün CS, MOSI ve CLK sinyal hatları sırasıyla GP0, GP1 ve GP2 bağlantı noktalarına bağlanır. MikroC derleyicisi aşağıdakiler için kullanılır: PIC mikrodenetleyicileri(mikroElektronika

Sitedeki materyaller hakkında yorum yapmak ve almak tam erişim forumumuza ihtiyacınız var kayıt olmak .


Tek haneli yedi bölümlü gösterge için bağlantı şeması
Çok basamaklı yedi bölümlü gösterge için bağlantı şeması

Dijital bilgi görüntüleme cihazı. Bu, Arap rakamlarını görüntüleyebilen bir göstergenin en basit uygulamasıdır. Harfleri görüntülemek için daha karmaşık çok bölümlü ve matris göstergeleri kullanılır.

Adından da anlaşılacağı gibi ayrı ayrı açılıp kapanan yedi ekran öğesinden (bölüm) oluşur. Bunları farklı kombinasyonlara dahil ederek Arap rakamlarının basitleştirilmiş görüntülerini oluşturmak için kullanılabilirler.
Segmentler A'dan G'ye kadar olan harflerle gösterilir; sekizinci bölüm - ondalık nokta (ondalık nokta, DP), kesirli sayıları görüntülemek için tasarlanmıştır.
Bazen yedi bölümlü göstergede harfler görüntülenir.

Genellikle beyaz, kırmızı, yeşil, sarı ve mavi olmak üzere çeşitli renklerde gelirler. Ayrıca farklı boyutlarda olabilirler.

Ayrıca LED göstergesi tek haneli (yukarıdaki şekildeki gibi) veya çok haneli olabilir. Temel olarak pratikte bir, iki, üç ve dört haneli LED göstergeler kullanılır:

On rakamın yanı sıra yedi segmentli göstergeler harfleri de görüntüleme özelliğine sahiptir. Ancak çok az harfin sezgisel yedi bölümlü temsili vardır.
Latince: büyük harf A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, küçük harf a, b, c, d, e, g , h, i, n, o, q, r, t, u.
Kiril alfabesinde: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (iki basamak), b, E/Z.
Bu nedenle yedi bölümlü göstergeler yalnızca basit mesajları görüntülemek için kullanılır.

Yedi bölümlü LED göstergesi toplamda 128 karakter görüntüleyebilir:

Tipik bir LED göstergesinin dokuz ucu vardır: biri tüm bölümlerin katotlarına, diğer sekizi ise her bölümün anotlarına gider. Bu şema denir "ortak katot devresi" ayrıca şemalar da var ortak anotlu(o zaman tam tersi olur). Çoğu zaman, tabanın farklı uçlarında bir değil iki ortak terminal yapılır - bu, boyutları artırmadan kablolamayı basitleştirir. Sözde "evrensel" olanlar da var ama ben şahsen böyleleriyle karşılaşmadım. Ek olarak, mikro denetleyici bağlantı noktası pinlerinin sayısını büyük ölçüde azaltan yerleşik kaydırma yazmacına sahip göstergeler vardır, ancak bunlar çok daha pahalıdır ve pratikte nadiren kullanılır. Ve büyüklüğü kavranamadığından şimdilik bu tür göstergeleri dikkate almayacağız (ancak çok daha fazla segmentli göstergeler, matris olanlar da var).

Çok haneli LED göstergeler genellikle dinamik bir prensip üzerinde çalışır: tüm rakamların aynı adı taşıyan bölümlerinin çıkışları birbirine bağlanır. Böyle bir göstergeyle ilgili bilgileri görüntülemek için, kontrol mikro devresinin tüm rakamların ortak terminallerine döngüsel olarak akım sağlaması gerekirken, belirli bir segmentin belirli bir rakamda yanıp yanmadığına bağlı olarak segment terminallerine akım sağlanmalıdır.

Tek haneli yedi bölümlü göstergeyi bir mikro denetleyiciye bağlama

Aşağıdaki diyagram nasıl olduğunu gösterir tek haneli yedi bölümlü bir gösterge bağlı mikrodenetleyiciye.
Göstergenin aşağıdaki gibi olması dikkate alınmalıdır: ORTAK KATOT, daha sonra ortak çıkışı şuna bağlanır: "toprak" ve segmentler beslenerek ateşlenir mantıksal birim bağlantı noktası çıkışına.
Gösterge ise ORTAK ANOT, daha sonra ortak teline beslenir "artı" voltaj ve segmentler, port çıkışını duruma değiştirerek ateşlenir mantıksal sıfır.

Tek haneli bir LED göstergesindeki gösterge, karşılık gelen mantıksal seviyenin karşılık gelen basamağının mikro denetleyici portunun pinlerine bir ikili kod uygulanarak gerçekleştirilir (OK - mantıksal göstergeler için, OA - mantıksal sıfırlara sahip göstergeler için).

Akım sınırlama dirençleri Diyagramda mevcut olabilir veya olmayabilir. Her şey göstergeye sağlanan besleme voltajına bağlıdır ve teknik özellikler göstergeler. Örneğin, segmentlere sağlanan voltaj 5 volt ise ve bunlar 2 voltluk bir çalışma voltajı için tasarlanmışsa, o zaman akım sınırlayıcı dirençler kurulmalıdır (artırılmış besleme voltajı için içlerinden geçen akımı sınırlamak ve yanmamak için) yalnızca gösterge değil, aynı zamanda mikro denetleyici bağlantı noktası da).
Büyükbabanın formülünü kullanarak akım sınırlayıcı dirençlerin değerini hesaplamak çok kolaydır. Ohm.
Örneğin, göstergenin özellikleri aşağıdaki gibidir (veri sayfasından alınmıştır):
- çalışma voltajı - 2 volt
— çalışma akımı — 10 mA (=0,01 A)
— besleme voltajı 5 volt
Hesaplama formülü:
R= U/I (bu formüldeki tüm değerler Ohm, Volt ve Amper cinsinden olmalıdır)
R= (besleme voltajı - çalışma voltajı)/çalışma akımı
R= (5-2)/0,01 = 300 Ohm

Çok haneli yedi bölümlü LED göstergesi için bağlantı şeması Temel olarak tek haneli bir göstergeyi bağlarken olduğu gibi. Tek şey, göstergelerin katotlarına (anotlarına) kontrol transistörlerinin eklenmesidir:

Diyagramda gösterilmemiştir, ancak transistörlerin tabanları ile mikrodenetleyici portunun pinleri arasında, direnci transistörün tipine bağlı olan dirençlerin dahil edilmesi gerekir (direnç değerleri hesaplanır, ancak ayrıca nominal değeri 5-10 kOhm olan dirençleri kullanmayı deneyebilirsiniz).

Deşarjlarla gösterge dinamik olarak gerçekleştirilir:
- karşılık gelen rakamın ikili kodu, 1. rakam için PB portunun çıkışlarında ayarlanır, ardından ilk rakamın kontrol transistörüne mantıksal seviye uygulanır.
- 2. rakam için PB portunun çıkışlarında karşılık gelen rakamın ikili kodu ayarlanır, ardından ikinci rakamın kontrol transistörüne mantıksal seviye uygulanır.
- karşılık gelen rakamın ikili kodu, 3. rakam için PB portunun çıkışlarında ayarlanır, ardından üçüncü rakamın kontrol transistörüne mantıksal seviye uygulanır.
- yani bir daire içinde
Bu durumda şunları dikkate almak gerekir:
— göstergeler için TAMAM kontrol transistör yapısı kullanılır NPN(mantıksal birim tarafından kontrol edilir)
- gösterge için OA- yapı transistörü PNP(lojik sıfır tarafından kontrol edilir)

Radyo mühendisliği ve elektroniğin ortaya çıkışından bu yana Geri bildirim elektronik cihaz ve kişiye çeşitli sinyal ışıkları, düğmeler, açma/kapama anahtarları, ziller (mikrodalga hazır sinyali - ding!) eşlik ediyordu. Bazı elektronik cihazlar minimum düzeyde bilgi sağlar çünkü daha fazlası gereksiz olacaktır. Örneğin, Çin telefon şarj cihazınızda yanan bir LED, şarj cihazının fişe takılı olduğunu ve güç aldığını gösterir. Ancak objektif bilgi sağlamanın daha uygun olacağı parametreler de vardır. Örneğin dışarıdaki hava sıcaklığı veya alarm saatindeki saat. Evet, tüm bunlar parlayan ampuller veya LED'lerle de yapılabilir. Bir derece - bir yanan diyot veya ampul. Kaç derece var, şu kadar gösterge yanıyor. Bu ateşböceklerini saymak yaygın bir şey olabilir, ancak yine de sıcaklığı derecenin onda biri kadar bir doğrulukla göstermek için bu ışıklardan kaç tanesine ihtiyaç duyulacak? Ve genel olarak bu LED'ler ve ampuller elektronik bir cihazda hangi alanı kaplayacak?

Pratik yedi bölümlü görüntüleme cihazları en az sekiz harici bağlantı terminaline sahip olmalıdır; bunlardan yedisi bireysel fotovoltaik bölümlere erişim sağlar ve sekizincisi tüm bölümlere ortak bir bağlantı sağlar. İlk durumda cihaz, yedi bölümlü ortak anot ekranı olarak bilinir; ikinci durumda cihaz, yedi bölümlü ortak katot ekranı olarak bilinir.

Ortak bir anot ekranını çalıştırmak için sürücünün, her segment sürücüsünün normalde yüksek olduğu ancak segmenti açmak için alçaltıldığı bir aktif-düşük çıkışa sahip olması gerekir. Ortak bir katot ekranını sürmek için sürücünün aktif bir aktif çıkışı olması gerekir.

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 bilgilerin Arap rakamlarıyla görüntülenmesi mümkün oldu. Daha önce, aletler ve diğer elektronik cihazlar için çeşitli göstergeler sağlamak için bu lambalar kullanılıyordu. Şu anda, gaz deşarj 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 harika gaz deşarjlı saatler toplar.

Bunun tam açıklaması aşağıdaki gibi biraz daha karmaşıktır. Gerilim sıfır olduğunda segment fiilen görünmezdir. Bununla birlikte, giriş voltajı önemli ölçüde pozitif veya negatif olduğunda, segment etkili bir şekilde görünür hale gelir, ancak sürücü voltajı birkaç yüz milisaniyeden daha uzun süre korunursa, segment kalıcı olarak görünür hale gelebilir ve başka bir anlam taşımayabilir.

Bu koşullar altında segment devre dışı bırakılır. Dolayısıyla segment bu koşullar altında yer almaktadır. Bu tahrik biçimi genellikle voltajı ikiye katlayan "köprü tahriki" sistemi olarak bilinir. Planın eylem sırası aşağıdaki gibidir. Daha önce açıklanan basit kademeli sistem, gerçek sayım periyodu sırasında ekranın bulanıklaşması, yalnızca her sayım tamamlandığında ve giriş kapısı kapatıldığında kararlı ve okunabilir hale gelmesi nedeniyle ciddi bir kusurdan muzdariptir. Bu "bulanık ve okunan" görüntü tipine bakmak çok can sıkıcıdır.

Gaz deşarjlı lambaların dezavantajları - çok yemek yiyorlar. Dayanıklılık konusunda tartışılabilir. Üniversitemizde halen laboratuvar odalarındaki gaz deşarj cihazları üzerinde frekans ölçerler kullanıyoruz.

LED'lerin ortaya çıkışıyla durum çarpıcı biçimde değişti. LED'lerin kendisi az miktarda akım tüketir. Bunları doğru konuma yerleştirirseniz, kesinlikle her türlü bilgiyi görüntüleyebilirsiniz. Tüm Arap rakamlarını vurgulamak için sadece bir şey yeterliydi Yedi (dolayısıyla adı yedi bölümlü gösterge) Belirli bir şekilde düzenlenmiş parlayan LED şeritler:

Şekil 13, yukarıdaki kusurun üstesinden gelmek için ekran kilitlemeyi kullanan geliştirilmiş bir frekans sayacı devresini göstermektedir. Bu şema şu şekilde çalışır. Aynı zamanda giriş kapısı açılır ve sayaçlar giriş sinyali darbelerini toplamaya başlar. Bu sayaç tam olarak bir saniye boyunca devam eder ve bu süre zarfında dört bitlik mandallar sayaç çıkışının ekran sürücülerine ulaşmasını engeller; Bu süre zarfında ekran sabit kalır.

Birkaç saniye sonra, sayaçların yeniden başlatılması ve ardından bir saniye boyunca giriş frekansı darbelerinin sayılmasıyla sıra tekrar tekrarlanır; bu sırada ekran önceki sayımın vb. sürekli okunmasını sağlar.

Bu tür yedi bölümlü göstergelerin neredeyse tamamına sekizinci bölüm (bir nokta) eklenir, böylece herhangi bir parametrenin tamsayı ve kesirli değeri gösterilebilir.

Böylece Şekil 13'teki devre saniyede bir güncellenen kararlı bir ekran üretir; pratikte, bunun ve Şekil 12'deki diyagramın gerçek sayma periyodu, çıktı ekranının buna göre ölçeklendirilmesi koşuluyla, çoklu veya kısmi saniyelerle herhangi bir on yılda yapılabilir.

Üç basamaklı bir frekans sayacının, bir saniyelik zaman tabanı kullanıldığında 999 Hz, 100 ms zaman tabanı kullanıldığında 99 kHz, 10 ms zaman tabanı kullanıldığında 9 kHz ve bir saniyelik zaman tabanı kullanıldığında 999 kHz maksimum frekansları gösterebileceğini unutmayın. 1 ms zaman tabanı.

Teorik olarak sekiz bölümlü bir gösterge olduğu ortaya çıkıyor, ancak eski usulde buna yedi bölüm de deniyor ve bunda bir hata yok.

Kısacası yedi bölümlü gösterge, birbirine göre belirli bir sırayla yerleştirilmiş ve tek bir muhafaza içine alınmış LED'lerdir.

Bu yöntem, Şekil 14 ve 15'in yardımıyla anlaşılabilir. Bu anahtarlar birbirine bağlanır ve gerçek çoklayıcı eylemini sağlar ve 1, 2 konumları ve işlem sırası arasında tekrar tekrar anahtarlanan yüksek hızlı elektronik anahtarlar olarak düşünülmelidir. devre aşağıdaki gibidir. Öncelikle anahtarın yerinde olduğunu varsayalım.

Birkaç dakika sonra anahtar 3. konuma hareket eder ve 3. ekranın birkaç dakika sonra bir sayı görüntülemesine neden olur, tüm döngü yeniden tekrarlanmaya başlar ve bu şekilde sonsuza kadar devam eder. Uygulamada, bu döngülerden yaklaşık 50'si her saniye meydana gelir, dolayısıyla göz, ekranların ayrı ayrı açılıp kapandığını görmez, ancak bunları, 327 sayısını veya veri bölümü tarafından dikte edilen başka bir sayıyı gösteren, görünüşte sabit bir ekran olarak algılar.

Yedi bölümlü tek bir göstergenin şemasını düşünürsek, şöyle görünür:

Gördüğümüz gibi, yedi bölümlü gösterge şu şekilde olabilir: ortak anot (CA), Böylece ortak katot (OC). Kabaca konuşursak, ortak anoda (OA) sahip yedi segmentimiz varsa, o zaman devrede bu pime bir "artı" asmalıyız ve eğer ortak bir katot (OC) varsa, o zaman bir "eksi" veya topraklama yapmalıyız. . Hangi pine voltaj verdiğimizde bu led yanacaktır. Bütün bunları pratikte gösterelim.

Pratik çoklayıcılarda, yeterli ekran parlaklığını sağlamak için tepe ekran akımı oldukça yüksektir. İncirde. Şekil 15, üç basamaklı bir frekans sayacına uygulanan geliştirilmiş çoğullama yönteminin bir örneğini göstermektedir. Bu yöntemin iki temel avantajı vardır.

Bu terminaller yüksek aktif ise aşağıdaki özelliklere sahip olacaklardır. İncir. 18 ve 19. Şekil 18, miktarı okuyan dört haneli bir ekranda önde gelen sıfır bastırmayı sağlamak için kullanılan dalgalanma bastırma tekniğini göstermektedir.

Stoklarımızda aşağıdaki LED göstergeler mevcuttur:

Görüldüğü gibi yedi segmentli cihazlar tek ve çok bitli, yani bir durumda iki, üç, dört yedi segmentli cihaz olabilir. Modern bir yedi segmentli cihazı kontrol etmek için yalnızca diyot test fonksiyonuna sahip bir multimetreye ihtiyacımız var. Rastgele genel bir sonuç arıyoruz - bu AA veya OK olabilir - ve ardından göstergenin tüm segmentlerinin performansına bakıyoruz. Üç bitlik yedi segmenti kontrol ediyoruz:

Yani ekran gösteriyor. Temel olarak kullanımı kolaydır, onları çalıştırır ve yanarlar. Bir tür kutupsallığa sahip oldukları için can sıkıcı olabilirler, bu da yalnızca onları doğru şekilde bağlarsanız çalışacakları anlamına gelir. Pozitif ve negatif voltajı iptal ederseniz, hiç yanmazlar.

Ne kadar sinir bozucu olsa da oldukça faydalıdır. Diğer tel ise katottur. Katot toprağa bağlanır. Temel olarak, buna bağlı olacaktır. Ortak katot için açmak istediğiniz pinlere akım uygularsınız. Çoğullama. Yazılımınızı değiştirme konusunda endişelenmek istemiyorsanız, bunun için ekran denetleyicileri bile vardır.

Hata, bir bölüm alev aldı, bu yüzden diğer bölümleri de aynı şekilde kontrol ediyoruz.

Bazen karikatürdeki voltaj gösterge bölümlerini kontrol etmek için yeterli olmayabilir. Bu nedenle güç kaynağını alıyoruz, 5 Volt'a ayarlıyoruz, güç kaynağının bir terminaline 1-2 kiloOhm'luk bir direnç takıyoruz ve yedi bölümlü üniteyi kontrol etmeye başlıyoruz.

7 bölümlü ekran kontrolü

Yani 4 basamaklı, çoklanmış 7 segmentli, ortak anotunuz olduğunda. İlk olarak, iki olası şekil olduğundan, ne tür bir ekrana sahip olduğumuzu bilmemiz gerekiyor: ortak katot ve ortak anot. Bu eğitim için ihtiyacınız olacak şeyler. Sol: Dahili kablolama ve pin konumları için genel bir düzeni gösteren 7 bölümlü ekranın grafiksel görünümü.

Bu noktada ilk çıktıya dikkat edin, çünkü daha sonra programı yüklerken buna ihtiyacınız olacak. Eğer ekran normal bir katot olsaydı onu iptal ederdik. Makalenin alt kısmında prototip kartımdaki devrenin bir fotoğrafı var. Ayrıca birden fazla ekranı kontrol etmek için bir kütüphane de sağlıyoruz.

Neden bir dirence ihtiyacımız var? LED'e voltaj uygulandığında, açıldığında keskin bir şekilde akım tüketmeye başlar. Bu nedenle şu anda yanabilir. Akımı sınırlamak için LED'e seri olarak bir direnç bağlanır. Daha fazlasını bu makalede okuyabilirsiniz.

7 segmentli bir ekranda altıgen sayma

Dezavantajı ise kaynak yoğun olmalarıdır. Bu özel ekranın dört rakamı ve iki iki nokta üst üste ekranı vardır. Ancak cihaz aynı zamanda şunları da sağlar: dijital kontrol Dahili bir geniş bant modülatörü aracılığıyla ekran parlaklığını. Bu gibi durumlarda çıktı birden fazla 7 segmentli ekranlarda yapılabilir.

Bu, muhafazadaki ve ardından kontroldeki temas noktalarını kaydeder. Buna göre ortak anot veya ortak katot göstergelerinden bahsedilmektedir. Bir segmente veya ondalık noktaya karşılık gelen çıktının, görüntülenmek üzere veri sayfasından çıkarılması en iyisidir. Her zamanki 10-20mA için derecelendirilen 7 segmentli bir ekran, loş da olsa hala yanacaktır. Ancak bu, kişilerin atanmasını gerektirmez. Bu segmentin aşağıdaki dağılımı esas alınmıştır.

Aynı şekilde bir Çin radyosundan dört haneli yedi segmenti kontrol ediyoruz.

Bu konuda herhangi bir özel zorluğun olmaması gerektiğini düşünüyorum. Devrelerde her pinteki dirençlere yedi segmentli devreler bağlanır. Bunun nedeni, LED'lere voltaj uygulandığında çılgınca akım tüketmesi ve yanmasıdır.

Farklı bir amaç kullanılırsa bu prensipte mümkündür ancak programlama sırasında dikkate alınmalıdır. Bireysel rakamları belirli bir çıktı modeline dönüştürmek, adı verilen bir şey kullanılarak yapılabilir. Diğer tüm bölümler karanlık olmalıdır. Bu onay kutusu tüm rakamlar için işaretlenirse aşağıdaki tablo verilir.

İÇİNDE Test programı 0'dan 9'a kadar olan sayılar 7 bölümlü ekranda sırayla görüntülenir. Çıkış numarası bir kayıt sayacında saklanır ve döngü içerisinde 1 artırılır. Kayıt 10 değerine ulaşırsa tekrar 0'a sıfırlanır.Bir kez yükseltildiğinde, bir sonraki sürümde belirli bir sürenin geçmesini sağlayan bir bekleme döngüsü oluşur. Normalde bu kadar uzun bekleme döngüleri yapmazsınız ama bu beklemekle ilgili değil, 7 bölümlü bir ekranı kontrol etmekle ilgili. Bunun için bir zamanlayıcı kullanmak çok fazla çaba gerektirir.

Modern dünyamızda yedi segmentli cihazların yerini, tamamen farklı bilgileri görüntüleyebilen LCD göstergeler alıyor.

ancak bunları kullanabilmek için bu tür cihazların devre tasarımında belirli becerilere sahip olmanız gerekir. Şu ana kadar yedi segmentli LED göstergelerden daha basit veya daha ucuz bir şey yok.

Ancak asıl sorun ve dolayısıyla bu makalenin ilginç kısmı, etiket döngüsünden hemen sonra ortaya çıkıyor. Lütfen sayaç değerinin iki katına çıkarılması gerektiğini unutmayın. Bu doğrudan flash belleğin byte bazında değil word bazında olmasıyla ilgilidir. Bu sayfadaki ikinci örnek bunu farklı şekilde yapıyor. Başka bir tablo girişi aracılığıyla dolgu baytlarının oluşturulmasının birleştirici tarafından nasıl önlenebileceğini gösterir. Hesaplamanın 0 değerini içeren bir kayıt gerektirmesi de ilginçtir.

Bu nedenle, bu sabitin önce bir kayıt defterine yüklenmesi gerekir ve ancak bundan sonra bu kayıt kullanılarak ekleme yapılabilir. İlginç olan, bu gerçeğin birçok programda bulunması ve çoğu durumda sabitlerin 0 sabitidir. Bu nedenle, birçok programcı en başından beri bunun için bir kayıt ayırır ve buna sıfır yazmaç adını verir.

Bu yazımızda dijital ekrandan bahsedeceğiz.
Yedi bölümlü LED göstergeler, 0'dan 9'a kadar Arap rakamlarını gösterecek şekilde tasarlanmıştır (Şekil 1).

Bu tür göstergeler tek hanelidir ve yalnızca bir sayıyı gösterir, ancak tek bir muhafazada (çok haneli) birleştirilmiş daha fazla yedi bölümlü grup olabilir. Bu durumda sayılar ondalık noktayla ayrılır (Şek. 2)

Ne yazık ki bir sorun var çünkü ekran sekiz bağlantı noktası gerektiriyor; dört reklam için 32 bağlantı noktası gerekiyor. Ancak birkaç yol var. Kaydırma kayıtları başka bir derste zaten açıklanmıştır. Bu, gerekli 32 çıkış hattının yalnızca üç pimle oluşturulmasını kolaylaştıracaktır. Kontrol prensibi, tek bir 7 segmentli ekranın çalıştırılmasından farklı değildir, yalnızca "çıkış pinlerinin" değerlerine nasıl yaklaştığı farklıdır ve kaydırma yazmaçlarının kullanımıyla belirlenir. Açık şu an ancak başka bir kontrol seçeneğinin gösterilmesi gerekir.



İncir. 2.

Görüntülenen sembolün yedi ayrı bölümden oluşması nedeniyle göstergeye yedi bölüm adı verilir. Böyle bir göstergenin mahfazasının içinde, her biri kendi bölümünü aydınlatan LED'ler bulunmaktadır.
Bu tür göstergelerde harf ve diğer sembollerin görüntülenmesi sorunlu olduğundan bu amaçla 16 bölümlü göstergeler kullanılmaktadır.

Aşağıda çoğullamaya tekrar bakacağız. Çoğullama, dört ekranın tamamının aynı anda değil, yalnızca bir tanesinin açılması anlamına gelir Kısa bir zaman. Ekranlar arasındaki değişim, biz insanların algılayabileceğinden daha hızlı gerçekleşirse, yalnızca biri kısa bir süre için yanmasına rağmen, dört ışığın tümü aynı anda çalışıyor gibi görünür. Bu şekilde, dört ekran ayrı segment segmentlerini paylaşabilir ve gereken tek şey, ekranın etkinleştirildiği 4 ekran için 4 ek kontrol hattıdır.

Bu tür kontrolün bir yönü çoğullamanın sıklığıdır, yani bir ekrandan diğerine geçişin tam döngüsüdür. Ekranın titremesini önleyecek kadar yüksek olmalıdır. İnsan gözü yavaştır, saniyede 24 kare olan bir sinemada TV'nin de güvenli olması için, hareketsiz görüntülerin de sakin olması, her bölümün en az 100 Hz ile kontrol edilmesi gerekir, yani en az 10 ms'de bir bağlanır. Ancak istisnai durumlarda, örneğin ekranın hızlı hareket etmesi veya alternatif akımla çalışan yapay ışık kaynaklarıyla parazit oluşması gibi durumlarda 100 Hz bile titreyebilir.

LED göstergeler iki tipte gelir.
Bunlardan ilkinde tüm katotlar, yani. tüm LED'lerin negatif terminalleri bir araya getirilir ve kasa üzerinde bunlara karşılık gelen bir terminal tahsis edilir.
Göstergenin geri kalan terminalleri her bir LED'in anotuna bağlanır (Şekil 3, a). Bu devreye “ortak katot devresi” denir.
Ayrıca her segmentteki LED'lerin ortak anotlu bir devreye göre bağlandığı göstergeler de vardır (Şekil 3, b).



Şek. 3.

Her bölüm karşılık gelen bir harfle gösterilir. Şekil 4 bunların konumunu göstermektedir.

Şekil 4.

Örnek olarak, iki basamaklı yedi bölümlü gösterge GND-5622As-21 kırmızıyı düşünün. Bu arada modele bağlı olarak başka renkler de var.
Üç voltluk bir pil kullanarak bölümleri açabilirsiniz ve bir grup pimi bir demet halinde birleştirip onlara güç uygularsanız sayıları bile görüntüleyebilirsiniz. Ancak bu yöntem uygun değildir, bu nedenle yedi bölümlü göstergeleri kontrol etmek için kaydırma yazmaçları ve kod çözücüler kullanılır. Ayrıca çoğu zaman gösterge pinleri doğrudan mikro denetleyici çıkışlarına bağlanır, ancak yalnızca düşük akım tüketimine sahip göstergeler kullanıldığında. Şekil 5, PIC16F876A kullanan bir devrenin bir parçasını göstermektedir.



Şekil 5.

Yedi bölümlü göstergeyi kontrol etmek için genellikle K176ID2 kod çözücü kullanılır.
Bu çip, sıfırlardan ve birlerden oluşan ikili kodu 0'dan 9'a kadar ondalık rakamlara dönüştürebilme yeteneğine sahiptir.

Her şeyin nasıl çalıştığını anlamak için basit bir devre kurmanız gerekir (Şekil 6). K176ID2 kod çözücü bir DIP16 paketinde bulunur. Her biri belirli bir segmente ayrılmış 7 çıkış pinine (pin 9 - 15) sahiptir. Burada nokta kontrolü sağlanmamaktadır. Mikro devrede ayrıca ikili kod sağlamak için 4 giriş (pim 2 - 5) bulunur. 16. ve 8. pinler sırasıyla artı ve eksi güçle beslenir. Kalan üç sonuç yardımcıdır, biraz sonra onlardan bahsedeceğim.



Şekil 6.

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

Devrede 4 adet geçiş anahtarı vardır (herhangi bir düğme mümkündür), bunlara bastığınızda, güç kaynağından artı kod çözücü girişlerine mantıksal bir anahtar verilir. Bu arada, mikro devrenin kendisine 3 ila 15 Volt voltajla güç veriliyor. Bu örnekte tüm devre 9 voltluk bir güç kaynağıyla çalıştırılıyor.

Devrede ayrıca 4 adet direnç bulunmaktadır. Bunlara pull-up dirençleri denir. Sinyal olmadığında lojik girişin düşük olmasını sağlamak için bunlara ihtiyaç vardır. Bunlar olmadan göstergedeki okumalar doğru şekilde görüntülenmeyebilir. Aynısını kullanmanız tavsiye edilir10 kOhm'dan 100 kOhm'a kadar direnç.

Diyagramda HG1 göstergesinin 2 ve 7 numaralı pinleri bağlı değil. DP pinini eksi güç kaynağına bağlarsanız ondalık nokta yanacaktır. Dig.2 çıkışına bir eksi uygularsanız, ikinci bölüm grubu da yanacaktır (aynı sembolü gösterecektir).

Kod çözücü girişleri, göstergede 1, 2, 4 ve 8 rakamlarını görüntülemek için yalnızca bir düğmeye basmanız yeterli olacak şekilde tasarlanmıştır (düzenlemede D0, D1, D2 ve D3 girişlerine karşılık gelen geçiş anahtarları vardır). Sinyal yoksa sıfır sayısı görüntülenir. D0 girişine bir sinyal uygulandığında ekranda 1 sayısı görüntülenir. Diğer sayıları görüntülemek için geçiş anahtarlarının bir kombinasyonuna basmanız gerekir. Tablo 1 bize hangilerine basmamız gerektiğini söyleyecektir.


Tablo 1.

"3" sayısını görüntülemek için D0 ve D1 girişine mantıksal bir sayı uygulamanız gerekir. D0 ve D2'ye sinyal uygularsanız ekranda “5” rakamı görünecektir(Şekil 6).



Şekil 6.

Burada sadece beklenen rakamı değil aynı zamanda bu rakamı oluşturacak segmentleri (a - g) de gördüğümüz genişletilmiş bir tablo var.



Tablo 2.

Mikro devrenin 1., 6. ve 7. pinleri yardımcıdır (sırasıyla S, M, K).

Diyagramda (Şekil 6), 6. pin "M" topraklanmıştır (güç kaynağı eksi) ve mikro devrenin çıkışında ortak katotlu bir göstergeyle çalışmak için pozitif bir voltaj vardır. Ortak anotlu bir gösterge kullanılıyorsa, 6. pime bir tane uygulanmalıdır.

7. pin “K”ya mantıksal bir uygulanırsa gösterge işareti söner, sıfır göstergeye izin verir. şemada bu sonuç topraklanmış (güç kaynağı eksisine).

Kod çözücünün ilk çıkışına, dönüştürülen kodun göstergede görüntülenmesini sağlayan bir mantıksal birim (artı güç) sağlanır. Ancak bu pime (S) mantıksal sıfır uygularsanız, girişler sinyal almayı bırakacak ve mevcut görüntülenen işaret göstergede donacaktır.

Dikkat edilmesi gereken ilginç bir nokta da, D0 mafsallı anahtarının "1" sayısını açtığını ve D1 mafsallı anahtarının "2" sayısını açtığını bilmemizdir. Her iki geçiş anahtarına da basarsanız, 3 sayısı görüntülenecektir (1+2=3). Diğer durumlarda gösterge, bu kombinasyonu oluşturan sayıların toplamını görüntüler. Kod çözücü girişlerinin düşünceli bir şekilde düzenlendiği ve oldukça mantıklı kombinasyonlara sahip olduğu sonucuna varıyoruz.

Bu yazının videosunu da izleyebilirsiniz.

Arduino kartına yedi segmentli bir LED göstergesi bağlayalım ve Led4Digits.h kütüphanesini kullanarak onu nasıl kontrol edeceğimizi öğrenelim.

Önceki derste mikrodenetleyiciler ayrıntılı olarak anlatılmıştı. Böyle bir göstergeyi Arduino kartına bağlayalım.

Göstergeyi Arduino kartına bağlama şeması şuna benzer.

Devre kartına monte ettim.

Göstergeleri yönetmek için Led4Digits.h kütüphanesini yazdım:

Ve öde.

Kitaplık, yedi bölümlü göstergeleri yönetmenize olanak tanır:

  • boyutu dört basamağa kadar;
  • kontrol darbe polaritelerinin herhangi bir çeşidiyle (tümü);
  • paralel bir süreçte çalışır;
  • göstergede görüntülemenizi sağlar:
    • her kategorinin bölümleri;
    • her rakamın rakamı;
    • tamsayı 0 ... 9999;
  • bir tam sayının çıktısını almak için basamak sayısı belirtilebilir;
  • Önemsiz rakamları bastırmak için bir mod var.

Led4Digits.h kütüphanesini bu bağlantıdan indirebilirsiniz:

Ve öde. Sadece 40 ovmak. tüm site kaynaklarına erişim için aylık!

Nasıl kurulacağı yazıyor.

Kaynak metinleri vermeyeceğim. Bunları kütüphane dosyalarında arayabilirsiniz. Her zaman olduğu gibi burada da çok sayıda yorum var. Kütüphanenin nasıl kullanılacağını örneklerle detaylı olarak anlatacağım.

Arduino Led4Digits için LED kontrol kütüphanesi.

İşte sınıf açıklaması. Yalnızca genel yöntemler ve özellikler sağladım.

sınıf Led4Digits (
halk:
bayt rakamı; // bit segmenti kontrol kodları
void regen(); // rejenerasyon, yöntemin düzenli olarak çağrılması gerekir
void tetradToSegCod(bayt kaz, bayt tetrad); // tetrad'ı segment kodlarına dönüştürme
boolean print(unsigned int value, bayt rakamNum, bayt boş); // tamsayı çıktısı



} ;

Yapıcı.

Led4Digits (bayt türüLed, bayt hanePin0, bayt hanePin1, bayt hanePin2, bayt hanePin3,
bayt segPinA, bayt segPinB, bayt segPinC, bayt segPinD,
bayt segPinE, bayt segPinF, bayt segPinG, bayt segPinH);

tipLed Bit ve segment seçim sinyalleri için kontrol darbe polaritelerini ayarlar. Herhangi bir bağlantı şemasını destekler ().

tipLed Kategori seçimi Segment seçimi Devre tipi
0 -_- -_- Deşarj seçim tuşlarıyla ortak anot
1 _-_ -_- Ortak anot
2 -_- _-_ Ortak katot
3 _-_ _-_ Deşarj seçim tuşlarıyla ortak katot

rakamPin0...rakamPin3– basamak seçimi için çıkışlar. Eğer rakamPin = 255 ise rakam devre dışı bırakılır. Bu, göstergeleri daha az basamaklı olarak bağlamanıza olanak tanır. rakamPin0 – düşük (sağ) rakam.

segPinA...segPinH– bölüm kontrol çıkışları.

Örneğin,

şu anlama gelir: gösterge tipi 1; deşarj çıkışları 5,4,3,2; 6,7,8,9,10,11,12,13 segmentlerinin çıktıları.

void regen() yöntemi

Yöntemin paralel bir süreçte düzenli olarak çağrılması gerekir. Göstergelerdeki görüntüyü yeniden oluşturur. Yenileme döngü süresi, yöntem çağrı süresinin bit sayısıyla çarpımına eşittir.

Örneğin,

// kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Bayt rakam dizisi

Segmentlerin durumunu içerir. rakam en az anlamlı bittir, rakamın en az anlamlı biti ise en az anlamlı bitin “A” segmentidir. Bit durumunun 1 olması, segmentin yandığı anlamına gelir.

Örneğin,

rakam = B0000101;

ikinci hanede “A” ve “C” bölümlerinin yandığı anlamına gelir.

Her rakamın tüm bölümlerini sırayla aydınlatan bir program örneği.

// koşu bölümleri
#katmak
#katmak

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

geçersiz kurulum() (
zamanlayıcı kesintisi 2 ms
MsTimer2::start(); // kesmeyi etkinleştirme
}

geçersiz döngü() (
for (int i = 0; i< 32; i++) {
if (i == 0) disp.digit= 1;
else if (i == 8) disp.digit= 1;
else if (i == 16) disp.digit= 1;
else if (i == 24) disp.digit= 1;
başka(
disp.rakam = disp.rakam<< 1;
disp.rakam = disp.rakam<< 1;
disp.rakam = disp.rakam<< 1;
disp.rakam = disp.rakam<< 1;
}
gecikme(250);
}
}

//kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Rakam dizisinde 1 kaydırılır ve göstergeler bunu gösterir.

Yöntem void tetradToSegCod(bayt kaz, bayt tetrad)

Yöntem, onaltılık koddaki sayıları ve harfleri ayrı basamaklarda görüntülemenizi sağlar. Argümanları var:

  • dig – basamaklı sayı 0 ... 3;
  • tetrad – ondalık karakter kodu. Kod 0, “0” sayısını, kod 1 – “1” sayısını, kod 14 – “E” harfini gösterecektir.

Örneğin,

tetrad(2, 7);

üçüncü hanede “7” rakamı görüntülenecektir.

Her rakamdaki karakterleri sırayla değiştiren bir program örneği.

// sayıları birer birer
#katmak
#katmak

// gösterge tipi 1; deşarj çıkışları 5,4,3,2; segment çıktıları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

geçersiz kurulum() (
MsTimer2::set(2, timerInterrupt); // zamanlayıcı kesintisi 2 ms
MsTimer2::start(); // kesmeyi etkinleştirme
}

geçersiz döngü() (
for (int i = 0; i< 64; i++) {
disp.tetradToSegCod(i>>4, i);
gecikme(250);
}
}

// kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Yöntem boolean print(imzasız int değeri, bayt rakamNum, boş bayt)

Yöntem göstergelerde bir tamsayı görüntüler. Her basamak için ikili sayıyı BCD'ye dönüştürür. Argümanları var:

  • değer – göstergede görüntülenen sayı.
  • rakamNum – sayının basamak sayısı. Bu, gösterge hanelerinin sayısıyla karıştırılmamalıdır. 2 hanede bir sayıyı, diğer ikisinde ise rakamları kullanarak karakterleri görüntülemek isteyebilirsiniz.
  • boş – önemsiz rakamların bastırıldığına dair bir işaret. boş=0, sayının tamamen sıfırlarla görüntülenmesi gerektiği anlamına gelir. "7" sayısı "0007" gibi görünecektir. Boş değer 0'dan farklıysa önemsiz sıfırlar gizlenir.

Sayı değeri, seçilen basamak sayısı (digitNum) için izin verilen sayıyı aşarsa, işlev göstergede "---" görüntüleyecek ve false değerini döndürecektir.

Sayı çıkış programına bir örnek.

// çıktı numarası
#katmak
#katmak

// gösterge tipi 1; deşarj çıkışları 5,4,3,2; segment çıktıları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

geçersiz kurulum() (
MsTimer2::set(2, timerInterrupt); // zamanlayıcı kesintisi 2 ms
MsTimer2::start(); // kesmeyi etkinleştirme
}

geçersiz döngü() (
for (int i = 0; i< 12000; i++) {
disp.print(i, 4, 1);
gecikme(50);
}
}

// kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Son iki yöntem, “H” segmentinin (ondalık nokta) durumunu değiştirmez. Bir noktanın durumunu değiştirmek için şu komutları kullanabilirsiniz:

rakam |= 0x80; // ondalık noktayı aydınlat
rakam &= 0x7f; // ondalık noktayı söndür

Negatif sayıların göstergelerinin çıktısı (int).

Negatif sayılar aşağıdaki gibi çıktılanabilir:

  • Numaranın işaretini kontrol edin.
  • Sayı negatifse, en anlamlı basamağa bir eksi işareti yazdırın ve print() işlevinde sayının işaretini pozitif olarak değiştirin.
  • Sayı pozitifse işaret bitini kapatın ve sayıyı print() işlevini kullanarak yazdırın.

İşte bu yöntemi gösteren bir program. -999'dan 999'a kadar sayıların çıktısını verir.

// negatif sayılar çıkar
#katmak
#katmak

// gösterge tipi 1; deşarj çıkışları 5,4,3,2; segment çıktıları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

geçersiz kurulum() (
MsTimer2::set(2, timerInterrupt); // zamanlayıcı kesintisi 2 ms
MsTimer2::start(); // kesmeyi etkinleştirme
}

geçersiz döngü() (

for (int i = -999; i< 1000; i++) {

Eğer ben< 0) {
// sayı negatif
disp.digit= B01000000; // imza -
disp.print(i * -1, 3, 1);
}
başka(
disp.digit= B00000000; // işareti temizle
disp.print(i, 3, 1);
}

gecikme(50);
}
}

// kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Kesirli sayıların göstergelerine çıktı, kayan format.

Standart C dili işlevlerini kullanarak kayan nokta sayılarını (float'lar) görüntülemenin birçok yolu vardır.Bu, her şeyden önce sprint() işlevidir. Çok yavaş çalışır, karakter kodlarının ikili ondalık kodlara ek olarak dönüştürülmesini gerektirir, bir dizeden bir nokta çıkarmanız gerekir. Diğer işlevlerde de aynı sorunlar var.

Float değişkenlerinin değerlerini göstergeler üzerinde görüntülemek için farklı bir yöntem kullanıyorum. Yöntem basit, güvenilir ve hızlıdır. Aşağıdaki işlemlere indirgenir:

  • Kayan nokta sayısı, gerekli ondalık basamak sayısına karşılık gelen kuvvete göre 10 ile çarpılır. Göstergelerde virgülden sonra 1 basamak gösterilmesi gerekiyorsa 10 ile, 2 ise 100 ile, virgülden sonra 3 basamak gösterilmesi gerekiyorsa 1000 ile çarpılır.
  • Daha sonra, kayan nokta sayısı açıkça bir tamsayıya (int) dönüştürülür ve print() işlevi kullanılarak göstergelerde görüntülenir.
  • İstenilen rakama bir nokta konur.

Örneğin, aşağıdaki satırlar, yedi bölümlü LED'lere iki ondalık basamaklı bir değişken değişkenin çıktısını verecektir.

kayan nokta x = 2,12345;

disp.rakam |= 0x80; //

Sayıyı 100 ile çarpıyoruz ve üçüncü basamağa nokta koyarak sonucu 100'e bölüyoruz.

Göstergelerde 0,00'dan 99,99'a kadar kayan nokta sayılarını görüntüleyen bir program.

// kayan nokta çıkışı
#katmak
#katmak

// gösterge tipi 1; deşarj çıkışları 5,4,3,2; segment çıktıları 6,7,8,9,10,11,12,13
Led4Digits disp(1, 5,4,3,2, 6,7,8,9,10,11,12,13);

geçersiz kurulum() (
MsTimer2::set(2, timerInterrupt); // zamanlayıcı kesintisi 2 ms
MsTimer2::start(); // kesmeyi etkinleştirme
}

geçersiz döngü() (
kayan nokta x = 0;

for (int i = 0; i< 10000; i++) {
x += 0,01;

disp.print((int)(x * 100.), 4, 1);
disp.rakam |= 0x80; // üçüncü seviye noktasını aydınlatın

gecikme(50);
}
}

//kesme işleyicisi 2 ms
geçersiz zamanlayıcıInterrupt() (
disp.regen(); // gösterge yenilenmesi
}

Gördüğünüz gibi Led4Digits.h kütüphanesi, Arduino kartına bağlı yedi segmentli ışık yayan diyot (LED) göstergelerle çalışmayı büyük ölçüde basitleştirir. Böyle bir kütüphanenin bir analogunu bulamadım.

Bir kaydırma yazmacı aracılığıyla LED ekranlarla çalışmak için kütüphaneler vardır. Birisi bana doğrudan Arduino kartına bağlı bir LED ekranla çalışan bir kütüphane bulduğunu yazdı. Ancak bunu kullanırken gösterge rakamları dengesiz bir şekilde parlıyor ve göz kırpıyor.

Analoglarının aksine Led4Digits.h kütüphanesi:

  • Paralel bir süreç olarak çalışır. Ana döngüde program, verileri ekranda otomatik olarak görüntülenen belirli değişkenlere yükler. Bilgi çıkışı ve gösterge yenilenmesi, ana program tarafından görülemeyen bir zamanlayıcı kesintisinde gerçekleşir.
  • Ekran numaraları yanıp sönmeden eşit şekilde parlıyor. Bu özellik, rejenerasyonun kesin olarak bir zamanlayıcı kesintisi tarafından tanımlanan bir döngüde gerçekleşmesiyle sağlanır.
  • Kitaplığın kompakt bir kodu vardır, hızlı bir şekilde yürütülür ve denetleyiciyi minimum düzeyde yükler.

Bir sonraki dersimizde Arduino kartına aynı anda bir LED göstergesi ve bir buton matrisi bağlayacağız. Böyle bir tasarım için bir kütüphane yazalım.

Kategori: . Favorilerinize ekleyebilirsiniz.


Tepe