Hallo, ich habe ein LCD mit 2 Controllern, also auch 2 Enable-Leitungen. Mit einer funktionierts auch, nur was ist mit der 2ten? Ich verwende die LCD-Lib von P. Fleury und weiss da nicht so ganz, was ich machen soll? Einfach 4 Lines angeben und Enable 1 + 2 zusammenanschließen? Gruß Martin
einfach wie 2 Displays verwenden. Die Datenleitungen sind für Beide gemeinsam vorhanden und die Daten werden mit dem jeweiligen Enablepin an das passende Display geschickt. Wenn du beide zusammenschaltest passiert entweder garnix oder beide Displayteile zeigen dann dasselbe an. Also du gibst ein Zeichen aus und es erscheinen Zwei. bye Frank
Hallo, kennst du die LCD-Liv von Fleury? Die muss ich ja irgendwie modifizieren, oder? Oder wie meinst du das mit "wie 2 Display" verwenden? Dass die Leitungen bis auf Enable gemeinsam genutzt werden ist mir schon klar, nur muss dass Programm ja wissen, wann es welches Enable nutzen soll.
Ich kenn die Lib jetzt nicht auswendig, hab sie zwar schon mal benutzt aber weiß nicht ob sie 2 Displays unterstützt. Falls nicht kannst dir ja 2 Makros schreiben die du vor jedem Befehl absetzt: #define USE_DISP1 ...setze Enable1, lösche Enable2... #define USE_DISP2 ...setze Enable2, lösche Enable1... dann gehts los: USE_DISP1; lcd_init(); // LCD1 initialisieren USE_DISP2; lcd_init(); // LCD2 initialisieren USE_DISP1; lcd_putc('A'); // Zeichen auf 1. Disp. ausgeben. ... usw Wird halt schwierig wenn du Text über mehrere Zeilen ausgeben möchtest. Gruß Roland
Hallo, ich bin da noch nicht so erfahren, muss ich die makros in die hauptdatei schreiben? Habs so versucht: #define lcd1 PORTB |= (1<<3) | (0<<2); #define lcd2 PORTB |= (0<<3) | (1<<2); aber hat nicht geklappt. die Enables hängen an PortB 1 + 2
> Habs so versucht: > #define lcd1 PORTB |= (1<<3) | (0<<2); Damit schaltest du bit 3 ein und bit 2 schaltest du nich ein (und auch nicht aus). #define lcd2 PORTB |= (0<<3) | (1<<2); Damit schaltest du bit 2 ein und bit 3 schaltest du nicht ein (und auch nicht aus). Du könntest es damit versuchen: #define lcd1 PORTB |= (1<<3) &= ~(1<<2) #define lcd2 PORTB &= ~(1<<3) |= ~(1<<2) > aber hat nicht geklappt. Grundregel: Immer dazu schreiben, was nicht geklappt hat und wie sich das bemerkbar gemacht hat. > die Enables hängen an PortB 1 + 2 Warum änderst du dann die bits 2 und 3?
Ups, meinte natürlich: #define lcd1 PORTB |= (1<<3) &= ~(1<<2) #define lcd2 PORTB &= ~(1<<3) |= (1<<2)
also ob das Bitgeschiebe jetzt stimmt weiß ich nicht. Es gibt /gab doch mal so schöne Befehle wie SBI/CBI im Gcc. Ich würd die Bits auf alle Fälle nacheinander setzen, sonst kennt man sich schnell nicht mehr aus: PORTB &= ~ (1 << PB1); PORTB |= (1 << PB2); Das DDRB muss übrigens auch richtig gesetzt sein, damit PB1+2 erst mal Ausgang werden. (Am Besten mal im Avrstudio durchsimulieren, ob überhaupt am Port was ankommt) Gruß Roland
Mir ist da noch was gekommen und zwar muss ich in der lcd.h ja angeben, wo enable angeschlossen ist. D.h. die lcd.c wird das auch irgendwo benutzen. Wenn ich also davor im Hauptprogramm was ändere, wird das doch sicher von der lcd.h mit jedem Kommando das ich daraus benutze bei Bedarf neu eingestellt -> die Makros haben keine Wirkung mehr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.