PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme bei der Zeilendarstellung für LCD (EADIP204)



Foooob
28.06.2006, 22:23
Hallo

Mein LCD (KS0073 Kontroller) hat ein Problem beim Darstellen von Texten in den Zeilen 2 und 4 (siehe Bild)

Ich hoffe ihr könnt mir helfen. Ihr könnt ja Bild und Code miteinander vergleichen. Ich weis nicht wie ich diese Klammerflut wegbekommen soll.




$regfile = "m32def.dat" 'ATmega32
$crystal = 11059200 'Quarz: 11059200 Hz

Declare Sub Lcdwrite(byval Zeichen As Byte)

'Pins des LCD-Modules

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


Initlcd
Config Lcd = 20 * 4a


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


Do

Locate 1 , 1 : Lcd "Das ist ein LCD-Test"
Locate 2 , 1 : Lcd "...Und noch ein Test"
Locate 3 , 1 : Lcd "Gestern ist heute..."
Locate 4 , 1 : Lcd "noch morgen - Test12"

Loop

'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdwrite(byval Zeichen As Byte)


' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Porta.0 = 1 Else Porta.0 = 0
If Zeichen.5 = 1 Then Porta.1 = 1 Else Porta.1 = 0
If Zeichen.6 = 1 Then Porta.2 = 1 Else Porta.2 = 0
If Zeichen.7 = 1 Then Porta.3 = 1 Else Porta.3 = 0
' Höherwertiges Nibble übertragen
Porta.4 = 1
Waitms 1
Porta.4 = 0
Waitms 1

' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Porta.0 = 1 Else Porta.0 = 0
If Zeichen.1 = 1 Then Porta.1 = 1 Else Porta.1 = 0
If Zeichen.2 = 1 Then Porta.2 = 1 Else Porta.2 = 0
If Zeichen.3 = 1 Then Porta.3 = 1 Else Porta.3 = 0
' Niederwertiges Nibble übertragen
Porta.4 = 1
Waitms 1
Porta.4 = 0
Waitms 1


Waitus 250

End Sub

End

Foooob
05.07.2006, 13:58
Hmm hat denn niemand eine Idee an was es liegen könnte?
Also die Verdrahtung habe ich mehrmals überprüft, die ist korrekt. Es muss irgend ein Softwarefehler bzw. ein Initialisierungsproblem sein (wie auch sonst könnten die Klammern da hinkommen?)

Frank
05.07.2006, 14:27
Das ist schon öfters diskutiert worden.
Hier wird dir geholfen:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10766&highlight=ks0073

Gruß Frank

Foooob
05.07.2006, 22:03
Das ist mir schon bekannt. Ich habe auch bevor ich diesen Thread aufgemacht habe als Basis für meinen LCD-Code den Code genutzt, der unter deinem Link vorgeschlagen wird. Eben mit dem oben zu betrachtenden Ergebnis.

mlgahoc
06.07.2006, 08:06
Hallo,

bei mir funktioniert es so:



'************************************************* ************************************************** **************
' BASCOM AVR Compiler 1.11.8.1
' ATMega8 Applikation
'
' Manfred Look
'
' http://www.malo-web.de
'
' - LCD EADIP204 Ansteuerung 4x20 Zeichen
'
'************************************************* ************************************************** **************

'--compiler directives--------------------------------------------------------------------------------------------
'
$regfile = "m8def.dat" 'Chip auswaehlen: ATMega8
$crystal = 1000000 'Taktfrequenz (Hz) festlegen
$hwstack = 32 'Hardware Stack
$swstack = 8 'Software Stack
$framesize = 16 'Framsize
'
'Initialisierung LCD EADIP204 - 4Bit Mode - Ports entsprechend Schaltung anpassen
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.0 , Rs = Portb.1
Config Lcd = 20 * 4a , Chipset = Ks077
Cls
'
Locate 1 , 1 'LCD Cursor setzen
Lcd "Das" 'LCD Anzeige
Locate 2 , 1
Lcd "ist"
Locate 3 , 1
Lcd "ein"
Locate 4 , 1
Lcd "Test"
'
Do 'Endloss Schleife
Loop



Gruß Manfred

Frank
06.07.2006, 08:42
@Foooob: Es ist sicherlich auch eine Sache der Bascom Version, denn mit jeder Version wird auch die LCD Unterstützung erweitert.

Probier mal das von mlgahoc aus. Sollte das nicht klappen nimm nochmal das von meinem Link, das sollte in jedem Fall gehen. Wenn nicht poste mal deinen Beispielcode, vielleicht haste nur einen Befehl vergessen, bei mir und anderen hats ja schon sehr gut funktioniert.

Foooob
06.07.2006, 11:51
Vielen Dank Frank!!
Ja es lag tatsächlich an einer alten BASCOM-Version.
Nun funktioniert es tadelos!

Vielen, vielen Dank!