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

[ATmega16] Wyświetlacz LED, początkujący

BanTir 02 Mar 2011 00:00 1983 6
REKLAMA
  • #1 9223892
    BanTir
    Poziom 15  
    Witam

    Dla większości problem pewnie barszczowy, ale dla mnie ostatnio to bariera nie do przejścia:P

    Z uczelni pozostała mi taka płytka gdzie jest atmega16 czujnik MCP9700 jakieś 4 diody i tym podobne elem. do nauki.

    Przerobiłem oślą łączkę, jest tam opis jak zadziałać z wyświetlaczem LED 7seg.

    Prosty programik licznika do 10(0-9)


    
    do 
    incr eedr
    if eedr=10 then eedr=0
    portb=lookup(eedr, tabela)
    loop 
    end
    
    Tabela:
    Data no i liczby oznaczające porty na które ma iść 1 żeby wyświetlacz pokazał "ludzką" jedynkę i tak dalej


    mój problem polega na tym, że wyświetlacz 7seg który mam podłączony jest podłączony do dwóch portów(PORTA i PORTB)

    napisałem tablicę dla jednego z dwóch segmentów:
    PORTb PORTa
    0 10000110 11000010
    1 00000010 10000000
    2 10000010 01000110
    3 10000010 10000110
    4 00000010 10000100
    5 10000100 10000110
    6 10000100 11000110
    7 00000010 10000010
    8 10000110 11000110
    9 10000110 10000110

    no i jak mam przerobić program by zrobić tablicę dla dwóch bajów?

    (może to napisałem trochę nie spójnie i nie zrozumiale, ale ciężko się przesiąść z ciężarówek na mikrokontrolery:P)
  • REKLAMA
  • REKLAMA
  • #3 9224684
    Freddy
    Poziom 43  
    BanTir napisał:
    ... no i jak mam przerobić program by zrobić tablicę dla dwóch bajów?

    (może to napisałem trochę nie spójnie i nie zrozumiale, ale ciężko się przesiąść z ciężarówek na mikrokontrolery:P)

    Nie działa Ci klawisz "szukaj" ? Było to na forum juz kilkadziesiąt razy.
  • REKLAMA
  • #4 9226259
    BanTir
    Poziom 15  
    schemat:

    [ATmega16] Wyświetlacz LED, początkujący

    wyświetlacz ma wspólną katodę
  • REKLAMA
  • #5 9226482
    Konto nie istnieje
    Konto nie istnieje  
  • #7 9226722
    BanTir
    Poziom 15  
    tak dokładnie LCD_0A to segment A wyświetlacza pierwszego, a LCD_1A no to segment A drugiego wyświetlacza


    wedle podpowiedzi kolegi Marka napisałem coś takiego:
    $regfile = "m16def.dat"                                     'typ procka
    $crystal = 6000000                                          'taktowanie
    
    
    Config Porta = Output                                       'PORTA wyjscie
           Porta = &B00000000                                   'wszędzie stan spoczynkowy-0
    Config Portb = Output                                       'PORTB wyjscia
           Portb = &B0000000                                    'wszędzie stan spoczynkowy-0
    Config Portc = Input                                        'PORTC jako wejscie
             Portc = &B00000000                                 ' wszedzie stan 0
    Config Portd = Output                                       'PORTD wyjscie
          Portd = &B11111111                                    'stan poczatkowy 1
          'aliasy
       S1 Alias Portc.0
       S2 Alias Portc.1
       S3 Alias Portc.6
       S4 Alias Portc.7
       Ledy Alias Portd
                                                                      'petla glowna
    Do
    
       Waitms 150                                               'czekaj 100ms
       Incr Eedr                                                'dodaj do eedr 1
       If Eedr = 10 Then Eedr = 0                               'kiedy eedr ma 10 zmien na 0
       Porta = Lookup(eedr , Tabela1)                           'przyrownaj eedr do tabela 1 i wrzuc do porta
       Portb = Lookup(eedr , Tabela2)                           'analogicznie z gora
       Ledy = Eedr                                              'zaladowac do portd wartosc z eedr
       Ledy = Not Ledy                                          'zanegowac portd
    
    Loop
    End
    
    Tabela1:
    Data &B11000010 , &B10000000 , &B01000110 , &B10000110 , &B10000100 , &B10000110 , &B11000110 , &B10000010 , &B11000110 , &B10000110
    
    Tabela2:
    Data &B10000110 , &B00000010 , &B10000010 , &B10000010 , &B00000110 , &B10000100 , &B10000100 , &B00000010 , &B10000110 , &B10000110


    Bascom nie wyrzucił błędów. LEdy służą Mi tylko, że pokazać czyli licznik działa poprawnie(na 4 diodach pokazuje binarnie liczenie). Dioda migają jak powinny ładnie zlicza do 10, ale niestety na wyświetlaczu nie pokazuje się zupełnie nic:(
REKLAMA