- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 19

Thema: Keine Anzeige am LCD

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hallo,

    Anpassung Datenleitung check

    Der Kontrast ist zu stark und deshalb könntest du evtl nix sehen, also am Kontrastpoti drehen so das die Balken heller werden. Sollte nun Buchstaben zu sehen sein funktioniert schonmal die Init und ein Teil der Ausgabe aber die einzelnen Programmteile für sich selbst durchtesten ob diese so arbeiten wie sie sollen. Ist das einmal gemacht müsstest du rein theoretisch die Unterprogramme nicht mehr ändern.

    Fürs Forum um den Code einzustellen fehlt dir am Ende nur folgendes >>>> [/Code] <<<<

    Deine Init für die Daten ist noch bisschen heftig du brauchst es nur wie folgt zu ändern sie Code
    Code:
    .
    .
    .
    .
    ; Initialisierung des LCD
     ;Datenleitungen
                                            ;Warum SO?? ganz einfach der Port wird umbenannt damit brauch man jetzt nicht
     .equ lcd_ddr  = DDRA        ;alle Unterprogramme absuchen und es ändern sondern nur hier und man brauch den Port nur einmal umbenennen ;)
     .equ lcd_port = PORTA
                                             ; hier kriegen die PinNummern nur Namen, ähnlich wie ne IP-Adresse, denn kein Mensch merkt sich die IP sondern man merkt sich nur www.google.de
     .equ lcd_A7   = 7               ; Die PinNummern können auch auf andere Ports angewendet werden da diese ja nicht nur an PortA vorkommen ;)
     .equ lcd_A6   = 6
     .equ lcd_A5   = 5
     .equ lcd_A4   = 4
     .equ lcd_e     = 2
     .equ lcd_rs    = 1
    .
    .
    .
    .
    LCD_Init:
    
     ldi     mp, ( 1<<lcd_A7 | 1<<lcd_A6 | 1<<lcd_A5 | 1<<lcd_A4 | 1<<lcd_e | 1<<lcd_rs ) ; ist übersichtlicher und ist das selbe wie 0b011110110
     out    lcd_ddr,mp                                                                                                         ;Datenrichtung als Output konfigurieren
    Packe deine .equ-Deklarationen direkt unter die RegisterDefinitionen, damit behältst du Übersicht und musst nicht in weiteren Dateien umherkramen um was zu ändern sondern nur in der Hauptdatei. Man kann auch Deklarationen vor Unterprogramme ändern aber das ist noch ne Nummer zu hoch für dich.

    Nachtrag: Berücksichtige den Ablauf deines Hauptprogrammes welches im vorpost nicht zu erkennen ist. Worauf will ich hinaus? Auf das, das du ohne die call-Funktion zu nutzen einfach in die Init-Routine springts aber ganz unten deine Ausgabe mit dem 'A' steht, da wird dein µC aber nie hinkommen folgender Ablauf zur Initalisierung MUSS dringends eingehalten werden

    Code:
    .
    .
    .
    .
    stack:	ldi 		temp0,low(ramend)   ;Stackpointer festlegen
                    out 		sp, temp0
    		rcall		lcd_init
    		rcall		lcd_clear
    		ldi             mp1, 'A'
                    rcall           lcd_data
    
    Hauptprogramm:
                   ;Warum steht hier nix ??
                   ;ganz einfach du gibts das A direkt nach der Init aus, da der Cursor auf adresse 0 geinit
                   ;wird, steht das A an Position 0, was das erste Zeichen im LCD wäre.
                   ;Das schöne ist, das der Text nicht ständig gesendet werden muss weil du nur 
                   ;sagst welcher Buchstabe an welcher Position steht und das auch nur wenn du
                   ;Text/Zahlen ausgeben möchtest/musst
                    rjmp          Hauptprogramm          
    .
    .
    .
    .
    Hinweis: Im Leben kann man nicht alles wissen deshalb muss man auch ab und an was kopieren, um es zu verstehen. Überleg mal wie du das Schreiben gelernt hast... Buchstaben solange schriftlich wiederholt bis der Ablauf von Anfang bis Ende quasi im Hirn eingebrannt war und das ist kopieren in total einfachster Form... Also lieber gut kopiert als schlecht selbst geschrieben !!!!! Zumindest um einen Anfang zu haben und um zu begreifen!!!!!!!!
    Geändert von avr_racer (09.09.2015 um 16:00 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2015
    Beiträge
    16
    Hi,

    danke ich werde mal deine Rat befolgen....

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Moin ok

    geb mal nen bisherigen Sachstand bitte denn laufen so richtig tuts ja noch nicht oder???

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2015
    Beiträge
    16
    Hallo,

    also immer noch hats sich nichts getan.. Ich habe einiges an meinem Code verändert und trotzdem sehe ich nichts...
    Ich gucke mall weiter und probiere bis etwas am LCD ausgegeben wird..

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    OK Poste mal bitte als Zip Datei den kompletten Quellcode denn schau ich mal drüber. Dann umgehen wir auch gleich das Problem mit der CodeFormatierung hier im Forum... erstmal...

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2015
    Beiträge
    16
    Hi,

    der veränderte Code ist im Anhang als Zip-Datei beigefügt...Ich gehe davon aus, dass dieses Mal der Code keine Fehler enthält...
    Angehängte Dateien Angehängte Dateien

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hey ho,

    AAAALLLSSSOOOO du weißt gar nicht wie knapp du vor dem Ziel bist!!!!!!!!!!!!!!!!!!!!!!!!

    Dein Problem ist das Verständniss wie man die 8Bit-Ansteuerung in eine 4bit-Ansteurung umwandelt und welche Daten als erstes übermittelt werden müssen,
    damit sich das 2x4Bit-Word zu 1x8BitWord zusammensetzt.


    Problem ist in den Unterroutinen des

    LCD-Command
    LCD-Data

    zu suchen.

    In der ZIP findest du die modifizierte Variante, beide mal mit einander vergleichen und durchsimulieren was da passiert und wo genau der Unterschied liegt.

    Dein zusätzliches Problem ist das Grundverständiss vom Aufbau eines Programmes in ASM und wann man wie welche CALL'S oder xJUMPS man nutzt.

    Am besten hier mal nachlesen und verstehen
    http://www.avr-asm-tutorial.net/avr_de/index.html

    Probiers mal aus und bei Problemen einfach durchschreiben....
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. Keine Anzeige bei 20*4 LCD-Display
    Von Funkpeter im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 15
    Letzter Beitrag: 19.10.2014, 13:19
  2. [ERLEDIGT] Atmega32 ==> Atmega1284p - keine Anzeige mehr im Display
    Von tc-maxx im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 16.05.2011, 15:01
  3. RN-Control und GLCD mit Touch keine Anzeige
    Von MueThoS im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 19.03.2008, 18:53
  4. LED ANzeige
    Von markus1990 im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 04.03.2006, 02:28
  5. LED Anzeige
    Von Elektronikus im Forum Elektronik
    Antworten: 24
    Letzter Beitrag: 15.02.2005, 19:10

Berechtigungen

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

Labornetzteil AliExpress