Avr 7 szegmens jelző
Ma meg fogjuk vizsgálni, hogy az Atmega8a mikrokontrollerrel hogyan vezérelhető a hét szegmensű LED-jelző. A projekt a szokásos módon is létrehozásra kerül, hívjuk Test05-nak, mindent töröljünk a main.c-ről, és másoljuk át ugyanazt a fájlt az utolsó lecké projektből, és konfiguráljuk a szimulátort programozóként is. Annak ellenőrzésére, hogy minden a projektben normális, próbáljuk meg összegyűjteni. Az előző munkamenetekhez hasonlóan a vezérlő tulajdonságaiban másoljuk és átnevezzük a proteus fájlját, és megmutatjuk a firmware elérési útját.
Távolítson el minden LED-et, mivel nincs szükségük rá, és a könyvtárban hét szegmentum LED-jelzőt találunk közös anóddal. És egy közös anóddal, mert azért gyakoribbak, és azért is, mert megvan

A közös anódot a teljesítménybuszhoz csatlakoztatjuk. És akkor számunkra a szegmensek akkor ragyognak, ha egy kikötő egy megfelelő szakaszán alacsony feszültség lesz, és amikor magas - nem lesz. Itt alapul fogjuk írni kódunkat. Csatlakoztassa így

Mielőtt bármilyen kódot írnánk, nézzük meg, hogy ez a mutató mit képvisel, és hol és milyen szegmensben van (a szegmenseket latin betűkkel jelöljük)

Ezért annak érdekében, hogy ezek a szegmensek könnyebben kezelhessék és megjelenítsenek bizonyos számokat vagy szimbólumokat a ragyogásukkal, csatlakozni fogunk hozzájuk a D0 lábával. b - a D1 és így tovább a sorrendben, és mi folyamatosan elképzelni az elménkben, hogy milyen bináris számot
PORTD = 0b00000000; // 1 2 3 4 5 6 7 8
A gomb kezelője, amíg megérintjük, még mindig hasznos lehet számunkra, ezért nem fogjuk elrontani a projektet.
Adja hozzá a következő kódot a végtelen hurokhoz, amely lehetővé teszi az új számjegy 500 milliszekundum után történő megjelenítését, a késleltetés funkció használatával
A kódban látjuk, hogy minden alkalommal, amikor új értékeket adunk hozzá a porthoz, amely megfelel az izzó szegmensek egyes kombinációinak. Ahol nulla - ott a szegmens világít, ahol a készülék nem.
És éppen ellenkezőleg, megvilágosítjuk az egységeket. Mindez fordított művelettel érhető el. Az optimalizálás szempontjából jobb, ha az első változatban ugyanazt csináljuk, de mivel nincs sehova, ismételten megismételjük a logikai műveletek során az átgondolt anyagokat, mert folyamatosan szükségünk lesz ránk.
A kódot összegyűjtjük és először ellenőrizzük a proteusban

Kódunk jól működik. Most nézzük meg az élő vezérlő és kijelző. Ehhez ugyanazokat a modelleket vettem és mindent összegyűjtöttem, összekapcsolva ezzel a debug táblával. Minden különálló mutatónak saját rendszere van. Az enyémben itt van:

A programozó és a mutatók itt vásárolhatók:
A programozó (az eladó megbízható) USBASP USBISP 2.0
Hét szegmensű, egyszámjegyű piros jelző, közös anóddal 10 db.
