Initialisierung des LCD - Display (20x4)
Hallo,
ich lese hier schon eine zeitlang mit, jetzt habe ich ne Frage.
Gibt es die (Firmware-)Quelle zu den RN.Boards (hier speziell das RN-KeyLCD) zum Download?
Ich versuche gerade das gleiche LCD-Display unter Bascom direkt an einem AVR zum Laufen zu kriegen, wie es auch auf dem RN-KeyLCD-Board unterstützt wird (Dotmatrix, 20x4 Zeichen, Kontroller KS0073). Leider mache ich bei der Initialisierung irgendwas falsch.
Ich bekomme zwar den Text auf das Display, allerdings lassen sich die 4 Zeilen nicht sauber ansteuern. Die erste Zeile und die dritte Zeile sind ok. Die zweite und vierte Zeile kann ich erst ab etwa der Mitte beschreiben. Am Anfang dieser Zeilen sehe ich wieder ein Teil des Textes aus der jeweiligen Zeile davor.
Ich vermute, dass ich nur igendwas bei der Ansteuerung oder Inititalisierung falsch mache. (Ich benutze die orginal - Bascom - Routinen)
Code-Schnipsel:
Code:
' Lcd-Modul initialisieren
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.1
Config Lcd = 20 * 4
Config Lcdbus = 4
Angeschlossen ist das Display mit den Leitungen E, RS und D4 - D7.
Vielleicht hat ja jemand einen Tipp, oder sogar einen Code-Schnipsel, was bei der Initialisierung fehlt.
Danke und Gruß,
- Joerg -
Liste der Anhänge anzeigen (Anzahl: 1)
Lösung gefunden für Display 20x4 mit KS0073
Hallo nochmal,
bin zwar nicht direkt zum Ausprobieren der Tipps gekommen, habe nun aber die Lösung mithilfe der Tips gefunden.
Den Code habe ich mal beigefügt:
Code:
'Pins des LCD-Modules setzen ggf. an eigene Anschlüsse anpassen
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.1
Initlcd
'Config Lcd = 20 * 4 ' wird nicht benötigt daher auskommentiert
'Config Lcdbus = 4 ' oder weglassen :-)
Call Lcdwrite(&B00101100)
Waitms 5
Call Lcdwrite(&B00001001)
Waitms 5
Call Lcdwrite(&B00101000)
Waitms 5
Call Lcdwrite(&B00000110)
Waitms 5
Call Lcdwrite(&B00001100)
Waitms 5
'...
' hier LCD - Ausgaben und Hauptprogramm
'...
'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portc.4 = 1 Else Portc.4 = 0
If Zeichen.5 = 1 Then Portc.5 = 1 Else Portc.5 = 0
If Zeichen.6 = 1 Then Portc.6 = 1 Else Portc.6 = 0
If Zeichen.7 = 1 Then Portc.7 = 1 Else Portc.7 = 0
' Höherwertiges Nibble übertragen
Portc.3 = 1
Waitms 1
Portc.3 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portc.4 = 1 Else Portc.4 = 0
If Zeichen.1 = 1 Then Portc.5 = 1 Else Portc.5 = 0
If Zeichen.2 = 1 Then Portc.6 = 1 Else Portc.6 = 0
If Zeichen.3 = 1 Then Portc.7 = 1 Else Portc.7 = 0
' Niederwertiges Nibble übertragen
Portc.3 = 1
Waitms 1
Portc.3 = 0
Waitms 1
End Sub
Das kann man zwar bestimmt noch besser machen, aber es funktioniert.
Ich habe jetzt "nur" noch das Problem, dass das LCD mit den Bascom-Befehlen
- Lowerline die dritte Zeile und mit
- Thirdline die Zweite Zeile anspricht.
Das ist zwar nicht schön aber kein Problem, da ich das ja im Code berücksichtigen kann. (Nur für die Dokumentation ist es etwas verwirrend.)
Wenn hier noch jemand einen Tipp für mich hat, ist der gerne willkommen, ansonsten lasse ich es so wie es jetzt ist.
Danke nochmal für die Hilfe.
Gruß, Jörg