mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD ansteuerung mit PIC18F2525


Autor: Tobias Stoll (supertsoll)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin an einem Projekt das ich schnellst möglich beenden muss und ich 
komm einfach nicht weiter!
Ich benutze den PIC 18F2525 um eine Displayansteuerung im 4-Bit Modus zu 
machen!
Meine Dateneingänge sind RB4 bis RB7 für D4 bis D7. Der Enable hängt am 
RB3, R/W an RB2 und RS an RB1.

Mein Code ist im Anhang!


Ich benutze das DIP162-DNLED Display
Kann mir jemand dringend helfen???

Danke im Voraus

Autor: Tobias Stoll (supertsoll)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist denn echt keiner da der mir irgendwie helfen kann?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Checkliste hier
Beitrag "Wettaufruf "Probleme mit LCD""

mal durchschauen.

Ansonsten: Dein Code compiliert bei mir nicht, für welchen Compiler ist 
der?

Autor: Tobias Stoll (supertsoll)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze den mcc18 Compiler im MPLap!

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht aus wie eine Prüfungsaufgabe der FS-Elektrotechnik, Lörach. Da 
sind ja ausser der Initialsierung keine weiteren Routinen, die irgendwas 
aufs Display bringen sollen. Hast Du das überhaupt selbst geschrieben ??

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit den Delays stimmt was nicht. Bei
> Delay10KTCYx(10); //Verzoegerung 10mS
> Delay10KTCYx(5);  //Verzoegerung 50ms
ist mindestens eines falsch oder falsch kommentiert.

Bin auch grad nicht im Satz, ob das wirklich Millisekunden sind, oder 
vielleicht bloss Vielfaches von Prozessorzyklen, was ja nicht unbedingt 
auf's gleiche rausläuft.

Autor: Tobias Stoll (supertsoll)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich bin auf der TS in Lörrach und mach das als Abschlussarbeit!
Ich will lediglich die 2 Zeilen auf das Display bringen! Alles andere 
folgt dann noch! Mein Problem ist nur, das ich es bis Donnerstag haben 
muss und ich nun schon über ne Woche an der Init rumbastle und es 
einfach nicht will!!!

Gruß

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Immer wieder die gleichen Fehler:

>#define display LATB          //Ausgang fuer das Display
>#define rs_display LATBbits.LATB1    //Display "register select" - PIN2

>Meine Dateneingänge sind RB4 bis RB7 für D4 bis D7. Der Enable hängt am
>RB3, R/W an RB2 und RS an RB1.

Und dann machst du sowas:
 display = 0x02;

Schreibs doch einfach mal hin:

 LATB = 0x02;

Was machst du damit ? LATB1 setzen ? RS ?

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also erzähl doch mal was passiert. Kannst Du den Konstrast verstellen, 
was sieht man dann ? Schaltplan wäre auch gut.

Autor: Tobias Stoll (supertsoll)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>
> Was machst du damit ? LATB1 setzen ? RS ?

Ja, das ist für die Initialisierung daß das Display auf 4-Bit Modus 
geschalten wird! Anbei hänge ich noch das Datenblatt mit der 
Beispielinit dran.

Autor: Tobias Stoll (supertsoll)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Analog wrote:

> was sieht man dann ? Schaltplan wäre auch gut.

Wenn ich einschalte leuchtet die Hintergrundbeleuchtung und die Obere 
Zeile ist schwarz! Ja, die Kontrastverstellung funktioniert.

Schaltplan hänge ich an!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, das ist für die Initialisierung daß das Display auf 4-Bit Modus
>geschalten wird!

Und dafür reicht es RS zu setzen ?
Hallo !! Jemand zu Hause ?
Die 0x02 soll auf die Datenleitungen.
Und das sind bei dir PB4 bis PB7.
Du schreibst aber eine 0 auf diese Leitungen
und setzt stattdessen RS.

Autor: Tobias Stoll (supertsoll)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab es jetzt umgeschrieben, jedoch hat sich an der situation nichts 
geändert! Ich weis bald echt nicht mehr woran es noch liegen könnte!!!

Ich hänge den geänderten code nochmal an, vielleicht findet ja jemand 
noch etwas!

Könnte es eventuell noch mit der Deklaration zusammenhängen?

Statt LATB z.B.:PORTB????

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein E-Puls von 1 Sekunde Dauer ist genauso falsch bei einer von 100ms 
Dauer. Ist aber nicht das Problem.

Es gibt beliebig viele funktionierende Beispiele für LCD-Anstduerung 
hier, meist zwar für AVR, aber am Prinzip ändert das nichts.

Lies doch mal was "holger" geschrieben hat. Wenn du schreibst
> display = 0x02;
dann setzt du vom Port die Pins 0,2-7 auf 0 und Pin 1 auf 1. Was meinst 
du bringt es, wenn du also immer nur Nullen (die an Bits 4-7) an den 
Display-Controller schreibst?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NB: Bei dem Kenntnisstand wär's besser du fängt mit einzelnen LEDs an 
Portpins an. Auch wenn der Zeitdruck noch so gross ist - in völligem 
Blindflug ohne Verständnis was du da machst ist selbst etwas relativ 
einfaches wie eine LCD-Ansteuerung schwierig.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
//Zeilen ansprechen
void switch_z1 (void)
{
LATB = 0x08;  // Falsch
.....
}

void switch_z2 (void)
{
LATB = 0x0C;  //Falsch
....
}

void show_text (char *ptr)
{
 LATB = (*ptr/0x10) | 0x10; //Falsch
....
 LATB = (*ptr & 0x0f) | 0x10;//Falsch
....
}

Geh durch deinen kompletten Code und beseitige
die falschen Befehle zum ansteuern der Datenleitungen.

Autor: Tunichgut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, ich bin auf der TS in Lörrach und mach das als Abschlussarbeit!
Na, super. Abschluss als was? Pausenaufsicht?

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lies doch mal das hier durch, dann verstehste, warum hier so viele 
mekern (sich über deinen kenntnisstand und dementsprechend realisierte 
lcd-initialisierung nerven)
http://www.sprut.de/electronic/lcd/index.htm

viel glück

Autor: Tobias Stoll (supertsoll)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin euch ja echt dankbar für alles! Jedoch bin ich der Meinung das 
kein Profi vom Himmel fällt und für was gibt es denn solche Foren, wenn 
man nicht nachfragen darf!

Ich habe alles in Ordnung gebracht, jedoch tut sich immer noch nichts!

Gruß

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und jetzt sollen wir raten was du alles geändert hast? (stichwort: 
glaswürfel in reperatur..) wieso nimmste nicht einfach einen fertigen 
und funktionierenden code (geschrieben in C18, GCC oder weiss ich nicht 
was) und änderst die syntaxe so ab, dass dein compiler sie versteht?!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.