- 16x2 Dot Matrix LCD-kontroller IC HD44780:
- Vise et egendefinert tegn på 16x2 LCD:
- Programmering og arbeidsforklaring:
- Kretsforbindelser og testing:
I vår forrige opplæring har vi lært hvordan man bruker en 16 * 2 LCD-skjerm med PIC Microcontroller. Vi anbefaler deg å gå gjennom det før du går videre, hvis du er nybegynner i PIC-mikrokontroller. Tidligere har vi også lært det grunnleggende om PIC ved hjelp av LED-blinkende program og tidtakere i PIC Microcontroller. Du kan sjekke her alle veiledningene om å lære PIC-mikrokontrollere ved hjelp av MPLABX- og XC8-kompilatoren.
I denne opplæringen, la oss gjøre det mer interessant ved å lage våre egne tilpassede tegn og vise dem på LCD-skjermen vår ved hjelp av PIC16F877A PIC Microcontroller. Det er også noen forhåndsdefinerte mest brukte tilpassede tegn gitt av selve HD44780A IC, vi vil også se hvordan vi kan bruke dem. Som forklart i vår forrige opplæring har LCD-skjermen en Hitachi HD44780-kontroller innebygd som hjelper oss å vise tegn. Hvert tegn som vi viser er allerede forhåndsdefinert inne i ROMen til HD44780 IC. Vi vil lære om LCD-kontroller IC HD44780, før vi viser tegn på LCD.
16x2 Dot Matrix LCD-kontroller IC HD44780:
For å vise et tilpasset tegn, må vi på en eller annen måte fortelle IC at hvordan det tilpassede tegnet vil se ut. For å gjøre det, bør vi vite om de tre typene minner som finnes inne i HD44780 LCD-kontrolleren IC:
Character Generator ROM (CGROM): Det er skrivebeskyttet minne som, som sagt tidligere, inneholder alle mønstrene til tegnene som er definert på forhånd. Denne ROM-en vil variere fra hver type grensesnitt-IC, og noen kan ha noe forhåndsdefinert tilpasset karakter med seg.
Display Data RAM (DDRAM): Dette er et minne for tilfeldig tilgang. Hver gang vi viser et tegn, blir mønsteret hentet fra CGROM og overført til DDRAM og deretter plassert på skjermen. For å si det enkelt, vil DDRAM ha mønstrene til alle tegnene som for øyeblikket vises på LCD-skjermen. På denne måten trenger ikke IC å hente data fra CGROM, og hjelper med å få en kort oppdateringsfrekvens
Character generator RAM (CGRAM): Dette er også et Random Access Memory, slik at vi kan skrive og lese data fra det. Som navnet antyder, vil dette minnet være det som kan brukes til å generere det egendefinerte tegnet. Vi må danne et mønster for karakteren og skrive det i CGRAM, dette mønsteret kan leses og vises på skjermen når det er nødvendig.
Nå, siden vi fikk en grunnleggende forståelse av hvilke typer minne som er tilstede i HD44780-grensesnittet IC. La oss ta en titt på databladet for å forstå litt mer.
Som databladet antyder, har HD44780 IC gitt som 8 steder for å lagre våre tilpassede mønstre i CGRAM, også til høyre kan vi se at det er noen forhåndsdefinerte tegn som også kan vises på LCD-skjermen. La oss se hvordan vi kan gjøre det.
Vise et egendefinert tegn på 16x2 LCD:
For å vise et tilpasset tegn, må vi først generere et mønster for det og deretter lagre det i CGRAM. Siden vi allerede har bibliotekfunksjonene, bør det være enkelt å gjøre dette med noen enkle kommandoer. Her er biblioteket for LCD-funksjoner, men her har vi kopiert inn alle biblioteksfunksjonene i selve programmet, så det er ikke nødvendig å inkludere denne headerfilen i programmet vårt. Sjekk også denne artikkelen for grunnleggende LCD-arbeid og dens pinouts.
Det første trinnet er å generere et mønster eller det egendefinerte tegnet. Som vi vet er hvert tegn en kombinasjon av 5 * 8 prikker. Vi må velge hvilken prikk (piksel) som skal gå høyt og hvilken som skal være lav. Det er bare å tegne en rute som nedenfor og skygge områdene basert på karakteren din. Karakteren min her er en pinnemann (håper det ser ut som en). Når du er skyggelagt, skriver du den tilsvarende binære verdien for hver byte som vist nedenfor.
Bare sett en '1' på det skyggelagte området og en '0' på det ikke-skyggelagte området for hver byte, og det er det vårt tilpassede mønster er klart. På samme måte har jeg laget 8 egendefinerte mønsterkoder for de 8 minneplassene som presenterer det CGROM. De er oppført i tabellen nedenfor.
S.NO: |
Egendefinert karakter |
Mønsterkode |
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 |
Merk: Det er ikke obligatorisk å laste inn alle de 8 plassene som er gitt i CGRAM.
Programmering og arbeidsforklaring:
Nå er mønsterkodene våre klare, vi må bare laste dem til CGRAM på LCD og vise dem ved hjelp av PIC-mikrokontroller. For å laste dem inn i CGRAM kan vi danne et 5 * 8 utvalg av elementer og laste hver byte ved å bruke en " for loop ". Matrisen med mønsterkode er vist nedenfor:
const usignert kort Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Kode for CGRAM-minne 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00, CGRAM-minne 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Kode for CGRAM-minne 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00AM minne, // Kode for mellomrom 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Kode for CGRAM-minne 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Kode for CGRAM-minne 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Kode for CGRAM-minneplass 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Kode for CGRAM-minneplass 8};
Hver minneplass er lastet med sitt respekterte karaktermønster. For å laste dette mønsteret inn i HD44780 IC, må databladet til HD44780 henvises, men det er bare kommandolinjer som kan brukes til å angi adressen til CGRAM
// *** Last tilpasset røye i CGROM *** ////// Lcd_Cmd (0x04); // Sett CGRAM-adresse Lcd_Cmd (0x00); //.. angi CGRAM-adresse for (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Gå tilbake til Hjem Lcd_Cmd (2); //.. tilbake til Hjem // *** Laster tilpasset røye komplett *** //////
Her, inne i " for loop", lastes hver binær verdi inn i CGROM. Når mønsteret er lastet, kan de tilpassede tegnene vises til å vises ved å ringe stedet for mønsteret ved hjelp av ugyldig Lcd_Print_Char (char data) -funksjonen som vist nedenfor.
Lcd_Print_Char (0); // Vis tilpasset karakter 0 Lcd_Print_Char (1); // Vis tilpasset karakter 1 Lcd_Print_Char (2); // Vis tilpasset karakter 2 Lcd_Print_Char (3); // Vis tilpasset karakter 3 Lcd_Print_Char (4); // Vis tilpasset karakter 4 Lcd_Print_Char (5); // Vis tilpasset karakter 5 Lcd_Print_Char (6); // Vis tilpasset karakter 6 Lcd_Print_Char (7); // Vis tilpasset karakter 7
Skriv ut forhåndsdefinert spesialtegn:
HD44780 IC har noen forhåndsdefinerte spesialtegn som er lagret i DDROM. Disse tegnene kan skrives ut direkte på skjermen ved å referere til dens binære verdi i databladet.
For eksempel: Den binære verdien av tegnet "ALPHA" er 0b11100000. Hvordan du oppnår dette kan forstås fra figuren nedenfor, og du kan også få verdi for ethvert spesialtegn som er forhåndsdefinert i IC.
Når den binære verdien er kjent, kan det korresponderende tegnet skrives ut på skjermen ved ganske enkelt å bruke void Lcd_Print_Char (char data) -funksjonen som vist nedenfor, Lcd_Print_Char (0b11100000); // binær verdi av alfa fra databladet
Den komplette koden av dette prosjektet er gitt nedenfor i avsnitt Code, også sjekke detaljene Video forklaring på slutten av denne opplæringen.
Kretsforbindelser og testing:
Dette prosjektet har ikke noe ekstra maskinvarekrav, vi har ganske enkelt brukt de samme tilkoblingene fra forrige LCD-grensesnittveiledning og brukt det samme kortet som vi har opprettet i LED blinkende veiledning. Som alltid, la oss simulere programmet ved hjelp av Proteus for å verifisere produksjonen vår.
Når vi har simulering som forventet, kan du brenne koden direkte inn i maskinvareoppsettet. Resultatet av programmet skal være omtrent slik:
Så det er slik du kan vise hvilket som helst tilpasset tegn på 16x2 LCD ved hjelp av PIC Microcontroller med MPLABX og XC8 kompilator. Sjekk også vår komplette PIC Microcontroller Learning Series her.