- 16x2 taškų matricos LCD valdiklio IC HD44780:
- 16x2 LCD ekrane rodomas pasirinktas simbolis:
- Programavimas ir darbo paaiškinimas:
- Grandinės jungtys ir bandymai:
Ankstesnėje mūsų pamokoje mes sužinojome, kaip susieti 16 * 2 skystųjų kristalų ekraną su PIC mikrovaldikliu. Jei esate PIC mikrovaldiklio pradininkas, rekomenduojame tai pereiti prieš einant toliau. Anksčiau mes taip pat išmokome PIC pagrindus, naudodamiesi LED mirksi programa ir PIC mikrovaldiklio laikmačiais. Čia galite patikrinti visas „PIC“ mikrovaldiklių mokymosi naudojant MPLABX ir XC8 kompiliatorių pamokas.
Šioje pamokoje padarykime ją įdomesnę, sukurdami savo pasirinktus simbolius ir rodydami juos LCD ekrane, naudodami PIC16F877A PIC mikrovaldiklį. Taip pat yra keletas iš anksto apibrėžtų dažniausiai naudojamų pasirinktų simbolių, kuriuos suteikė pati HD44780A IC, taip pat pamatysime, kaip galime juos naudoti. Kaip paaiškinta ankstesnėje mūsų pamokoje, mūsų skystųjų kristalų ekrane yra „Hitachi HD44780“ valdiklis, kuris padeda mums parodyti simbolius. Kiekvienas rodomas simbolis jau yra iš anksto nustatytas „HD44780 IC“ ROM. Prieš rodydami simbolius LCD, sužinosime apie LCD valdiklį IC HD44780.
16x2 taškų matricos LCD valdiklio IC HD44780:
Norėdami parodyti pasirinktinį simbolį, turime kažkaip pasakyti IC, kaip atrodys pasirinktas simbolis. Norėdami tai padaryti, turėtume žinoti apie tris atminties tipus, esančius HD44780 LCD valdiklio IC:
Simbolių generavimo ROM (CGROM): tai tik skaitoma atmintis, kurioje, kaip sakyta anksčiau, yra visi joje iš anksto apibrėžti simbolių modeliai. Šis ROM skiriasi nuo kiekvieno sąsajos IC tipo, o kai kurie gali turėti iš anksto apibrėžtą pasirinktinį simbolį.
Rodyti duomenų RAM (DDRAM): tai yra atsitiktinės prieigos atmintis. Kiekvieną kartą, kai mes rodome simbolį, jo modelis bus paimtas iš CGROM ir perkeltas į DDRAM, tada bus patalpintas ekrane. Paprasčiau tariant, DDRAM turės visų simbolių, kurie šiuo metu rodomi LCD ekrane, modelius. Tokiu būdu kiekvieno ciklo metu IC nereikia gauti duomenų iš CGROM ir padeda gauti trumpą atnaujinimo dažnį
Simbolių generatoriaus operatyvioji atmintis (CGRAM): Tai taip pat yra atsitiktinės prieigos atmintis, todėl galime iš jos rašyti ir skaityti duomenis. Kaip rodo pavadinimas, ši atmintis gali būti naudojama kuriant pasirinktinį simbolį. Turime suformuoti simbolio šabloną ir įrašyti jį į CGRAM. Šį modelį prireikus galima perskaityti ir rodyti ekrane.
Dabar, kai mes supratome pagrindinius atminties tipus, esančius HD44780 sąsajos IC. Pažvelkime į jo duomenų lapą, kad suprastume šiek tiek daugiau.
Kaip matyti iš duomenų lapo, „HD44780 IC“ pateikė 8 vietas, kur saugoti mūsų pasirinktus modelius CGRAM, taip pat dešinėje matome, kad yra keletas iš anksto apibrėžtų simbolių, kurie taip pat gali būti rodomi mūsų LCD ekrane. Pažiūrėkime, kaip mes galime tai padaryti.
16x2 LCD ekrane rodomas pasirinktas simbolis:
Norėdami parodyti pasirinktinį simbolį, pirmiausia turime sugeneruoti jo modelį ir išsaugoti jį CGRAM. Kadangi bibliotekos funkcijas jau turime su savimi, tai turėtų būti lengva padaryti naudojant keletą paprastų komandų. Čia yra LCD funkcijų biblioteka, tačiau čia mes nukopijavome visas bibliotekos funkcijas į pačią programą, todėl nereikia įtraukti šio antraštės failo į savo programą. Taip pat patikrinkite šį straipsnį, ar veikia pagrindinis LCD ekranas ir jo kištukai.
Pirmasis žingsnis yra sukurti šabloną arba pasirinktinį simbolį. Kaip žinome, kiekvienas simbolis yra 5 * 8 taškų derinys. Turime pasirinkti, kuris taškas (pikselis) turėtų būti aukštas, o kuris - žemas. Paprasčiausiai nubrėžkite langelį kaip žemiau ir užtušuokite regionus pagal savo charakterį. Mano personažas yra lazda (tikiuosi, kad tai atrodo). Kai bus užtamsinta, paprasta parašykite ekvivalentinę kiekvieno baito dvejetainę vertę, kaip parodyta žemiau.
Kiekvienam baitui tiesiog uždėkite „1“ ant užtemdyto regiono ir „0“ ant neužtamsinto regiono, ir tai yra mūsų paruoštas šablonas. Panašiai aš padariau 8 pasirinktus modelių kodus, skirtus mūsų 8 atminties erdvėms, pateikdamas CGROM. Jie išvardyti žemiau esančioje lentelėje.
S.NO: |
Pasirinktas simbolis |
Rašto kodas |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Pastaba: nebūtina įkelti visų 8 CGRAM numatytų vietų.
Programavimas ir darbo paaiškinimas:
Dabar mūsų modelių kodai yra paruošti, mes tiesiog turime juos įkelti į LCD ekraną ir parodyti naudodami PIC mikrovaldiklį. Norėdami juos įkelti į CGRAM, galime suformuoti 5 * 8 elementų masyvą ir įkelti kiekvieną baitą naudodami „ for loop “. Šablono kodo masyvas parodytas žemiau:
const nepasirašytas trumpas Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // CGRAM atminties vietos kodas 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, 2 CGRAM atminties vieta 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // CGRAM atminties vietos kodas 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000, // kodas tarpas 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // CGRAM atminties kodas 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // CGRAM atminties kodas 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // CGRAM atminties kodas 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // CGRAM atminties kodas 8};
Kiekviena atminties vieta yra pakrauta su jos gerbiamu simbolių modeliu. Norint įkelti šį modelį į HD44780 IC, reikia nurodyti HD44780 duomenų lapą, tačiau tai yra tik komandų eilutės, kurias galima naudoti norint nustatyti CGRAM adresą
// *** Įkelkite pasirinktinį simbolį į CGROM *** ////// Lcd_Cmd (0x04); // Nustatykite CGRAM adresą Lcd_Cmd (0x00); //.. nustatyti CGRAM adresą (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Grįžti į namus Lcd_Cmd (2); //.. grįžti į pagrindinį puslapį // *** Įkelta pasirinktinė simbolis baigtas *** //////
Čia „ for loop“ viduje kiekviena dvejetainė reikšmė įkeliama į CGROM. Įkėlus šabloną, pasirinktinius simbolius galima priversti rodyti paprasčiausiai paskambinus šablono vietai, naudojant negaliojančią Lcd_Print_Char (char data) funkciją, kaip parodyta žemiau.
Lcd_Print_Char (0); // Rodyti pasirinktą simbolį 0 Lcd_Print_Char (1); // Rodyti pasirinktą simbolį 1 Lcd_Print_Char (2); // Rodyti pasirinktinį simbolį 2 Lcd_Print_Char (3); // Rodyti pasirinktinį simbolį 3 Lcd_Print_Char (4); // Rodyti pasirinktinį simbolį 4 Lcd_Print_Char (5); // Rodyti pasirinktinį simbolį 5 Lcd_Print_Char (6); // Rodyti pasirinktinį simbolį 6 Lcd_Print_Char (7); // Rodyti pasirinktinį simbolį 7
Spausdinti iš anksto specialų simbolį:
HD44780 IC turi keletą iš anksto apibrėžtų specialiųjų simbolių, saugomų DDROM. Šiuos simbolius galima tiesiogiai atspausdinti ekrane, nurodant jų dvejetainę vertę duomenų lape.
Pvz.: Dvejetainė simbolio „ALPHA“ vertė yra 0b11100000. Kaip tai gauti, galima suprasti iš žemiau pateikto paveikslo, taip pat galite gauti vertę už bet kurį specialųjį simbolį, kuris iš anksto apibrėžtas IC.
Kai bus žinoma dvejetainė reikšmė, atitinkamą simbolį galima atsispausdinti ekrane, tiesiog naudojant tuščią funkciją „Lcd_Print_Char“ (char duomenys), kaip parodyta žemiau, „Lcd_Print_Char“ (0b11100000); // dvejetainė alfa vertė iš duomenų lapo
Visas šio projekto kodas pateiktas toliau skyriuje Kodas, taip pat patikrinkite išsamų vaizdo įrašo paaiškinimą šios pamokos pabaigoje.
Grandinės jungtys ir bandymai:
Šis projektas nereikalauja jokių papildomų aparatinės įrangos reikalavimų, mes tiesiog naudojome tas pačias jungtis iš ankstesnės LCD sąsajos pamokos ir naudojome tą pačią plokštę, kurią sukūrėme „LED“ mirksi pamokoje. Kaip visada, imituokime programą naudodami „Proteus“, kad patikrintume savo išvestį.
Kai tik imsimės modeliavimo, kaip tikėtasi, leidžia tiesiogiai įrašyti kodą į mūsų techninės įrangos sąranką. Programos išvestis turėtų būti maždaug tokia:
Taigi taip galite parodyti bet kurį pasirinktinį simbolį 16x2 LCD ekrane naudodami PIC mikrovaldiklį su MPLABX ir XC8 kompiliatoriumi. Čia taip pat patikrinkite visą mūsų PIC mikrovaldiklių mokymosi seriją.