Hi,
ja sicher, hier is mein code:
Code:
$regfile = "M1284pdef.dat"
$crystal = 14745600
$hwstack = 100
$swstack = 100
$framesize = 200
' LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.6 , Wr = Portc.5
'Config Lcdbus = 4
Config Lcd = 20 * 4a
' #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 = 1 ' Reset ausschalten
Declare Sub Lcd_befehl(byval Befehl As Byte)
' Befehl Bitmaske: 7=0 , 6=0 , 5=Rs , 4=R/W , 3=Db7, 2=Db6 , 1=Db5 , 0=Db4
Declare Sub Lcd_enable
do
' LCD INITIALISIEREN
if init = 0 then
init = 1
' Synchronize1:
Call Lcd_befehl(&B00000011)
Call Lcd_enable
Call Lcd_befehl(&B00000011)
Call Lcd_enable
' Synchronize2: Switcht to 4 bit data length
Call Lcd_befehl(&B00000011)
Call Lcd_enable
Call Lcd_befehl(&B00000010)
Call Lcd_enable
' Function Set: 4 bit data length extension
Call Lcd_befehl(&B00000010)
Call Lcd_enable
Call Lcd_befehl(&B00001010)
Call Lcd_enable
' Extended function: 4 line display
Call Lcd_befehl(&B00000000)
Call Lcd_enable
Call Lcd_befehl(&B00001001)
Call Lcd_enable
' Entire mode set:
Call Lcd_befehl(&B00000000)
Call Lcd_enable
Call Lcd_befehl(&B00000110)
Call Lcd_enable
' Bias setting:
Call Lcd_befehl(&B00000001)
Call Lcd_enable
Call Lcd_befehl(&B00001110)
Call Lcd_enable
' Function Set:
Call Lcd_befehl(&B00000010)
Call Lcd_enable
Call Lcd_befehl(&B00001001)
Call Lcd_enable
' Internal OSC:
Call Lcd_befehl(&B00000011)
Call Lcd_enable
Call Lcd_befehl(&B00001011)
Call Lcd_enable
' Follower control:
Call Lcd_befehl(&B00000110)
Call Lcd_enable
Call Lcd_befehl(&B00001110)
Call Lcd_enable
' Power control
Call Lcd_befehl(&B00000101)
Call Lcd_enable
Call Lcd_befehl(&B00000111)
Call Lcd_enable
' Contrast set:
Call Lcd_befehl(&B00000111)
Call Lcd_enable
Call Lcd_befehl(&B00000100)
Call Lcd_enable
' Function set:
Call Lcd_befehl(&B00000010)
Call Lcd_enable
Call Lcd_befehl(&B00001001)
Call Lcd_enable
' Display on, cursor on, blink on
Call Lcd_befehl(&B00000000)
Call Lcd_enable
Call Lcd_befehl(&B00001111)
Call Lcd_enable
end if
Loop
' LCD BEFEHL
Sub Lcd_befehl(byval Befehl As Byte)
' Befehl Bitmaske: 7=0 , 6=0 , 5=Rs , 4=R/W , 3=Db7, 2=Db6 , 1=Db5 , 0=Db4
' Db4
Lcd_db4 = Befehl.0
' Db5
Lcd_db5 = Befehl.1
' Db6
Lcd_db6 = Befehl.2
' Db7
Lcd_db7 = Befehl.3
' R/W
Lcd_rw = Befehl.4
' Rs
Lcd_rs = Befehl.5
End Sub
Sub Lcd_enable
Lcd_e = 1
Waitus 400
Lcd_e = 0
Waitms 2
End Sub
Ich hoffe du kannst da was rauslesen?
Viele Grüße
Lesezeichen