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

Jak wyświetlić liczbę 3-cyfrową na 3 wyświetlaczach 7-segmentowych w Bascom+AVR?

acmelabs.pl 20 Kwi 2008 18:05 2273 11
REKLAMA
  • #1 5058071
    acmelabs.pl
    Poziom 11  
    Posty: 20
    Pomógł: 1
    Ocena: 3
    Witam
    Do portu B i 4 pinów portu C mam podłączone kolejno 3 wyświetlacze 7-segmentowe.
    Przy dwóch pierwszych, gdy wysyłam do nich liczbę 2-cyfrowa:
    PINB=Makebcd(56)

    wszystko działa jak powinno, ale jak zrobić wyświetlanie liczby 3 cyfrowej?

    Chodzi mi o to, czy jest jakiś sposób, aby cały port B i 4 piny z portu C połączyć do jednej "magistrali" albo zmiennej i po prostu do nich wysyłać liczbę?



    Pozdrawiam
    Pablo
  • REKLAMA
  • #2 5058176
    korrus666
    Poziom 40  
    Posty: 5219
    Pomógł: 584
    Ocena: 476
    Nie bardzo mogę sobie wyobrazić jak masz te wyświetlacze podłączone. Ja bym zrobił tak że 3 pinami portu C wybierałbym który aktualnie ma się wyświetlacz świecić a 7 pinami z portu B wyświetlał cyfrę na wybranym wyświetlaczu. Tylko trzeba to robić co najmniej kilkadziesiąt razy na sekundę. Ale za każdym razem wyświetlasz tylko jedną cyfrę. Liczbę trzycyfrową dzielisz na setki, dziesiątki i jedności.
  • #3 5058312
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    Nie ma gotowej komendy w Bascomie i zaczynają się schody:)
    Na forum wiele razy był poruszany temat konwersji do BCD. Metody są dwie. Cykliczne odejmowanie, albo dzielenie. Poszukaj dobrze:)
  • #4 5058314
    acmelabs.pl
    Poziom 11  
    Posty: 20
    Pomógł: 1
    Ocena: 3
    Do pinów 0-3 portu B mam podłączony pierwszy wyświetlacz, do 4-7 drugi,a do portu C, pinów 0-3 mam podłączony trzeci.

    Wyświetlacz oczywiście nie jest sterowany bezpośrednio z pinów, tylko za pośrednictwem sterownika 7447 na który muszę wysłać w kodzie BCD liczbę do wyświetlenia.

    Wersja z wyświetlaniem tego sekwencyjnie, zgodnie z tym co podałeś odpada,układ jest już zlutowany w inny sposób.
  • REKLAMA
  • #5 5058423
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    pokaż kod, pokaż swój schemat to coś się pomyśli. Chyba że to pytanie z HydeParku typu zgaduj-zgadula .... a jak też nie to raczej pomoże ci w tym tylko dobra wróżka - przy tak skąpo (to delikatne określenie) opisanym problemie. Dodam tylko, że i w Bascomie i w dowolnym innym języku robi się to prawie tak samo.
  • #6 5058579
    acmelabs.pl
    Poziom 11  
    Posty: 20
    Pomógł: 1
    Ocena: 3
    oto część schematu odpowiedzialna za obsługę wyświetlaczy, zrobiona na szybko...myślę, że tyle wystarczy w zupełności

    a kodu nie ma, bo właśnie zaczynam jego pisanie...

    pozdrawiam
    Pablo
    Załączniki:
    • Jak wyświetlić liczbę 3-cyfrową na 3 wyświetlaczach 7-segmentowych w Bascom+AVR? demojpg.png (21.41 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 5058751
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Połącz linie BCD dekoderów razem i steruj każdym z nich poprzez sygnał BI/RBO. Szczegóły jak zwykle w dokumentacji.
  • Pomocny post
    #8 5058760
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    acmelabs.pl napisał:
    ..a kodu nie ma, bo właśnie zaczynam jego pisanie...

    No to cegiełka ode mnie :P
    
    Dim Liczba As Byte
    Dim Sdj As Byte
    
    Config Portb = &HFF
    Config Portc = &H0F
    
    
    
    Liczba = 234
    
    '...
       Sdj = Liczba Mod 100
       Portb = Makebcd(sdj) 
       Sdj = Liczba / 100
       Portc = Portc And &HF0
       Portc = Portc Or Sdj
    '...
    
    

    Zakładam , że na DIS3 wyświetlane będą setki ;)

    Piotrek
  • REKLAMA
  • #9 5059506
    acmelabs.pl
    Poziom 11  
    Posty: 20
    Pomógł: 1
    Ocena: 3
    Zumek, o to chodziło!

    Tak na marginesie, czy w tym przypadku jest możliwość wykorzystania pozostałych pinów portu C jako wejść a nie wyjść?
  • #10 5059512
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    acmelabs.pl napisał:
    Zumek, o to chodziło!

    Tak na marginesie, czy w tym przypadku jest możliwość wykorzystania pozostałych pinów portu C jako wejść a nie wyjść?


    Nie znam Bascoma, ale kolega Zumek chyba właśnie to zrobił:)
    Config Portc = &H0F
  • #11 5059585
    acmelabs.pl
    Poziom 11  
    Posty: 20
    Pomógł: 1
    Ocena: 3
    don diego napisał:
    Nie znam Bascoma, ale kolega Zumek chyba właśnie to zrobił:)
    Config Portc = &H0F


    mam rozumieć, że przez ustawienie zer na danych pinach robię z nich wejście, a jedynek - wyjście?

    myślę, że tak nie jest, ale mogę się mylić, niech ktoś mnie poprawi...
  • #12 5059628
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    Jako, że nie mogę zasnąć postanowiłem specjalnie dla Ciebie (a raczej za Ciebie) nauczyć się Bascoma :D Drugi link z google dla zapytania "config port bascom" i jest odpowiedź:) A nawet dobry kurs dla początkujących.
    Cytat z tego kursu:
    Cytat:
    Instrukcja CONFIG ustawia cały port lub wybraną końcówkę portu w tryb pracy wejścia lub wyjścia. Inaczej mówiąc ustawia odpowiednio rejestr kierunku czyli DDRx.

    LINK

    Niestety źle to świadczy o Twoim podejściu do tematu programowania:)
    Po pierwsze: nie czytasz dokumentacji mikrokontrolera!
    Po drugie: nie czytasz dokumentacji kompilatora!
    Po trzecie: nie używasz wyszukiwarki na elektrodzie, ani google!
    Pozdrawiam
    Adam

Podsumowanie tematu

✨ Dyskusja dotyczy wyświetlania liczby trzycyfrowej na trzech wyświetlaczach 7-segmentowych sterowanych za pomocą mikrokontrolera AVR i Bascom. Wyświetlacze są podłączone do portu B (piny 0-7) i portu C (piny 0-3), a sygnały BCD są przesyłane do dekoderów 7447. Problem polega na tym, jak efektywnie wysłać trzycyfrową liczbę do tych wyświetlaczy, biorąc pod uwagę, że porty są podzielone na różne segmenty i nie można ich traktować jako jednej wspólnej magistrali. Proponowane rozwiązania obejmują rozdzielenie liczby na setki, dziesiątki i jedności, a następnie przesyłanie odpowiednich wartości BCD do poszczególnych wyświetlaczy. Sugerowano łączenie linii BCD dekoderów i sterowanie wyświetlaczami przez sygnały BI/RBO. Przykładowy kod w Bascom pokazuje, jak za pomocą operacji modulo i dzielenia wyodrębnić poszczególne cyfry i przypisać je do portów, z wykorzystaniem funkcji Makebcd. Poruszono także kwestie konfiguracji portów w Bascom, gdzie ustawienie bitów portu decyduje o kierunku (wejście/wyjście). Wskazano na konieczność czytania dokumentacji mikrokontrolera i kompilatora oraz korzystania z dostępnych zasobów edukacyjnych.
Wygenerowane przez model językowy.
REKLAMA