- Reikalingos medžiagos
- 16X2 LCD ekrano modulis
- Grandinės schema ir jungtys
- Programavimas ARM7-LPC2148
Ekranas yra būtina mašinos dalis, nesvarbu, ar tai buitinė, ar pramoninė mašina. Ekrane rodomos ne tik valdymo parinktys valdant mašiną, bet ir rodoma tos mašinos atliktos užduoties būsena ir išvestis. Elektronikoje naudojami daugybė ekranų tipų, tokių kaip 7 segmentų ekranas, LCD ekranas, TFT jutiklinio ekrano ekranas, LED ekranas ir kt. 16x2 LCD ekranas yra pats pagrindinis ir taip pat naudojamas kai kurių mažų elektronikos įrenginių ekranams, mes padarėme daug projektai, kuriuose naudojamas 16x2 LCD ekranas, įskaitant pagrindinę sąsają su kitais mikrovaldikliais:
- LCD sąsaja su 8051 mikrovaldikliu
- Sąsajos skystųjų kristalų ekranas su „ATmega32“ mikrovaldikliu
- LCD sąsaja su PIC mikrovaldikliu
- Susijęs 16x2 LCD ekranas su „Arduino“
- 16x2 LCD sąsaja su „Raspberry Pi“ naudojant „Python“
Šioje pamokoje pamatysime, kaip susieti 16x2 skystųjų kristalų ekraną su ARM7-LPC2148 mikrovaldikliu ir parodyti paprastą pasveikinimo pranešimą. Jei esate naujas su ARM7, pradėkite nuo ARM7 LPC2148 pagrindų ir sužinokite, kaip jį galima užprogramuoti naudojant „Keil uVision“
Reikalingos medžiagos
Aparatinė įranga
- ARM7-LPC2148 mikrovaldiklio plokštė
- LCD (16X2)
- Potenciometras
- 5 V įtampos reguliatoriaus IC
- Bandomoji Lenta
- Laidų sujungimas
- 9 V akumuliatorius
- Mikro USB laidas
Programinė įranga
- „Keil uVision 5“
- „Magic Flash“ įrankis
Prieš įsitraukdami į projektą, turime žinoti keletą dalykų apie LCD veikimo režimus ir apie „LCD Hex“ kodus.
16X2 LCD ekrano modulis
16X2 skystųjų kristalų ekranas sako, kad jame yra 16 stulpelių ir 2 eilutės. Šis skystųjų kristalų ekranas turi 16 kontaktų. Žemiau paveikslėlyje ir lentelėje pateikiami LCD ekrano kaiščių pavadinimai ir jo funkcijos.
VARDAS |
FUNKCIJA |
VSS |
Įžemintas kaištis |
VDD |
+ 5 V įvesties kaištis |
VEE |
Kontrasto reguliavimo kaištis |
RS |
Registruotis Pasirinkite |
R / W |
Skaitymo / rašymo kaištis |
E |
Įgalinti prisegimą |
D0-D7 |
Duomenų smeigtukai (8 smeigtukai) |
Šviesos diodas A |
Anodo kaištis (+ 5 V) |
LED K |
Katodo kaištis (GND) |
Skystųjų kristalų ekranas gali veikti dviem skirtingais režimais, ty 4 bitų ir 8 bitų režimu. 4 bitų režimu mes siunčiame duomenis, pirmuosius viršutinius ir tada apatinius. Tiems, kurie nežino, kas yra nibble: nibble yra keturių bitų grupė, todėl apatiniai keturi bitai (D0-D3) iš baito sudaro apatinį, o viršutiniai keturi bitai (D4-D7) baito formos - aukštesnis nubraukimas. Tai leidžia mums siųsti 8 bitų duomenis.
8 bitų režimu mes galime siųsti 8 bitų duomenis tiesiai vienu taktu, nes naudojame visas 8 duomenų linijas.
Šiame projekte mes naudosime dažniausiai naudojamą 4 bitų režimą. Keturių bitų režimu galime sutaupyti 4 mikrovaldiklio kaiščius ir sumažinti laidų pridėtines išlaidas.
16x2 taip pat naudoja HEX kodą bet kuriai komandai priimti, LCD yra daug šešioliktainių komandų, pavyzdžiui, norint perkelti žymeklį, pasirinkti režimą, perjungti valdiklį į antrą eilutę ir pan. Norėdami sužinoti daugiau apie 16X2 LCD ekrano modulį ir šešiakampes komandas, sekite nuorodą.
Grandinės schema ir jungtys
Žemiau esančioje lentelėje parodytos grandinės jungtys tarp LCD ir ARM7-LPC2148.
ARM7-LPC2148 |
LCD (16x2) |
P0.4 |
RS („Register Select“) |
P0.6 |
E (įjungti) |
P0.12 |
D4 (4 duomenų kaištis) |
P0.13 |
D5 (5 duomenų kaištis) |
P0.14 |
D6 (6 duomenų kaištis) |
P0.15 |
D7 (7 duomenų kaištis) |
Įtampos reguliatoriaus jungtys su LCD ir ARM7 lazda
Žemiau esančioje lentelėje parodytos jungtys tarp ARM7 ir LCD su įtampos reguliatoriumi.
Įtampos reguliatoriaus IC |
PIN funkcija |
LCD ir ARM-7 LPC2148 |
1. Kairysis kaištis |
+ Ve iš akumuliatoriaus 9V įvesties |
NC |
2. Centro kaištis |
- Ve iš akumuliatoriaus |
LCD VSS, R / W, K ARM7 BND |
3. Dešinysis kaištis |
Reguliuojama + 5 V išvestis |
VDD, A skystųjų kristalų ekranas + 5 V ARM7 |
Potenciometras su LCD
Skystųjų kristalų ekrano kontrastui keisti naudojamas potenciometras. Puode yra trys kaiščiai, kairysis kaištis (1) prijungtas prie + 5 V, o centras (2) prie LCD modulio VEE arba V0, o dešinysis kaištis (3) prijungtas prie GND. Kontrastą galime reguliuoti sukdami rankenėlę.
„Jumper“ nustatymai
„ARM7-Stick“ yra jungiklio kaištis, kad galėtume įjungti ir įkelti kodą naudodami USB arba naudodami 5 V nuolatinės įvesties maitinimą. Galite pamatyti žemiau esančius vaizdus.
Žemiau pateiktame paveikslėlyje parodyta, kad džemperis yra nuolatinės padėties. Tai reiškia, kad plokštę turime maitinti iš išorinio 5 V maitinimo šaltinio.
Šis paveikslėlis rodo, kad džemperis prijungtas USB režimu. Čia maitinimas ir kodas pateikiami per mikro USB prievadą.
PASTABA: Čia, šioje instrukcijoje, mes įkėlėme kodą naudodami USB nustatydami trumpiklį į USB, tada pakeitėme trumpiklį į nuolatinės srovės režimą, kad maitintumėte LPC2148 iš reguliatoriaus 5v įvesties. Tai galite patikrinti pabaigoje pateiktame vaizdo įraše.
Paskutinė 16x2 LCD ir „ARM7“ mikrovaldiklio sąsajos grandinė atrodys taip:
Programavimas ARM7-LPC2148
Norėdami programuoti ARM7-LPC2148, mums reikia „Keil uVision“ ir „Flash Magic“ įrankio. „ARM7 Stick“ programavimui per „micro USB“ prievadą naudojame USB kabelį. Mes rašome kodą naudodami „Keil“ ir sukuriame hex failą, tada HEX failas perduodamas į „ARM7“ lazdelę naudojant „Flash Magic“. Norėdami sužinoti daugiau apie „Keil uVision“ ir „Flash Magic“ diegimą ir kaip juos naudoti, spustelėkite nuorodą „Darbo pradžia su„ ARM7 LPC2148 “mikrovaldikliu ir užprogramuokite naudodami„ Keil uVision “.
Pilnas LCD sąsajos su ARM 7 kodas pateikiamas šios pamokos pabaigoje, čia mes paaiškiname keletą jo dalių.
Pirmiausia turime įtraukti reikiamus antraštės failus
# įtraukti
LCD modulio inicijavimas yra labai svarbus žingsnis. Čia mes naudojame tam tikrus HEX kodus, kurie iš tikrųjų yra komandos, norėdami pasakyti LCD apie veikimo režimą (4 bitų), LCD tipą (16x2), pradžios liniją ir kt.
void LCD_INITILIZE (void) // Funkcija paruošti skystųjų kristalų ekraną { IO0DIR = 0x0000FFF0; // nustato kaiščius P0.4, P0.6, P0.12, P0.13, P0.14, P0.15 kaip OUTPUT delay_ms (20); LCD_SEND (0x02); // Inicijuoti lcd 4 bitų darbo režimu LCD_SEND (0x28); // 2 eilutės (16X2) LCD_SEND (0x0C); // Rodyti žymeklį išjungus LCD_SEND (0x06); // Automatinio prieaugio žymeklis LCD_SEND (0x01); // Rodyti aiškų LCD_SEND (0x80); // Pirmos eilutės pirma pozicija }
4 bitų režime kaiščių rašymo funkcija yra kitokio tipo, tai yra naudojant viršutinį ir apatinį nubraukimą. Pažiūrėkime, kaip tai daroma
void LCD_SEND (char komanda) // Funkcija, skirta siųsti šešiakampėms komandoms sukramtyti pagal nagus { IO0PIN = ((IO0PIN & 0xFFFF0000) - ((komanda & 0xF0) << 8)); // Siųsti viršutinį komandos IO0SET = 0x00000040 nibble ; // Įgalinimas „ HIGH IO0CLR“ = 0x00000030; // Padaryti RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // Įjungimas LOW delay_ms (5); IO0PIN = ((IO0PIN ir 0xFFFF00FF) - ((komanda & 0x0F) << 12)); // Siųsti apatinį komandos IO0SET = 0x00000040 nibble ; // ĮJUNGTI AUKŠTĄ IO0CLR = 0x00000030; // RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // ENABLE LOW delay_ms (5); }
Nibble siuntimo logika
IO0PIN = ((IO0PIN ir 0xFFFF00FF) - ((komanda & 0x0F) << 12)); // Siųsti apatinį komandos IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((komanda & 0xF0) << 8)) nibble ; // Išsiųskite viršutinį komandos paplotėlį
Šioje programoje svarbų vaidmenį vaidina aukščiau pateikti du teiginiai. Pirmoji komanda siunčia apatinį, o antroji - viršutinį. Tai neturi įtakos kitiems mūsų daromiems kaiščiams. Pažiūrėkime, kaip tai vyksta, prieš tai sužinokime apie šią logiką
ORing- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
Taigi mes naudojame maskavimo koncepciją ir loginio poslinkio operaciją, nepaveikdami kitų kaiščių. Tai reiškia, kad naudojami tik kaiščiai (P0.12-P0.15), o kiti kaiščiai, pvz., P0.4, P0.6, neturi įtakos. Tai bus daroma perkėlus duomenis keturiais bitais ir padarant viršutinį nagą apatinio nagų vietoje ir užmaskuojant viršutinį nagą. Tada apatinius bitus padarome nuliu (0XF0) ir ORed su nibble duomenimis, kad gautume viršutinius nibble duomenis išvestyje.
Panašus procesas naudojamas ir mažesniems nubraukimo duomenims, tačiau čia duomenų nereikia perkelti.
Rašant duomenis į išvestį, tai yra komandiniame režime, RS turėtų būti LOW, o norint įgalinti - HIGH, o duomenų režime RS - HIGH, o norint įgalinti - HIGH.
Dabar, siunčiant eilutės duomenis, kurie turi būti spausdinami išvestyje, naudojamas tas pats principas. Svarbus žingsnis yra tai, kad duomenų režimui REGISTRACIJOS PASIRINKIMAS (RS) turi būti AUKŠTAS.
void LCD_DISPLAY (char * msg) // Funkcija išspausdinti simbolius, atsiųstus po vieną { uint8_t i = 0; o (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8)); // Siunčia viršutinį nibble IO0SET = 0x00000050; // RS HIGH & ENABLE HIGH spausdinti duomenis IO0CLR = 0x00000020; // RW LOW Rašymo režimo uždelsimas ms (2); IO0CLR = 0x00000040; // EN = 0, RS ir RW nepakitę (ty RS = 1, RW = 0) vėlavimo ms (5); IO0PIN = ((IO0PIN ir 0xFFFF00FF) - ((msg & 0x0F) << 12)); // Siunčia apatinį nibble IO0SET = 0x00000050; // RS & EN HIGH IO0CLR = 0x00000020; vėlavimo ms (2); IO0CLR = 0x00000040; vėlavimo ms (5); i ++; }
Visas kodavimo ir demonstravimo vaizdo įrašas pateiktas žemiau.