Probleme mit meinem LCD-Display

OP #5250228
Lesenswert?

Hallo,

Ich habe einen LCD-Display mit LCM1602 IIC V1 und PCF8574AT. Ich habe es 
richtig angesteckt am Atmega (über einen Arduino)

Die verwendete Bibliothek ist i2clcd.h und i2cmaster.h

Aber ich finde einfach nicht die richtige Adresse weder 0x4E oder sonst 
was, was ich fand scheint zu funktionieren

Weiß jemand weiter?
OP #5250314
Lesenswert?

Karl M. schrieb:
> Karl M. schrieb:
>> 0b0111|A2|A1|A0
>
> Grevak D. schrieb:
>> 0b0111|A1|A2|A3 funktioniert auch nicht
>
> Was soll das sein?
>
> Anstatt A2,A1 oder A0 ist eine 0 oder 1 zu schreiben, "|" dient nur als
> optischer Trenner.
>
> Diese Werte sind direkt abhängig von der beschaltet des Chips!
> Das weiss doch keiner von uns.
>
> 0b0111|A2|A1|A0

Ja, ich habe die natürlich mit 0 und 1 ersetzt und ich habe auch A2 A1 
und A0 und nicht 1 2 3 gemeint
OP #5250327
Lesenswert?

Das ist mein Code
1
#include <stdbool.h>
2
#include <avr/pgmspace.h>
3
#include "i2clcd.h"
4
#include "i2cmaster.h"
5

6
int main() {
7
    i2c_init();
8
    lcd_init();
9

10
    lcd_command(LCD_DISPLAYON | LCD_CURSORON | LCD_BLINKINGON);
11
    lcd_light(true);
12

13
    lcd_printlc_P(1, 1, PSTR("Hello World"));
14
}

Die Lib ist angehängt

Ein I2C Scanner sagt, es ist 0x3F, aber es funktioniert nicht
Durch die Verschiebung um 1 Bit vermute ich mal 0x7E, aber das 
funktioniert auch nicht
Angehängte Dateien:
(Firma: Flk Consulting UG) #5250377
Lesenswert?

Leute wir reden über I2C da muss gar nichts an den Verbindungen zwischen 
pic und lcd gemessen werden.

Das einzige was hier noch falsch sein kann, ist der Anschluss des I2C an 
den uC.

Deshalb mal ein Bild vom Schaltungsaufbau und die Pinbelegung. Also wo 
der I2C vom Pic an den uC geht.
Gruß
Frank
Gast #5250378
Lesenswert?

Grevak D. schrieb:
> Wie messe ich das aus? Tut mir Leid, ich bin Anfänger

Schreibe Dir erst einmal die Pinbelegung des LCD und des PCF8574A auf 
ein Papier gegenüber.

Von LCD benötigst Du auch noch diverse Angaben, wie die Zeilen- und 
Zeichenanzahl.
So ein LCD hat eine Anschlussleiste, diese kann 14,16 Pins haben.

Siehe: www.sprut.de/electronic/lcd/
unter "zweireihiger 14- oder 16-poliger Steckverbinder" nach.

Dann schreibe die Zeilen auf ein Papier:

RS  -- PCF8574A Pin ?
R/W -- PCF8574A Pin ?
E   -- PCF8574A Pin ?

D0  -- nicht belegt
D1  -- nicht belegt
D2  -- nicht belegt
D3  -- nicht belegt

D4  -- PCF8574A Pin ?
D5  -- PCF8574A Pin ?
D6  -- PCF8574A Pin ?
D7  -- PCF8574A Pin ?

Dann nimm ein Ohmmeter im 0-200Ohm Bereich und ergänze die PCF8574A 
Pin-Bezeichnungen.

Dies trage bitte in die lcd4.h ein.
Gast #5250379
Lesenswert?

Frank L. schrieb:
> Leute wir reden über I2C da muss gar nichts an den Verbindungen zwischen
> pic und lcd gemessen werden.
>
> Das einzige was hier noch falsch sein kann, ist der Anschluss des I2C an
> den uC.
>
> Deshalb mal ein Bild vom Schaltungsaufbau und die Pinbelegung. Also wo
> der I2C vom Pic an den uC geht.
> Gruß
> Frank

Ich darf mal lachen, hast Du schon mal eine I2C PCF8574A LCD Adapter 
aufgebaut? Natürlich ist die Pinzuordnung für die anschließende LCD 
Initialisierung unabdingbar.

Des weiteren ist ein ein Atmel AVR µC.
OP #5250382
Lesenswert?

Ich habe das jetzt mit den Pins gerafft. Sie sind richtig angeschlossen 
und ich habe sie auch richtig in die Header eingetragen und dennoch 
klappt es nicht

P0 = 4 // RS
P1 = 5 // RW
P2 = 6 // EN
P3 = 7 // BL
P4 = 9 // D4
P5 = 10 // D5
P6 = 11 // D6
P7 = 12 // D7

Das stimmt mit dem Datenblatt überein und auch mit der Belegung auf dem 
I2C

Woran könnte es noch liegen?
Gast #5250391
Lesenswert?

I2C Welche I2C Pullup sind installiert und wie hoch ist der I2C 
Mastertakt?

Ich nutze meine eigenes LCD4 zu I2C Interface, damit könnte ich ein 
Testprogramm für einen bekannten Atmel µC mit bekannter Taktrate 
schreiben.

Was ist das für ein LCD?
Hast Du eine genaue Bezeichnung?

Anzahl der Zeilen und Zeichen?

Hast Du ein Datenblatt?

Bitte mach mal sehr gute Bilder im PNG Format vom Aufbau.
OP #5250400
Lesenswert?

Hier sind die Bilder. Leider habe ich diese Informationen nicht, da es 
sich um ein ganzes Set gehandelt hat (Chinaware) und wir das von unserer 
Schule bekommen haben

Das Backlight ist an P3

Beim Sketch, welcher funktionierte (bei dem C Header funktioniert das 
nicht)

waren die Pins so:

en rw rs d4 d5 d6 d7 bl
2, 1, 0, 4, 5, 6, 7, 3

Laut Datenblatt müssten die aber so:

P0 = 4 // RS
P1 = 5 // RW
P2 = 6 // EN
P3 = 7 // BL
P4 = 9 // D4
P5 = 10 // D5
P6 = 11 // D6
P7 = 12 // D7

Was auch nicht funktioniert
Das ist seltsam...

Bei meinem Lehrer, welcher einen PCF8574 und nicht die A Version hat 
funktioniert die Bibliothek schon von sich aus
Angehängte Dateien:
Gast #5250851
Lesenswert?

Hallo

Grevak D. schrieb:
> Ich habe die falschen Pullup Widerstände aktiviert^^

Hilf uns bitte auch, welche
> falschen Pullup Widerstände aktiviert
wurden aktiviert?
Und was sind die Richtigen - wie wurden die aktiviert?

Die Mitleser, so wie ich, möchten es immer ganz genau wissen.
Gast #5250890
Lesenswert?

Ich werde dann niederohmige nehmen.

Mann muss im DDRC Register, also SDA und SCL (AD4 und AD5) , die Pins 
auf 0 Stellen also Eingang und dann mittels PORTC auf 1.

Dann sind die Pullups aktiviert
OP #5263539
Lesenswert?

Grevak Denak schrieb:
> Ich werde dann niederohmige nehmen.
>
> Mann muss im DDRC Register, also SDA und SCL (AD4 und AD5) , die Pins
> auf 0 Stellen also Eingang und dann mittels PORTC auf 1.
>
> Dann sind die Pullups aktiviert

UPDATE:

Wenn man sich dazu entschließt die internen Pullups zu verwenden ist es 
wichtig zuerst diese zu aktivieren, bevor man den LCD initialisiert, 
ansonsten funktioniert es nicht
#5263551
Lesenswert?

@ Grevak Denak (xorda)

>Wenn man sich dazu entschließt die internen Pullups zu verwenden ist es
>wichtig zuerst diese zu aktivieren, bevor man den LCD initialisiert,
>ansonsten funktioniert es nicht

Wer hätte DAS gedacht?
Ist trotzdem Murks, der nur an guten Tagen bei Vollmond funktioniert. 
Externe Pull-Ups mit 2-10k Ohm und gut. Die muss man auch nicht 
einschalten, "nur" richtig anlöten.

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