- 16x2 Dot Matrix LCD Controller IC HD44780:
- Visar en anpassad karaktär på 16x2 LCD:
- Programmering och arbetsförklaring:
- Kretsanslutningar och testning:
I vår tidigare handledning har vi lärt oss hur man gränssnitt en 16 * 2 LCD med PIC Microcontroller. Vi rekommenderar att du går igenom det innan du går vidare, om du är nybörjare i PIC-mikrokontroller. Tidigare har vi också lärt oss grunderna i PIC med hjälp av LED-blinkande program och timers i PIC Microcontroller. Här kan du se alla handledning om inlärning av PIC-mikrokontroller med MPLABX- och XC8-kompilator.
I den här guiden, låt oss göra det mer intressant genom att skapa våra egna anpassade karaktärer och visa dem på vår LCD-skärm med PIC16F877A PIC Microcontroller. Det finns också några fördefinierade mest använda anpassade karaktärer som ges av själva HD44780A IC, vi kommer också att se hur vi kan använda dem. Som förklarats i vår tidigare handledning har vår LCD en Hitachi HD44780-kontroller inbäddad på den som hjälper oss att visa tecken. Varje tecken som vi visar är redan fördefinierat inuti ROM på HD44780 IC. Vi kommer att lära oss om LCD-styrenhet IC HD44780 innan vi visar tecken på LCD.
16x2 Dot Matrix LCD Controller IC HD44780:
För att visa en anpassad karaktär måste vi på något sätt berätta för IC att hur den anpassade karaktären kommer att se ut. För att göra det bör vi veta om de tre typerna av minnen som finns i HD44780 LCD-kontroller IC:
Character Generator ROM (CGROM): Det är det skrivskyddade minnet som, som sagt tidigare, innehåller alla mönster för karaktärerna som är fördefinierade inuti det. Denna ROM kommer att variera från varje typ av gränssnitts-IC, och vissa kan ha någon fördefinierad anpassad karaktär med sig.
Display Data RAM (DDRAM): Detta är ett random access-minne. Varje gång vi visar ett tecken hämtas dess mönster från CGROM och överförs till DDRAM och placeras sedan på skärmen. För att uttrycka det enkelt kommer DDRAM att ha mönster för alla tecken som för närvarande visas på LCD-skärmen. På detta sätt behöver IC inte hämta data från CGROM för varje cykel och hjälper till att få en kort uppdateringsfrekvens
Character generator RAM (CGRAM): Detta är också ett Random Access-minne så att vi kan skriva och läsa data från det. Som namnet antyder kommer detta minne att vara det som kan användas för att generera det anpassade tecknet. Vi måste skapa ett mönster för karaktären och skriva det i CGRAM, detta mönster kan läsas och visas på skärmen när det behövs.
Nu, eftersom vi fick en grundläggande förståelse för vilka typer av minne som finns i HD44780-gränssnittet IC. Låt oss ta en titt på databladet för att förstå lite mer.
Som databladet antyder har HD44780 IC tillhandahållits som 8 platser för att lagra våra anpassade mönster i CGRAM, även till höger kan vi se att det finns några fördefinierade tecken som också kan visas på vår LCD-skärm. Låt oss se hur vi kan göra det.
Visar en anpassad karaktär på 16x2 LCD:
För att visa ett anpassat tecken måste vi först skapa ett mönster för det och sedan spara det i CGRAM. Eftersom vi redan har biblioteksfunktionerna bör det vara enkelt att göra detta med några enkla kommandon. Här är biblioteket för LCD-funktioner, men här har vi kopierat in alla biblioteksfunktionerna i själva programmet, så du behöver inte inkludera denna rubrikfil i vårt program. Läs även den här artikeln för grundläggande LCD-arbete och dess pinouts.
Det första steget är att skapa ett mönster eller ett anpassat tecken. Som vi vet är varje karaktär en kombination av 5 * 8 prickar. Vi måste välja vilken punkt (pixel) som ska vara hög och vilken som ska vara låg. Rita bara en ruta som nedan och skugga regionerna baserat på din karaktär. Min karaktär här är en stickman (hoppas att den ser ut som en). När du är skuggad skriver du enkelt det motsvarande binära värdet för varje byte som visas nedan.
Sätt bara en '1' på den skuggade regionen och en '0' på den oskuggade regionen för varje byte, och det är det som vårt anpassade mönster är klart. På samma sätt har jag gjort 8 anpassade mönsterkoder för våra 8 minnesutrymmen presentera det CGROM. De listas i tabellen nedan.
S.NO: |
Anpassad karaktär |
Mönsterkod |
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 |
Obs! Det är inte obligatoriskt att ladda alla de åtta utrymmen som finns i CGRAM.
Programmering och arbetsförklaring:
Nu är våra mönsterkoder redo, vi måste bara ladda dem till LCD-skärmen CGRAM och visa dem med PIC-mikrokontroller. För att ladda in dem i CGRAM kan vi bilda en 5 * 8 matris med element och ladda varje byte med hjälp av en " for loop ". Matrisen med mönsterkod visas nedan:
const osignerad kort Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Kod för CGRAM-minnesutrymme 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00, CGRAM-minnesutrymme 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Kod för CGRAM-minne 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00AM minne, // Kod för CGMAM minne utrymme 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Kod för CGRAM-minne 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Kod för CGRAM-minne 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Kod för CGRAM-minnesutrymme 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Kod för CGRAM-minne 8};
Varje minnesutrymme är laddat med sitt respekterade karaktärsmönster. För att ladda detta mönster i HD44780 IC måste databladet för HD44780 hänvisas, men det är bara kommandorader som kan användas för att ställa in adressen för CGRAM
// *** Ladda anpassad röding i CGROM *** ////// Lcd_Cmd (0x04); // Ställ in CGRAM-adress Lcd_Cmd (0x00); //.. ställa in CGRAM-adress för (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Återgå till hem Lcd_Cmd (2); //.. återvänd till hem // *** Laddar anpassad röding komplett *** //////
Här, inuti " for loop" laddas varje binärt värde in i CGROM. När mönstret har laddats kan de anpassade tecknen göras för att visas genom att helt enkelt ringa mönstrets plats med hjälp av tomrummet Lcd_Print_Char (char data) -funktionen som visas nedan.
Lcd_Print_Char (0); // Visa anpassad karaktär 0 Lcd_Print_Char (1); // Visa anpassad karaktär 1 Lcd_Print_Char (2); // Visa anpassad karaktär 2 Lcd_Print_Char (3); // Visa anpassad karaktär 3 Lcd_Print_Char (4); // Visa anpassad karaktär 4 Lcd_Print_Char (5); // Visa anpassad karaktär 5 Lcd_Print_Char (6); // Visa anpassad karaktär 6 Lcd_Print_Char (7); // Visa anpassad karaktär 7
Skriv ut fördefinierad specialtecken:
HD44780 IC har några fördefinierade specialtecken lagrade i DDROM. Dessa tecken kan skrivas ut direkt på skärmen genom att hänvisa till dess binära värde i databladet.
Till exempel: Det binära värdet för tecknet "ALPHA" är 0b11100000. Hur man uppnår detta kan förstås från figuren nedan, på samma sätt kan du få värde för alla specialtecken som är fördefinierade i IC.
När det binära värdet är känt kan motsvarande tecken skrivas ut på skärmen genom att helt enkelt använda funktionen tomrum Lcd_Print_Char (char data) som visas nedan, Lcd_Print_Char (0b11100000); // binärt värde av alfa från datablad
Den fullständiga koden för detta projekt ges nedan i kodavsnittet, se även detaljerad videoförklaring i slutet av denna handledning.
Kretsanslutningar och testning:
Detta projekt har inga ytterligare hårdvarukrav, vi har helt enkelt använt samma anslutningar från föregående LCD-gränssnittshandledning och använt samma kort som vi har skapat i LED-blinkande handledning. Som alltid, låt oss simulera programmet med Proteus för att verifiera vår produktion.
När vi har simulerat som förväntat kan vi direkt bränna koden i vår hårdvaruuppsättning. Den utgång för programmet bör vara ungefär så här:
Så det är så du kan visa alla anpassade karaktärer på 16x2 LCD med PIC Microcontroller med MPLABX och XC8-kompilator. Kolla också vår kompletta PIC Microcontroller Learning Series här.