Liste der Anhänge anzeigen (Anzahl: 1)
Hi, also es funktioniert leider immer noch nicht.
Ich habe jetzt nochmal mein Programm überarbeitet. Das sieht nun so Aus:
Code:
$regfile = "M1284pdef.dat"
$crystal = 14745600
' #PortC
' PINC.0 = LCD / DB7
Lcd_db7 Alias Portc.0
Config Lcd_db7 = Output
Lcd_db7 = 0
' PINC.1 = LCD / DB6
Lcd_db6 Alias Portc.1
Config Lcd_db6 = Output
Lcd_db6 = 0
' PINC.2 = LCD / DB5
Lcd_db5 Alias Portc.2
Config Lcd_db5 = Output
Lcd_db5 = 0
' PINC.3 = LCD / DB4
Lcd_db4 Alias Portc.3
Config Lcd_db4 = Output
Lcd_db4 = 0
' PINC.4 = LCD / E
Lcd_e Alias Portc.4
Config Lcd_e = Output
Lcd_e = 0
' PINC.5 = LCD / R/W
Lcd_rw Alias Portc.5
Config Lcd_rw = Output
Lcd_rw = 0
' PINC.6 = LCD / RS
Lcd_rs Alias Portc.6
Config Lcd_rs = Output
Lcd_rs = 0
' PINC.7 = LCD / Reset
Lcd_reset Alias Portc.7
Config Lcd_reset = Output
Lcd_reset = 0 ' Reset ausschalten
dim init as bit
do
if init = 0 then
init = 1
call lcd_initialisieren
end if
Loop
Sub Lcd_initialisieren
' Reset:
Lcd_reset = 1
Waitms 200
Lcd_reset = 0
Waitms 200
Lcd_reset = 1
Waitms 200
' Synchronize1:
Call Lcd_befehl(&H30)
Waitus 1
' Synchronize1:
Call Lcd_befehl(&H30)
Waitus 1
' Synchronize1:
Call Lcd_befehl(&H30)
Waitus 1
' Synchronize2:
Call Lcd_befehl(&H20)
Wait 1
' Function Set: 4 bit data length extension
Call Lcd_befehl(&H2a)
' Extended function: 4 line display
Call Lcd_befehl(&H09)
' Entire mode set: Bottom View
Call Lcd_befehl(&H06)
' Bias setting: BS1=1
Call Lcd_befehl(&H1e)
' Function Set: 4-Bit data length extension Bit RE=0; IS=1
Call Lcd_befehl(&H29)
' Internal OSC: BS0=1 -> Bias=1/6
Call Lcd_befehl(&H1b)
' Follower control: Devider on and set value
Call Lcd_befehl(&H6e)
' Power control: Booster on and set contrast (BB1=C5, DB0=C4)
Call Lcd_befehl(&H57)
' Contrast set: (DB3-DB0=C3-C0)
Call Lcd_befehl(&H72)
' Function set: 4-Bit data length extension Bit RE=0; IS=0
Call Lcd_befehl(&H28)
' Clear display:
Call Lcd_befehl(&H01)
' Set Cursor Position:
Call Lcd_befehl(&H80)
' Display on, cursor on, blink on:
Call Lcd_befehl(&H0f)
End Sub
Sub Lcd_bits_setzen(byval Datenbyte As Byte)
' Datenbyte Bitmaske: 7=0 , 6=0 , 5=0 , 4=0 , 3=DB7, 2=DB6 , 1=DB5 , 0=DB4
' Db4
Lcd_db4 = Datenbyte.0
' Db5
Lcd_db5 = Datenbyte.1
' Db6
Lcd_db6 = Datenbyte.2
' Db7
Lcd_db7 = Datenbyte.3
Call Lcd_enable
End Sub
Sub Lcd_befehl(byval Datenbyte As Byte)
Dim Highnibble As Byte
Dim Lownibble As Byte
Lownibble = Datenbyte And &B00001111 ' mask out upper nibble
Highnibble = Datenbyte ' 1. copy original Value to Highnibble
Shift Highnibble , Right , 4 ' 2. Shift upper 4 bits to lower 4 bits
' R/W
Lcd_rw = 0
' Rs
Lcd_rs = 0
Call Lcd_bits_setzen(highnibble )
Call Lcd_bits_setzen(lownibble )
End Sub
Sub Lcd_text(byval Datenbyte As Byte)
Dim Highnibble2 As Byte
Dim Lownibble2 As Byte
Lownibble2 = Datenbyte And &B00001111 ' mask out upper nibble
Highnibble2 = Datenbyte ' 1. copy original Value to Highnibble
Shift Highnibble2 , Right , 4 ' 2. Shift upper 4 bits to lower 4 bits
' R/W
Lcd_rw = 0
' Rs
Lcd_rs = 1
Call Lcd_bits_setzen(highnibble2 )
Call Lcd_bits_setzen(lownibble2 )
End Sub
Sub Lcd_enable
Lcd_e = 1
Waitms 2
Lcd_e = 0
Waitms 2
End Sub
Ich glaube aber inzwischen das ich ein Hardwareproblem habe. Wenn ich an Pin23 des Displays messe, dann messe ich lediglich 2,7V.
Laut Datenblatt des Display Controllers müssten da aber zwischen 8V und 10V anliegen.
Irgendwie wird wohl der Displaybooster nicht richtig gestartet. Warscheinlich wird deshalb das Display nicht richtig initialisiert.
Hat das schon mal jemand gehabt das Problem, oder kann mir da weiterhelfen?
Hier ist noch der Schaltplan der Displayplatine:
Anhang 29553