mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ansteuern eines HD44780 LCD Displays


Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir vor ca. 2 Wochen ein Starterset gekauft, mit einem Atmega8 
Kontroller. Bisher hab ich noch nicht geschafft einen String auf diesem 
Display auszugeben. Wenn ich Spannung auf das Board geben leuchtet auf 
dem Display nur die 1.te Zeile. Wenn ich den Kontrast verändere, kommt 
die 2.te nicht zum Vorschein. Hab auch schon mehrere Programme versucht, 
aber es ändert sich nicht. So langsam weiss ich nicht mehr weiter, für 
kleine Tipps oder Ideen wäre ich sehr dankbar.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab auch schon mehrere Programme versucht,

Dann ist das Ding vermutlich falsch angeschlossen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider kann ich kein Assembler, nur C

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das, was Falk angegeben hat ist doch in C geschrieben?!

(Staun, Kopf kratz)

Paul

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja auf die Idee bin ich auch schon gekommen, nur leider mit einem 
negativem Ergebnis!! Sonst würde ich ja auch nicht fragen

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
display kaputt? mal dein "Liquid Crystal Display Display" getauscht? mal 
simuliert? proteus (kostenlose demo bei www.gidf.de) hat das disp und 
atmels in bibs. mal mit nem oszi an die signalleitungen geschaut, ob das 
rauskommt, was rauskommen soll?

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nen Oszi hab ich leider nicht. hab nur die versorgungsspannung 
überprüft. und die stimmt.

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und zum rest meinen posts fällt dir nix ein?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das mit der ersten Zeile schwarz ist erstmal ok, das Display hat seinen 
Reset erledigt und ist nicht initialisiert.
Wenn die Software es erfolgreich initialisiert hat, ist es komplett aus 
oder beide Zeilen grau/schwarz, wenn die Kontrastspannung zu hoch 
eingestellt ist.

Da Du sonst nichts weiter über Deine Hard- und Software verraten hast 
und meine Glaskugel auch nur einen schwarzen Balken anzeigt...

Gruß aus Berlin
Michael

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tauschen geht nicht. Hab nur das eine da.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>hab nur die versorgungsspannung überprüft.

Hast du auch mal die anderen Anschlüsse überprüft ?

1. Wo hast du was angeschlossen ?
2. Welchen C Code hast du verwendet ?
3. ein Starterset gekauft. Welches ?

Muss man dir alles einzeln aus der Nase ziehen ?

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2) Ich habe den Code aus dem AVR-GCC-Tutorial(diese Seite) benutzt. Hab 
die Defines für die Ports geändert. Aber geändert hat sich nix.

3)
Hab mir das Set ( http://www.myavr.de/shop/article.php?artDataID=41 ) 
gekauft

1) Habs an die Anschlussports gesteckt, die dafür vorher gesehen sind

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sören J. wrote:
> Tauschen geht nicht. Hab nur das eine da.

simuliern? ja, simulieren!

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit simulieren hab ich mich noch nicht so recht beschäftigt. Hab bisher 
immer nur WINAVR und nicht AVR-Studio benuzt, lade es aber gerade 
runter.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Display ist mit DB4..7 an PD4..7 auf dem Board
angeschlossen. Im Tutorial werden aber PD0..3 an DB4..7
angeschlossen. Das ist dein Problem !

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nimm gleich proteus, da siehst mehr als die port-zustände.
da kannst du einfach dein display und deinen µC als bauteile einfügen 
und zusammenschalten.
da gibts auch ein virtuelles oszi und diverse lustige sachen. lieder 
kann die demo nicht speichern. aber zum bestimmen der problemquelle 
software/hardware tuts die demo.

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne das hab ich ja auch gemerkt und die Belegung der Pins geändert. Aber 
es tut sich halt einfach nix

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das richtig, dass das Programm Proteus 7 Demonstration heisst?? So 
durchsichtig sieht das Programm aber auf den ersten Blick nicht aus.

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, ist richtig

ist ein bisschen gewöhnungsbedürftig, aber doch noch recht intuitiv.
library -> pick...
da fügst du bauteile zu deiner device-liste hinzu. wenn du das bauteil 
dann links in der device list angeklickt hast, kannst du es platzieren. 
wenn kein bauteil im schematic markiert ist, kannst du verbindungen 
ziehen.

quellen: rechtsklick im schematic -> place -> generator.
auf die gleich weise kannst du auch dmm's oder oszis einbaun.

mit debug -> start... und debug -> execute kannst die simulation 
starten.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mit debug -> start... und debug -> execute kannst die simulation
>starten.

Fein, dann simulieren wir das Display einfach. Zeigt damit
in der Realität aber auch nichts an.

Man könnte die falsche Pinbelegung im Programm ändern.
Aber das wäre ja zu einfach ;)

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sören J. wrote:
> Ne das hab ich ja auch gemerkt und die Belegung der Pins geändert. Aber
> es tut sich halt einfach nix

.

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist meine PIN- Belegung von meinem Display:
1 = Port D.2 LCD     PIN 4 RS = Enable
2 = Port D.3 LCD    PIN 6 E = Enable
3 = Port D.4 LCD    PIN 11 DB4 = Datenbit 4
4 = Port D.5 LCD    PIN 12 DB5 = Datenbit 5
5 = Port D.6 LCD    PIN 13 DB6 = Datenbit 6
6 = Port D.7 LCD    PIN 14 DB7 = Datenbit 7
7 = Port B.0 (Jumper R/W) LCD PIN 5 R/W =Read/Write (oder fest auf Low)
8 = Port B.1 (Jumper PWM) LCD PIN 15 Hintergrundbeleuchtung (Anode)
Kontrastreglung LCD PIN 3 Vo
13 = 5V LCD PIN 1 Vss
14 = Masse LCD PIN 2 Vdd
LCD PIN 7 DB0 = Datenbit 0
LCD PIN 8 DB1 = Datenbit 1
LCD PIN 9 DB2 = Datenbit 2
LCD PIN 10 DB3 = Datenbit 3
LCD PIN 10 DB3 = Datenbit 3
LCD PIN 15 Hintergrundbeleuchtung (Kathode)

Das ist der Auszug aus der Header von einem fertigem Programm, hab die 
Definitionen so geändert wie ich es für richtig gehalten habe. Läuft 
trotzdem nicht.

#define LCD_PORT         PORTB        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    7            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    8            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    9            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    10            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        6            /**< pin  for Enable line     */

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Mann, versuchs mal so:

#define LCD_PORT         PORTD        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    4            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    5            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    6            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    7            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       2            /**< pin  for RS line         */
#define LCD_RW_PORT      PORTB     /**< port for RW line         */
#define LCD_RW_PIN       0            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        3            /**< pin  for Enable line     */

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm ne klappt immer nocht nicht. Ich verstehe auch nicht warum Data_bit0 
- Data_bit3 nicht vom Display auf Pin 7-10 liegen. Oder lese ich das 
Datenblatt falsch??

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JP2 auf R/W gesteckt ?

>Ich verstehe auch nicht warum Data_bit0
>- Data_bit3 nicht vom Display auf Pin 7-10 liegen.

Weil es keinen PORTD10 gibt ;)

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LCD PIN 7 DB0 = Datenbit 0
LCD PIN 8 DB1 = Datenbit 1
LCD PIN 9 DB2 = Datenbit 2
LCD PIN 10 DB3 = Datenbit 3

das sind doch die Ports über die die Daten geschickt werden  an dem 
LCD-Modul?? DB0 is doch das Kontrollermodul  und LCD PIN7 das Display. 
Jumper sind auch gesetzt.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>LCD PIN 7 DB0 = Datenbit 0
>LCD PIN 8 DB1 = Datenbit 1
>LCD PIN 9 DB2 = Datenbit 2
>LCD PIN 10 DB3 = Datenbit 3

>das sind doch die Ports über die die Daten geschickt werden  an dem
>LCD-Modul??

Falsch, DB0..3 liegen an Masse. Die Daten werden über DB4..7
geschickt. Sieh in den Schaltplan deines LCD Moduls. Das sind
die Pins 11 bis 14 am LCD. Aber auch PORTD11..14 gibt es nicht
beim uC ;) Der kennt nur PORTD0 bis PORTD7. Was sagt dir das ?

Autor: Sören J. (soeren85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab immer falsch gedacht, aus der Sicht des Displays. Werde es noch 
mal versuche. Danke

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.