Norint užmegzti gerą žmonių ir mašinų pasaulio ryšį, svarbų vaidmenį vaidina ekranai. Taigi jie yra svarbi įterptųjų sistemų dalis. Ekranai - dideli ar maži, veikia tuo pačiu pagrindiniu principu. Be sudėtingų ekranų, tokių kaip grafiniai ekranai ir 3D ekranai, reikia žinoti, kaip dirbti su paprastais ekranais, tokiais kaip 16x1 ir 16x2. 16x1 ekranas sudarys 16 simbolių ir bus vienoje eilutėje. 16x2 LCD turės 32 simbolių iš viso 16in 1 -osios linijos ir dar 16 2 ndlinija. Čia reikia suprasti, kad kiekviename simbolyje yra 5x10 = 50 taškų, todėl norint parodyti vieną simbolį, visi 50 taškų turi veikti kartu. Bet mes neturime dėl to jaudintis, nes ekrano bloke yra dar vienas valdiklis (HD44780), kuris valdo pikselius. (galite pamatyti LCD ekrane, tai juoda akis gale).
Būtini komponentai
Techninė įranga:
Mikrovaldiklis „ATmega32“
Maitinimo šaltinis (5v)
AVR-ISP programuotojas
JHD_162ALCD (16x2 LCD)
100uF kondensatorius.
Programinė įranga:
„Atmel“ studija 6.1
„Progisp“ arba „flash magic“
Grandinės schema ir paaiškinimas
Kaip parodyta skystųjų kristalų sąsajoje su „ATmega32“ grandine, galite pamatyti, kad ATMEGA32 PORTA prijungta prie duomenų prievado LCD. Čia reikia nepamiršti išjungti JTAG ryšio ATMEGA PORTC, keičiant saugiklių baitus, jei norite naudoti PORTC kaip įprastą ryšio prievadą. 16x2 LCD ekrane yra 16 kontaktų, jei yra užpakalinė lemputė, jei nėra užpakalinės šviesos, bus 14 kontaktų. Galima maitinti arba palikti galinio apšvietimo kaiščius. Dabar 14 kaiščių yra 8 duomenų kaiščiai (7-14 arba D0-D7), 2 elektros tiekimo kaiščių (1 & 2 arba Vss & VDD arba GND & + 5V), 3 -oji kaištis kontrasto valdymas (V formos,-kontroliuoja, kaip storio simboliai turėtų būti parodyta), 3 valdymo kaiščiai (RS & RW & E)
Pirmiau pateiktoje grandinėje, sujungiančioje 16x2 LCD ekraną su AVR mikrovaldikliu, galite pastebėti, kad aš paėmiau tik du valdymo kaiščius. Tai suteikia lankstumo geriau suprasti. Kontrasto bitai ir READ / WRITE nėra dažnai naudojami, todėl juos galima sutrumpinti. Dėl to LCD ekranas tampa didžiausio kontrasto ir skaitymo režimu. Mes tiesiog turime valdyti ENABLE ir RS smeigtukus, kad galėtume atitinkamai siųsti simbolius ir duomenis.
Ryšiai tarp „ATmega32“ mikrovaldiklio ir 16x2 LCD yra pateikti žemiau:
PIN1 arba VSS - žemė
PIN2 arba VDD arba VCC - + 5v maitinimas
PIN3 arba VEE - žemė (pradedantiesiems suteikia maksimalų kontrastą)
PIN4 arba RS (registro pasirinkimas) - mikrovaldiklio PD6
PIN5 arba RW (skaitymas / rašymas) - įžeminimas (įjungus skystųjų kristalų ekraną skaitymo režimu, palengvinamas vartotojo ryšys)
PIN6 arba E (įjungti) - mikrovaldiklio PD5
Mikrokontrolerio PIN7 arba D0 - PA0
PIN8 arba D1 - PA1
PIN9 arba D2 - PA2
PIN10 arba D3 - PA3
PIN11 arba D4 - PA4
PIN12 arba D5 - PA5
PIN13 arba D6 - PA6
PIN14 arba D7 - PA7
Grandinėje matote, kad mes naudojome 8 bitų ryšį (D0-D7), tačiau tai nėra privaloma, taip pat galime naudoti 4 bitų ryšį (D4-D7), tačiau su 4 bitų ryšio programa pradedantiesiems tampa šiek tiek sudėtinga, todėl mes tiesiog nuėjome 8 bitų ryšys.
Taigi vien nuo stebėjimo iš viršaus lentelės prijungiame 10 LCD kontaktų su valdikliu, kuriame 8 kontaktai yra duomenų ir 2 kaiščiai valdymui.
Dirba
Norėdami pradėti, turite žinoti 10 „16x2“ LCD ekranų (8 duomenų kaiščiai + 2 valdymo kaiščiai) funkcijas. 8 duomenų kaiščiai skirti duomenims ar komandoms siųsti į LCD. Dviejuose valdymo kaiščiuose:
1. RS (registracijos pasirinkimas) kaištis turi pasakyti LCD, ar mes jam siunčiame duomenis, ar komandą.
Pavyzdžiui:
Pirmoje lentelėje duomenų prievado (D7-D0) reikšmė „0b0010 1000 arba 0x28“ nurodo LCD rodyti „(“ simbolį. Antroje lentelėje ta pati 0x28 reikšmė nurodo LCD „jūs esate 5x7 taškų LCD ir elkitės kaip vienas “, todėl vartotojas, norėdamas nustatyti tą pačią vertę, gali apibrėžti du dalykus, dabar šią situaciją neutralizuoja„ Register Selection “kaištis, jei RS kaištis nustatytas žemai, LCD supranta, kad siunčiame komandą. Jei nustatėme aukštą RS kaištį, tada LCD supranta, kad mes siunčiame duomenis. Taigi abiem atvejais LCD atsižvelgia į duomenų prievado vertę pagal RS pin vertę.
2. E (įjungti) kaištis yra tiesiog skirtas pasakyti „kompiuterio maitinimo indikatoriaus šviesos diodui“, šis kaištis nustatytas į aukštą, kad LCD būtų nurodyta „gauti duomenų formos valdiklio duomenų prievadą“. Kai šis kaištis bus žemas po aukšto, LCD apdoros gautus duomenis ir parodys atitinkamą rezultatą. Taigi, prieš siųsdami duomenis, šis kaištis yra nustatytas aukštai, o išsiunčiant duomenis - žemėje.
Prijungę aparatinę įrangą, paleiskite „Atmel“ studiją ir pradėkite naują programos rašymo projektą, dabar atidarykite programavimo ekraną ir pradėkite griauti programą. Programa turi būti tokia, kaip rodoma toliau.
Pirmiausia mes nurodome valdikliui, kuriuos prievadus naudojame duomenims ir LCD valdymui. Tada pasakykite valdikliui, kada atitinkamai siųsti duomenis ar komandą, žaisdami su RS ir E kaiščiais.
Trumpas programoje vartojamų sąvokų paaiškinimas:
1. E yra nustatytas aukštas (nurodant LCD gauti duomenis), o RS nustatytas žemai (nurodant LCD mes duodame komandą)
2. Duomenų prievadui 0x01 vertės suteikimas kaip komanda išvalyti ekraną
3. E yra nustatytas aukštas (nurodant LCD gauti duomenis), o RS nustatytas aukštai (nurodant LCD mes teikiame duomenis)
4. Paimkite simbolių eilutę, kuri siunčia kiekvieną simbolį eilutėje po vieną.
5. E nustatytas žemai (LCD praneša, kad mes baigėme siųsti duomenis)
6. Po paskutinės komandos skystųjų kristalų ekranas nutraukia ryšį, apdoroja duomenis ir ekrane rodo simbolių eilutę.
Pagal šį scenarijų mes ketiname siųsti simbolius vienas po kito. Simboliai suteikiami LCD pagal ASCII kodus (Amerikos standartinis informacijos mainų kodas).
ASCII kodų lentelė parodyta aukščiau. Jei norite, kad skystųjų kristalų ekrane būtų rodomas simbolis „@“, turime išsiųsti šešioliktainį kodą „64“. Jei nusiųsime „0x62“ į skystųjų kristalų ekraną, bus rodomas simbolis „>“. Tokiu būdu mes išsiųsime atitinkamus kodus į LCD, kad būtų rodomas vardas.
Ryšio tarp LCD ir „ATmega32 AVR“ mikrovaldiklio būdas geriausiai paaiškinamas toliau nurodytu C kodo žingsniu,