- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: PIC16F887 - I2C - LCD Version gestorben neue per LEDs

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17

    PIC16F887 - I2C - LCD Version gestorben neue per LEDs

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo liebe Forumgemeinde ich habe folgendes Problem.

    Ich möchte mein LCD anhand einer einfachen LCD Initialisierung testen,
    nur leider reagiert dieses nicht und da für mich der Bereich LCD Neuland
    ist wäre ich für etwas Hilfe sehr dankbar!


    Zur Hardware:
    Es handelt sich um ein Großdisplay von Toshiba mit dem KS0066U
    Controller und wird mit negativer Kontrastspannung über eine
    Ladungspumpe gespeist. Somit wird mir die 1. und 3. Zeile mit Kästchen
    angezeigt und die Kontrasteinstellung funktioniert.

    Die Datenpins sind an PORTB des PICs angeschlossen, PORTE dient als
    Anschluss für E, R/W und RS.
    Als Taktquelle verwende ich einen externen 16MHz Quarz.

    Programmiert wird dies alles über die ICSP Schnittstelle, MPLAB und dem
    PICKit 2.


    Zur Software:
    Ich selbst sehe leider keinen Fehler oder wo sich der PIC verrennen
    könnte. Evtl. seht ihr ja mehr da ich solangsam nichtmehr weiter weiß.

    Im Anhang ist mein Code als .asm Datei.

    Schonmal vielen Dank an euch!

    Gruss Pascal
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Um dein Display zu prüfen, würde ich das Testprogramm von Wiki auf dein PIC umschreiben und für 4 Zeilen erweitern. Das alles ist in https://www.roboternetz.de/wissen/in.../PIC_Assembler erklärt.

    Solltest du konkrete Probleme haben, beantworte ich sehr gerne deine gezielte Fragen, habe aber leider keine Zeit (sprich: Lust) jedes Zeichen deines Programms zu prüfen.

    MfG

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17
    Hi PICture,

    schonmal vielen lieben Dank für den Tipp! Nachdem ich Google schon seit einigen Tagen quälen, habe ich diese Instruktion anscheinen übersehen!

    Werde dies später nach dem Training ausprobieren und dann testen!

    Gruss!

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Das gefällt mir sehr. Ich bin der Meinung, dass wenn jemand in eigenem Programm keine Fehler finden kann, ist das nicht seiner ...

    Mein Ehrfahrungstipp: Jedes sogar kompliziertesten Programm in möglichst kleinen Schritten aus ausprobierten Fragmenten zusammensetzen...

    In deinem Fall würde ich z.B. mit Initialisierengs des Displays anfangen und erst wenn alle 4 Zeilen gleich werden, versuche ich ein Zeichen schicken und prüfen ob er dort ist wo ich will, usw....

    Übrigens, ich habe bisher nichts auf einmal geschafft und mit allem auch mal angefangen.

    Viel Spass und Erfolg!

    MfG

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17
    Hallo,

    habe jetzt mal drastisch den Code verkürzt und Fehler in der Portinit rausgekillt.

    Im Anhang der neue Code

    Gruss Pascal
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Das ist für mich viel durchsichtlicher und wenn es angeblich funktioniert, weil du über keine Probleme mehr schreibst, dann freue ich mich, so wie du ...

    Weiter so, dann bist du immer Erfolgreich, mann muss an sich glauben, dann geht alles ...

    MfG

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17
    Hi,

    ups dann habe ich anscheined die "Problematik" vergessen :].

    Jetzt müsste ich ja praktisch Daten an das Display senden ? Das es mir wenigstens irgendetwas mal anzeigt ? Wie muss ich da nun weiter vorgehen.

    Denn so wie der Code in der test3.asm beschrieben geht es leider nocht nicht.

    Ich bin schon so verzweifelt das ich am überlegen bin mir einfach eine Zusatzplatine mit 8 LEDs zu basteln und den späteren Sensorabstand dann hier einfach anzeige. Hätte nicht gedacht dass das LC-Display so kompliziert ist :/

    Gruss

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Es gibt ein Unterschied, ob man das Display mit allen zur Verfugung stehenden Optionen, oder so wie ich bisher einfach, nur Zeichen an bestimmte Stelle schreiben möchte.

    Ich habe bisher immer die einfachste für mich Version gewählt und kein "Disolay löschen", "Cursor home", usw. benutzt, weil es für mich nur Code- und Zeitfressende und unnötige "Spielerei" ist.

    Um ein Zeichen an Bestimmte Adresse zu schicken, muss sie durch bestimmten Befehl aus dem Befehlsatz des Displaycontrollers zuerst geschickt werden und nachfolgend das gewünschtes Zeichen. Die Adresse bei mehreren Zeichen wird automatisch hochgezählt, wenn das Display so initialisiert ist. Deswegen braucht man nur die Anfangsadresse der gewünschter Zeile senden und weiter gewünschte Anzahl für diese Zeile vorgesehenen Zeichen.

    Nicht verzweifeln, sondern mit Spass damit spielen, ist am effizientesten beim Lernen ... !

    Viel Spass dabei !

    MfG

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17
    Danke schonmal PICture,

    achso, wusste nich das diese "Spielerei" auch eine ist, dachte dies müsste man machen. Puh ich glaube da muss ich mich dann mal intensiv in die LCD Welt einarbeiten

    Aber nun das kleine Update:

    Habe mir nun auf die schnelle eine LED Platine gebastelt. Also 8 LEDs belegen nun den PORTD, mit einer einfachen Ausgabe konnte ich diese auch ansprechen und diese leuchten auch .

    Nun möchte ich eben diese Anzeige dafür nutzen das mir der Schaltabstand eines analogen Sensors der über einen MAX11600 an der I2C Schnittstelle hängt angezeigt wird.
    LED1=1cm
    LED2=2cm usw.

    Habe die Kennlinie vom Sensor aufgenommen um somit die Ausgangsspannung für die verschiedenen Schaltabstände zu erreichen.

    Nun aber meine Frage:
    Ich habe ja eine Speicherzelle als RDATA festgelegt, wie kann ich nun diesen digitalen Wert, den ich ja nicht kenne anhand meiner Spannungen (Sensor) abfragen lassen ? Ich hatte da mal etwas wegen einem DDW (Digitals Daten Wort) gehört ?

    Der Code steht soweit bis eben auf diese Abfrageschleife. Wäre für Hilfe wie immer dankbar

    Gruss Pascal
    Angehängte Dateien Angehängte Dateien

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    17.09.2009
    Beiträge
    17
    Habe nun folgendes zwecks Spannung in DDW (8bit):

    8-Bit Wandlung = 256
    U Fullscale = 100 % Messspannung = 8cm = 4,5/5V
    U Ausgangsspannung = Ausgangsspannung Sensor = 1-8cm = 0-5V

    dann könnte ich doch dies so berechnen:

    1).
    U LSB = U Fullscale / 256 = 19,53 mV

    2). Bsp. für 1cm = 455 mV
    DDW = U Ausgangsspannung / U LSB = 23,29 => 23 => 17hex

    Jetzt berechne ich eben all diese 8 Werte und füge die in eine
    Abfrageschleife ein ?

    Danke Gruß Pascal

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiTime Speicher und Akkus