Nach ein paar „Erholungstagen“ habe ich mal wieder ein Experiment mit meinem RN-Control auf dem Weg zum funktionierenden Roboter durchgeführt.
Diesmal hab ich mir vorgenommen, die sehr günstigen LCD-Module HMC16223SG von Pollin (jeweils nur 1,95Euro) zum Laufen bzw. Anzeigen zu bringen.
So sehen die Module aus:

Eine grundsätzliche Info zum Start: Die Module sind wirklich sehr klein und wenn man keine sogenannte Flex-Print-Buchsen hat (die Gegenstücke zu den angelöteten Flachbandkabeln), ist das ganze sehr pfriemelig.
Ich hatte keine und habe mich daher dazu entschlossen, eben dieses Kabel zu entfernen – geht mit Entlötlitze recht gut – und statt dessen flexible Leitungen anzulöten.
Das Ergebnis dieser Behandlung sieht man hier recht gut:

In diesem Bild sieht man auch das Poti, welches für die Kontrastregelung zuständig ist. Wie man ein LCD korrekt anschließt ist in diesem Artikel beim mittlerweile oft zitierten „Roboternetz“ zu finden. Es wäre sicher Unsinn, dieses Thema hier ebenfalls erschöpfend zu behandeln.
Das Datenblatt, welches man bei Pollin runterladen kann, gibt im Prinzip folgende Pinbelegung an:
Pin 01 – VSS (GND)
Pin 02 – VDD (+5V z.B. vom RN-Control)
Pin 03 – V0 (Das Datenblatt spricht hier von einer „Stromversorgung für den Flüssig-Kristall Antrieb“, gemeint ist Kontrast)
Pin 04 – RS (Register)
Pin 05 – R/W (Lesen oder schreiben)
Pin 06 – E (Aktivierung)
Pin 07 – DB0 (Datenleitung 1)
Pin 08 – DB1 (Datenleitung 2)
…
Pin 14 – DB7 (Datenleitung 8 )
Pin 15 und 16 sind beim Pollin nicht von Bedeutung. Hier wäre normalerweise die Beleuchtung anzuschließen.
Prinzipiell kann man zwei verschiedene Betriebsarten beim LCD unterscheiden: Den 4Bit oder den 8Bit-Modus. Dabei benötigt man entweder 4 oder natürlich 8 Datenleitungen. Somit haben wir beim 4-Bit-Modus den Vorteil, nur 4 Leitungen vom Microcontroller zu verbrauchen. Der Nachteil, daß dieser Modus auch um einiges langsamer ist, soll uns jetzt weniger stören.
Um das LCD zum Leben zu erwecken, brauchen wir mindestens die Pins 1, 2, 3, 4, 6, 11, 12, 13 und 14. Die restlichen Pins legen wir auf Masse. Am unten aufgeführten Bascom-Listing kann man sehr gut sehen, welcher Pin des LCD an welchen Pin des Controllers kommt.
Pin 01 – GND
Pin 02 – 5V
Pin 03 – an den Schleifer des Poti (die beiden anderen Beinchen des Poti an 5V bzw. GND)
Pin 04 – Port B0
Pin 05 – GND
Pin 06 – Port B1
Pin 07 – GND
Pin 08 – GND
Pin 09 – GND
Pin 10 – GND
Pin 11 – Port B2
Pin 12 – Port B3
Pin 13 – Port B4
Pin 14 – Port B5
So sieht das ganze angeschlossen aus:

Das folgende Listing tut nun nichts anderes, als ein LCD mit 16*2 Zeichen (Config Lcd) mit oben genannter Pinbelegung (Config Lcdpin) im 4-Bit-Modus (Config Lcdbus) zu definieren. Dieses wird gelöscht (Cls – Clear Screen), der Cursor auf Zeile 1, Zeichen 1 (Locate 1,1) gestellt und dann ein Text ausgegeben (Lcd „Hallo Welt“). Auf Zeile 2 steht dann ein anderer Text.
Die Schleife (For i=1 to 999) dürfte ja klar sein. Siehe dazu auch das Bild weiter unten. Hinweis: Der Zeilenumbruch beim „Config Lcdpin“-Befehl ist natürlich zu enfernen.
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Dim I As Integer
Config Portb = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 ,
Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcdbus = 4
Config Lcdmode = Port
Cls
Locate 1 , 1
Lcd "Hallo Welt"
Wait 1
Locate 2 , 1
Lcd "99er@wordpress"
Wait 1
For I = 1 To 999
Cls
Locate 1 , 1
Lcd "99er@wordpress"
Waitms 100
Locate 2 , 1
Lcd I
Waitms 500
Next I
End
So in der Art sollte dann das Ergebnis aussehen:

Filed under: Elektronik, Programmierung | Tagged: ATMega, Bascom, LCD | Kommentare deaktiviert für Hello World 2


