PIC Mikrokontroller LCD Kijelző Vezérlésének Alapjai
Néhány éve már jelen vannak az elektronikai piacon a mikrovezérlők, sőt mondhatni, hogy a mikrokontrollerek gyártása mára már külön iparággá nőtte ki magát. A fejlődés szédületes sebességgel zajlik ezen a területen, folyamatosan jelentenek be több új típust, az integráltsági szint egyre magasabb, a teljesítmény és hatékonyság folyamatosan növekszik. Több cég is gyárt mikrovezérlőket, és annál is több cég alkalmazza a különféle kontrollereket saját termékeikben is. Ebben a cikkben a Microchip PIC mikrovezérlőinek használatára, különösen az LCD kijelzők vezérlésére fókuszálunk, feltárva az alapokat és a gyakorlati megvalósításokat.
Mi az a PIC Mikrokontroller?
A PIC mikrovezérlő egy olyan mikrovezérlő típus, amelyet a Microchip Technology fejlesztett ki, és korábban Peripheral Interface Controller, röviden PIC néven futott. Én a Microchip mikrovezérlőit választottam, mivel hazánkban ezen cég termékválasztéka és terméktámogatása a legnagyobb jelenleg. A RISC-alapú architektúra kiemelkedő szerepet játszik minden PIC mikrovezérlő CPU-magban. Ezen tervek szépsége a kis utasításkészlet, ami gyorsabb végrehajtást és alacsonyabb energiafogyasztást eredményez, valamint számos egyéb többletterhelés csökkentését.
Teljesítményük a mikrovezérlő családjától függően változik. A RISC architektúra teljesítményhatékonysága megbízható végrehajtást és konzisztenciát biztosít, így a PIC mikrovezérlők ideálisak az időérzékeny beágyazott alkalmazásokhoz. Például az alacsonyabb szintű 8 bites PIC mikrovezérlők több száz bájt SRAM-mal és több kilobájt Flash memóriával vannak felszerelve, és tökéletesen alkalmasak olyan egyszerű műveletekre, mint az érzékelőadatok olvasása vagy a LED-ek villogtatása. Eközben a magasabb szintű 32 bites PIC mikrovezérlők több megabájt Flash memóriával és több kilobájt SRAM-mal vannak felszerelve, ami alkalmassá teszi őket olyan feladatokra, mint a multimédia-feldolgozás vagy a valós idejű alkalmazások végrehajtása.
A PIC mikrovezérlők általában a szórakoztatóelektronikában, az ipari automatizálásban, az autóipari rendszerekben és a kisebb barkácsprojektekben találhatók. Ezek a modulok nem igényelnek külső alkatrészeket. Ezek a kiegészítők könnyen csatlakoztathatók nagyobb rendszerekbe, és számos eszköz csatlakoztatásában segítenek. Példaként említhető egy intelligens termosztát, amely UART-ot használhat a kijelzővel való kommunikációhoz, és I2C-t az érzékelőktől érkező adatok fogadásához. Akár belső, akár külső, a PIC mikrovezérlők órajel-rendszere oszcillátorok széles skáláját használja. Mindkét szempont felgyorsítja a munkasebességet és növeli a felhasznált energiát. A frekvencia dinamikus változásai és a megnövekedett energiatakarékos állapotok lehetővé teszik az energia hatékonyabb felhasználását. A beágyazott rendszerekben a PIC mikrovezérlők alapvető technológiát képviselnek.
PIC Mikrokontrollerek Programozása
Nap mint nap kapom azt a kérdést, hogy mi is kell mikrokontrollerek programozásához, hogyan kell elindulni, mi szükséges hozzá. Programozással 2009-ben kezdtem el foglalkozni. Programjaimat assembly nyelven kezdtem el írni. Ez a programozási nyelvek között a legalsó szinten található, ami nem az egyszerűségére utal, hanem éppen ellenkezőleg, a fő nehézsége ennek a programozási nyelvnek. Nem az emberi gondolkodáshoz áll közel, hanem a „gépi gondolkodáshoz”, mivel ettől gépiesebb kód már csak a hexa állomány amit a programmemóriába töltünk. Ennél a nyelvnél tisztában kell lenni a kontroller legutolsó részletével is, az utasítás-végrehajtástól kezdve a regisztereken át a perifériákig. Nem ritkák a bitszintű utasítások sem. Bonyolultságának viszont megvan az a nagy előnye, hogy assembly nyelven lehet megírni a legrövidebb, és leggyorsabban futó, leghatékonyabb programokat. Hátránya, hogy egy nagyobb méretű szoftver megírása több időt igényel, illetve többet kell foglalkozni a hardverszintű dolgokkal is. Emiatt később már a nagyobb bonyolultságú és számítási igényű programjaimat C és C++ nyelven írom.
LCD kijelző vezérlési útmutató
A leggyorsabb tanulási útvonal a PIC programozáshoz, ha letöltjük az MPLAB X IDE legújabb verzióját (v6.x) és az XC8/XC16 fordítót. Kezdjük az MCC-vel (MPLAB Code Configurator) - GUI-alapú periféria-beállítás generálja az inicializálási kódot. Használja a Harmony v3-at PIC32 eszközökhöz - átfogó illesztőprogram és middleware könyvtár. Gyakoroljunk példaprojektekkel: Kezdjük a LED villogtatással, majd UART, aztán ADC, végül SD kártya. Nyelv kiválasztása: Használjon C nyelvet (XC8/XC16/XC32 fordítók) assembly helyett. A Microchip fordítói hatékony kódot generálnak, és az MCC eszköz jelentősen csökkenti a tanulási görbét.
PIC Programozás, MikroC-nyelven. #01 - Bevezető, 8 led kigyujtása
LCD Kijelzők Vezérlése PIC Mikrokontrollerrel
A PIC mikrokontrollerek számos kijelzőt képesek vezérelni, a választás a projekt igényeitől függ. A LCD kijelző kiválasztása kulcsfontosságú. Íme egy táblázat az ajánlott kijelzőtípusokról:
| Típus | Vezérlő | Interfész | Felbontás | Ajánlás |
|---|---|---|---|---|
| Karakteres | HD44780 | 4/8 bites párhuzamos | 16x2, 20x4 | Alapvető kijelző |
| Grafikus | ST7565R | SPI | 128x64 | Fejlett UI |
| Grafikus | ILI9341 | SPI | 320x240 | Teljes színű |
| OLED | SSD1306 | I2C/SPI | 128x64 | Alacsony fogyasztás |
Karakteres LCD Kijelzők és a HD44780
A leggyakoribb karakteres LCD-k a HD44780 vezérlővel készültek. Kaptam egy szatyor bontott 2x16-os LCD modult (HD44780) egy régi "Matáv" os kollégától. Nyilvános telefonfülkék telefonkészülékeiben voltak eredetileg. Az inicializálás nélküli LCD modul táp ráadása után a felső sorban végig fekete kockákat jelenít meg. Tehát az alap működés ellenőrzéséhez elég, ha tápot kap (1pin - GND / 2pin - VCC) + ha a kontraszt lábat (VO) GND-re húzom mondjuk 2,2K-val, akkor a fent említett fekete kockákat kell lássuk a felső sorban. Ez az info elég az átválogatáshoz, aztán biztosan lesznek még kérdések, ha használni is szeretnék a modulokat. Az RW lábat ha nem vezérled, akkor GND-re kell kötni, így megtakaríthatsz egy lábat a mikrokontrolleren.
Az I2C LCD modul egy 4x20-as LCD vezérlését teszi lehetővé egy PCF8574-re épülő I2C LCD modullal. Ez jelentősen egyszerűsíti a vezetékezést a mikrokontroller felé.
Speciális Kijelzők és Egyedi Illesztőprogramok
Ez a cikk egy LCD kijelző vezérlésének kapcsolási rajzát mutatja be, beleértve a reléket, egy valós idejű órát (RTC) és a tápegységet. Az áramkör célja, hogy egy mikrokontroller (PIC) segítségével vezéreljen egy EA-DOGM típusú LCD kijelzőt, és relékkel kapcsoljon külső eszközöket. Ennek a kijelzőnek speciális vezérlés kell, NEM KOMPATIBILIS A HD driverrel. Normál LCD kijelző meghajtó driverek nem jók hozzá. Így írnom kellett egy sajátot, az EA-DOGM kijelző adatlapja alapján. Az általam küldött driver-nél az elején beállítod a lábakat (ahogy kézre esik), és utána mindennek menni kell.
Részletes útmutató Sony kijelzőkhöz
Gyakorlati Áramköri Megoldások és Példák
Jelenlegi tudásom és ezen a területen szerzett 5 éves tapasztalatom már elegendő ahhoz, hogy megrendelésre készítsek egyedi áramköröket, melyekben mikrokontroller látja el a fő feladatokat, ezzel együtt a szoftver kifejlesztését is magam végzem. Amennyiben ilyen áramkörrel kapcsolatos igényed lenne, bátran keress fel.
Szauna Vezérlő Automatikája - Egy Példa a Komplett Rendszerre
2010-ben már nagyobb fejlesztőmunkát is vállaltam, ennek eredménye a honlapon is megtalálható komplett szauna vezérlő automatika, valamint ebben az időben épített kisebb áramkörök, vezérlések. Ezek nagyrésze még tisztán assembly nyelven íródtak.
LCD Kijelző Vezérlő Áramkör Részletes Bemutatása
A következőkben egy konkrét LCD kijelző vezérlő áramkör felépítését és működését részletezzük, amely PIC mikrokontrollert használ:
Az Áramkör Főbb Részei
- Relék: 4 kimenethez 4 relé tartozik. A reléket kapcsoló tranzisztorok előtét ellenállása attól függ, hogy milyen relét teszel bele, és milyen tranzisztorral kapcsolod őket. Én itt a helyhiány miatt kis Omron reléket használtam.
- Tranzisztorok: A tranzisztorok típusa igazából lényegtelen, az az egy fontos, hogy NPN legyen, és tudjon kapcsolni max. 100mA-t.
- RTC (Valós Idejű Óra): A relék mellett balra található a DS1302, ami maga az RTC. Az órát megvalósíthattam volna a PIC-el is, de akkor sajnos áramszünet esetén elfelejti a PIC az időt. Ha meg backup akksit teszek bele a PIC működtetésére, akkor már ennyi erővel egyszerűbb egy 10-ed annyi fogyasztású RTC-t belerakni. Azért választottam ezt az RTC típust, mert megoldja "tokon belül" a töltés szabályzást. Ezzel a 3,6V-os backup akksival több hétig is elketyeg az órája.
- Tápegység: Bal alsó sarokban található a tápegység része. Egy 230/12V-os nyáktrafót használtam, egy egyszerű diódás egyenirányítást és egy 7805-ös feszültség stabilizátort. Erre a stabilizátorra nem kell hűtés, mert egyedül akkor növekszik meg a fogyasztás, mikor a kijelző háttérvilágítása megy, ekkor elkezd melegedni, de mivel automatikusan kikapcsol a világítás, így nem kell foglalkozni vele.
- Kapcsolók: A PORTB-n lévő hüvelysáv a kapcsolóknak van.
- LCD Kijelző: A PORTC-re van kötve az EA-DOGM kijelző. Ennek a kijelzőnek speciális vezérlés kell, NEM KOMPATIBILIS A HD driverrel. Így írnom kellett egy sajátot, az EA-DOGM kijelző adatlapja alapján.
Alkatrészek összefoglaló táblázata
| Alkatrész | Típus/Érték | Megjegyzés |
|---|---|---|
| Relé | Omron (kis méretű) | 4 db, a kimenetekhez |
| Tranzisztor | NPN | Max. 100mA kapcsolás |
| RTC | DS1302 | Valós idejű óra, belső töltésszabályzással |
| Táptrafó | 230/12V | Nyákra szerelhető |
| Feszültség stabilizátor | 7805 | Nem igényel hűtést normál üzemben |
| Kapcsolók | PORTB csatlakozás | Hüvelysávon keresztül |
| LCD Kijelző | EA-DOGM | PORTC csatlakozás, egyedi driver szükséges |
Szimuláció és Hibakeresés a TINA Programmal
A TINA számos mikrokontroller (PIC, AVR, Arduino, 8051, HCS, STM, ARM, TI-Tiva, TI-Sitara, Infineon-XMC, ESP32) szimulációjára alkalmas; új MCU-kat folyamatosan adnak hozzá. Láthatja, módosíthatja és hibakeresheti a processzorban futó programot, és természetesen létrehozhat saját kódot is. A TINA programban a mikrokontrollerek használatának két módja van. Használhatja a szabványos fordító program által készített bináris kódot és nyomkövető fájlt (pl. MPLAB a PIC-khez) vagy egyszerűen csak betöltheti az assembly kódot a TINA futtatásához és lépésenkénti követéséhez a beépített assembly nyomkövető (debugger) segítségével. A TINA programban a mikrokontrollerek nemcsak önállóan, hanem analóg, digitális, HDL vagy más modellekkel együtt is szimulálhatók.
MCU Kód Futtatása és Szerkesztése
Töltse be a PIC Flasher.TSC áramkört a EXAMPLES\Microcontrollers\PIC mappából. Az alábbi 16F73 PIC mikrokontrollert tartalmazó kapcsolási rajz egy egyszerű számlálót valósít meg. Kattintson duplán az MCU-ra az ASM-kód megtekintéséhez. A TINA program nagyszerű tulajdonságai közé tartozik, hogy a forráskódot közvetlenül a TINA-ban (akár futtatás közben is) szerkesztheti és módosíthatja.
így állítsa be a Ford Transit fedélzeti kijelzőjét
A Nyomkövető Használata
Nézzünk meg egy másik, több interaktivitást tartalmazó példát! Töltse be a PIC16F84interrupt_rb0.TSC példáját a TINA Examples\Microcontrollers\PIC mappából. A hibakereső aktiválásához válassza az Elemzés menü Option elemét. Ezután jelölje be az „MCU-kód hibakereső engedélyezése jelölőnégyzetet”. A programot lépésenként is követhetjük. Töréspont (breakpoint) megadása a kiválasztott sornál. Egy adott sor eléréséhez használjuk a töréspontokat, ilyenkor nyomjuk meg a gombot. A végrehajtást folytathatja innen.