Ansteuern eines HD44780 LCD Displays

OP #787286
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.
Gast #787345
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?
#787373
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
Gast #787375
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 ?
Gast #787394
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.
Gast #787426
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.
Gast #787433
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 ;)
OP #789797
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     */
Gast #789860
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     */
Gast #789943
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 ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren