Witam wszystkich użytkowników. Od pewnego czasu śledzę tematy dotyczące mikrokontrolerów, ponieważ postanowiłem zacząć naukę ich obsługi. Na początek przerobiłem sobie kilka „zadan” z diodkami i przyciskami. Teraz zająłem sie wyswietlaczem led 7 segmentowym. Czytalem o multi pleksacji i mam nadzieje ze dobrze to zrozumialem (jesli nie prosze o wskazowki). Po udanym wyświetlaniu liczyby na 2 wyswietlaczach. -Postanowilem zrobic program ktory po nacisnieciu jednego switcha zmienia cyferke na jednym z wyswietlaczy, nacisniecie drugiego switcha zmienia literke na drugim wyswietlaczu.
Oto kod:
I teraz moj problem mysle ze to moze byc zwiazane z drganiami stykow lub zlym czasem ?. Po przycisniecu przycisku cyferka na danym wyswietlaczu zmienia sie niestety przeskakuje o kilka cyf . Przyjąlem ze to przez drgania stykow jednka nie dam rady uzyc tej metody : sprawdz odzcekaj sprawdz, poniewaz zwiekszy mi sie czas miedzy wyswietlaniem na danym segmencie. Bardzo prosze o nakierowanie mnie do rozwiazania tego problemu bo niestety nie moge sobie z nim poradzic sam.
Oto kod:
#include<avr/io.h>
#define F_CPU 16000000UL
#include<util/delay.h>
int main(void){
DDRB=0xff; //port B jako wyjscie
DDRC=0xff; //port c jako wysjcie
DDRA=0x00; //port A jako wejscie
int i=0,j=0;
unsigned char LED[10] = {0b11000000,0b11111001,0b10100100,0b10110000,
0b10011001,0b10010010,0b10000010,0b11111000,0b10000000,0b10011000 };
PORTC=0b11111100;
PORTB=LED[0]; //wyswietlenie dwóch zer i odczekanie 500 ms
_delay_ms(500);
for(;;){
PORTC= 0b11111110;
PORTB=LED[j];
_delay_ms(4);
PORTC=0b11111101; // rozumiana przezemnie multipleksacja (tu wyswietla liczby z
PORTB=LED[i]; //tabeli zalezne od zmiennych i ,j
_delay_ms(4);
if(bit_is_clear(PINA,PD0)){
i++;}
if(bit_is_clear(PINA,PD1)){ //sprawdza czy ktorys przycisk jest wcisniety jesli tak
j++;} //zwieksza zmienna i lub j o 1
if(i==10){
i=0;} //jesli i lub j =10 zaczyna liczyc od nowa
if(j==10){
j=0;}
}
}
I teraz moj problem mysle ze to moze byc zwiazane z drganiami stykow lub zlym czasem ?. Po przycisniecu przycisku cyferka na danym wyswietlaczu zmienia sie niestety przeskakuje o kilka cyf . Przyjąlem ze to przez drgania stykow jednka nie dam rady uzyc tej metody : sprawdz odzcekaj sprawdz, poniewaz zwiekszy mi sie czas miedzy wyswietlaniem na danym segmencie. Bardzo prosze o nakierowanie mnie do rozwiazania tego problemu bo niestety nie moge sobie z nim poradzic sam.