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

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

pancio 01 Lut 2011 00:05 3361 19
REKLAMA
  • #1 9085468
    pancio
    Poziom 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()


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i jescze plik nagłówkowy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    no i main:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9085685
    asembler
    Poziom 32  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    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ń.
  • #3 9089570
    pancio
    Poziom 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
  • REKLAMA
  • #4 9089594
    asembler
    Poziom 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.
  • #5 9089629
    pancio
    Poziom 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?? :-)
  • #6 9160791
    pancio
    Poziom 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ę :-)
  • #7 9161036
    asembler
    Poziom 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ć.
  • REKLAMA
  • #8 9161105
    pancio
    Poziom 16  
    nie no, bez przesady - dostajesz je do devolopki - to chyba oczywiste!
  • #9 9162006
    asembler
    Poziom 32  
    No to mogę spróbować, mysle że nie bedzie problemów.
  • #10 9162192
    tadzik85
    Poziom 38  
    Tez mogę spróbować
  • #11 9243265
    asembler
    Poziom 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ę.
  • #12 9244252
    pancio
    Poziom 16  
    a możesz to "wkleić" w kod z początku posta?
  • #13 9245095
    asembler
    Poziom 32  
    Jaki kod?

    Generalnie wyświelacz nic niewarty skoro za 6 zł mozna kupic dwa razy większy i to alfanumeryczny 1x16
  • #14 9245450
    pancio
    Poziom 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,
  • REKLAMA
  • #15 9245532
    asembler
    Poziom 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.
  • #16 9276038
    adamwesola
    Poziom 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.
  • #17 9276087
    asembler
    Poziom 32  
    Przecwiczyłeś to praktycznie?
  • #19 9279862
    adamwesola
    Poziom 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 :
    Kod: text
    Zaloguj się, aby zobaczyć kod

    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.
  • #20 9433510
    pancio
    Poziom 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:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    main.h:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    upd7225.c:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    upd7225.h:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


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