- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: Problem mit LCD Display

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46

    Problem mit LCD Display

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi, ich habe nun das Pollin Eval Board und das Addon Board, und da die letzten Tage alles mögliche mit rumprobiert.

    Nun Mache ich gerade ein Led Lauflicht, und es sollen Daten auf dem Display ausgegeben werden:

    Code:
    $regfile = "m32def.dat"
    'Taktfrequenz 16MHz
     $crystal = 16000000
    'Baudrate für UART
     $baud = 9600
    'Setzt den verfügbaren Speicher für den Frame
     $framesize = 32
    'Setzt den verfügbaren Speicher für den Software Stack
     $swstack = 32
    'Setzt den verfügbaren Speicher für den Hardware Stack
     $hwstack = 32
    
    '**************************************
    '*********     Variablen     **********
    '**************************************
       Declare Sub Tastenabfrage
       Declare Sub Lauflicht1
       Declare Sub Lauflicht2
       Declare Sub Lauflicht3
       Declare Sub Lauflicht4
    
       Dim Modus As Integer
       Dim Speed As Integer
       Dim I As Integer
    
    '**************************************
    '*********  Namenszuweisung  **********
    '**************************************
       Lcd_db4 Alias Porta.4
       Lcd_db5 Alias Porta.5
       Lcd_db6 Alias Porta.6
       Lcd_db7 Alias Porta.7
       Lcd_e Alias Portb.0
       Lcd_rs Alias Portb.1
    
       Led1 Alias Portc.0
       Led2 Alias Portc.1
       Led3 Alias Portc.2
       Led4 Alias Portc.3
       Led5 Alias Portc.4
       Led6 Alias Portc.5
       Led7 Alias Portc.6
       Led8 Alias Portc.7
       Led9 Alias Portd.5
       Led10 Alias Portd.6
    
       Taste1port Alias Porta.0
       Taste1 Alias Pina.0
       Taste2port Alias Porta.1
       Taste2 Alias Pina.1
       Taste3port Alias Porta.2
       Taste3 Alias Pina.2
       Taste4port Alias Porta.3
       Taste4 Alias Pina.3
    
       Audio Alias Portd.7
    
       Schrittmotorschalter1port Alias Portb.3
       Schrittmotorschalter1 Alias Pinb.3
       Schrittmotorschalter2port Alias Portb.2
       Schrittmotorschalter2 Alias Pinb.2
       Schrittmotor1 Alias Portb.4
       Schrittmotor2 Alias Portd.2
       Schrittmotor3 Alias Portd.3
       Schrittmotor4 Alias Portd.4
    
    
    '**************************************
    '********* LCD-Konfiguration **********
    '**************************************
    'LCD-Pins konfigurieren
     Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
     'LCD als 16x2 Zeichen konfigurieren
     Config Lcd = 16 * 2
    'LCD wird im 4-Bit-Modus betrieben
     Config Lcdbus = 4
    
    
    '**************************************
    '********* Port-Konfiguration *********
    '**************************************
    'LED-Ausgänge
     Config Led1 = Output
     Config Led2 = Output
     Config Led3 = Output
     Config Led4 = Output
     Config Led5 = Output
     Config Led6 = Output
     Config Led7 = Output
     Config Led8 = Output
     Config Led9 = Output
     Config Led10 = Output
    'Tasteneingang
     Config Taste1port = Input
     Config Taste2port = Input
     Config Taste3port = Input
     Config Taste4port = Input
    'Audio-Ausgang (Summer und NF Verstärker)
     Config Audio = Output
    'Schrittmotorplatine Ein/Ausgänge
     Config Schrittmotor1 = Output
     Config Schrittmotor2 = Output
     Config Schrittmotor3 = Output
     Config Schrittmotor4 = Output
     Config Schrittmotorschalter1port = Input
     Config Schrittmotorschalter2port = Input
    
    
    '**************************************
    '******** LCD initialisieren **********
    '**************************************
     Initlcd
    'Display löschen
     Cls
    
    'Anfang Eigendliches Programm
    
     Modus = 1
     Speed = 50
    
     Locate 1 , 1
     Lcd "LED Lauflicht von"
     Locate 2 , 1
     Lcd "Jens Roeckert"
     While Taste1 = 0
     Wend
     Cls
     Locate 1 , 1
     Lcd "Mit den Tastern"
     Locate 2 , 1
     Lcd "1-4 die Art des"
     While Taste1 = 0
     Wend
     Cls
     Locate 1 , 1
     Lcd "Lauflichtes"
     Locate 2 , 1
     Lcd "einstellen."
     While Taste1 = 0
     Wend
     Locate 1 , 1
     Lcd "LED Lauflicht"
    
     'Endlosschleife
     Do
    
       Gosub Tastenabfrage
    
       If Modus = 1 Then
          Locate 2 , 2
          Lcd "Modus 1"
          Gosub Lauflicht1
       End If
    
       If Modus = 2 Then
          Locate 2 , 2
          Lcd "Modus 2"
          Gosub Lauflicht2
       End If
    
       If Modus = 3 Then
          Locate 2 , 2
          Lcd "Modus 3"
          Gosub Lauflicht3
       End If
    
       If Modus = 4 Then
          Locate 2 , 2
          Lcd "Modus 4"
          Gosub Lauflicht4
       End If
    
     Loop
    
    'Programmende
    End
    
    
    Sub Tastenabfrage
    
       If Taste1 = 1 Then
          Modus = 1
       End If
    
       If Taste2 = 1 Then
          Modus = 2
       End If
    
       If Taste3 = 1 Then
          Modus = 3
       End If
    
       If Taste4 = 1 Then
          Modus = 4
       End If
    
    End Sub
    
    Sub Lauflicht1
    
       Led1 = 1
       Waitms Speed
       Led1 = 0
       Led2 = 1
       Waitms Speed
       Led2 = 0
       Led3 = 1
       Waitms Speed
       Led3 = 0
       Led4 = 1
       Waitms Speed
       Led4 = 0
       Led5 = 1
       Waitms Speed
       Led5 = 0
       Led6 = 1
       Waitms Speed
       Led6 = 0
       Led7 = 1
       Waitms Speed
       Led7 = 0
       Led8 = 1
       Waitms Speed
       Waitms Speed
       Led8 = 0
       Led7 = 1
       Waitms Speed
       Led7 = 0
       Led6 = 1
       Waitms Speed
       Led6 = 0
       Led5 = 1
       Waitms Speed
       Led5 = 0
       Led4 = 1
       Waitms Speed
       Led4 = 0
       Led3 = 1
       Waitms Speed
       Led3 = 0
       Led2 = 1
       Waitms Speed
       Led2 = 0
       Led1 = 1
       Waitms Speed
    
    End Sub
    
    Sub Lauflicht2
    
       Led1 = 1
       Waitms Speed
       Led2 = 1
       Waitms Speed
       Led3 = 1
       Waitms Speed
       Led4 = 1
       Waitms Speed
       Led5 = 1
       Waitms Speed
       Led6 = 1
       Waitms Speed
       Led7 = 1
       Waitms Speed
       Led8 = 1
       Waitms Speed
       Led1 = 0
       Waitms Speed
       Led2 = 0
       Waitms Speed
       Led3 = 0
       Waitms Speed
       Led4 = 0
       Waitms Speed
       Led5 = 0
       Waitms Speed
       Led6 = 0
       Waitms Speed
       Led7 = 0
       Waitms Speed
       Led8 = 0
       Waitms Speed
    
    End Sub
    
    Sub Lauflicht3
    
       Led1 = 1
       Led8 = 1
       Waitms Speed
       Led1 = 0
       Led8 = 0
       Led2 = 1
       Led7 = 1
       Waitms Speed
       Led2 = 0
       Led7 = 0
       Led3 = 1
       Led6 = 1
       Waitms Speed
       Led3 = 0
       Led6 = 0
       Led4 = 1
       Led5 = 1
       Waitms Speed
       Led4 = 0
       Led5 = 0
       Waitms Speed
       Led4 = 1
       Led5 = 1
       Waitms Speed
       Led4 = 0
       Led5 = 0
       Led3 = 1
       Led6 = 1
       Waitms Speed
       Led3 = 0
       Led6 = 0
       Led2 = 1
       Led7 = 1
       Waitms Speed
       Led2 = 0
       Led7 = 0
       Led1 = 1
       Led8 = 1
       Waitms Speed
       Led1 = 0
       Led8 = 0
       Waitms Speed
    
    End Sub
    
    Sub Lauflicht4
    
       For I = 0 To 255
       Portc = I
       Waitms Speed
       Next I
    
    End Sub
    Im mitgelieferten Beispielprogramm funktionierte das Display. Der einzigste unterschied zum jetziegen ist da die pinbelegung, vorher waren die leitungen db4-db7 an Pb2-Pb5 und e an pb6 und RS an pb7.

    Nun sind sie per jumper auf dem board an die Pinne gelegt, wie es in den Alias zuweisungen im programm ersichtlich ist.
    Masse ist natürlich auch an den anderen pinnen.

    Das Programm läuft und macht was es soll, nur das auf dem Display nichts angezeigt wird ??? die beleuchtung ist an, der Kontrastregler steht auch passend.

    Warum gehts im Beispielproggramm und in dem nu nicht ?

    Hier ist nochmal der Code vom Beispielprogramm:

    Code:
    '***************************************************************************************
    '
    'ACHTUNG!
    'Sie handeln auf eigene Gefahr!
    'Bei diesen Daten handelt es sich um Beispielanwendungen die nicht für den produktiven
    'Einsatz geeignet sind.
    'Pollin Electronic gibt keine Garantien irgendeiner Art, weder ausdrücklich
    'noch implizit, einschließlich unbegrenzt aller Garantien der Verwendbarkeit
    'dieser Daten für einen bezeichneten oder nicht bezeichneten Zweck.
    'Pollin Electronic ist nicht haftbar für jedwede Folgeschäden die aufgrund
    'der Benutzung dieser Daten entstehen. Dies gilt auch dann, wenn
    'Pollin Electronic von der Möglichkeit eines solchen Schadens unterrichtet worden ist.
    '
    'Testprogramm fuer ATTiny2313, ATMega8, ATMega16, ATMega32,
    'ATMEL Evaluations-Board Best.Nr. 810 038 und
    'ATMEL Addon-Board V1.0 Best.Nr. 810 053
    '***************************************************************************************
    
    
     $regfile = "m32def.dat"
    'Taktfrequenz 1MHz
     $crystal = 16000000
    'Baudrate für UART
     $baud = 2400
    
     #if _chip = 0                                              'Tiny 2313
       Lcd_db4 Alias Portb.2
       Lcd_db5 Alias Portb.3
       Lcd_db6 Alias Portb.4
       Lcd_db7 Alias Portb.5
       Lcd_e Alias Portb.6
       Lcd_rs Alias Portb.7
       Led5 Alias Portd.3
       Led6 Alias Portd.4
       Led7 Alias Portd.5
       Led8 Alias Portd.6
       Ir Alias Pind.2
       Irport Alias Portd.2
     #endif
    
     #if _chip = 17                                             'Mega8
       Lcd_db4 Alias Portb.0
       Lcd_db5 Alias Portb.1
       Lcd_db6 Alias Portb.2
       Lcd_db7 Alias Portb.3
       Lcd_e Alias Portb.4
       Lcd_rs Alias Portb.5
       Led1 Alias Portc.2
       Led2 Alias Portc.3
       Led3 Alias Portc.4
       Led4 Alias Portc.5
       Led5 Alias Portd.3
       Led6 Alias Portd.4
       Led7 Alias Portd.5
       Led8 Alias Portd.6
       Taste1port Alias Portc.1
       Taste1 Alias Pinc.1
       Summer Alias Portd.7
       Ir Alias Pind.2
       Irport Alias Portd.2
       Nf Alias Portc.0
     #endif
    
     #if _chip = 18                                             'Mega16
       Lcd_db4 Alias Portb.2
       Lcd_db5 Alias Portb.3
       Lcd_db6 Alias Portb.4
       Lcd_db7 Alias Portb.5
       Lcd_e Alias Portb.6
       Lcd_rs Alias Portb.7
       Led1 Alias Porta.2
       Led2 Alias Porta.3
       Led3 Alias Porta.4
       Led4 Alias Porta.5
       Led5 Alias Portd.3
       Led6 Alias Portd.4
       Led7 Alias Portd.5
       Led8 Alias Portd.6
       Taste1port Alias Porta.1
       Taste1 Alias Pina.1
       Summer Alias Portd.7
       Ir Alias Pind.2
       Irport Alias Portd.2
       Nf Alias Porta.0
     #endif
    
     #if _chip = 23                                             'Mega32
       Lcd_db4 Alias Portb.2
       Lcd_db5 Alias Portb.3
       Lcd_db6 Alias Portb.4
       Lcd_db7 Alias Portb.5
       Lcd_e Alias Portb.6
       Lcd_rs Alias Portb.7
       Led1 Alias Porta.2
       Led2 Alias Porta.3
       Led3 Alias Porta.4
       Led4 Alias Porta.5
       Led5 Alias Portd.3
       Led6 Alias Portd.4
       Led7 Alias Portd.5
       Led8 Alias Portd.6
       Taste1port Alias Porta.1
       Taste1 Alias Pina.1
       Summer Alias Portd.7
       Ir Alias Pind.2
       Irport Alias Portd.2
       Nf Alias Porta.0
     #endif
    
     Dim Username As String * 20
     Dim W As Byte
     Dim I As Byte
     Dim Adresse As Byte
     Dim Kommando As Byte
    
    '**************************************
    '********* LCD-Konfiguration **********
    '**************************************
    'LCD als 16x2 Zeichen konfigurieren
     Config Lcd = 16 * 2
    'LCD-Pins konfigurieren
     Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
    'LCD wird im 4-Bit-Modus betrieben
     Config Lcdbus = 4
    '**************************************
    '********* Port-Konfiguration *********
    '**************************************
    'LED-Ausgänge
    #if _chip <> 0
     Config Led1 = Output
     Config Led2 = Output
     Config Led3 = Output
     Config Led4 = Output
    #endif
     Config Led5 = Output
     Config Led6 = Output
     Config Led7 = Output
     Config Led8 = Output
    'Tasteneingang
    #if _chip <> 0
     Config Taste1port = Input
    #endif
    'IR-Eingang
     Config Rc5 = Ir
     Irport = 1
    'NF-Ausgang
    #if _chip <> 0
     Config Nf = Output
    #endif
    '**************************************
    '******** LCD initialisieren **********
    '**************************************
     Initlcd
    'Display löschen
     Cls
    #if _chip <> 0
    '**************************************
    '*** 3x Test-Tonausgabe auf Summer ****
    '**************************************
     'Uart-TextAusgabe
     Print "Summertest"
    
     For I = 1 To 3
       'Displayposition Zeile 1, Position 1
        Locate 1 , 1
       'Display-Textausgabe
        Lcd "Summertest"
       'Displayposition Zeile 2, Position 1
        Locate 2 , 1
       'Display-Textausgabe
        Lcd "Durchgang "
        Lcd I
    
       'eigentliche Soundausgabe auf den Summer
        For W = 20 To 250
           Sound Summer , 2 , W
        Next
     Next
     Cls
    '**************************************
    '** 3x Test-Tonausgabe NF-Verstärker **
    '**************************************
     Cls
     'Uart-TextAusgabe
     Print "NF-Verstaerker-Test"
    
     For I = 1 To 3
       'Displayposition Zeile 1, Position 1
        Locate 1 , 1
       'Display-Textausgabe
        Lcd "NV-Verstaerker"
       'Displayposition Zeile 2, Position 1
        Locate 2 , 1
       'Display-Textausgabe
        Lcd "Testlauf "
        Lcd I
    
       'eigentliche Soundausgabe
        For W = 20 To 250
           Sound Nf , 2 , W
        Next
     Next
    #endif
    '**************************************
    '************* LED-Test ***************
    '**************************************
     Cls
     Print "LED-Test"
     Print "LEDs an"
    
     Locate 1 , 1
     Lcd "LED-Test"
     Locate 2 , 1
     Lcd "LEDs an"
    #if _chip <> 0
     Set Led1
     Set Led2
     Set Led3
     Set Led4
    #endif
     Set Led5
     Set Led6
     Set Led7
     Set Led8
     Wait 2
    #if _chip <> 0
     Reset Led1
     Reset Led2
     Reset Led3
     Reset Led4
    #endif
     Reset Led5
     Reset Led6
     Reset Led7
     Reset Led8
     Locate 2 , 1
     Lcd "LEDs aus"
     Print "LEDs aus"
     Wait 1
    #if _chip <> 0
    '**************************************
    '************* Tasten-Test ************
    '**************************************
     Cls
     Print "Tasten-Test"
    
     Locate 1 , 1
     Lcd "Tasten-Test"
    
     For I = 1 To 3
       Led8 = 1
       Led7 = 0
       Locate 2 , 1
       Lcd "Taste 1 druecken"
       Print "Taste 1 druecken"
       While Taste1 = 0
       Wend
       Led8 = 0
       Led7 = 1
       Locate 2 , 1
       Lcd "Taste1 gedrueckt"
       Print "Taste1 gedrueckt"
       While Taste1 = 1
       Wend
     Next
     Reset Led1
     Reset Led7
    #endif
    '**************************************
    '************ UART-Test ***************
    '**************************************
     Cls
     Locate 1 , 1
     Lcd "UART-Test"
     Locate 2 , 1
     Lcd "Namen eingeben"
    'Auf Benutzerdaten über serielle Schnittstelle warten
    'Ende wird erkannt durch CR+LF
     Input "Wie ist Ihr Name?: " , Username
     Print "Hi " ; Username ; " auch die UART-Kommunikation funktioniert"
     Cls
     Locate 1 , 1
     Lcd "Hi "
     Lcd Username
     Wait 2
    '**************************************
    '************ IR-Test *****************
    '**************************************
     Enable Interrupts
     Cls
     Locate 1 , 1
     Lcd "RC5 IR-Test"
     Print "RC5 IR-Test"
     I = 3
     Do
       'Auf RC5-Kommando warten
       Getrc5(adresse , Kommando)
       'test ob Adresse gültig ist
       If Adresse < 255 Then
         'falls ja, dann anzeigen
         Kommando = Kommando And &B01111111                     ' Togglebit löschen
         Cls
         Locate 1 , 1
         Lcd "RC5-Kommando "
         Lcd Kommando
         Print "RC5-Kommando " ; Kommando
         I = I - 1
       End If
       If I = 0 Then Exit Do
       Waitms 200
     Loop
     Disable Interrupts
    '**************************************
    '***** Displayausgabe Test beendet ****
    '**************************************
     Print "Testlauf beendet"
     Cls
     Locate 1 , 1
     Lcd "Testlauf beendet"
    
    'Endlosschleife
     Do
     Loop
    
    'Programmende
    End


    Hoffe ihr könnt mir da was zu sagen, ich kann da nichts finden. Die Leds tatens erst auch nicht alle, bis ich rausgefunden habe das ich in den fusebits das Jtag ausschalten muss. Ist da evt noch etwas weshalb das display nun nichts ausgibt >?


    Danke schonmal

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46
    Keiner eine Idee, ich bin da immernoch nicht weiter wenn ich das Display wieder an die im Beispielprogramm angegebenen pinne lege funktionierts, aber da dort extra ein jumperfeld ist, um es mit dem pinnen von port a und b zu verbinden, möchte ich das natürlich benutzen. Das kann doch nicht sein das das da nicht Funktioniert.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.11.2005
    Beiträge
    88
    Sind die dann auch mit zu PortA gewandert?

    Lcd_e Alias Portb.0
    Lcd_rs Alias Portb.1

    Sonst tippe ich auch auf Fusebits!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    01.06.2007
    Ort
    Recke
    Alter
    35
    Beiträge
    46
    nein die sind auf portb.0 und portb.2

    Da is auch der Fehler gewesen, eine etwas irritierende beschriftung auf der Platiene, habe da portb.1 mit portb.2 verwechselt, nun funktionierts.
    Also er zeigt was an, leider nicht das was ich will
    Er fängt immer erst bei der zweiten position an zu schreiben, überschreibt alte sachen nicht richtig, da muss ich mal noch rumprobieren.

Berechtigungen

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

LiFePO4 Speicher Test