Hallo zusammen,
ich hab mir bei Conrad volgendes LCD "Anag Vision AV4040BNBW-WJ"
gekauft, hat 4 Zeilen a 40 Zeichen.
Bisher hatte ich immer 4x20 Displays, erst normal angeschlossen über
AVR-Port und später über I2C mit einem PCF8574 IC. IM Anhang meine
bisher, funktionierende Display.h für I2C
Nun steh ich vor dem Proplem , wie die Datei so umschreiben das ich die
beiden Chips ansprechen kann. Enable1 hab ich auf P7 und Enable2 ist auf
P6.
Ich hab zum einen die Idee das ich LCD1 oder LCD2 auswähle und dann
jeweils Zeile 1 oder 2,
oder zum andern das wenn ich Zeile 3 und Zeile 4 angebe über SetCursor,
automatisch auf LCD 2 umgeschalten wird.
Wie gesagt, zu beiten Ideen fehlt mir das Wissen zur Umsetzung und hoffe
hier auf Antworten.
MFG Hendrik
@Hendrik (Gast)
>Nun steh ich vor dem Proplem , wie die Datei so umschreiben das ich die>beiden Chips ansprechen kann.
Sieht so aus.
>Enable1 hab ich auf P7 und Enable2 ist auf>P6.>Ich hab zum einen die Idee das ich LCD1 oder LCD2 auswähle und dann>jeweils Zeile 1 oder 2,
Kann man machen.
>oder zum andern das wenn ich Zeile 3 und Zeile 4 angebe über SetCursor,>automatisch auf LCD 2 umgeschalten wird.
Das ist besser. Denn im Normalfall will die Anwendung von den
"dreckigen" Internas der Ansteuerung nichts wissen und nur einfach die
Daten in die Zeilen schreiben.
>Wie gesagt, zu beiten Ideen fehlt mir das Wissen zur Umsetzung und hoffe>hier auf Antworten.
Was willst du denn noch hören? Eine Schritt für Schritt Anleitung, was
man ändern muss?
Du musst dir die aktuelle Zeile und Spalte in Variablen merken, daraus
wird die Auswahl LCD1/2 abgeleitet. Dann vielleicht noch die Erzeugung
von nutzderdefinierten Zeichen auf beide LCDs erweitern, aber das ist
Kosmetik.
Viel mehr muss man nicht machen.
Idealerweise solltest du eine etwas bessere Software nutzen, dann ist
auch das Umbauen einfacher.
Beitrag "Re: I2CLCD Library für HD44780 LCDs"
Falk B. schrieb:> Idealerweise solltest du eine etwas bessere Software nutzen, dann ist> auch das Umbauen einfacher.>> Beitrag "Re: I2CLCD Library für HD44780 LCDs"
Diese Library hatte ich schonmal ausprobiert, wegen HintergrundLED
ein/aus schalten, habs aber wieder beiseite gelegt weil mir AtmelStudio
ständig Fehler brachte.
Hallo,
Im Prinzip sind Deine Ideen richtig, denn das 4x40 besteht aus zwei
"normalen" 2x40 LCDs mit zwei getrennten Enable-Eingängen. Du kannst
einfach ausprobieren, wie es reagiert und dem entsprechend mal den
oberen oder den unteren Teil ansprechen. Die Initialisierung muß in
jedem Schritt beide Teile ansteuern.
MfG
Guten Morgen
hab mir das wesentlich komplizierter vorgestellt als wie es
warscheinlich ist.
Da brauch ich wohl nur bei
void I2C_SetDisplayCursor(uint8_t y, uint8_t x)
reinschreiben,
wenn zeile 1 und 2 dann #define E_HIGH1 0b10000000
wenn zeile 3 und 4 dann #define E_HIGH2 0b01000000
sozusagen, oder muss ich woanders noch was ändern ?
@ Hendrik (Gast)
>sozusagen, oder muss ich woanders noch was ändern ?
Natürlich. Überall dort, wo ein Schreib- ode Lesezugriff auf das LCD
erfolgt. Z.B. bei der Datenausgabe . . .
Falk B. schrieb:> Natürlich. Überall dort, wo ein Schreib- ode Lesezugriff auf das LCD> erfolgt. Z.B. bei der Datenausgabe . . .
Ich denke das ich erstmal direkt LCD1 und 2 anspreche:
// Wechsel zwischen LCD1 und LCD2
void I2C_UseDisplay(uint8_t lcd)
{
if (lcd==1)
{
#define E_HIGH 0b10000000 // Enable LCD 1 = High
}
IF (lcd==2
{
#define E_HIGH 0b01000000 // Enable LCD 2 = High
}
}
Ist denke erstmal die einfachere Lösung für mich zumindest, wenn ich
soweit alles fertig gelötet habe, werd ich es mal so testen.
Muss ich die LCD_I2C_Init da jetzt 2 x aufrufen für jedes LCD einzeln ?
@ Hendrik (Gast)
>Ich denke das ich erstmal direkt LCD1 und 2 anspreche:
Ich denke, du solltest erstmal ein bischen in einem C-Buch blättern
> if (lcd==1)> {> #define E_HIGH 0b10000000 // Enable LCD 1 = High> }
Das geht so nicht. Lerne den Unterschied zwischen einer Textersetzung
per #define und einer echten Variable.
>Muss ich die LCD_I2C_Init da jetzt 2 x aufrufen für jedes LCD einzeln ?
Sinnvollerweis natürlich nicht, weil man beide Initialisierungen in der
Funktion vornimmt.
Falk B. schrieb:> Das geht so nicht.
Warning 1 "E_HIGH" redefined [enabled by default]
So in etwa meckert AtmelStudio auch gerade rum.
Na ich verschiebe das erstmal auf nächstes Jahr^^, ich wünsch euch einen
guten Rutsch.
MFG Hendrik
Hendrik schrieb:> Enable1 hab ich auf P7 und Enable2 ist auf> P6.
warum 2 Bit verschwenden?
1 Bit reicht doch für 2 Zustände high low, ggffs. ein Inverter zum
Display
Wenn nicht gerade am I2C Umstzer das die Hinrgrundbeleuchtung geschaltet
werden soll dann kann man dieses Bit nutzen.
Die Hintergrundbeleuchtung würde ich lieber auf einen PWM Ausgang legen
um zu dimmen
@Hendrik (Gast)
>Ich hab mir nochmal meine Gedanken gemacht,sprich gegoogelt und>folgendes geschrieben
Aber kein C-Buch gelesen, dann das dauert deutlich länger, bringt aber
meist auch DEUTLICH mehr Erkenntnisse!
> #undef E_HIGH // löscht E_HIGH> #define E_HIGH 0b10000000 // definiert E_HIGH neu (Enable1(PA7))> }
AUA!!! NEIN! Vergiss #define und sämtliche Präprozessoranweisungen! Du
brauchst eine normale Variable.
>Sollte das so funktionieren ?
NEIN!
Hendrik schrieb:> Ich hab mir nochmal meine Gedanken gemacht
Ich glaub das dauert doch so lange.
LCD_40x4 schrieb:> ... sonst dauert das hier noch endlose Wochen ...
LCD_40x4 schrieb:> Ich glaub das dauert doch so lange.
Sorry wenns zu lang dauert,
wie Falk schon richtig erkannt hat, es fehlt ein richtiges C-Buch. Hab
bis jetzt nur das "AVR" von Florian Schäffer.
Für mich ist das hier alles Neuland, da nur Hobby. Bis jetzt kopier ich
meine display.h ins neue Programm und schreibe meinen Text und oder
zahlen , fertig. Die display.h hab ich bis jetzt in keiner Zeile
verändern müssen.
Guten Abend zusammen,
ich habe gestern zufällig diesen Adapter im Netz gefunden für 4x40 LCDs.
https://www.cctools.eu/download/Anleitungen/1040_V1-1.pdf
Ist, denke ich, eine gute Alternative und ich muss die vorhandene LCD
Routinen nicht unnötig verändern.
Ich danke trotzdem für eure Hilfe...
@ Hendrik (Gast)
>https://www.cctools.eu/download/Anleitungen/1040_V1-1.pdf
Naja.
>Ist, denke ich, eine gute Alternative und ich muss die vorhandene LCD>Routinen nicht unnötig verändern.
Das wäre aber ein gute Übung gewesen. Wenn du schon vor so einer eher
kleinen Anpassung wegläufst, wird das nie was mit dem Programmieren.
Falk B. schrieb:> Das wäre aber ein gute Übung gewesen. Wenn du schon vor so einer eher> kleinen Anpassung wegläufst, wird das nie was mit dem Programmieren.
da geb ich dir voll und ganz recht, aber
LCD_40x4 schrieb:> LCD_40x4 schrieb:>> ... sonst dauert das hier noch endlose Wochen ...
In diesem Sinne
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