Vezérlés az LPT-porton Alfától Omegáig. III.

Előző cikkünkben röviden összefoglaltuk, hogy néhány programozási nyelvben, -valamint közvetlen DOS alatt- miként lehet a portokat,  használni. Megismerkedtünk továbbá a világ legegyszerűbb perifériájának elkészítésével, mely jövőbeli kísérleteink egyik hasznos segítője lehet. Most valamivel összetettebb perifériákat nézünk meg. Elektronikában kezdő olvasóink megnyugtatására eláruljuk: még mindig nem kell tartanunk attól, hogy komolyabb szakmai ismeretekkel kellene felvértezni magunkat mindehhez.

Csillogunk – Villogunk

Aki az elektronikával ismerkedni kezd, az általában különféle villogókat, futófényeket, egyszerűbb kijelzőket kíván először összerakni. Egyrészt azért, mert látványos, másfelől pedig viszonylag gyors sikert lehet elérni velük. Természetesen a portprogramozásnál is ezzel fogjuk kezdeni. Ugyanis egyszerű hardver mellé - nagyon egyszerűtől az igen bonyolultig - mindenféle szoftvert írhatunk.

Miért érdemes ezt alaposan megjegyezni? Hamarosan eljutunk arra a felismerésre, hogy hardvereink jelentősen egyszerűsíthetők, ha a szoftver készítésénél kicsit trükkösebbek vagyunk. A mikrovezérlők, vagyis az egychipes mikroszámítógépek nem véletlenül terjednek egyre jobban mindenfelé. Ma már szinte alig van elektronikus eszközünk, amiben ne lenne legalább egy kisteljesítményű változata. Pedig a legtöbb olcsó mikrovezérlőnek kb. ugyanannyi portja van, mint  a printerportunknak! Azonban ennek töredékével is megoldható lenne szinte minden… (A későbbi cikkekben erre példákat is látni fogunk.)

A bolti mérlegek, a karórák, infra és rádiós távirányítók, riasztóberendezések, autók, kerékpárok fedélzeti számítógépeitől a többprocesszoros videomagnókig, monitorokig, a TV-készülékeken át, mosógépeink, mikrohullámú sütőink, stb. láthatatlan lakója lett. S mindez cseppet sem véletlen! Egy programot egyszer kell csak jól megírni, ellenben az alkatrészt minden egyes berendezésbe bele kell szerelni, ami lassítja, drágítja a gyártást. Ma már nem az a művészet, hogy milyen berendezésben mennyi alkatrész van, hanem az, hogy minél több funkció megtartása mellett mit lehet még kispórolni belőle. J

Az előző részben bemutatott egyszerű perifériánk jól működik, azonban egyetlen bit figyelése elég unalmas dolog lenne a vérbeli programozónak. Készítsünk hát nyolcat belőle, hogy a kiírt adatbájtot egyszerre láthassuk:

1. Képcsoport:variációk egy bináris kijelzőre. (A szerző felvételei.)

Kapcsolási rajz variációk a bekötésre.

Egy percek alatt összedrótozott szerelvény oldalról

….alulról…

…illetve szigetelőszalaggal védve.

Megjegyzés az elektronikában már otthon lévő olvasókhoz: A kezdetben bemutatott megoldások szándékosan nyomtatott panel nélkül,  CSAT („Csináld, Ahogy Tudod”), illetve AHS (AHogy Sikerül.) algoritmussal készülnek. Nem azért, mert így a szakszerű, hanem azért, mert a kezdők is szeretnének lépést tartani. Ráadásul képzett szakemberek a prototípusokat gyakran próbálják ki valamilyen deszkamodellen. A szerző se szokott összetettebb áramköröket soha csuklóból panelre tervezni, s azután n+1-szer átépíteni, mire tökéletes lesz. Később, amikor odaérünk, természetesen bemutatjuk a panelek újszerű házi gyártását percek alatt, illetve a profik által is alkalmazott prototípusfejlesztő paneleket.

A rajzon látható, hogy minden LED előtt önálló ellenállás van, vagyis egyszerűen megsokszoroztuk a múltkori kapcsolást. Mi a jobboldali elvi rajz szerint dolgozzunk, a másikra később visszatérünk…

A gyakorlati kivitelnél igyekeztem ismét az olcsóbbik végéről megfogni a dolgot. Egy számítógépes bontó, esetleg szerviz környékén (néha teljesen ingyen: örülnek, ha elvisszük a kacatot ) sok hasznos dolgot lehet beszerezni. Igaz a munkám miatt nálam az ilyesmi eleve kéznél van mindig, de az olvasó - kis fantáziával - szintén nem szalad az alkatrész-kereskedőhöz egyszerűbb szerkezetek, prototípusok tartozékai miatt.

Azért, hogy a LED-ek ne keveredjenek össze, illetve okozzanak zárlatot, egy - két oldalon – rézsávokkal csíkozott nyomtatott panelt alkalmaztam "deszkamodell" gyanánt. Régi 360KB-os, hibás FDD meghajtó nyomtatott paneljéről vágtam le karos lemezollóval a szalagkábel csatlakozósávját. Ennek híján tönkrement ISA-s kártyák érintkező sorának egy darabkája is tökéletesen megfelel.

Érdekességképpen megemlítem, hogy ezt a "trükköt" az amatőrök, illetve a készülékgyárak régen alkalmazták sokkal összetettebb áramkörök kialakítására is! Csak akkoriban "forrlécnek" nevezték, s bakelitből készült csíkokból állt, amibe csőszegecseket préseltek. Aki nem hiszi, nézze meg egy régi elektroncsöves rádió, esetleg igen korai sorozatú TV alsó részét! A 2…4 párhuzamosan felszerelt forrlécen alkatrészek százai is elfértek. J

Természetesen ízlés szerint más megoldást is találhatunk ki magunknak a rögzítésre. A LED-sort szerelés után azonban mindenképpen valamiféle szigeteléssel érdemes ellátni, mivel frissen birtokba vett portunk áramkörét nem lenne kellemes dolog javítani. A LED-ek ismét a hulladékos sufni rossz kacatjaiból kerültek ki, akárcsak az ellenállások. Vagyis megint csak nem a zsebpénzünk rovására megy a játék. (Megszokhattuk az eddigiek alapján… J)

Aki esetleg ragaszkodik a precíziós kivitelhez, az vásárolhat a boltban új alkatrészeket. Ha már egyszer veszi, akkor 5mm-es piros, magas fényű LED-et vásároljon, mivel az sokkal szebben mutat, mint a régi típusok. Vehetünk azonban szögletes, illetve lapos kivitelben, sárga, zöld, esetleg kék, vagy fehér színben is. (Az utóbbi kettő ma még kicsit luxus lenne ide kb. 10-szeres árával…)

Fontos észrevétel, hogy minden LED saját ellenállással rendelkezik. Jogos kérdés lenne, ugyan miért nem alkalmazunk a 8db helyett egyetlen ellenállást a GND felőli oldalon?

A válasz: Ha minden esetben legfeljebb egy LED-et kapcsolunk be, akkor elegendő ez is. Amennyiben azonban egyidőben több világít, akkor az áramok eloszlanak a diódák között, vagyis minél több üzemel, annál halványabb lenne fényük. Ezt kis kitérőt érdemes megjegyezni, ha saját áramkört akarunk tervezni!

A másik kissé rejtélyes dolog; ugyan miért rajzoltam le a kapcsolási ábra bal oldalára egy másik fajta bekötést? Hiszen azonnal két gondunk is lenne, ha ezt építenénk meg…

Először kellene egy 5V-os tápfeszültség, ami azonban nincs kivezetve a printerportunkra. Másodszor a LED-ek fordított bekötése miatt akkor fognak világítani, ha a portbit nulla értékű, s akkor alszanak ki, ha egyre átvált. Tehát minden bitet negálni kell a programunkban a helyes működés érdekében.

Nos, a magyarázat kézenfekvő: mert munkánk során sok olyan áramkörrel lesz dolgunk, ami így üzemel! Ezek pedig pl. a LED-es, 7-szegmenses kijelzők.

(Ennek a területnek kis kitérőt is szánunk, de remélem izgalmas utazás lesz.)

 

2. Képcsoport: Kijelzők innen-onnan. (A szerző felvételei.)

*A kijelzők és szegmenseik jelölése

Többjegyű kijelző egy nyomtatott panelen

A boltokban kaphatók egy, illetve többszámjegyes típusok egyaránt.

Fontos tudni a kijelzőkkel kapcsolatban néhány alapvető dolgot, mielőtt használni kezdenénk azokat.

-A számokat világító pálcikákból rakják össze. A pálcikákat szegmenseknek nevezzük, s 7db van belőlük. (Innen ered az elnevezése is) A pálcikák mellett van egy tizedespont (DP=decimal point) is.

-A LED-es hétszegmenses kijelzőkben ugyanolyan LED-ek vannak, mint amiket eddig megismertünk, azonban kétféle módon lehetnek összekötve a tokon belől  a közös elektródáik. Ha az első ábracsoport kapcsolási vázlatát nézzünk, akkor  bal oldali variációt a "KÖZÖS ANÓDÚ", míg a jobboldalit a "KÖZÖS KATÓDÚ" jelzővel illeti a szakirodalom.

Magától értetődik, hogy mi a közös katódút fogjuk jobban kedvelni, hiszen az gyakorlatilag azonos áramkört, illetve kezelést igényel, mint a LED-sorunk. Ha kapunk a boltban, ilyet érdemes beszerezni. Ha nem akarunk boltba menni, természetesen akkor sincs gond. J A családban, ismeretségi körben bizonyára akad régi, kidobásra szánt piros kijelzővel világító ezeréves  zsebkalkulátor. No, ebben éppen egy 6…9 számjegyű szaknyelven "DIGITES", közös katódú kijelző rejtezik! Ha az esetleg nincs, gondoljunk a régi PC-házak frekvencia kijelzőire… (Az alsó ábra, legnagyobb darabja éppen onnan való.)  J

A többjegyű kijelzőknél nem vezetik ki minden számjegy minden szegmensét, mivel ez egy 6-jegyű kijelzőnél is 6*8=48 lábat foglalna el. Helyette un. IDŐMULTIPLEX vezérlést alkalmaznak. A második képcsoport kapcsolási rajzán ez a megoldás is megfigyelhető. Így a korábbi példánál maradva a 48 láb helyett 8+6=14 kell mindössze ugyanahhoz a művelethez. Természetesen ekkor a közös katódokkal/anódokkal kell kiválasztani, hogy melyik számjegyet akarjuk aktiválni, majd a szegmensekre kiadjuk a megfelelő kombinációt, s megjelenik a kívánt számjegy. Ha egymás után folyamatosan valamennyi helyi értéken megjelenítjük a megfelelő számot, voltaképpen célnál vagyunk. Mindezt azonban olyan gyorsan kell elvégezni, hogy szemünk folytonosnak érzékelje a kapott számsort. Szinte minden eszközünkben ezt a megoldást alkalmazzuk, mivel a vezérlő elektronikától is kevesebb portot, vagyis olcsóbb kivitelt kíván meg. A processzorokban majd az egyszer  megírt szoftver megcsinálja a többit. Egyelőre természetesen multiplex vezérlést nem tervezünk, ahhoz pár egyéb, egyelőre ismeretlen dolog is szükséges lenne. Azonban az ilyen kijelzők egyetlen számjegyre bekötve remekül megfelelnek céljainknak, ezért mutattam be őket.

Mielőtt kijelzőnket használni kezdenénk, valamilyen egységes jelöléssel azonosítani kell a pálcikákat. Erre nemzetközi szabvány van. Az óramutató járásával egyező irányban, spirálisan körbejárjuk a pálcikákat, s minden szegmenset az angol abc kisbetűjével feliratozunk, ahogy a második ábracsoport baloldali felső ábráján látható. Vagyis: a, b, c, d, e, f, g, továbbá a tizedes pont, a „dp”.

A bekötés a lehető legritkább esetben hullik az ölünkbe, hála a töménytelen sok típusnak. Vagyis egy multiméterrel, dióda vizsgáló módban kell kikeresni a bekötést, illetve azt, hogy vajon közös anódú, vagy katódú típussal van éppen dolgunk. Ha már vesszük, akkor ne legyünk szívbajosak: kérjünk egy műszert, s a helyszínen ellenőrizzük le a kereskedő, vagy az esetleges katalógus állításait. (Másképp könnyen meglepetés érhet otthon bennünket…- saját tapasztalat -)

Van még egy apróság kijelző ügyben, amire nem árt odafigyelni: A tizedespont mérete elhanyagolható a pálcikákhoz képest ezért általában nem egyforma teljesítményű LED van beépítve számára. Tapasztalataim szerint - típustól függően - kb. fele akkora a tizedespont áramszükséglete, mint a többi szegmensé. Ez azt jelenti, hogy amíg a kijelző pálcikái stabilan, jó fényerővel világítanak, addig (ugyanolyan soros ellenállást alkalmazva) a tizedespont vakuként felvillan, majd örökre kialszik. (A LED nem szereti a túlterhelést.) Ezt elkerülendő kétszer akkora ellenállást alkalmazzunk a kijelzőkhöz. Tipikusan 5V-tos tápfesz. esetén zsebszámológépek kijelzőinél 470 ohm a szegmenseknek, 680 ohma DP-nek. Normál, kis kijelzőknél 270 ohm a szegmensnek, 420 ohm a tizedespontnak, míg a nagyobb méretű daraboknál 120 ohm is lehet a korlátozó ellenállások értéke. A kijelző méretével összefügg a szükséges áramerősség, de nincs egyenes arány. Eleve a pontszerű diódákból kirakott, illetve a prizmás fényvezetőjű, kevesebb LED-ből készített típusok se azonos paraméterekkel bírnak.

A katalógusok adatai tehát az egyedül mérvadók, s ildomos a szakember tanácsát kikérni ha bizonytalanok vagyunk.

Miután kijelzőnket bekötöttük, a LED-sorhoz hasonlóan használhatjuk tesztelésre, illetve tanulásra. A konkrét programozásáról azonban következő számunkban lesz szó.

-Azonban, hogy ne unatkozzunk: Addig is házi feladatként tervezzük meg pálcikákból a kilenc számjegyet, illetve az ABC kijelezhető betűit, meg pár érdekesnek tartott karaktert.

Ha ez megvan, akkor az ’a’ - szegmenset a D0 bitre kötve, (majd sorban a többit, D6-ig.) írjuk le bináris kódban a világító/nem világító pálcikák kombinációit, s váltsuk át decimális számokká őket!

-Aki ezt bonyolultnak tartja, az gondolkodjon el azon, hogy miképpen lehetne Knight Rider futófény programot írni a cikk elején ismertetett 8 LED-es vonalkijelzőre?

-S egy két autós sávot, illetve egy gyalogjárdát kiszolgáló rendőrlámpát? J

Ha valakinek nem menne a dolog, az ne keseredjen el! A következő számban meg fogjuk csinálni együtt mindhármat!

Kis Norbert