Hallo,
sowas läßt sich ziemlich einfach programmieren, z.B. so:
zuerst ein Array, wo die Zahlen 0-9 gespeichert sind bei mir so:
Code:
const uint8_t zeichen[] ={
0x3F, /*0*/
0x18, /*1*/
0x6D, /*2*/
0x7C, /*3*/
0x5A, /*4*/
0x76, /*5*/
0x77, /*6*/
0x1C, /*7*/
0x7F, /*8*/
0x7E /*9*/
};
Dann brauchst Du zwei Variablen, die Deine zwei Zahlen darstellen:
Code:
volatile uint8_t erste = 1;
volatile uint8_t zweite = 2;
Jetzt schmeißt Du einen Timer an und in seinem Overflowinterrupt kommt folgendes rein :
Code:
static uint8_t zahl = 0;/*Spechert Welche Zahl dran ist*/
if (zahl){
PORTB &=~(1<<ENABLE2);
PORTB |=(1<<ENABLE1);
PORTD = ~(zeichen[erste]);
zahl=0;
} else {
PORTB &=~(1<<ENABLE1);
PORTB |=(1<<ENABLE2);
PORTD = ~(zeichen[zweite]);
zahl=1;
}
So, am PortD kamen bei mir die Anoden, und am PortB die Beiden Kathoden die mit ENABLE1 u. ENABLE2 definiert sind.
Du brauchst auch kein Timer von 1 MHz, ich glaube ich habe irgendwas um 200 Hz oder so, muß mal probieren, was nicht mehr flackert.
Ich hoffe, ich konnte Dir damit etwas helfen.
Gruß Sebastian
Lesezeichen