Forum: Mikrocontroller und Digitale Elektronik Problem mit Lcd an 74HC595, Atmega32, [c]


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thorsten (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich beschäftige mich grade mit der Ansteuerung der Schieberegister 
74HC595, da ich mehrere Ausgänge und Eingänge benötige, möchte ich ein 
4x20 LCD Display auch über die schieberegister ansteuern.

Ich habe die Routinen aus dem Tut entnommen und sie funktionieren 
einwandfrei bis auf das LCD.

Ich habe 4x den 74HC595 angeschlossen. An den ersten drei sitzen jeweils 
Relaiskarten. An dem 4. 74HC595 habe ich ein LCD folgendermaßen 
angeschlossen:

LCD            74HC595
RS     --->      Q5
E      --->      Q6
RW     --->      GND
D4     --->      Q1
D5     --->      Q2
D6     --->      Q3
D7     --->      Q4

Da ich 4 Schieberegister angeschlossen habe und das LCD an dem 4. hängt, 
habe ich am Quellcode folgendes angepasst:
#define LCD_PORT  0
#define LCD_B4    25  //  74HC595 PIN 15
#define LCD_B5    26  //  74HC595 PIN 1
#define LCD_B6    27  //  74HC595 PIN 2
#define LCD_B7    28  //  74HC595 PIN 3
#define LCD_RS    29  //  74HC595 PIN 4
#define LCD_EN    30  //  74HC595 PIN 5
#define LCD_LIGHT  31   //   74HC595 PIN 6
#define LCD_RW        //  auf GND gelegt

Ansonsten ist alles so wie im Tut, bis auf die Anpassung, dass ich einen 
4MHZ Quarz verwendende und es entsprechend angepasst habe.

wenn ich das Programm änder und Relais mit dem 4. Schieberegister 
ansteuer, funktionieren die korrekt. Wo liegt mein Fehler ??

Das LCD zeigt jedoch nur schwarze Balken in der 1. Zeile an..........

MfG

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Thorsten schrieb:

> Ansonsten ist alles so wie im Tut

?
Welcher Code?

Ich denke nicht, dass wir hier in einem Tutorial LCD-Code haben, der 
seine Ausgaben über ein Schieberegister abhandelt. Das ist alles auf 
direkte Pinzugriffe an irgendwelchen Ports ausgelegt. Da musst du dir 
den Low-Level Teil, auf neudeutsch Treiber, schon selber schreiben.

von Thorsten (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Doch im Tut Schieberegister wird die Ansteuerung eines LCDs mithilfe 
eines 74HC595 beschrieben.

Siehe Code im Anhang

von Thorsten (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Fehler gefunden:

Man fängt bekanntlichermaßen bei 0 an zu zählen und nicht bei 1 ;-)

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Thorsten schrieb:

> LCD            74HC595
> RS     --->      Q5
> E      --->      Q6
> RW     --->      GND
> D4     --->      Q1
> D5     --->      Q2
> D6     --->      Q3
> D7     --->      Q4
>
> Da ich 4 Schieberegister angeschlossen habe und das LCD an dem 4. hängt,
> habe ich am Quellcode folgendes angepasst:
>
> #define LCD_B4    25  //  74HC595 PIN 15

Pin 15 am IC ist aber Q0 und das müsste dann hier eine 24 sein

von Thorsten (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jap ich habs gesehen.
Und das hat mich fast ne Stunde gekostet..........

Na ja aus sowas lernt man...

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.