Hallo,
sowas läßt sich ziemlich einfach programmieren, z.B. so:
zuerst ein Array, wo die Zahlen 0-9 gespeichert sind bei mir so:
Dann brauchst Du zwei Variablen, die Deine zwei Zahlen darstellen: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*/ };
Jetzt schmeißt Du einen Timer an und in seinem Overflowinterrupt kommt folgendes rein :Code:volatile uint8_t erste = 1; volatile uint8_t zweite = 2;
So, am PortD kamen bei mir die Anoden, und am PortB die Beiden Kathoden die mit ENABLE1 u. ENABLE2 definiert sind.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; }
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







Zitieren

Lesezeichen