roboter
10.02.2005, 16:41
Hallo
Habe ein Problem mit meinem LCD! Einfach irgendwelchen Text ausgeben funktioniert wunderbar, nur weiß ich nicht genau, wie ich das seriell ansteuern kann. Hier mal mein Programm:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
On Urxc Onrxd
Dim Z As String * 29
Dim Z_a As Byte At Z Overlay
Dim X As Byte
Dim Y As Byte
Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.2
Config Lcd = 40 * 4
Enable Urxc
Enable Interrupts
Declare Sub Clearlcd()
Declare Sub Help()
Declare Sub Zeiletiefer()
___lcdno = 0 'Ober Displayhälfte initialisieren
Initlcd
Cursor Off
___lcdno = 1 'Untere Displayhälfte initialisieren
Initlcd
Cursor Off
X = 1
Y = 1
Z = Chr(254)
Call Help
Do ' Main
If Z_a = 255 Then
Z = Mid(z , 1 , 1)
X = Z_a
Z = Mid(z , 1 , 1)
Y = Z_a
Z = Mid(z , 1 , 1)
If Y = 1 Then
___lcdno = 0
Locate 1 , X
End If
If Y = 2 Then
___lcdno = 0
Locate 2 , X
End If
If Y = 4 Then
___lcdno = 1
Locate 1 , X
End If
If Y = 3 Then
___lcdno = 1
Locate 2 , X
End If
Ausgabe:
If Z_a <> 254 Then
Lcd Chr(z_a)
Z = Mid(z , 1 , 1)
Goto Ausgabe
End If
X = 1
Y = 1
Z= ""
End If
If Z_a = 253 Then
Call Help
End If
If Z_a = 252 Then
Call Clearlcd
End If
Loop
End
Sub Clearlcd
___lcdno = 1
Cls
___lcdno = 0
Cls
Y = 1
End Sub
Sub Help
___lcdno = 0
Cls
Locate 2 , 3
Lcd "***** LCD - Hilfe *****"
Waitms 3000
___lcdno = 0
Cls
Home
Lcd "Ansteuerung:"
___lcdno = 1
Cls
Home
Lcd "CHR(255) = Startzeichen"
Locate 2 , 1
Lcd "CHR(254)= Stopzeichen"
Waitms 4000
___lcdno = 0
Cls
Home
Lcd "nach dem Startzeichen sende"
Locate 2 , 1
Lcd "x Wert (1..27) , dann"
___lcdno = 1
Cls
Home
Lcd "y Wert (1..4) , dann"
Locate 2 , 1
Lcd "Ausgabestring + Stopzeichen"
Waitms 4000
___lcdno = 0
Cls
Home
Lcd "CHR(253) für diese Hilfe"
Locate 2 , 1
Lcd "CHR(252) für CLS"
___lcdno = 1
Cls
Locate 2 , 1
Lcd " Viel Spaß!!!"
Waitms 4000
Clearlcd
Cls
End Sub
Onrxd:
Z = Z + Chr(udr)
Print " " ; Z ; " "
Return
Da ist anscheinend irgendein Fehler drin, weiß aber echt nicht wo... :-s
Habe ein Problem mit meinem LCD! Einfach irgendwelchen Text ausgeben funktioniert wunderbar, nur weiß ich nicht genau, wie ich das seriell ansteuern kann. Hier mal mein Programm:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
On Urxc Onrxd
Dim Z As String * 29
Dim Z_a As Byte At Z Overlay
Dim X As Byte
Dim Y As Byte
Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.2
Config Lcd = 40 * 4
Enable Urxc
Enable Interrupts
Declare Sub Clearlcd()
Declare Sub Help()
Declare Sub Zeiletiefer()
___lcdno = 0 'Ober Displayhälfte initialisieren
Initlcd
Cursor Off
___lcdno = 1 'Untere Displayhälfte initialisieren
Initlcd
Cursor Off
X = 1
Y = 1
Z = Chr(254)
Call Help
Do ' Main
If Z_a = 255 Then
Z = Mid(z , 1 , 1)
X = Z_a
Z = Mid(z , 1 , 1)
Y = Z_a
Z = Mid(z , 1 , 1)
If Y = 1 Then
___lcdno = 0
Locate 1 , X
End If
If Y = 2 Then
___lcdno = 0
Locate 2 , X
End If
If Y = 4 Then
___lcdno = 1
Locate 1 , X
End If
If Y = 3 Then
___lcdno = 1
Locate 2 , X
End If
Ausgabe:
If Z_a <> 254 Then
Lcd Chr(z_a)
Z = Mid(z , 1 , 1)
Goto Ausgabe
End If
X = 1
Y = 1
Z= ""
End If
If Z_a = 253 Then
Call Help
End If
If Z_a = 252 Then
Call Clearlcd
End If
Loop
End
Sub Clearlcd
___lcdno = 1
Cls
___lcdno = 0
Cls
Y = 1
End Sub
Sub Help
___lcdno = 0
Cls
Locate 2 , 3
Lcd "***** LCD - Hilfe *****"
Waitms 3000
___lcdno = 0
Cls
Home
Lcd "Ansteuerung:"
___lcdno = 1
Cls
Home
Lcd "CHR(255) = Startzeichen"
Locate 2 , 1
Lcd "CHR(254)= Stopzeichen"
Waitms 4000
___lcdno = 0
Cls
Home
Lcd "nach dem Startzeichen sende"
Locate 2 , 1
Lcd "x Wert (1..27) , dann"
___lcdno = 1
Cls
Home
Lcd "y Wert (1..4) , dann"
Locate 2 , 1
Lcd "Ausgabestring + Stopzeichen"
Waitms 4000
___lcdno = 0
Cls
Home
Lcd "CHR(253) für diese Hilfe"
Locate 2 , 1
Lcd "CHR(252) für CLS"
___lcdno = 1
Cls
Locate 2 , 1
Lcd " Viel Spaß!!!"
Waitms 4000
Clearlcd
Cls
End Sub
Onrxd:
Z = Z + Chr(udr)
Print " " ; Z ; " "
Return
Da ist anscheinend irgendein Fehler drin, weiß aber echt nicht wo... :-s