Hogyan vezérli az MCU az LCD-képernyőt és a tervezési szempontok

2023-07-17

Az egychipes mikroszámítógép osztályozása és alkalmazása
Memóriatípusa szerint az MCU két típusra osztható chip ROM nélkül és chipen ROM-mal. A chipen belüli ROM nélküli chipekhez külső EPROM-hoz kell csatlakoztatni (általában 8031); az on-chip ROM-mal rendelkező chipeket tovább osztják chipen belüli EPROM-ra (tipikusan 87C51), MASK on-chip maszk ROM-ra (általában 87C51) Chip 8051), on-chip Flash típusra (tipikus chip 89C51) és egyéb típusokra.
A rendeltetés szerint általános célú és különleges rendeltetésűre osztható; az adatbusz szélessége és az egyszerre feldolgozható adatbájtok hossza szerint 8, 16 és 32 bites MCU-kra osztható.
Jelenleg a hazai MCU-alkalmazások piaca a legelterjedtebb a fogyasztói elektronika területén, ezt követi az ipari terület és az autóelektronikai piac. A szórakoztató elektronikai cikkek közé tartoznak többek között a háztartási gépek, televíziók, játékkonzolok, valamint audio- és videorendszerek. Az ipari területek közé tartozik az intelligens otthon, az automatizálás, az orvosi alkalmazások, valamint az új energiatermelés és -elosztás. Az autóiparhoz tartoznak az autóipari erőátviteli és biztonsági vezérlőrendszerek stb.
A Shenzhen Hongjia Technology Co., Ltd. 1,14 hüvelykes és 10,1 hüvelykes LCD-képernyők és érintőképernyők kutatás-fejlesztésére, gyártására és értékesítésére specializálódott, amelyek testreszabhatók, és támogatják az MCU-kijelzőket, beleértve az SPI-interfészt, az MCU-interfészt, az RGB-interfészt, MIPI interfész stb. Számos méret és modell létezik, a rezisztív érintőképernyő és a kapacitív érintőképernyő is biztosítható.
Az egychipes mikroszámítógép alapvető funkciója

A legtöbb MCU esetében a következő funkciók a leggyakoribbak és a legalapvetőbbek. A különböző MCU-k leírása eltérő lehet, de lényegében ugyanazok:

1. TIMER (timer): Bár sokféle TImer létezik, két kategóriába sorolhatók: az egyik a fix időintervallumú időzítő, vagyis az időzítést a rendszer állítja be, és a felhasználói program nem vezérelhető. Csak több rögzített időintervallum áll rendelkezésre a felhasználói programok számára, például 32 Hz, 16 Hz, 8 Hz stb. Ez a fajta időzítő gyakoribb a 4 bites MCU-kban, így használható kapcsolódó funkciók, például óra és időzítés megvalósítására. .
A másik típus a Programmable Timer (programozható időzítő). Ahogy a neve is sugallja, az ilyen típusú időzítők időzítési idejét a felhasználó programja szabályozhatja. A vezérlési módszerek a következők: órajelforrás kiválasztása, frekvenciaosztás (Prescale) és előregyártott számbeállítás kiválasztása stb. Egyes MCU-k mindhárommal rendelkeznek egyszerre, míg másokban egy vagy kettő is lehet. Ez a fajta Timer alkalmazás nagyon rugalmas, és a tényleges felhasználás is folyamatosan változik. Az egyik leggyakoribb alkalmazás a PWM kimenet megvalósítása.
Mivel az óra forrása szabadon választható, az ilyen időzítőket általában eseményszámlálókkal kombinálják.
2. IO portok: Bármely MCU rendelkezik bizonyos számú IO porttal. IO portok nélkül az MCU elveszíti a kommunikációs csatornát a külvilággal. Az IO port konfigurációja szerint a következő típusokra osztható:
Tiszta bemeneti vagy tiszta kimeneti port: Ezt a típusú IO portot az MCU hardverterve határozza meg. Csak be- vagy kimenet lehet, szoftverrel valós időben nem állítható be.
Közvetlen olvasási és írási IO portok: Például az MCS-51 IO portjai az ilyen típusú IO portokhoz tartoznak. A read IO port utasítás végrehajtásakor ez egy bemeneti port; írási IO port utasítás végrehajtásakor automatikusan kimeneti port.
Programozás a bemeneti és kimeneti irány beállításához: az ilyen típusú IO port bemenetét vagy kimenetét a program állítja be az aktuális igényeknek megfelelően, az alkalmazás viszonylag rugalmas, és néhány busz szintű alkalmazás is megvalósítható, mint pl. az I2C busz, különféle LCD-k, LED Drivers vezérlő busz stb.
Az IO port használatánál a fontos szempontot kell szem előtt tartani: a bemeneti portnál egyértelmű szintjelzésnek kell lennie, hogy ne lebeghessen (ezt felhúzó vagy pull-up hozzáadásával érhetjük el) lefelé ellenállás); kimeneti portnál a kimenetét Az állapotszintnek figyelembe kell vennie a külső csatlakozását, és meg kell győződni arról, hogy készenléti vagy statikus állapotban nincs áramforrás vagy nyelő.
3. Külső megszakítás: A külső megszakítás a legtöbb MCU alapfunkciója is. Általában jelek valós idejű indítására, adatmintavételre és állapotérzékelésre használják. Többféle megszakítás létezik: felfutó él, lefutó él trigger és szint trigger. A külső megszakításokat általában bemeneti portokon keresztül valósítják meg. Ha IO portról van szó, a megszakítási funkció csak akkor lesz engedélyezve, ha bemenetre van állítva; ha kimeneti portról van szó, akkor a külső megszakítási funkció automatikusan kikapcsol (az ATMEL ATiny sorozatában van néhány kivétel, a kimeneti port is kiválthatja a megszakítási funkciót). A külső megszakítás alkalmazása a következő:
Külső trigger jelek észlelése: az egyik valós idejű követelményeken alapul, mint például a szilícium vezérlésű egyenirányítók vezérlése, a burst jelek észlelése stb., a másik pedig az energiatakarékosság igénye.
A jel frekvenciájának mérése: Annak érdekében, hogy a jel ne maradjon ki, ideális választás a külső megszakítás.
Adatdekódolás: A távirányítós alkalmazások területén a tervezési költségek csökkentése érdekében gyakran szükséges szoftverek használata a különféle kódolt adatok dekódolásához, mint például a Manchester dekódolása és a PWM kódolás.
Kulcsérzékelés és rendszerébresztés: Az alvó állapotba lépő MCU-t általában külső megszakítással kell felébreszteni. A legalapvetőbb forma a kulcs, és a szintváltást a kulcs művelete generálja.
4. Kommunikációs interfész: Az MCU által biztosított kommunikációs interfész általában tartalmaz SPI interfészt, UART, I2C interfészt stb., amelyek leírása a következő:
SPI interfész: Ez a típusú interfész a legtöbb MCU által biztosított legalapvetőbb kommunikációs módszer. Adatátvitelét szinkron óra vezérli. A jelek a következők: SDI (soros adatbemenet), SDO (soros adatkimenet), SCLK (soros órajel) és Ready jel; bizonyos esetekben előfordulhat, hogy nincs kész jel; ez a fajta interfész működhet Master módban vagy Slave módban, a népi mondás az, hogy lássuk, ki adja az órajelet, az órát adó fél a mester, és a másik fél Akkor a Slaver.
UART (Universal Asynchronous Receive Transmit): Ez a legalapvetőbb aszinkron átviteli interfész. Jelvonalai csak Rx és Tx. Az alap adatformátum a következő: Kezdő bit + adatbit (7 bit/8 bit) + paritásbit (páros, páratlan vagy semmi) + leállító bit (1–2 bit). Az egy bit adathoz szükséges időt átviteli sebességnek (baud rate) nevezzük.
A legtöbb MCU esetében az adatbitek hossza, az adatellenőrzési módszer (páratlan ellenőrzés, páros ellenőrzés vagy nincs ellenőrzés), a stopbit hossza (Stop Bit) és az adatátviteli sebesség rugalmasan beállítható programozással. Biztosan. Az ilyen típusú interfész leggyakrabban használt módja a számítógép soros portjával való kommunikáció.
I2C interfész: Az I2C a Philips által kifejlesztett adatátviteli protokoll, amelyet szintén két jel valósít meg: SDAT (soros adatbevitel és kimenet) és SCLK (soros órajel). Legnagyobb előnye, hogy több eszköz csatlakoztatható erre a buszra, amely címeken keresztül azonosítható és elérhető; az I2C busz egyik legnagyobb előnye, hogy nagyon kényelmes szoftverrel megvalósítani az IO porton keresztül, és az átviteli adatsebességét teljes mértékben az SCLK szabályozza. A vezérléshez az UART interfésszel ellentétben lehet gyors vagy lassú , amelyre szigorú sebességi követelmények vonatkoznak.
5. Watchdog (watchdog timer): A Watchdog a legtöbb MCU alapkonfigurációja is (egyes 4 bites MCU-k nem rendelkeznek ezzel a funkcióval), és a legtöbb MCU Watchdog csak az alaphelyzetbe állítást engedélyezi a programoknak, és nem tudja visszaállítani őket. Le van zárva (egyesek a program beégetésekor vannak beállítva, mint például a Microchip PIC sorozatú MCU), és egyes MCU-k határozzák meg, hogy meg kell-e nyitni bizonyos módon, például a Samsung KS57 sorozata, mindaddig, amíg a program hozzáfér a Watchdog regiszterhez. , automatikusan bekapcsol, és nem kapcsolható ki újra. Általánosságban elmondható, hogy a watchdog visszaállítási ideje programonként állítható be. A Watchdog legalapvetőbb alkalmazása, hogy ön-helyreállítási lehetőséget biztosítson az MCU számára, ha váratlan hibák miatt összeomlik.

Mikrokontroller programozás
Nagy különbség van az MCU programok programozása és a PC programok programozása között. Bár a C-alapú MCU fejlesztőeszközök egyre népszerűbbek, egy hatékony programkód és egy assembly-t használni szerető tervező számára assembly nyelv Még mindig a legtömörebb és leghatékonyabb programozási nyelv.

Az MCU programozásnál az alapvető keretrendszere nagyjából azonosnak mondható, általában három részre osztható: inicializálási rész (ez a legnagyobb különbség az MCU programozás és a PC programozás között), a fő programhurok törzse és a megszakítás feldolgozó program, amelyek ill. a következőképpen magyarázta:
1. Inicializálás: Minden MCU program tervezésénél az inicializálás a legalapvetőbb és legfontosabb lépés, amely általában a következőket foglalja magában:
Az összes megszakítás maszkolása és a veremmutató inicializálása: Az inicializálási rész általában nem akarja, hogy megszakítások történjenek.
A rendszer RAM területének törlése és megjelenítése Memória: Bár néha nem feltétlenül szükséges, a megbízhatóság és a konzisztencia szempontjából, különösen a véletlen hibák elkerülése érdekében, jó programozási szokások kialakítása javasolt.
IO port inicializálása: A projekt alkalmazási követelményeinek megfelelően állítsa be a megfelelő IO port bemeneti és kimeneti módját. A bemeneti porthoz be kell állítani annak felhúzási vagy lehúzási ellenállását; a kimeneti portnál be kell állítani a kezdeti kimeneti szintet a szükségtelen hibák elkerülése érdekében.
Megszakítási beállítások: Minden megszakítási forrásnál, amelyet a projektben használni kell, engedélyezni kell, és be kell állítani a megszakítások triggerfeltételeit, míg a nem használt redundáns megszakításoknál ki kell kapcsolni.
Egyéb funkcionális modulok inicializálása: Az MCU minden használni kívánt perifériás funkcionális modulja esetében a megfelelő beállításokat kell elvégezni a projekt alkalmazási követelményeinek megfelelően, mint például az UART kommunikáció, az adatátviteli sebesség, az adathossz, az ellenőrzési módszer és a Stop A bitet be kell állítani A hosszt stb., a Programmer Timer esetében pedig be kell állítani az órajelforrást, a frekvenciaosztást és az adatok újratöltését stb.
Paraméterek inicializálása: Az MCU hardverének és erőforrásainak inicializálásának befejezése után a következő lépés néhány, a programban használt változó és adat inicializálása. Ennek a résznek az inicializálását az adott projektnek és a program általános elrendezésének megfelelően kell megtervezni. Egyes alkalmazásoknál, amelyek EEPROM-ot használnak a projekt előre gyártott adatainak mentésére, javasolt a megfelelő adatokat az MCU RAM-jába másolni az inicializálás során, hogy javítsák a program hozzáférési sebességét az adatokhoz és csökkentsék a rendszer energiafogyasztását (elvileg , a külső EEPROM-hoz való hozzáférés növeli a tápegység energiafogyasztását).
2. A főprogram ciklustörzs: A legtöbb MCU folyamatosan, hosszú ideig fut, így a fő programtörzs alapvetően ciklikusan van kialakítva. Több működési móddal rendelkező alkalmazások esetén több A huroktestet az állapotjelzőn keresztül konvertálják egymás között. A fő programtörzs esetében általában a következő modulok vannak elrendezve:
Számoló program: A számítási program általában időigényes, ezért határozottan ellenzi a megszakítások feldolgozását, különösen a szorzási és osztási műveleteket.
Olyan programok feldolgozása, amelyeknek valós idejű igénye alacsony vagy nincs valós idejű követelmény;

Kijelző átviteli program: főleg külső LED-del és LCD meghajtóval rendelkező alkalmazásokhoz.
3. Megszakítás-feldolgozó program: A megszakítási programot elsősorban nagy valós idejű igényű feladatok és események feldolgozására használják, mint például külső hirtelen jelzések észlelése, billentyűk észlelése és feldolgozása, időzítés számlálása, LED-kijelző szkennelése stb.
Általánosságban elmondható, hogy a megszakító programnak a kódot a lehető legtömörebbnek és rövidnek kell tartania. Azoknál a függvényeknél, amelyeket nem kell valós időben feldolgozni, beállíthatjuk a trigger jelzőt a megszakításban, majd a főprogram végrehajtja az adott tranzakciót – ez nagyon fontos. Különösen a kis teljesítményű, kis sebességű MCU-k esetében szükséges minden megszakításra időben reagálni.
4. A különböző feladattestek elrendezéséhez a különböző MCU-k eltérő feldolgozási módszerekkel rendelkeznek:
Például kis sebességű, kis fogyasztású MCU (Fosc=32768Hz) alkalmazásoknál, figyelembe véve, hogy ezek a projektek mind kézi eszközök, és közönséges LCD-kijelzőket használnak, a gombokra és kijelzőkre adott válasz nagy valós idejű teljesítményt igényel, ezért általában az időzített megszakítások gombműveletek feldolgozására és adatmegjelenítésre szolgálnak; nagysebességű MCU-k esetében pedig, mint például a Fosc>1MHz alkalmazások, mivel az MCU-nak jelenleg van elég ideje a fő programhurok törzsének végrehajtására, csak megszakítható a megfelelő Különböző trigger jelzők beállítása menüpontban, és tegyen minden feladatot a fő programtörzsben végrehajtandó.
5. Az MCU programozási tervezésében még egy pont, amely különös figyelmet igényel:

A megszakításban és a fő programtörzsben ugyanazon változó vagy adat egyidejű elérésének vagy beállításának megakadályozása. Hatékony megelőzési módszer az ilyen adatok feldolgozásának modulban való megszervezése, és a trigger jelző jelzése alapján annak meghatározása, hogy végre kell-e hajtani az adatok megfelelő műveletét; míg más programtestekben (főleg megszakítások) a feldolgozandó adatok A feldolgozási hely csak a kiváltott jelzőt állítja be. - Ez biztosítja, hogy az adatok végrehajtása kiszámítható és egyedi legyen.

Mikrokontroller fejlesztési készségek

1. Hogyan lehet csökkenteni a programhibákat
A programhibák csökkentéséhez először a következő tartományon túli felügyeleti paramétereket kell figyelembe vennie, amelyeket figyelembe kell venni a rendszer működése során.
Fizikai paraméterek: Ezek a paraméterek elsősorban a rendszer bemeneti paraméterei, ideértve a gerjesztési paramétereket, a működési paramétereket az adatgyűjtés és feldolgozás során, valamint az eredmény paramétereket a feldolgozás végén.

Erőforrás paraméterek: Ezek a paraméterek főként a rendszerben lévő áramkörök, eszközök és funkcionális egységek erőforrásait jelentik, mint például a memóriakapacitás, a tárolóegység hossza és a halmozási mélység.
Alkalmazási paraméterek: Ezek az alkalmazási paraméterek gyakran egyes egychipes mikroszámítógépek és funkcionális egységek alkalmazási feltételeit jelentik. Folyamatparaméterek: Azokra a paraméterekre utal, amelyek a rendszer működése során rendezetten változnak.


2. Hogyan javítható a C nyelvű programozási kód hatékonysága
Az egychipes mikroszámítógépek fejlesztésében és alkalmazásában elkerülhetetlen tendencia, hogy a C nyelvet használják az egychipes mikroszámítógép-program megtervezéséhez. Ha C nyelven programozva a legnagyobb hatékonyságot szeretné elérni, akkor a legjobb, ha ismeri az Ön által használt C fordítót. Először tesztelje az egyes lefordított C nyelveknek megfelelő utasítássorok számát assembly nyelven, hogy egyértelműen tudhassa a hatékonyságot. A jövőbeni programozás során használja a legmagasabb fordítási hatékonyságú utasítást. Minden C fordítónak vannak bizonyos különbségei, így a fordítási hatékonyság is eltérő lesz. Egy kiváló beágyazott rendszer C fordítójának kódhossza és végrehajtási ideje mindössze 5-20%-kal hosszabb, mint az assembly nyelven írt azonos funkciószint.

Bonyolult, szűk fejlesztési idővel rendelkező projekteknél használható a C nyelv, de az a feltevés, hogy nagyon jól ismeri az MCU rendszer C nyelvét és C fordítóját, és fordítson különös figyelmet azokra az adattípusokra és algoritmusokra, amelyeket a C fordítórendszer. támogatni tudja. Bár a C nyelv a legelterjedtebb magas szintű nyelv, a különböző MCU-gyártók C nyelvű fordítási rendszerei eltérnek, különösen egyes speciális funkciómodulok működésében. Tehát ha nem érted ezeket a funkciókat, akkor sok probléma lesz a hibakeresésben, ami az assembly nyelvnél alacsonyabb végrehajtási hatékonyságot eredményez.

3. Az egychipes mikroszámítógép interferencia-elhárítási problémájának megoldása Az interferencia megelőzésének leghatékonyabb módja az interferencia forrásának eltávolítása és az interferencia út elvágása, de ez gyakran nehézkes, ezért csak az elég erős-e az egychipes mikroszámítógép interferencia-elhárító képessége. Miközben javítja a hardverrendszer zavarásgátló képességét, a szoftveres zavarásgátlót rugalmas kialakítása jellemzi,
X
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. By using this site, you agree to our use of cookies. Privacy Policy