Hallo Leute!
Hatte an meinem atmega8 ein 16*2 lcd hängen und bin nun seit heute auf eine 40*4 lcd umgestiegen. Das LCD ist ein Displaytech 404B und ist im 4-Bit-Modus angeschlossen.
Mit der nachfolgenden Programmierung blinkt nur in Zeile 3 an der 16. Stelle ein Block mit optisch Cursor on.
Irgendwas sinnvolles anzeigen geht gar nicht. Liegt es an der Programmierung oder am Aufbau? Wenn ihr bitte mal über den Code schauen könntet, dass ich den evetuell ausschließen könnte.
Danke im voraus!
Code:' =================== CONTROLLER-KONFIG =================== $regfile = "m8def.dat" $framesize = 24 $swstack = 8 $hwstack = 32 $crystal = 16000000 ' 16 MHz ' =================== PORT-KONFIG =================== Config Portb.0 = Output ' LCD: DB7 Config Portb.1 = Output ' LCD: DB6 Config Portb.2 = Output ' LCD: DB5 Config Portb.3 = Output ' LCD: DB4 Config Portb.4 = Output ' LCD: E Config Portb.5 = Output ' LCD: E2 Config Portd.5 = Output ' LCD: RS Config Portd.6 = Output ' LED2 ' =================== LCD =================== $lib "lcd4e2_rb.lib" ' Einbindung der LCD-Bibliothek für ein 2-Prozessor-Display (_rb = Kopie der Originalen mit angepassten Pins) Dim ___lcde As Byte ' Systemvariable der LCD-Bibliothek (wichtig, bloß nicht ändern) Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , E2 = Portb.5 Rs = Portd.5 ' Config Lcdbus = 4 Cursor Off ' =================== STARTUP-ROUTINE =================== Gosub Lcdinit ' LCD initialisieren ' =================== HAUPTSCHLEIFE =================== Do ' NIX Loop ' =================== LCDINIT =================== Lcdinit: Cls ___lcde = 0 Locate 1 , 1 Lcd "Zeile 1" Locate 2 , 1 Lcd "Zeile 2" ___lcde = 1 Locate 3 , 1 Lcd "Zeile 3" Locate 4 , 1 Lcd "Zeile 4" Wait 2 ' 2 Sekunden warten Return End
Geändert von CapSob (11.04.2011 um 17:49 Uhr)
Ich habe jetzt testweiße die Zeile mit "Config Lcdbus = 4" auskommentiert.
Und: $lib "lcd4e2_rb.lib" genommen. lib ist im richtigen ordner und die ports in der lib sind nun wie die im Programmcode (Kopie von der Originalen, deswegen "_rb").
Fazit: Selber Fehler wie zuvor...
Könnte es Programm-technisch noch etwas sein?
Edit: Habe gerade mal versucht, die "lcd4e2_rb.lib" zu kompilieren.. Kam Fehlermeldung mit Errors found... wie müsste den die "lcd4e2.lib" aussehen, dass ich mein LCD mit der obigen Pin-Konfig betreiben kann?
Geändert von CapSob (11.04.2011 um 17:55 Uhr)
Hab jetzt nachfolgenden Code (auch aus einem Beispiel im Bezug auf Michaels Post).
Beim Code komplilieren komt nun folgende Fehlermeldung:
-> Line 43 wäre "End"... kP ?!?Code:Error 31 / Line 43 / Invalid Datatype [[0011] 0] Error 93 / Line 43 / Variable not dimensioned [0 -> 0] Error 31 / Line 43 / Invalid Datatype [[0011] 0] Error 93 / Line 43 / Variable not dimensioned [0 -> 0]
Code:$regfile = "m8def.dat" $framesize = 24 $swstack = 8 $hwstack = 32 $crystal = 16000000 ' 16 MHz Config Portb.0 = Output ' LCD: DB7 Config Portb.1 = Output ' LCD: DB6 Config Portb.2 = Output ' LCD: DB5 Config Portb.3 = Output ' LCD: DB4 Config Portb.4 = Output ' LCD: E Config Portb.5 = Output ' LCD: E2 Config Portd.5 = Output ' LCD: RS Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , E2 = Portb.5 , Rs = Portd.5 Dim ___lcdno As Byte ___lcdno = 0 Initlcd Cursor Off Cls ___lcdno = 1 Initlcd Cursor Off Cls ___lcdno = 0 Cls Locate 1 , 1 Lcd "Zeile 1" Locate 2 , 1 Lcd "Zeile 2" ___lcdno = 1 Cls Locate 1 , 1 Lcd "Zeile 3" Locate 2 , 1 Lcd "Zeile 4" End
Geändert von CapSob (11.04.2011 um 21:45 Uhr) Grund: "Komma vergessen"
Mach mal ein Komma vor
Rs = PortD.5
Lesezeichen