Hallo AVR-Famille, Ich habe eine interssante Frage und zwar: ich möchte nach dem Drücken der Eingabe-Taste die 2. Zeile eines LCD löschen und in die 1. Zeile kopieren. Falls jemand eine Idee hat, bitte ab in die Tastatur :) Danke und schönes Wochenende an alle
@ Reda (Gast) >Ich habe eine interssante Frage und zwar: Naja, interessant ist was anderes . . . >ich möchte nach dem Drücken der Eingabe-Taste die 2. Zeile eines LCD >löschen und in die 1. Zeile kopieren. LCDs haben doch gar jeine Eingabetasten . . . >Falls jemand eine Idee hat, bitte ab in die Tastatur :) Wenn du meinst, dass ein AVR oder anderer uC das LCD steuert, na DAAAANNN. Man könnte den DDRAM des LCD auslesen (2. Zeile), in die erste kopieren und dann die Zweite löschen. Meistens wird man aber in solchen Anwendungen ein Kopie der LCD Daten im RAM vom uC haben. Dort macht man dann das Gleiche, nur einfacher, man muss nicht das LCD langsam und aufwändig auslesen. MFG Falk
Hallo Falk,
danke für deine Antwort.
Es geht natürlich um eine LCD-Ansteurung und eine PC-Tastatur-Abfrage.
Das LCD ist über eine ATmega32 angesteurt.
>Man könnte den DDRAM des LCD auslesen (2. Zeile), in die erste
kopieren
und dann die Zweite löschen.
Wie kann man den DD RAM Speicher auslesen ?
>Meistens wird man aber in solchen Anwendungen ein Kopie der LCD Daten im
RAM vom uC haben. Dort macht man dann das Gleiche, nur einfacher, man
muss nicht das LCD langsam und aufwändig auslesen.
Wie kann man eine Kopie der Daten des LCDs haben ?
Vielleicht noch mehr Erklärungen oder ein C-Code dafür !
Danke für deine Antwort.
Hallo Falk, danke für deine Antwort. Es geht natürlich um eine LCD-Ansteurung und eine PC-Tastatur-Abfrage. Das LCD ist über eine ATmega32 angesteurt. >Man könnte den DDRAM des LCD auslesen (2. Zeile), in die erste >kopieren und dann die Zweite löschen. Wie kann man den DD RAM Speicher auslesen ? >Meistens wird man aber in solchen Anwendungen ein Kopie der LCD Daten im >RAM vom uC haben. Dort macht man dann das Gleiche, nur einfacher, man >muss nicht das LCD langsam und aufwändig auslesen. Wie kann man eine Kopie der Daten des LCDs haben ? Vielleicht noch mehr Erklärungen oder ein C-Code dafür !
Reda wrote: > Wie kann man eine Kopie der Daten des LCDs haben ? > Vielleicht noch mehr Erklärungen oder ein C-Code dafür ! Ist eigentlich sehr simpel. Du hast in deinem Programm 2 char Arrays, die die LCD Anzeige repräsentieren. Dazu hast du noch eine Funktion, die diese beiden Arrays immer komplett an das LCD ausgibt. Eine 'Ausgabe' gestaltet sich dann wie folgt. Du machst deine Anzeigenmanipulationen in diesen beiden Arrays und wenn du fertig bist, rufst du die eigentliche Ausgabefunktion auf, welche das LCD komplett löscht und neu mit den Zeichen aus den beiden Arrays befüllt. Oft macht man das auch so, dass man diese Ausgabefunktion zb. mit einem Timer regelmässig aufruft. Das hat dann den Vorteil, dass du dich um die eigentliche Ausgabe auf das LCD im Programm so überhaupt nicht mehr kümmern musst. Für dein Programm besteht das LCD einfach nur aus den beiden char-Arrays in denen dein Programm die Manipulationen macht welche dann 'magisch' irgendwann tatsächlich am LCD sichtbar werden.
@ Reda (Gast)
> Wie kann man den DD RAM Speicher auslesen ?
Steht im Datenblatt.
MFG
Falk
@ Karl heinz Buchegger (kbuchegg) (Moderator) >auf, welche das LCD komplett löscht und neu mit den Zeichen aus >den beiden Arrays befüllt. Es reicht, die Daten zu überschreiben. Ist wesentlich schneller. Wozu zwei Arrays? Wir brauchen hier doch keinen Doppelpuffer, wie auf dem PC für flackerfreie Animationen. MFG Falk
Hallo Karl heinz Buchegger, es geht nochmal darum die 2. Zeile des LCDs löschen und nach dem Drücken der Eingabe-Taste der Tastatur, die 2 Zeile löschen und in die 1. kopieren: int main (void){ lcd_init(); char c ; c = uart_getc(); // wenn ein Zeichen empfangen wurde, wird in c // gespeichert Eingabe-Taste drücken wenn die 2. Zeile zu ende ist; set_cursor(0,2); // Cursor auf die 1. Stelle der 2. Zeile lcd_clear(); // lcd komplett gelöscht set_cursor(0,1); // Cursor auf die 1. Stelle der 1.zeile lcd_data(c); // das zeichen an das lcd schicken return 0; } MfG
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.