wymyśliłem sobie, że jak wartość wyświetlana spada poniżej 100, to ma nie być wyświetlana pierwsza zero (zamiast 099 ma być 99)
jeśli wartość spadnie poniżej 10 mają nie być wyświetlane 2 pierwsze pozycje wyświetlacza (zamiast 009 ma być 9)
Niby proste. Wystarczy na tą pozycje wpisać 10 i cyfra się wygasi.
Kod jest taki:
A jednak problem... Pierwsza cyfra setek wygasza się po przejściu poniżej 100, ale cyfra dziesiątek nie zawsze chce się wyłączyć po przejściu poniżej 10. Nie chce, to znaczy, że raz się wyłączy i na wyświetlaczu raz będzie 4 a raz 04.
Zauważyłem też, że wygaszona cyfra setek, leciutko pokazuje ostatnia cyfre jedności, może to sprawa wyświetlacza, a może jakiegoś błędu w multipleksowaniu?
Wyświetlacz to zielone 3 cyfry w jednej obudowie, 12 wyprowadzeń.
Dodano po 27 [minuty]:
normalnie problem jak z elektroniki analogowej, raz jest raz nie.
jeśli wartość spadnie poniżej 10 mają nie być wyświetlane 2 pierwsze pozycje wyświetlacza (zamiast 009 ma być 9)
Niby proste. Wystarczy na tą pozycje wpisać 10 i cyfra się wygasi.
Kod jest taki:
ISR(TIMER1_COMPA_vect)
{
switch (aktywna_cyfra)
{
case 0:
PORTB |= (1 << 0); //ustawia bit 0 portu B - włącza wyświetlacz nr 0
PORTB &= ~(1 << 1); //zeruje bit 1 portu B - wyłącza wyświetlacz nr 1
PORTB &= ~(1 << 2); //zeruje bit 2 portu B - wyłącza wyświetlacz nr 2
if (setki==0) setki=10;
PORTD = cyfra(setki);
aktywna_cyfra++;
break;
case 1:
PORTB &= ~(1 << 0); //zeruje bit 0 portu B - wyłącza wyświetlacz nr 0
PORTB |= (1 << 1); //ustawia bit 1 portu B - włącza wyświetlacz nr 1
PORTB &= ~(1 << 2); //zeruje bit 2 portu B - wyłącza wyświetlacz nr 2
if ((setki==0) & (dziesiatki==0)) dziesiatki=10;
PORTD = cyfra(dziesiatki);
aktywna_cyfra++;
break;
case 2:
PORTB &= ~(1 << 0); //zeruje bit 0 portu B - wyłącza wyświetlacz nr 0
PORTB &= ~(1 << 1); //zeruje bit 1 portu B - wyłącza wyświetlacz nr 1
PORTB |= (1 << 2); //ustawia bit 2 portu B - włącza wyświetlacz nr 2
PORTD = cyfra(jednosci);
aktywna_cyfra=0;
break;
}
}A jednak problem... Pierwsza cyfra setek wygasza się po przejściu poniżej 100, ale cyfra dziesiątek nie zawsze chce się wyłączyć po przejściu poniżej 10. Nie chce, to znaczy, że raz się wyłączy i na wyświetlaczu raz będzie 4 a raz 04.
Zauważyłem też, że wygaszona cyfra setek, leciutko pokazuje ostatnia cyfre jedności, może to sprawa wyświetlacza, a może jakiegoś błędu w multipleksowaniu?
Wyświetlacz to zielone 3 cyfry w jednej obudowie, 12 wyprowadzeń.
Dodano po 27 [minuty]:
normalnie problem jak z elektroniki analogowej, raz jest raz nie.