A kijelző a gép szükséges része, legyen szó akár háztartási gépekről, akár ipari gépekről. A kijelző nem csak a gép működtetésének vezérlési lehetőségeit mutatja, hanem az adott gép által végrehajtott feladat állapotát és kimenetét is. Sok típusú kijelzők használt elektronika, mint a 7-szegmenses kijelző, LCD kijelző, TFT érintőképernyős kijelző, LED kijelző, stb 16x2 LCD kijelző a legalapvetőbb egyik és használt kijelző néhány kisebb elektronikai eszközök, tettünk sok 16x2 LCD-t használó projektek, beleértve az alapvető interfészt más mikrovezérlőkkel:
- LCD interfész a 8051 mikrokontrollerrel
- Összekötő LCD és ATmega32 mikrovezérlő
- LCD interfész a PIC mikrovezérlővel
- Összekötő 16x2 LCD és Arduino
- 16x2 LCD interfész a Raspberry Pi-vel Python használatával
Ebben az oktatóanyagban megtudhatjuk, hogyan lehet egy 16x2-es LCD-t összekapcsolni az ARM7-LPC2148 mikrovezérlővel, és hogyan lehet megjeleníteni egy egyszerű üdvözlő üzenetet. Ha még nem ismeri az ARM7-et, akkor kezdje az ARM7 LPC2148 alapjaival, és ismerje meg, hogyan programozható a Keil uVision használatával
Szükséges anyagok
Hardver
- ARM7-LPC2148 mikrokontroller kártya
- LCD (16X2)
- Potenciométer
- 5 V feszültségszabályozó IC
- Kenyérlemez
- Vezetékek csatlakoztatása
- 9V-os akkumulátor
- Mikro USB kábel
Szoftver
- Keil uVision 5
- Magic Flash Tool
A projektbe való belépés előtt néhány dolgot tudnunk kell az LCD működési módjairól és az LCD Hex kódokról.
16X2 LCD kijelző modul
Egy 16X2-es LCD azt mondja, hogy 16 oszlopa és 2 sora van. Ez az LCD 16 tűs. A kép és a táblázat alatt láthatók az LCD kijelző csapnevei és funkciói.
NÉV |
FUNKCIÓ |
VSS |
Talajcsap |
VDD |
+ 5V bemeneti tű |
VEE |
Kontraszt beállító csap |
RS |
Regisztráció Válassza ki |
R / W |
Read / Write Pin |
E |
PIN engedélyezése |
D0-D7 |
Data Pins (8 Pins) |
LED A |
Anódtüske (+ 5V) |
LED K |
Katódtű (GND) |
Az LCD kétféle módban működhet, nevezetesen a 4-bites és a 8-bites módban. 4 bites módban az adatrágást nibble-el küldjük, először a felső, majd az alsó nibble-t. Azok számára, akik nem tudják, mi a rágcsálás: a rágcsálás négy bitből álló csoport, így a bájt alsó négy bitje (D0-D3) alkotja az alsó rágcsálást, míg a felső négy bit (D4-D7) bájtból a magasabb rágódás. Ez lehetővé teszi számunkra, hogy 8 bites adatokat küldjünk.
Míg 8 bites módban a 8 bites adatokat közvetlenül egy lökettel elküldhetjük, mivel mind a 8 adatsort használjuk.
Ebben a projektben a leggyakrabban használt módot fogjuk használni, amely a 4 bites mód. Négy bites üzemmódban 4 érintkezős mikrovezérlőt takaríthatunk meg, és csökkenthetjük a kábelezés rezsit is.
A 16x2 a HEX kódot is használja bármilyen parancs elfogadásához, sok hexa parancs létezik az LCD számára, például a kurzor mozgatásához, az üzemmód kiválasztásához, a vezérlés második sorra tolásához stb. Ha többet szeretne tudni a 16X2 LCD kijelző modulról és a hex parancsokról, kövesse a linket.
Áramkör és kapcsolatok
Az alábbi táblázat az LCD és az ARM7-LPC2148 közötti áramköri kapcsolatokat mutatja.
ARM7-LPC2148 |
LCD (16x2) |
P0.4 |
RS (Regisztráció kiválasztása) |
P0.6 |
E (engedélyezés) |
P0.12 |
D4 (4. adatcsap) |
P0.13 |
D5 (5. adat tű) |
P0.14 |
D6 (6. adat tű) |
P0.15 |
D7 (7. adat tű) |
A feszültségszabályozó csatlakozásai LCD és ARM7 bottal
Az alábbi táblázat bemutatja az ARM7 és az LCD feszültségszabályozóval való kapcsolatait.
Feszültségszabályozó IC |
Pin funkció |
LCD és ARM-7 LPC2148 |
1. Bal tű |
+ Ve az akkumulátor 9V-os bemenetéről |
NC |
2. Központi tű |
- Az akkumulátortól |
LCD VSS, R / W, K ARM7 GND-je |
3. Jobb csap |
Szabályozott + 5 V kimenet |
VDD, A LCD + 5 V ARM7 |
Potenciométer LCD-vel
Az LCD kijelző kontrasztjának változtatására egy potenciométert használnak. Egy edénynek három érintkezõje van, a bal tüske (1) + 5V-ra van csatlakoztatva, a középsõ (2) az LCD-modul VEE-jére vagy V0-jára, a jobb oldali tüskéje (3) pedig a GND-re van csatlakoztatva. A gomb elforgatásával beállíthatjuk a kontrasztot.
Jumper beállítások
Az ARM7-Stick-ben található egy jumper-tű, így az USB használatával vagy csak 5 V DC bemenet használatával áramellátást és feltöltést végezhetünk. Az alábbi képeket láthatja.
Az alábbi képen látható, hogy az áthidaló DC helyzetben van. Ez azt jelenti, hogy a kártyát külső 5V-os tápfeszültségről kell táplálnunk.
Ez a kép azt mutatja, hogy a jumper USB módban van csatlakoztatva. Itt a tápellátás és a kód a micro usb porton keresztül történik.
MEGJEGYZÉS: Itt ebben az oktatóanyagban feltöltöttünk egy kódot az USB használatával úgy, hogy az áthidalót USB-re állítottuk, majd az áthidalót DC üzemmódra változtattuk, hogy az LPC2148 tápellátását a szabályozó 5 V-os bemenetéről kapjuk. Ezt megnézheti a végén megadott videóban.
A 16x2 LCD és az ARM7 mikrovezérlő összekapcsolásának utolsó áramköre így fog kinézni:
Az ARM7-LPC2148 programozása
Az ARM7-LPC2148 programozásához szükségünk van keil uVision és Flash Magic eszközre. USB-kábellel programozzuk az ARM7 Stick-et mikro USB-porton keresztül. Kódot írunk a Keil segítségével, és létrehozunk egy hex fájlt, majd a HEX fájlt a Flash Magic segítségével az ARM7 pálcára villantjuk. Ha többet szeretne megtudni a keil uVision és a Flash Magic telepítéséről és használatáról, kövesse az Első lépések az ARM7 LPC2148 mikrovezérlővel linket és programozza be a Keil uVision használatával.
Az LCD és az ARM 7 összekapcsolásának teljes kódja ennek az oktatóanyagnak a végén található, itt néhány részt elmagyarázunk.
Először be kell illesztenünk a szükséges fejlécfájlokat
#include
Az LCD modul inicializálása nagyon fontos lépés. Itt bizonyos HEX kódokat használunk, amelyek valójában parancsok, hogy az LCD-nek elmondjuk a működési módot (4-bites), az LCD-típust (16x2), a kezdősort stb.
void LCD_INITILIZE (void) // Funkció az LCD előkészítéséhez { IO0DIR = 0x0000FFF0; // beállítja a P0.4, P0.6, P0.12, P0.13, P0.14, P0.15 csapokat OUTPUT delay_ms (20); LCD_SEND (0x02); // Lcd inicializálása 4 bites üzemmódban LCD_SEND (0x28); // 2 sor (16X2) LCD_SEND (0x0C); // Megjelenítés a kurzoron ki LCD_SEND (0x06); // Automatikus növekedési kurzor LCD_SEND (0x01); // Kijelző tiszta LCD_SEND (0x80); // Az első sor első pozíciója }
A 4 bites üzemmódban más típusú írási funkcióval rendelkezünk a csapokhoz, vagyis a felső és az alsó rágcsálással. Lássuk, hogyan történik
void LCD_SEND (char parancs) // Funkció hexadarab parancsok küldéséhez nibble nibble szerint { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((parancs & 0xF0) << 8)); // Küldje el az IO0SET = 0x00000040 parancs felső csomópontját ; // HIGH IO0CLR = 0x00000030 engedélyezése ; // RS & RW LOW késleltetés_ms (5); IO0CLR = 0x00000040; // LOW delay_ms (5) engedélyezésének engedélyezése ; IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((parancs & 0x0F) << 12)); // Küldje el az IO0SET = 0x00000040 parancs alsó csattanóját; // MAGAS ENABLE IO0CLR = 0x00000030; // RS & RW LOW késleltetés_ms (5); IO0CLR = 0x00000040; // ALACSONY késleltetés_ms (5); }
Nibble küldési logika
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((parancs & 0x0F) << 12)); // Az IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((parancs & 0xF0) << 8)) alsó parancsának elküldése // Küldje el a parancs felső csípését
Két fenti állítás fontos szerepet játszik ebben a programban. Az első parancs az alsó, a második a felső fogást küldi. Ez anélkül, hogy befolyásolná a többi csapot, amit csinálunk. Lássuk, hogyan történik, mielőtt először megismerjük ezt a logikát
ORing- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
Tehát maszkolási koncepciót és logikai váltási műveletet használunk anélkül, hogy a többi csapot befolyásolnánk. Azt jelenti, hogy csak a csapokat (P0.12-P0.15) használják, és más csapokat, például a P0.4, P0.6, nem érint. Ez úgy történik, hogy az adatokat négy bitben eltolja, és a felső rágcsálást az alsó rágcsálás helyére teszi, és a felső rágcsálást elfedi. Ezután az alsó biteket nullára (0XF0) és ORed-re tesszük a nibble adatokkal, hogy a kimeneten a felső nibble adatokat kapjuk.
Hasonló eljárást alkalmaznak az alacsonyabb rágcsálási adatokhoz, de itt nem kell áthelyeznünk az adatokat.
Bár az adatok írása a kimeneti, azaz a parancs módban RS alacsonynak kell lennie, és hogy végre lehetővé magasnak kell lennie, és az adat üzemmódban RS magasnak kell lennie, és hogy végre lehetővé magasnak kell lennie.
Most a kimeneten nyomtatandó karakterláncadatok küldéséhez ugyanezt az elvet használja a nibble by nibble. Fontos lépés itt a REGISTER SELECT (RS) HIGH értéknek kell lennie az adatmódhoz.
void LCD_DISPLAY (char * msg) // Funkció az egyesével elküldött karakterek kinyomtatására { uint8_t i = 0; míg (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // Felső rágcsálást küld IO0SET = 0x00000050; // RS HIGH & ENABLE HIGH az adatok kinyomtatásához IO0CLR = 0x00000020; // RW LOW Írási mód késleltetése ms (2); IO0CLR = 0x00000040; // EN = 0, RS és RW változatlan (azaz RS = 1, RW = 0) késleltetési ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F) << 12)); // Alsó rágcsálást küld IO0SET = 0x00000050; // RS & EN HIGH IO0CLR = 0x00000020; késleltetés ms (2); IO0CLR = 0x00000040; késleltetés ms (5); i ++; }
A teljes kódolási és bemutató videó az alábbiakban található.