HD44780

Från ElektronikWikin
Hoppa till navigering Hoppa till sök

HD44780 är en styrkrets för LCD-skärmar. Här följer en beskrivning av hur den används:

Mycket vanlig styrkrets för LCD-Displayer

Ladda hem [databladet].

Det här är en kort guide till hur man använder LCD displayer med HD44780. Guiden är inte komplett men beskriver de viktigaste sakerna för att kunna få igång sin display. Informationen jag presenterar fungerar på tvåradiga displayer, men skulle lätt kunna justeras för andra displaystorlekar. På sista sidan finns ett exempel på hur man kan koppla en display till parallellporten på en PC.

Pinkonfiguration

Först gäller det att ta reda på vilka in/utgångar som är vilka. De är numrerade från 1 till 14 och sitter alltid i nummerordning. Pin 1 och 14 brukar vara markerade med text på kretskortet. Står det inte markerat kan du ganska enkelt ta reda på vilket ben som är vilket:

Börja med att leta upp pin 1, jord. Det kan du göra genom att testa med en multimeter vilken av pinnarna som är kopplade till de små kopparområdena som displayens metallskal är fästa vid.

Om alla 14 pinnar sitter på rad på din lcd-display är det bara att utgå från pin 1 så vet du precis vilken som är vilken. Om de 14 pinnarna istället är konfigurerade i två kolumner så får du räkna radvis, på första raden sitter alltså pin 1 och 2, på andra raden pin 3 och 4 osv. pin 3 sitter under pin 1.

Förklaring av in-/utångarna

LCD-displayen har följande benkonfiguration:

Pin nr Namn Funktion
1 Vss Jord (0V)
2 Vcc Kraftförsörjning +5V
3 Vee Kontrast
4 RS 0 = instruktion, 1 = data
5 R/W 0 = skriv, 1 = läs
6 E Dataöverföringspuls
7 D0 Databitar 0 - 7
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7

På pin 3, kontrasten, skall det ligga en spänning som för de flesta displayer är mellan 0V och -5V. Det kan vara lite lurigt att generera negativ spänning, men man kan exempelvis köpa en LMC 7660 (ELFAs ordernummer 73-141-07, kostar bara 15 kr) för att enkelt få ut en lämplig spänning. Ibland har man dock tur, då går det bra med en positiv spänning, det är bara att testa!

Man använder pin 6, E, för att skicka en puls när de 8 databitarna skall skickas. Man lägger alltså först ut data på datapinnarna för att sedan skicka en puls till E.

Med pin 4, RS, bestämmer man om de åtta bitarna som ska skickas är instruktion eller data, mer information om detta kommer nedan.

Pin 5, R/W, avgör åt vilket håll databitarna ska skickas, jag brukar dra denna pinne till jord eftersom jag aldrig brukar läsa av vad det står på displayen i efterhand.

Initiering

Se sidan 212 i databladet för mer information.

Det första man måste göra när man kopplat in sin LCD och satt på strömmen är att initialisera HD44780 kretsen.

Nedanstående data skall skickas till displayen, en byte i taget. RS ska vara 0 under hela initialisationen. D7 är biten längst till vänster och D0 biten längst till höger. Mellan varje kommando måste man vänta minst 40 mikrosekunder, förutom de första där längre tid krävs. Vänta minst 20ms med att initiera displayen efter det att den fått ström.

00110000 - vänta minst 5 ms
00110000 - vänta minst 0.1 ms
00110000
00111000
00001100
00000001
00000110

För varje byte gör man så här: Lägger ut de åtta databitarna på respektive D-pinne på displayen. Sätter E till 1 en kort stund (hur lång tid spelar ingen roll, men måste vara längre än 0.5 mikrosekunder) för att sedan sätta den till 0 igen, nu är databyten skickad och man kan fortsätta med att lägga ut nästa…

Om man använder en PC kanske det är lättare att använda decimala eller hexadecimala tal, initialisationsdatan ser då ut så här:

Hex: 30, 30, 30, 38, 08, 01, 06
Dec: 48, 48, 48, 56, 8, 1, 6

När alla 7 talen har skickats till displayen är den redo att användas!

Kommandon

Se sidan 191 i databladet för mer information om kommandon.

Innan vi börjar skriva text på displayen vill jag introducera några kommandon man kan använda, RS ska alltid vara 0 när man skickar kommandon.

Kommando Binärt Övrigt
Rensa skärmen 00000001 Tömmer hela displayen på all text
Gå till första teckenplatsen 00000010 Flyttar cursorn till adress 0, alltså längst upp till vänster
På/Av och cursor 00001DCB D = 1 display på, C = 1 cursor på, B = 1 cursor blinkar
Flytta cursor 1xxxxxxx Adress där cursorn ska hamna, bättre förklaring nedan

Varje gång man skriver ett tecken flyttar sig cursorn, så man behöver inte tänka på att flytta cursorn själv. Dock måste man själv byta rad, Första tecknet på rad 1 har adressen 0 och första tecknet på rad 2 har adressen 40h (100000 binärt och 64 decimalt).

Det är viktigt att ta hänsyn till hur lång tid ovanstående kommandon tar innan de har utförts. Att rensa skärmen och att gå till första teckenplatsen tar max 5ms och övriga kommandon tar 40 mikrosekunder.

Skriva text

Nu är vi redo att skiva text på displayen! När man skriver text ska RS vara 1. Sedan är det bara att lägga ut ett valfritt tecken på D7-D0 (se teckentabell på sista sidan) och skicka en puls på E-pinnen.

Låt det gå minst 40 mikrosekunder mellan varje skrivet tecken!

4-bitarsinterface

I många situationer, exempelvis då man använder små enchipsdatorer, kan det vara bra att spara in på antalet anslutningar. På LCD-displayer med kretsen HD44780 räcker det med att använda 4 anslutningar för data, vilket medför att det räcker med 6 anslutningar för att styra displayen.

När man använder 4-bitars interface ansluter man endast D4, D5, D6 och D7. Det är viktigt att övriga datapinnar, alltså D0, D1, D2 och D3 kopplas till jord, det är vanligt att man missar detta och följden blir att displayen inte initieras rätt.

Initialisationen skiljer sig mellan 8- och 4-bitars interface, nedan följer den data som skall överföras till displayen för att 4-bitars interface skall aktiveras. RS skall vara 0 under initialisationen. Mellan varje kommando måste man vänta minst 40 mikrosekunder, förutom de första där längre tid krävs. Vänta minst 20ms med att initiera displayen efter det att den fått ström.

Bitarna är i ordningen D7, D6, D5, D4.

0011 – vänta minst 5 ms
0011 – vänta minst 0.1 ms
0011
0010
0010
1000
0000
1000
0000
0001
0000
0110

När du skickat ovanstående data är det bara att börja använda displayen! För att skicka text och kommandon gör man som i 8-bitars läge med den skillnaden att man delar upp data i två delar. Först lägger man ut den första halvan av databyten på port D7-D4 och skickar en puls på E porten, sedan tar man de sista 4 bitarna och lägger ut på D7-D4, också detta följt av en puls på E porten. Det är bitarna 7-4 som skickas först, följt av 3-0.

Teckentabell

Lcd charmap.png

(Bilden hämtad från http://home.iae.nl/users/pouweha/index.shtml )

LCD-display kopplad till parallellporten på en PC

Lcd pcpar.png

(Bilden hämtad från http://www.beyondlogic.org/parlcd/parlcd.htm )

Ladda hem [databladet].