Hitachi HD44780 LCD-kontroller

HD44780 LCD-kontroller och HD44100-drivrutiner på baksidan av en 40266 LCD-modul

Hitachi HD44780 LCD-kontrollern är en alfanumerisk dot-matrix flytande kristallskärm (LCD)-kontroller utvecklad av Hitachi på 1980-talet. Handkontrollens teckenuppsättning innehåller ASCII- tecken, japanska Kana -tecken och några symboler i två rader med 40 tecken. Med hjälp av en förlängningsdrivrutin kan enheten visa upp till 80 tecken. Många tredjepartsskärmar är kompatibla med dess 16-stifts gränssnitt och instruktionsuppsättning, vilket gör den till en populär och billig LCD-drivrutin.

Arkitektur

Blockschema över en HD44780U-baserad LCD-modul

Hitachi HD44780 LCD-kontroller är begränsad till monokroma textskärmar och används ofta i kopiatorer , faxar , laserskrivare , industriell testutrustning och nätverksutrustning, såsom routrar och lagringsenheter .

Kompatibla LCD-skärmar tillverkas i flera standardkonfigurationer. Vanliga storlekar är en rad med åtta tecken (8×1), och formaten 16×2, 20×2 och 20×4. Större anpassade storlekar görs med 32, 40 och 80 tecken och med 1, 2, 4 eller 8 rader. Den vanligast tillverkade större konfigurationen är 40×4 tecken, vilket kräver två individuellt adresserbara HD44780-kontroller med expansionschips eftersom ett enda HD44780-chip bara kan adressera upp till 80 tecken.

Tecken LCD-skärmar kan ha en bakgrundsbelysning , som kan vara LED , fluorescerande eller elektroluminiscerande . Den nominella driftspänningen för LED-bakgrundsbelysning är 5V vid full ljusstyrka, med dämpning vid lägre spänningar beroende på detaljer som LED-färg. Bakgrundsbelysning som inte är LED kräver ofta högre spänning.

Gränssnitt

Dragon12-P Freescale HCS12 /9S12 projektutvecklingskort för mikrokontroller som använder en HD44780-baserad LC-skärm

Tecken LCD-skärmar använder ett gränssnitt med 16 kontakter, vanligtvis med stift eller kortkantanslutningar på 0,1 tum (2,54 mm) mitt. De utan bakgrundsbelysning kan bara ha 14 stift, utan de två stiften som driver ljuset. Det här gränssnittet har utformats för att enkelt anslutas till Intel MCS-51 XRAM-gränssnittet, med endast två adressstift, vilket gjorde det möjligt att visa text på LCD-skärmen med enkla MOVX-kommandon, vilket erbjuder ett kostnadseffektivt alternativ för att lägga till textvisning till enheter. [ citat behövs ]

Den dominerande pinouten är som följer (undantag finns):

Stift# namn Riktning Beskrivning
1 Vss Kraft Strömförsörjningsjord
2 Vcc Kraft Strömförsörjning (+3,3 eller +5 V beroende på modul)
3 Vee Inmatning Kontrastjustering (analog ingång)
4 RS Inmatning Register Select (0 = kommando, 1 = data)
5 R/ W Inmatning Läs/ skriv (0 = skriv till displaymodul, 1 = läs från displaymodul)
6 E Inmatning Klockaktivering (utlöst med fallande kant)
7 DB0 I/O Databit 0 (används inte i 4-bitars drift)
8 DB1 I/O Databit 1 (används inte i 4-bitars drift)
9 DB2 I/O Databit 2 (används inte i 4-bitars drift)
10 DB3 I/O Databit 3 (används inte i 4-bitars drift)
11 DB4 I/O Databit 4
12 DB5 I/O Databit 5
13 DB6 I/O Databit 6
14 DB7 I/O Databit 7
15 LED+ Kraft Bakgrundsbelysningsanod (+) (om tillämpligt)
16 LED− Kraft Bakgrundsbelysningskatod (−) (om tillämpligt)

Anmärkningar:

  • Vee (även V0): Detta är en analog ingång, vanligtvis ansluten till en potentiometer. Användaren måste kunna styra denna spänning oberoende av alla andra justeringar, för att optimera synligheten av displayen som varierar bl.a. a. med temperatur och i vissa fall höjd över havet. Med en felaktig justering verkar displayen inte fungera.
  • R/ W : I de flesta applikationer är det inte nödvändigt att läsa från HD44780. I så fall kan detta stift vara permanent anslutet till jord och inga processorstift behöver tilldelas för att styra det.

Val av läge

En skärm på 20×4 tecken

I 8-bitarsläge sker alla överföringar i en cykel av aktiveringsstiftet (E) med alla 8 bitar på databussen och RS- och R/ W -stiften stabila. I 4-bitarsläge överförs data som par av 4-bitars " nibbles " på de övre datastiften, D7–D4, med två aktiveringspulser och RS- och R/ W -stiften stabila. De fyra mest signifikanta bitarna (7–4) måste skrivas först, följt av de fyra minst signifikanta bitarna (3–0). Hög/låg-sekvensen måste slutföras varje gång annars kommer styrenheten inte att ta emot ytterligare kommandon korrekt.

Att välja 4-bitars eller 8-bitarsläge kräver noggrant val av kommandon. Det finns två primära överväganden. För det första, med D3–D0 oansluten, kommer dessa linjer alltid att verka höga (binära 1111) för HD44780 eftersom det finns interna pull-up MOSFETs . För det andra kan LCD-skärmen initialt vara i ett av tre tillstånd:

  • Tillstånd 1: 8-bitars läge
  • Tillstånd 2: 4-bitars läge, väntar på den första uppsättningen med 4 bitar
  • Tillstånd 3: 4-bitars läge, väntar på den andra uppsättningen med 4 bitar

Tillstånd 3 kan till exempel inträffa om en tidigare kontroll avbröts efter att endast skicka de första 4 bitarna av ett kommando medan HD44780 var i 4-bitars läge.

Följande algoritm säkerställer att LCD-skärmen är i önskat läge:

Samma kommando skickas tre gånger, funktionsuppsättning med 8-bitars gränssnitt D7–D4 = binär 0011, de fyra nedre bitarna är "bryr sig inte", med enstaka aktiveringspulser. Om styrenheten är i 4-bitars läge ignoreras de fyra nedre bitarna så att de inte kan skickas förrän gränssnittet har en känd storlekskonfiguration.

Börjar i tillstånd 1 (8-bitars konfiguration):

  • Skicka funktionsuppsättning kommando. Kommandot kommer att utföras, ställ in 8-bitars läge.
  • Skicka funktionsuppsättning kommando. Kommandot kommer att utföras, ställ in 8-bitars läge.
  • Skicka funktionsuppsättning kommando. Kommandot kommer att utföras, ställ in 8-bitars läge.

Börjar i tillstånd 2 (4-bitars konfiguration, väntar på första 4-bitars överföring):

  • Skicka funktionsuppsättning kommando. De första 4 bitarna mottagna.
  • Skicka funktionsuppsättning kommando. Senaste 4 bitarna, kommandot accepterat, ställ in 8-bitars läge.
  • Skicka funktionsuppsättning kommando. Kommandot kommer att utföras, ställ in 8-bitars läge.

Börjar i tillstånd 3 (4-bitars konfiguration, väntar på senaste 4-bitars överföring):

  • Skicka funktionsuppsättning kommando. Senaste 4 bitarna, okänt kommando kört.
  • Skicka funktionsuppsättning kommando. I 8-bitarsläge kommer kommandot att utföras, annars tas de första 4 bitarna emot.
  • Skicka funktionsuppsättning kommando. 8-bitars kommando kommer att utföras eller de sista 4 bitarna av föregående kommando; ställ in 8-bitarsläge.

I alla tre startfallen är bussgränssnittet nu i 8-bitars läge, 1 rad, 5×8 tecken. Om en annan 8-bitars konfiguration önskas, bör ett kommando för 8-bitars bussfunktion skickas för att ställa in alla parametrar. Om 4-bitars läge önskas ska binär 0010 skickas på D7–D4 med en enda aktiveringspuls. Nu kommer regulatorn att vara i 4-bitars läge och en fullständig 4-bitars bussfunktionsuppsättningskommandosekvens (två aktiveringar med kommandobitarna 7–4 och 3–0 på efterföljande cykler) kommer att slutföra konfigurationen av funktionsuppsättningsregistret.

Instruktionsuppsättning

HD44780-instruktionsuppsättningen visas nedan:

HD44780U baserad instruktionsuppsättning
Instruktion Koda Beskrivning

Utförandetid (max) (när f cp = 270 kHz)
RS R/W B7 B6 B5 B4 B3 B2 B1 B0
Tydlig display 0 0 0 0 0 0 0 0 0 1 Rensar displayen och återställer markören till hempositionen (adress 0). 1,52 ms
Markören hem 0 0 0 0 0 0 0 0 1 * Återgår markören till hemposition. Återställer också att displayen flyttas till den ursprungliga positionen. DDRAM-innehållet förblir oförändrat. 1,52 ms
Ingångsläge inställt 0 0 0 0 0 0 0 1 I/D S Ställer in markörens rörelseriktning (I/D); anger att skifta displayen (S). Dessa operationer utförs under läsning/skrivning av data. 37 μs
Display på/av-kontroll 0 0 0 0 0 0 1 D C B Sätter på/av för all display (D), markör på/av (C) och blinkning av markörpositionstecknet (B). 37 μs
Skift av markör/display 0 0 0 0 0 1 S/C R/L * * Ställer in markörflyttning eller visningsförskjutning (S/C), skiftriktning (R/L). DDRAM-innehållet förblir oförändrat. 37 μs
Funktionsuppsättning 0 0 0 0 1 DL N F * * Ställer in gränssnittsdatalängd (DL), antal visningsrader (N) och teckensnitt (F). 37 μs
Ställ in CGRAM-adress 0 0 0 1 CGRAM-adress Ställer in CGRAM-adressen. CGRAM-data skickas och tas emot efter denna inställning. 37 μs
Ställ in DDRAM-adress 0 0 1 DDRAM-adress Ställer in DDRAM-adressen. DDRAM-data skickas och tas emot efter denna inställning. 37 μs
Läs upptagen flagga och adressräknare 0 1 BF CGRAM/DDRAM-adress Läser upptagen flagga (BF) som indikerar intern operation som utförs och läser CGRAM- eller DDRAM-adressräknarens innehåll (beroende på tidigare instruktion). 0 μs
Skriv CGRAM eller DDRAM 1 0 Skriv data Skriv data till CGRAM eller DDRAM. 37 μs
Läs från CG/DDRAM 1 1 Läs data Läs data från CGRAM eller DDRAM. 37 μs
Instruktionsbitnamn —

I/D – 0 = minska markörens position, 1 = öka markörens position; S – 0 = ingen displayförskjutning, 1 = displayförskjutning; D – 0 = display av, 1 = display på; C – 0 = markör av, 1 = markör på; B – 0 = markörblinkning av, 1 = markörblinkning på; S/C – 0 = flytta markören, 1 = skift display; R/L – 0 = växling åt vänster, 1 = växling åt höger; DL – 0 = 4-bitars gränssnitt, 1 = 8-bitars gränssnitt; N – 0 = 1/8 eller 1/11 tull (1 rad), 1 = 1/16 tull (2 rader); F – 0 = 5×8 punkter, 1 = 5×10 punkter; BF – 0 = kan acceptera instruktion, 1 = intern drift pågår.

DDRAM är Display Data RAM och CGRAM är Character Generator RAM. DDRAM är 80 byte (40 per rad) adresserad med ett gap mellan de två raderna. Den första raden är adresser 0 till 39 decimaler eller 0 till 27 hex. Den andra raden är adresser 64 till 103 decimaler eller 40 till 67 hex.

CGRAM är ett läs-/skrivminne som används för att koda upp till 8 tecken i teckengeneratorn. Den består av 64 fält på adresserna 0 till 3F hex. Varje fält är 5 bitars mappning till en rad med pixlar av varje tecken. Varje 8 fält i CGRAM används för varje tecken. De nedre 3 bitarna av teckenkoderna från 0–7 och 8–15 väljer grupperna med 8 fält i CGRAM-minnet.

Läsning och skrivning till DDRAM görs genom att ställa in RS-ingången högt under bussöverföringar. DDRAM måste också väljas genom att använda kommandot Set DDRAM address som väljer DDRAM för åtkomst och även ställer in startadressen för DDRAM åtkomst.

Likaså görs läsning och skrivning till CGRAM genom att ställa in RS-ingången högt under bussöverföringar. CGRAM måste också väljas av kommandot Set CGRAM address som väljer CGRAM för åtkomst och även ställer in startadressen för CGRAM åtkomst.

Utförandetiderna som anges i denna tabell är baserade på en oscillatorfrekvens på 270 kHz. Databladet indikerar att för ett motstånd på 91 kΩ vid V CC = 5 V kan oscillatorn variera mellan 190 kHz och 350 kHz vilket resulterar i väntetider på 52,6 µs och 28,6 µs istället för 37 µs. Om en display med det rekommenderade 91 kΩ-motståndet drivs från 3,3 volt kommer oscillatorn att gå mycket långsammare. Om den upptagna biten inte används och instruktionerna är tidsinställda av den externa kretsen, bör detta beaktas.

Font

Gul bakgrundsbelysning på en 8×2-tecken HD44780-skärm

Den ursprungliga HD44780 teckengenerator ROM innehåller 208 tecken i en 5×8 punktmatris och 32 tecken i en 5×10 punktmatris. Nyare kompatibla chips finns med högre upplösning, matchade med skärmar med fler pixlar. [ citat behövs ]

Två versioner av ROM har utvecklats:

7-bitars ASCII- underuppsättningen för den japanska versionen är icke-standard: den tillhandahåller en Yen-symbol där det omvända snedstrecket normalt finns, och vänster- och högerpilsymboler i stället för tilde och rubout-tecknet .

Ett begränsat antal anpassade tecken kan programmeras in i enheten i form av en bitmapp med hjälp av speciella kommandon. Dessa tecken måste skrivas till enheten varje gång den slås på, eftersom de lagras i flyktigt minne .

Se även

  • LCD Smartie – Drivrutin för öppen källkod för Microsoft Windows
  • JIS X 0201 – Japansk standard 7-bitars och 8-bitars teckenkodning

Vidare läsning

  •   Huang, Han-Way (2009). The HCS12 / 9S12: An Introduction to Software and Hardware Interface (andra upplagan). Delmar Cengage Learning. ISBN 978-1-4354-2742-6 .
  •   Sanchez, Julio; Canton, Maria P. (2007). Mikrokontrollerprogrammering: Microchip PIC . CRC Tryck. ISBN 978-0-8493-7189-9 .