Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Mit Bascom, LCD-Displays ansteuern

LCD Display

Ein LCD-Display, kann man mit wenig Aufwand an einen AVR anschließen. Ein paar Leitungen, ein kleines Programm und schon hat man eine Anzeige für den AVR.

Es gibt unter den Displays zwei große Gruppen.

Das eine sind die Text-Displays (können nur Text und deren Sonderzeichen darstellen), das andere sind die Grafik-Displays.

Hier geht es um Text- Displays.

Anschlüsse:

Die meisten Text-LCD’s haben einen 14 Poligen bzw. einen 16 Poligen Anschluss. 14 Polig ist meist ein LCD ohne Hintergrundbeleuchtung und beim 16 Poligen ist meist der Pin 15 und 16 die Beleuchtung.

Die Anschlüsse vom LCD-Display:

1 Vss GND
2 Vcc 5V
3 Vee Kontrastspannung (0V bis 5V)
4 RS Register Select (Befehle/Daten)
5 RW Read/Write
6 E Enable
7 DB0 Datenbit 0
8 DB1 Datenbit 1
9 DB2 Datenbit 2
10 DB3 Datenbit 3
11 DB4 Datenbit 4
12 DB5 Datenbit 5
13 DB6 Datenbit 6
14 DB7 Datenbit 7
15 Beleuchtung GND
16 Beleuchtung 5V über mindestens einen 5 Ohm Widerstand anschließen)


In den meisten Displays wird der Controllerchip HD44780 von Hitachi eingesetzt, oder auch der kompatible Bruder SED1278 von Epson. Auch in Verbindung mit dem Chip HD44100. (Auf der Rückseite vom Display nachschauen) Für alle diese trifft das obige Anschlussbild zu.

Hier ein LCD mit 16 Zeichen mal 2 Zeilen (16*2)

LCD 16 2 Vorderseite.jpg


Und davon die Rückseite, mit Chip HD44100 und HD44780

LCD 16 2 Rückseite kleiner.jpg



Hier ein LCD mit 24 Zeichen in je 2 Zeilen

LCD 24 2 Vorderseite kleiner.jpg

Und die Rückseite

LCD 24 2 Rückseite kleiner.jpg

Anschluss

Die Stromversorgung eines LCD sieht so aus:

Stromversorgung.jpg


Mit dieser Beschaltung kann man schon mal probieren, ob man durch verdrehen des Kontrast-Potie, dunkle Vierecke zu sehen bekommt. Wenn ja, ist bis hier her schon mal alles ok . Den Kontrast jetzt so einstellen, dass man gerade, diese dunklen Vierecke nicht mehr sieht.

Anschlussmöglichkeiten des Dispaly

Das Display besitzt neben der Stromversorgung noch die Anschlüsse: RW, RS , E und 8 Datenleitungen.

Es gibt zwei Möglichkeiten, wie man die 8 Datenleitungen des Displays an den AVR anschließen kann.
Einmal den 8-Bit Modus und einmal den 4-Bit Modus. Beim 8 Bit Modus, schließt man alle 8 Datenleitungen an den AVR und kann in einem Schritt, ein Zeichen (=1 Byte )in das Display übertragen. Oder man macht es im 4 Bit Modus, mit nur 4 Datenleitungen und muss dafür 2*4 Bit für ein Zeichen übertragen (4 Bit = ein Nibble)

Der Vorteil:
Ich erspare mir somit 4 Leitungen des AVR’s und kann sie anderweitig nutzen.

Der Nachteil:
Ich muss für ein Zeichen nun 2*4 Bit übertragen (= langsamer)

Aber, da in diesem Fall die Geschwindigkeit nicht so eine große Rolle spielt und wir lieber 4 Leitungen mehr am AVR haben möchten, schließen wird das Display im 4Bit Modus an.


Anschlussbelegung für das Display im 4-Bit Modus: (Als Beispiel am Port D)

Display Am AVR
1 Vss GND
2 Vcc 5V
3 Vee Poti (siehe oben)
4 RS PD4 am AVR
5 RW GND
6 E PD5 am AVR
7 DB0 GND
8 DB1 GND
9 DB2 GND
10 DB3 GND
11 DB4 PD0 am AVR
12 DB5 PD1 am AVR
13 DB6 PD2 am AVR
14 DB7 PD3 am AVR
15 Beleu. frei
16 Beleu. frei

Die vier Datenleitungen vom Display, die wir nicht brauchen, legen wir auf Masse. Zu den vier Datenleitungen brauchen wir noch die Leitungen RS und E. Den Anschluss RW brauchen wir nicht und legen ihn deshalb auch auf Masse.

Wir kommen somit für das Display, mit 6 Datenleitungen aus, die wir alle an das Port D (vom Mega 8) anschließen.

Das Programm für das LCD

 $regfile = "m8def.dat"
 $crystal = 4000000

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 Config Lcdbus = 4
 
 Cls
 Locate 1 , 1
 Lcd "Hallo Welt"

Dieses Programm gibt den Text „Hallo Welt“ auf dem Display aus.

Erklärung:

 $regfile = "m8def.dat"
 $crystal = 4000000

Definiert den Mega8 als Prozessor und einen 4 Mhz Quarz.


Config Lcd = 16 * 2

Definiert das LCD-Display als 16*2 Anzeige. Sind somit zwei Zeilen mit jeweils 16 Zeichen.
Folgende weitere Typen von LCD’s könnte man angeben: 16*1 , 16*2 , 16*4 , 20*2 , 20*4 , 40*4


Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

Definiert, wo das Display an den AVR angeschlossen wird. Db4, Db5, Db6....., E , RS sind die Pins vom LCD (siehe Tabelle)
Portd.0, Portd.1 u.s.w., sind die Port’s vom Mega8 (Port D)
Heißt also: Die Leitung Db4 vom LCD wird an den Port PD0 angeschlossen (Pin 2 am Mega8)
Mit diesem Befehl, kann man das LCD auch an andere Pins vom AVR anschließen


Config Lcdbus = 4

Definiert den 4-Bit Modus für das LCD. Beim 8-Bit Modus, müsste man statt der 4 eine 8 schreiben. Der AVR weis dann, wie viele Datenleitungen angeschlossen wurden und wie er den Datentransfer zu dem LCD durchführen muss.


Cls
Locate 1 , 1

Cls löscht das LCD-Display und Locate 1,1 definiert die nächste Ausgabe mit 1.) Zeile, 1.)Position
(Locate 2,10 wäre dann ausgabe in Zeile 2 und an zehnter Position )


Lcd "Hallo Welt"

Mit LCD kann man nun den Text ausgeben. :-)


Autor

Weblinks

Siehe auch