Foooob
08.03.2006, 13:47
Hallo
Ich arbeite gerade an einem Code um mein LCD (EADIP204) mit einem KS0073 Chip (von Robotikhardware) anzusteuern.
Meinen Code hab ich mir aus einigen Codeschnippseln (auch hier im Forum) zusammegebastelt, bis jetzt sieht das Programm folgendermaßen aus.
'*****LCD*****
'PB3 - E
'PB4 - RS
'PD2 - PIN11 - D4
'PD3 - PIN12 - D5
'PD4 - PIN13 - D6
'PD5 - PIN14 - D7
'**************
$regfile = "m32def.dat" 'ATmega32
$crystal = 11059200 'Quarz: 11059200 Hz
Declare Sub Lcdwrite
Dim Zeichen As Byte
Ddra = &B00000000
Ddrb = &B00000000
Ddrc = &B00000000
Ddrd = &B00000000
Porta = &B00011111
Portb = &B00000111
Portc = &B11111100
Portd = &B00000000
'Pins des LCD-Modules
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.3 , Rs = Portb.4
Initlcd
Config Lcd = 20 * 4a
'Config Lcdbus = 4
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 'Spalte 1 und Zeile 1 des Displays
Lcd "Hallo" 'Displayausgabe
Waitms 50 '50 Millisekunden Warten um Flimmern zu vermeiden
Cls 'Display löschen
Loop
'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdwrite
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portd.2 = 1 Else Portd.2 = 0
If Zeichen.5 = 1 Then Portd.3 = 1 Else Portd.3 = 0
If Zeichen.6 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.7 = 1 Then Portd.5 = 1 Else Portd.5 = 0
' Höherwertiges Nibble übertragen
Portb.3 = 1
Waitms 1
Portb.3 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portd.2 = 1 Else Portd.2 = 0
If Zeichen.1 = 1 Then Portd.3 = 1 Else Portd.3 = 0
If Zeichen.2 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.3 = 1 Then Portd.5 = 1 Else Portd.5 = 0
' Niederwertiges Nibble übertragen
Portb.3 = 1
Waitms 1
Portb.3 = 0
Waitms 1
End Sub
End
Wenn ich den Code kompilieren will sagt mir BASCOM jedoch folgendes
"Error 130 Line 56 [u.a.] Incorrect number of parameter....usw."
Line 56,.... bezieht sich auf die Zeilen
Call Lcdwrite(&B00101100)
...
Call Lcdwrite(&B00001001)
....
usw
Nur ich finde den Fehler nicht, was ist daran genau falsch?
Ich arbeite gerade an einem Code um mein LCD (EADIP204) mit einem KS0073 Chip (von Robotikhardware) anzusteuern.
Meinen Code hab ich mir aus einigen Codeschnippseln (auch hier im Forum) zusammegebastelt, bis jetzt sieht das Programm folgendermaßen aus.
'*****LCD*****
'PB3 - E
'PB4 - RS
'PD2 - PIN11 - D4
'PD3 - PIN12 - D5
'PD4 - PIN13 - D6
'PD5 - PIN14 - D7
'**************
$regfile = "m32def.dat" 'ATmega32
$crystal = 11059200 'Quarz: 11059200 Hz
Declare Sub Lcdwrite
Dim Zeichen As Byte
Ddra = &B00000000
Ddrb = &B00000000
Ddrc = &B00000000
Ddrd = &B00000000
Porta = &B00011111
Portb = &B00000111
Portc = &B11111100
Portd = &B00000000
'Pins des LCD-Modules
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.3 , Rs = Portb.4
Initlcd
Config Lcd = 20 * 4a
'Config Lcdbus = 4
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 'Spalte 1 und Zeile 1 des Displays
Lcd "Hallo" 'Displayausgabe
Waitms 50 '50 Millisekunden Warten um Flimmern zu vermeiden
Cls 'Display löschen
Loop
'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdwrite
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portd.2 = 1 Else Portd.2 = 0
If Zeichen.5 = 1 Then Portd.3 = 1 Else Portd.3 = 0
If Zeichen.6 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.7 = 1 Then Portd.5 = 1 Else Portd.5 = 0
' Höherwertiges Nibble übertragen
Portb.3 = 1
Waitms 1
Portb.3 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portd.2 = 1 Else Portd.2 = 0
If Zeichen.1 = 1 Then Portd.3 = 1 Else Portd.3 = 0
If Zeichen.2 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.3 = 1 Then Portd.5 = 1 Else Portd.5 = 0
' Niederwertiges Nibble übertragen
Portb.3 = 1
Waitms 1
Portb.3 = 0
Waitms 1
End Sub
End
Wenn ich den Code kompilieren will sagt mir BASCOM jedoch folgendes
"Error 130 Line 56 [u.a.] Incorrect number of parameter....usw."
Line 56,.... bezieht sich auf die Zeilen
Call Lcdwrite(&B00101100)
...
Call Lcdwrite(&B00001001)
....
usw
Nur ich finde den Fehler nicht, was ist daran genau falsch?