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

[AT89C4051] [ASM] - wyświetlacz częstotliwości LCD

elktron26 15 Lut 2014 23:45 3021 2
REKLAMA
  • #1 13307410
    elktron26
    Poziom 2  
    Witam wszystkich forumowiczow zainteresowanych programowaniem w assemblerze!

    Bede bardzo wdzieczny z pomoc w dokonczeniu programu do mikrokontrolera AT89C4051. Mikrokontroler ten jest podlaczony do zegara na pinie P3.5 i ma za zadanie wyswietlac czestotliwosc generowana przez zegar na wyswietlaczu LCD.

    Program mam juz napisany jednak nie dziala tak do konca jak powinien, problem polega na tym ze wyswietlacz wyswietla tylko czestotliwosci od 1 do 9 Hz i nie wiem co mam zrobic w jaki sposob go zmodyfikowac zeby wyswitlal wieksze czestotliwosci. Bardzo prosze o pomoc !!

    Ponizej zamieszczam program i schemat ukladu.

    [AT89C4051] [ASM] - wyświetlacz częstotliwości LCD

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod umieszczamy w odp. tagach SYNTAX. Poprawiłem [WojtasJD]
  • REKLAMA
  • Pomocny post
    #2 13313892
    PDT
    Poziom 24  
    Witam,

    Schemat układu jest niekompletny, brakuje kwarcu taktującego. Z programu wywnioskowałem, że jest to Xtal 12MHz.

    Długość trwania procedury obsługi przerwania od Timer0 wraz z preambułą nie musi być dokładnie równa 10 cyklom maszynowym (#3CBA). To wniesie pewien błąd pomiarowy odmierzania czasu, przeciętnie około 10 mikrosekund.

    I na koniec sprawa najistotniejsza, po pomiarze w N2,N1,N0 mamy ilość zliczonych impulsów z T1 w postaci 24 bitowej liczby. Przed wyświetleniem niezbędna jest jej konwersja z postaci binarnej na dziesiętną. I tego właśnie brakuje w programie. Sugerowałbym metodę kompensacyjną, w ten sposób unikniemy dzielenia liczb wielobajtowych.

    Pzdr

    PS Nad resztą kodu też trzeba trochę popracować. Na przykład:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Co miałoby być w komórce E6 (230)? I dlaczego 'delay' nalicza od '0' do '0'?
  • #3 13319302
    elktron26
    Poziom 2  
    Witam! Dzieki za zainteresowanie!

    Zgadzam sie ze schemat jest nie kompletny, troche to zignorowalem koncentrujac sie glownie na programie. Wynika to z tego ze symulator ktorego uzywam nie korzysta z zewnetrzego kwarcu i jezeli jest on umiejszczony na schemacie sluzy tylko do demonstracji i potwierdzam musial to by byc XTAL 12MHz.

    A co do N2,N1,N0 znalazlel juz rozwiazanie jednak wynik jest wyswietlany w kodzie hexadecymalnym czyli nie mam wyjscia musze opracowac metode przeksztalcenia na system 10. Ponizej zamieszczam uaktualniana czesc programu:

    disp_num:
    mov DPTR,#look_up_table
    mov temp,A
    anl A,#0F0H
    swap A
    movc A,@A+DPTR
    acall lcd_data

    mov A,temp
    anl A,#0FH
    movc A,@A+DPTR
    acall lcd_data
    ret

    oczywiscie musialem dodac do tabeli reszte znakow hex.

    Tak na marginesie uklad ten jest tylko testowy i ma posluzyc do wyswietlania predkosci obrotowej silnika DC czyli jeszcze przede mna przeksztalcenie czestotliwosci na predkosc obrotowa silnika.

    W delayu postanowilem na razie zlikwidowac :DJNZ delay,delayms co znacznie przyspieszylo predkosc wyswietlenia (sprawe ta zostawiam narazie na pozniej do przemyslenia).

    Pozdrawiam
REKLAMA