Szegmens kijelzés és avr

A betűk megjelenítéséhez bonyolultabb, több szegmenses és mátrix jelzőket használnak. De itt hét szegmensről beszélünk. Vegye figyelembe a dinamikus kijelzést is. mint a mért érték azonnal megjelenítésének módja. Ehhez vegye fontolóra a megszakítások használatát a programban.
Tehát tudnia kell, hogy a mutatók egy közös anóddal és katóddal jönnek, mint az alábbi ábrán. Az ujjhegyem egy közös katóddal (az ábra alsó része) mutató jelző, amelynek vezérlő kimenete mínuszhoz kapcsolódik. Munkával együtt dolgozunk.

Szegmens kijelzés és avr
Ha több mutató van, akkor a katódokat az MC több lábának vezérelheti. De mindig használjon tranzisztorokat; Az I / O portok viszonylag nagy áramerősség miatt éghetnek. A szokásos 315 tranzisztort használtam. Az alábbi ábrán közelítő kapcsolatot mutattam rajta keresztül a jelző és a vezérlő vezérlő kimenetén. A telepítéshez 11 méterre van szükség a mikrokontrollerre, azaz 8 láb (7 + pont) szegmensek megjelenítéséhez, az egyes mutatókat pedig egy lába irányítja, három, így a lába is három. Az alábbiakban idézem és leírtuk a programot. A szegmensek kezeléséhez egy kikötő csapjait fogjuk használni, amelyeket nem szabad összetéveszteni. Az ATmega8 mikrokontroller alatt írt. Ha meg akarsz szabadulni a "kőtől", akkor ez nem jelent problémát, például a 21. cikkben, megtörtem a kódot a könyvtárakba, ahol minden probléma nélkül megváltoztathatjuk a beállításokat egy másik "kőre", főként tűket és portszámokat. Az egyetemesség és az átruházás általános szabályait is itt ismertetik.

A tranzisztort az MK-re és az indikátorra csatlakoztató ábra.

Menjünk tovább a programra. Ebben a kis program (C), adtam példát tartalmazó három elem az indikátor és a következtetést a résztől. Használja az időzítőt és a megszakítást a kijelző megjelenítéséhez. A program írásakor meg kell határoznunk, hogy melyik portnak kell megfelelnie a mutató szegmensének. Maga a jelzőelem az alábbi ábrán látható. Leírás oldalán csatlakozókapcsok a szegmensek az indikátor elem (tűs port - szoba elem lábak (a fenti ábrát.) - írni szegmens - a számot a tömb megfelelő befogadás elem szegmens).

Szegmens kijelzés és avr

PB0 - 12 - az első elem vezérlése

#include
#include
#include
/ * Határozza meg a hét szegmens port elemének minden egyes csapját (ryunok fent) * /
Kijelzés (i);
> / * A végtelen hurok bezárása * /
> / * A fő program bezárása * /

A következő lépés egy olyan megszakítási függvény felvétele, amely kiváltja a speciális TIMER0_OVF_vect vektort. amely felelős a T0 túlcsordulás megszakításáért. Ehhez a T0 hardveridőzítőt / számlálót használjuk. Abban a programban, amelyben velünk regisztráltuk az időzítő beállításait, ugyanazon a helyen számoltunk be a dinamikus megjelenítés gyakoriságát. Ie amikor a számláló a számlálóban tele van. az általános program leáll, és a függvény végrehajtása az alábbiakban történik, miután kilépett a fő program fut.

ISR (TIMER0_OVF_vect)
<
PORTB = 0x3e; Tisztítás PB7, PB6, PB0
_for (j = 0; j<=30; j++) <> // A tranzisztor kikapcsolásának késleltetése
(k == 3). k = 0. k ++; / * Változó, amely felelős a három-elem szekvenciákat deck indikátor, 0,1 és 2. egy adott számjegy egy bizonyos lábon usatnavlivaetsya 1 további kinyílik, és a tranzisztor szegmensében a jelzőfények, megfelelő variábilis Elemn * /
kapcsoló (k)
<
0 eset: PORTB | = (1 < PORTD = Elem3;
break;
1. eset: PORTB | = (1 < PORTD = Elem2;
break;
2. eset: PORTB | = (1 < PORTD = Elem1;
>
>

A fenti programot hardveren és szimulátoron tesztelik. Az alábbiakban bemutatjuk a rajzokat. Mindent összevonták a mirigyben egy lombkoronával, egy gyors karon. Amint láthatja, három eleme a jelző három tranzisztor (körítve). A szimulátorban (Proteus) nincs szükségünk tranzisztorokra. Mivel a program egyik jelentős különbsége, nevezetesen a megszakítás, ahol a késleltetés a tranzisztort kikapcsolja - a szimulátorban írjon 50 ciklust. Mindennek működnie kell.

Szegmens kijelzés és avr
Szegmens kijelzés és avr

Az alábbiakban találhatók a forrás és a projekt a fenti anyaghoz.

Ez minden. A következő cikkben ismertetem a hőmérsékletérzékelők csatlakoztatását, és az információkat továbbítom az indikátorhoz. Hamarosan találkozunk!

/ * Ezek a makrók olyan számokat tartalmaznak, amelyek megfelelnek a port "lábának" számával megegyező számnak, amelyhez az indikátor szegmens azonos név makrókkal van összekapcsolva. * /

Miért emelték fel a hatalmat?

Üdvözlünk! A fok a szám, a tű (lábak) száma. A port a számunkra 8. A port egy byte, amelynek maximális értéke 256. Tehát minden láb 2 az n-edik teljesítményben (ez a port).

Az IMHO nem univerzális, egy portra kell kötni, és nem csak egyetlen lábszekvenciához, ha a mutatóhoz csatlakozik egy csomó átkötő.

Mindez nem az egyetemesség, hanem a fundamentumok fogalma. Végül is az optimalizálás és a módosítás mindig bonyolult sémák és programok. Azok, akik tanulni kezdenek, mindig "alapítványt" keresnek. Mindazonáltal, köszönöm a kritikát.

Megnéztem, hogy a programozás itt magyarázható, vagy erre a feladatra tehetünk valamit: írjunk egy programot az MK másik portjához csatlakoztatott LED-ek egyikéhez csatlakoztatott kapcsolók helyzetének megjelenítéséhez. A hét szegmens indikátorán szeretné megjeleníteni a váltások számát? És hogy türelmetlen vagyok, és nem gondolom, az AVR ATmega16-ra

Helló Megpróbálok válaszolni, amennyire értem. Az első - egy felmérés perklyuchateley helyzetben, ha jól értem 0 vagy 1, az állam a oparashivaem PIN kódot. Továbbá, megértem a LED-ek, hogy vizuálisan megjeleníti a kapcsoló állását, amelyek össze vannak kötve egy másik port - csak szempontjából a test aktiválja a szükséges lábát PORTN vezérlő | = _BV (pnn). hogy meggyújtsa a LED-et, akkor regisztráljuk a számlálót és megjelenítjük a jelzőt. Így van.

de nem tudta írni az összeszerelőnek pontosan azt a webhelyet, ahol a hét szegmens indikátort használják? Hát, nézd meg

Helló, a szerelőnek egy JEL jelzéssel. Nem volt különösebben szükség ezen tudás fejlesztésére.

aki hisz és megváltoztatja. Megpróbáltam megváltoztatni. Nincs hatása.

char illékony Elem1, Elem2, Elem3, Elem4 - itt nem szeretem illékony. Ennek következtében problémák és nem egyértelmű szimbólumok jelennek meg - végül is azt mondja, hogy a változók értéke bármikor megváltozhat. Nem ez a helyzet, ha fel kell tennünk. Próbálja meg csavarni az időzítő beállításait - a TCCR0 frekvenciáját.

Ó, igen. ATmega88V-10PU vezérlő