Hallo,
ich bin dabei eine Laufschrift zu Programmieren. Folgendes Problem habe
ich dabei: Die Informationen werden Spaltenweise in den Variablen
gespeichert. Dabei ist ein Byte immer eine Spalte.
Ich hab das Array „display_buffer“, darin wird der komplette Text
gespeichert, der durchlaufen soll. In dem Array „display_write“ steht
der Text, welcher aktuell auf dem Display ausgegeben wird. Dann muss
sich ja der Text um eine Stelle verschieben, um den Laufeffekt zu
bekommen. Nun ist das Problem wie ich die „display_write“_Variable mit
neuen Werten aus der „display_buffer“ Variablen lade. Die for-Schleife
gibt einmal die „display-write“ Variable aufs Display aus. Die
Verschiebung macht man ja dann immer praktisch mit schnell
aufeinanderfolgenden neuen Bildern. Die while-Schleife ist dafür
gedacht. Aber wie ich die jetzt aufbaue, dazu hab ich noch keine Idee.
Die Frage ist jetzt wie bekomme ich den Schiebeeffekt hin?
Ich hoffe mir kann jemand dabei helfen.
Grüße
Pille
Quelltext:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 | #define ADRESS PORTA
|
4 | #define DATA PORTB
|
5 | #define PSEL 0 //wird künftig auf 2 gelegt
|
6 | #define CTRL PORTC
|
7 | #define WRDP 1 //wird künftig auf 3 gelegt
|
8 | #define COLUMNNUMBER 168 //spaltenanzahl
|
9 |
|
10 | int main()
|
11 | {
|
12 |
|
13 | uint8_t display_buffer[512] = {};
|
14 |
|
15 | uint8_t display_write[COLUMNNUMBER] = {};
|
16 |
|
17 |
|
18 | DDRA = 0xff;
|
19 | DDRB = 0xff;
|
20 | DDRC = 0x03;
|
21 |
|
22 | CTRL |= (1 << WRDP);
|
23 | CTRL &= ~(1 << PSEL);
|
24 |
|
25 |
|
26 |
|
27 | while(1)
|
28 | {
|
29 | for(uint8_t j = 0; j < COLUMNNUMBER; j++) //Schreibt ein komplettes Bild auf das Display
|
30 | {
|
31 | ADRESS = j;
|
32 | DATA = display_write[j];
|
33 |
|
34 | CTRL &= ~(1 << WRDP);
|
35 | _delay_us(5);
|
36 | CTRL |= (1 << WRDP);
|
37 | _delay_us(5);
|
38 |
|
39 | }
|
40 | CTRL ^= (1 << PSEL);
|
41 |
|
42 | }
|
43 | }
|