-         

Ergebnis 1 bis 4 von 4

Thema: LCD seriell ansteuern

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263

    LCD seriell ansteuern

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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:
    Code:
    $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...

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    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?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Sorry, hab mich unklar ausgedrückt.

    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:
    Code:
    $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.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263
    Keiner der mir helfen kann?

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •