Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[atmega32][c/avrlib][wyświetlacz na uPD7225/LH5008T

01 Feb 2011 00:05 3145 19
  • Level 16  
    Posiadam kilka wyświetlaczy LCD z kontrolerem jak w temacie:

    https://www.elektroda.pl/rtvforum/topic1665398.html#8070064

    [atmega32][c/avrlib][wyświetlacz na uPD7225/LH5008T [atmega32][c/avrlib][wyświetlacz na uPD7225/LH5008T


    na podstawie noty katalogowej i fragmentów kodu z:

    http://ficara.altervista.org/atmel_avr.php

    wydukałem taką małą biblioteczkę do obsługi wyświetlacza 16x7seg. Poniżej kod tej biblioteczki. Problem polega na tym iż nie bardzo potrafię zmusić wyświetlacz do wyświetlania zadanych wartości - przykładowy main() powinien wypełnić pamięć wyświetlacza wartościami od 0 - 16 a wynik - to zupełnie dziwne wręcz losowe wyniki. Może ktoś z forumowiczów miał do czynienia z tym sterownikiem? Bardzo proszę o jakieś wskazówki... Dodam jeszcze, że częstotliwość odświeżania ustawiłem na 156KHz zegar /SCK pracuje z f=17khz przy obecnej funkcji main()


    Code: c
    Log in, to see the code


    i jescze plik nagłówkowy:
    Code: c
    Log in, to see the code


    no i main:
    Code: c
    Log in, to see the code
    [Szkolenie 22.06.2021, g.9.00] Zabezpieczenia Internetu Rzeczy (IoT) programowe i sprzętowe. Zarejestruj się za darmo
  • Level 32  
    Code: c
    Log in, to see the code


    Może musisz troszkę odczekać miedzy kolejnymi rozkazami dla steroenika,
    Albo zrób oddzielnie kazdy rozkaz poprzedzony start i zakonczony stop bo tam masz sprawdzanie zajętości [busy] co powoduje ze nie musisz dawać opóźnień.
  • Level 16  
    próbowałem również tak jak mówisz, jednak efekt jest taki sam. Myślałem, że może sterownik jest uszkodzony jednak podłączałem też inną nową sztukę i efekt ten sam. Oscylogramy transmisji wyglądają normalnie. Sterownik wystawia sygnał /busu itd. Może popełniam jakiś błąd wynikający z słabego zrozumienia datasheet-u
  • Level 32  
    Patrzyłes oscyloskopem czy wychodzą sygnały na segm i com?
    A podpiąłes nóżkę C/D bo chyba ona jak pamietam a nie mam teraz PDF otwartego odpowiada za rozdział pomiędzy danymi a rozkazami.
  • Level 16  
    tak, wychodzą, ładne prostokątne, częstotliwość ok 1,25 Khz. Co do C-/D - podpięte i sterowane programowo podobnie jak /RESET i CL1 zgodnie z notą kat.

    Mam tych wyświetlaczy jak diabeł gwoździ, może ktoś jest zainteresowany uruchomieniem w zamian za kilka sztuk?? :-)
  • Level 16  
    Mam nadzieję, że moderator mi głowy nie urwie za podbijanie wątku ale mam propozycję dla forumowiczów, którzy czują się na siłach pochylić się nad wyświetlaczem uPD7225/LH5008T. Pierwsze 3 osoby, które zechcą pomóc mi w napisaniu procedury obsługi tego wyświetlacza otrzymają ode mnie gratis na testy po 2 szt. tegoż wyświetlacza. Wyświetlacze są nowiutkie, zapakowane w folię. Wyświetlacze wyśle na własny koszt. Pozdrawiam i oczekuję na propozycję :-)
  • Level 32  
    Nie rozumiem chcesz żeby ktoś napisał procedurę do wyswietlacza którego nie ma, a ty mu potem dopiero wyslesz?
    Odwrotnie to można by się zastanowić.
  • Level 16  
    nie no, bez przesady - dostajesz je do devolopki - to chyba oczywiste!
  • Level 32  
    No to mogę spróbować, mysle że nie bedzie problemów.
  • Level 32  
    Po pierwsze trzeba wlutowac opornik ok 100k-200k
    Po drugie wyswietlacz nie jest sterowany statycznie ale multipleks x4
    czyli komenda $0100 00xx $40
    To co udało mi się zrobć to ustawiłem wyświetlacz bez dekodera ($14)
    i aby wyswietlic dowolne znaki w pamieci traktowane są jak bajt po bajcie
    i tak tez zrobiłem transmisje, czyli CS=0 CD=0 16x8 bitow CS=1 CD=1
    i na wyswietlaczu mam co chcę.
  • Level 16  
    a możesz to "wkleić" w kod z początku posta?
  • Level 32  
    Jaki kod?

    Generalnie wyświelacz nic niewarty skoro za 6 zł mozna kupic dwa razy większy i to alfanumeryczny 1x16
  • Level 16  
    Wyobraź sobie, że masz dajmy na to 1k wyświetlaczy... Masz przypadki:
    1. Wyrzucasz wszystkie, płacisz za utylizację i kupujesz nowe...
    2. Implementujesz te co masz

    Pozdrawiam,
  • Level 32  
    Nie wyobrażam sobie zrobienie czegoś na tym wyświetlaczu amjącego ręce i nogi a już kompletnie takiego żeby na tym zarobić, a przecież nie z zamego wyświetlacza się składa urządzenie i pchanie dodatkoweej kasy do czegoś co pogorszy efekt końcowy mija sie z celem. Inaczej mówiąc stosując ten wyświetlacz to trzeba by obniżyc cenę przynajmniej o cene wyświetlacza:-)
    czyli 5 zł a za to ma nowocześniejszy większy i alfanumeryczny a nie numeryczny.
    To sie tyczy hurtowego wykorzystania 1000sztuk , ale oczywiscie dla pojedynczych sztuk prototypowych wyświetlacz jak najbardziej się nadaje.
    Dodatkowo nie ma pewności że to nie jest jakiśo drzut produkcyjny bo faktycznie dziwnie sie zachowuje.
  • Level 24  
    Stosujac komende "WRITE DATA MEMORY" należy określić pozycje na wyświetlaczu poleceniem "LOAD DATA POINTER" (tylko parzyste adresy)
    e0 e2 e4 e6 e8 ea ec ee f0 f2 f4 f6 f8 fa fc fe (czyli od miejsca pierwszego do szesnastego)
    wpisywać poniższe dane (hex) do wyświetlenia , wg. ilustracji.
    zero - db,de
    jeden - da,d0
    dwa - d7,dc
    trzy - df,d8
    cztery - de,d2
    piec - dd,da
    szesc - dd,de
    siedem - db,d0
    osiem - df,de
    dziewiec - df,da
    Czyli po dwa rozkazy "WRITE DATA MEMORY" na każdą cyfre.
    W tym trybie włączenie/wyłączenie dekodera segmentów nie na znaczenia.
    I zobaczysz jego, jednak sensowne działanie.
  • Level 32  
    Przecwiczyłeś to praktycznie?
  • Level 24  
    Skoro go rozpracowałem to dodam i resztę.

    Drugim sposobem wyświetlania cyfr jest przesyłanie ich jako dane do wyswietlacza.
    I znowu, określić pozycje za pomocą komendy "LOAD DATA POINTER" ,adresy - e0 e2 e4 e6 e8 ea ec ee f0 f2 f4 f6 f8 fa fc fe
    Wyłączyć dekoder segmentow (trzeba) i wysyłać, tym razem w jednym rozkaze poniższe dane
    zero - eb
    jeden - 0a
    dwa - c7
    trzy - 8f
    cztery - 2e
    piec - ad
    szesc - ed
    siedem - 0b
    osiem - ef
    dziewiec - af

    Przykład :
    Code: asm
    Log in, to see the code

    Próbowałem także z włączonym dekoderem segmentów, wysyłać te cyfry które chcę wyświetlić, tzn. np. wysyłam 2 żeby wyświetlił 2, ale to się nie udawało, być może mam uszkodzony wyświetlacz, przykładowo nie wyświetla mi poprawnie od adresu e0, e2, e4, - wyświetlacz blaknie, wszystkie cyfry stają się słabo widoczne, dopiero e6 i dalsze pozycje działają prawidłowo, także kolego Pancio, jężeli mógłbyś podarować mi 1 sztukę, to byłbym wdzięczny.
    Mój pochodzi z jakiegoś starego faxu.
  • Level 16  
    Dla potomnych zamieszczam działający kod w C obsługujący lh5008t/uPD7225. Dziękuję wszystkim za pomoc w opracowaniu kodu...

    main.c:
    Code: c
    Log in, to see the code


    main.h:
    Code: c
    Log in, to see the code


    upd7225.c:
    Code: c
    Log in, to see the code


    upd7225.h:
    Code: c
    Log in, to see the code


    program w main powoduje przemiatanie po całym wyświetlaczu kolejnych cyferek od 0 do 9.