CapSob
11.04.2011, 15:41
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!
' =================== 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
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!
' =================== 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