(→Das Programm für das LCD) |
K (→Autor) |
||
Zeile 269: | Zeile 269: | ||
</pre> | </pre> | ||
Mit LCD kann man nun den Text ausgeben. :-) | Mit LCD kann man nun den Text ausgeben. :-) | ||
+ | |||
+ | |||
==Autor== | ==Autor== |
Version vom 14. Januar 2006, 23:09 Uhr
Inhaltsverzeichnis
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)
Und davon die Rückseite, mit Chip HD44100 und HD44780
Hier ein LCD mit 24 Zeichen in je 2 Zeilen
Und die Rückseite
Anschluss
Die Stromversorgung eines LCD sieht so aus:
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. :-)