- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Warum sehe ich auf dem LCD nichts?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35

    Warum sehe ich auf dem LCD nichts?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute,
    ich habe ein kleines Programm geschrieben das auch im Simulator ohne fehler läuft. Dieses habe ich nun zum Mega16 geschickt, die Kontroll LED blinkt auch aber auf dem LCD kann ich nichts sehen.
    Kann mir jemand sagen was ich falsch mache?

    Da ich auch nicht weiß wie man das Textfenster für die Programme macht, hänge ich es einfach mal an.

    $regfile = "m16def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 16
    $crystal = 1000000 'Die Frequenz des internen Oszilators
    Config Lcd = 16 * 1 'Display
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    Dim A As Word
    Dim B As Single
    Config Portb.0 = Output
    Config Portc = Input
    Portc.0 = 1 'Internen Pullup einschalten c0 zum einlesen ADCwert unten
    Portc.1 = 1 'Internen Pullup einschalten c1 zum einlesen ADCwert oben
    Portc.2 = 1 'Internen Pullup einschalten c2 zum einlesen der Aktuellen ADCwertes und Berechnung des Phwertes
    Portc.3 = 1 'Internen Pullup einschalten
    Config Adc = Single , Prescaler = Auto , Reference = Off 'Init ADC
    Dim Unten As Word 'benutzte Variablen
    Dim Oben As Word
    Dim Phwert As Single
    Dim Phunten As Single
    Dim Phoben As Single
    Dim Messwert As Word
    Dim Hilf1 As Single
    Dim Hilf2 As Single
    Dim Hilf3 As Single
    Dim Hilf4 As Single
    Dim Hilf5 As Single
    Start Adc
    Dim Taste As Byte , Sperre As Byte 'Sperre wird immer aud 1 gesetzt wenn ein oder mehrere Tasten gedrückt sind
    'wenn keine Taste gedrückt ist wird die Sperre wieder auf 0 gesetzt
    Phunten = 4.3 'einfache Festlegung des unteren Cal.punktes zum Test
    Phoben = 9.6 'einfache Festlegung des oberen Cal.punktes zum Test
    Do
    Taste = Portc
    If Taste = 14 And Sperre = 0 Then 'nur wenn taste 1 gedrückt und die Sperre auf 0 ist wird der ADCwert gespeichert
    Unten = Getadc(0)
    Locate 1 , 1
    Lcd "U=" ; Unten
    Sperre = 1 'Sperre einschalten (1)
    Else
    End If
    If Taste = 13 And Sperre = 0 Then 'nur wenn taste 2 gedrückt und die Sperre auf 0 ist wird der ADCwert gespeichert
    Oben = Getadc(0)
    Locate 1 , 1
    Lcd "o=" ; Oben
    Sperre = 1 'Sperre einschalten (1)
    Else
    End If
    If Taste = 11 Then 'nur wenn taste 4 gedrücktist wird der ADCwert gespeichert
    Messwert = Getadc(0) 'und der Phwert wird berechnet
    Hilf1 = Phoben - Phunten 'Berechnung in einzelschritten
    Hilf2 = Oben - Unten 'da die gesammte Formel Fehler verursachte
    Hilf3 = Hilf1 / Hilf2
    Hilf1 = Messwert * Hilf3
    Hilf2 = Hilf1 + Phunten
    Hilf4 = Unten * Hilf3
    Phwert = Hilf2 - Hilf4
    'Phwert = Messwert *(phoben - Phunten ) /(oben - Unten ) + Phunten - Unten *(phoben - Phunten ) /(oben - Unten )
    'Phwert = Messwert * Hilf1 / Hilf2 + Phunten - Unten * Hilf1 / Hilf2
    'phwert = Messwert * Hilf3 + Phunten - Unten * Hilf3
    'Phwert = Hilf4 + Phunten - Unten * Hilf3
    'Phwert = Hilf5 - Hilf6
    Locate 1 , 1
    Lcd "M" ; Messwert ; "P" ; Phwert
    Else
    End If
    If Taste = 15 Then 'wenn keine Taste gedrückt ist wird die Sperre wieder aufgehoben (0)
    Sperre = 0
    Else
    End If
    Toggle Portb.0 'test ob prozessor noch läuft
    Waitms 50 'damit man auch ein blinken sieht
    Loop
    End

    Für Eure Hilfe bin ich echt dankbar.
    Gruß
    Rolf

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    58
    Beiträge
    134
    Kleiner Tipp:

    Wird das LCD auch richtig initialisiert? 4 oder 8 Bit - Modus ?

    Bernhard

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    58
    Beiträge
    134
    Kontrastspannung eingestellt?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35
    zur Initialisierung sollte es doch reichen wenn ich folgendes schreibe:

    Config Lcd = 16 * 1 'Display
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4

    Der Kontrast ist auch richtig eingestellt.
    Manschmal nach einem Poweron bekomme ich alles "p" in der Anzeige.
    Bei anderen kleinen Programmen konnte ich das Display so benutzen, wobei nur 8 Zeichen angezeigt wurden. Ich dachte das Diaplay sei defekt aber nun habe ich manschmal 16 "p"´s auf dem Display.
    Ich glaube das ich einen grundsätzlichen Fehler mache.

    Rolf

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.10.2004
    Beiträge
    40
    Hi!

    schon mal Config mit zusätzlichen"a" probiert?

    Config Lcd = 16 * 1a 'Display

    Hat schon mal bei einigen Ihr im Forum geholfen.
    Alles richtig verdrahtet?


    mfg,MX3

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35
    Config Lcd = 16 * 1a

    bringt leider auch keine Änderung

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    58
    Beiträge
    134
    Wenn Du zuerst das Display mit Spannung versorgst und dann den µC
    erst startest, wie sieht dann die Anzeige aus ?

    Anfangs müsste in der oberen Zeile nur Karos zu sehen sein?

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35
    ich weis nicht genau warum, aber nachdem ich nun die einzelnen Portbits mit If Pinc.0 = 0 auslese, sehe ich auch eine Anzeige im LCD.
    Was jedoch seltsam ist, manschmal habe ich alle 16 Zeichen und manschmal nur 8

    Gruß
    Rolf

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    58
    Beiträge
    134
    >Was jedoch seltsam ist, manschmal habe ich alle 16 Zeichen und >manschmal nur 8

    Fehler beim initialisieren des LCD, 2 Zeilken - Modus muss erst aktiviert werden.

    Vielleicht stimmt eine Wartezeit nicht exakt, denn manche Initalisierungs-Befehle verlangen längere Wartezeiten, bis der nächste Befehl folgen darf

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    14.03.2006
    Beiträge
    35
    ??? das Display hat doch nur eine Zeile ???
    Mein Program läuft nun aber bei manschen Ausgaben sehe ich nur 8 Zeichen und bei anderen 16 (im gleichen Programm, kein neustart zwichendurch)
    Welche Wartezeit muss ich wo einhalten?

    Trotzdem DANKE, ich werde es auch noch lernen

    Gruß
    Rolf

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen