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.

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).

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 <
break;
1. eset: PORTB | = (1 <
break;
2. eset: PORTB | = (1 <
>
>
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.


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ő