PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD seriell ansteuern



roboter
10.02.2005, 15: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

bluebrother
10.02.2005, 16:58
ich verstehe nicht so ganz was du machen willst. Dein Display tut wenn du es parallel angeschlossen hast und du willst es jetzt seriell anschließen? Oder was genau hast du vor?

roboter
10.02.2005, 21:02
Sorry, hab mich unklar ausgedrückt. O:)

Also, meinen Roboter steuere ich mit einem Mega32. Ich habe aber nicht mehr genug freie Pins für ein LCD. Also will ich das LCD einfach an einen Mega8 anschließen und die beiden µC über das UART verbinden. Der Mega32 soll dann einfach Nachrichten (Strings) über das UART an den Mega8 schicken und der Mega8 gibt diese dann auf dem LCD aus.

Gesagt getan und alles zusammengebaut. Zum testen habe ich einfach mal dieses Program auf den Mega8 geschrieben:
$regfile = "m8def.dat"
$crystal = 4000000

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

___lcdno = 0
Cls
Home
Lcd "***** LCD *****"

___lcdno = 1
Cls
Home
Lcd "Hallo"
Do
Loop
End

Das funktioniert auch. Dann habe ich das UART des Mega8 mit Hilfe eines MAX232 an den PC angeschloßen und versuche nun Daten von den PC (der nachher durch den Mega32 ersetzt wird) zum Mega8 zu schicken und dieser soll die dann auf dem LCD ausgeben.

roboter
12.02.2005, 17:55
Keiner der mir helfen kann?

Weiß denn einer ne Seite wo sowas beschrieben steht? Finde im Internet irgendwie nichts... :-s