logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[M8][BASCOM] TERMOMETR na 7segm (słabo świeci)

Jarosław J 16 Paź 2010 09:46 1335 4
REKLAMA
  • #1 8625358
    Jarosław J
    Poziom 14  
    Mam takie pytanie teoretyczne.
    Zbudowałem układ na M8 którego zadaniem jest wyświetlanie temperatury w dwóch punktach.
    Jako wyświetlacze zastosowałem dwa zestawy wyświetlaczy siedmiosegmentowych (po cztery wyświetlacze na kanał)

    Od strony minusa elektrody sterowane są bezpośrednio z portu mikrokontrolera, natomiast dodatnie eketrody (wspólne dla 7 segmentów jednego wyświetlacza) steruję cyklicznie tranzystorem BC 557

    Tym samym mam do wysterowania osiem wyświetlaczy LCD
    W programie natomiast steruję pracą wyświetlaczy przy pomocy Timera



    
    Config Timer1 = Timer , Prescale = 256
     On Timer1 Wyswietlacz
     Enable Interrupts
     Enable Timer1
     Enable Timer0
     Load Timer1 , 65
    




    i wywołanie

    Wyswietlacz:
    
    
    Load Timer1 , 60
     Set Portb.2
     Set Portb.3
     Set Portb.4
     Set Portb.5
     Set Portc.0
     Set Portc.1
     Set Portc.2
     Set Portc.3
    
    Select Case Nr_wysw
    
    Case 0:
    Portd = Lookup(cyfra1 , Segmenty )
    Reset Portb.3
    
    Case 1:
    Portd = Lookup(cyfra2 , Segmenty )
    Reset Portb.2
    
    Case 2:
    Portd = Lookup(cyfra3 , Segmenty )
    Reset Portb.4
    If Kr = 1 Then Reset Portd.0                                ' kropka
    
    Case 3:
    Portd = Lookup(cyfra4 , Segmenty )
    Reset Portb.5
    
    Case 4:
    Portd = Lookup(cyfra5 , Segmenty )
    Reset Portc.0
    
    Case 5:
    Portd = Lookup(cyfra6 , Segmenty )
    Reset Portc.1
    
    Case 6:
    Portd = Lookup(cyfra7 , Segmenty )
    Reset Portc.3
    If Kr2 = 1 Then Reset Portd.0                               ' kropka
    
    Case 7:
    Portd = Lookup(cyfra8 , Segmenty )
    Reset Portc.2
    
    End Select
    Return
    
    Segmenty:
    Data &B00010001 , &B10111101 , &B10000011 , &B10001001 , &B00101101,
    Data &B01001001 , &B01000001 , &B00011101 , &B00000001 , &B00001001,
    Data &B11101111 , &B00100101 , &B01010011 , &B11111111 , &B00000101,
    Data &B00110001 , &B11100001 , &B10100001 , &B01100011 , &B01110011,
    Data &B01000011


    Dodatkowo, żeby uniknąć migania wyświetlacza, umieściłem kod odczytu DS18B20 na końcu przemiatania wyświetlaczami (ponieważ wyłączam przerwania na czas odczytu ) i dla tego musiałem dodać trzy (w zależności od szybkości wywołania przerwań cztery i więcej) niewidoczne wyświetlacze, żeby wyłączenie przerwań na czas odczytu nie powodowało zatrzymania a tym samym zmian natężenia świecenia wyświetlaczy użytych w projekcie.

    Wszystko gra i zachowuje się dobrze, tylko że ze wzrostem ilości wyświetlaczy zmniejsza się jasność ich świecenia.

    Próbowałem zmieniać w szerokim zakresie wartość przepełnienia licznika przerwań, przy wartości około 50 taktowanie wewnętrzne 8MHz świecą najjaśniej jednak dalej za ciemno

    czy koledzy mogliby mi podpowiedzieć jaki jest na to sposób, czy na przykład zastosowanie zamiast BC557 - darlingtona BC516 zwiększyłoby jasność wyświetlania?

    Jaka jest granica ilości wyświetlaczy sterowanych przez jeden mikrokontroler w jednym cyklu przemiatania?

    Czy może jest na to jakiś inny sposób ?

    Dla zobrazowania przedstawiam wam płytkę, jako bardziej czytelniejszą niż schemat, który na moje potrzeby bardzo rozkawałkowałem.
  • REKLAMA
  • #2 8625556
    Jaca
    Poziom 31  
    A jakie wartości rezystorów masz w bazach tranzystorów sterujących cyframi i jakie wartości rezystorów masz jako ograniczniki prądu na segment cyfry ?
  • REKLAMA
  • #3 8626764
    Jarosław J
    Poziom 14  
    Tu mam standardowo 200 omów na każdy segment i 4,7k na bazy BC557
  • REKLAMA
  • #4 8626812
    Jaca
    Poziom 31  
    Daj 100 omów na segment i 2.2k na bazy.
  • #5 8627852
    Jarosław J
    Poziom 14  
    Spróbuję tak zrobić, choć nie wiem, czy przy wyświetleniu ósemek nie pójdzie za duży prąd na port którym steruję segmentami. Może jeszcze dziś to zmienię i dam znać Na razie dzięki
REKLAMA