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

T6963C na ATmega128: Przesunięcia i śmieci przy FS podłączonym do +5V

august_a 23 Cze 2006 15:31 4995 17
REKLAMA
  • #1 2756651
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    Witam,
    Mam pewien problem z obsługą wyświetlacza LCD http://www.artronic.pl/o_produkcie.php?id=602?
    Generalnie uruchomiłem wyświetlacz na ATmega128.
    Program napisany w CodeVisionAVR.
    Problem polega na tym, że jeśli nogę FS(font select) wyśwetlacza podepnę do masy jest wszystko ok, natomiast gdy chcę podłączyć do +5V (tak ma być docelowo - mała czcionka) to na wyświetlaczu mi się wszystko przesówa i na dole wyświetlacza pojawiają się jakieś śmieci.

    W czym może być problem.
    Załączniki:
    • T6963C LCD Controller.rar (42.18 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2757381
    soft.sc
    Poziom 17  
    Posty: 142
    Pomógł: 15
    Ocena: 4
    Być może problem tkwi w ustawieniach ekranu tekstowego dokonywanego podczas inicjacji wyświetlacza, a konkretnie w dostosowaniu ilości kolumn (0x41). Jednak to tylko luźne skojarzenie bo osobiście nie próbowałem pracować na tak "skupionej" czcionce.
    pozdrawiam.
  • #3 2757597
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    Wlasnie może i masz racje, ale różne moje próby nic nie dają.
    Zmieniałem już kilka razy i nic się nie zmienia, cały czas jest tak samo albo i gorzej.
    Pzdr.

    P.S
    Jeśli ma ktoś gotowy i dobrze działający przykład to chętnie do niego zerknę.

    Dodano po 1 [godziny] 49 [minuty]:

    Z problemem wielkości czcionki już sobie poradziłem, natomiast mam kolejny problem:
    do wyświetlenia tekstu na lcd używam komendy
    lcd_print(0, 1,"Jakis tekst");   

    problem powstaje jeśli chcę wyświetlić jakąś zmienną, ponieważ gdy wpiszę
     lcd_print(0, 1, J);   
    J to zmienna to kompilator wyrzuca mi błędy.
    W czym może być problem.
  • #4 2758406
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    august_a napisał:
    ...Z problemem wielkości czcionki już sobie poradziłem, natomiast mam kolejny problem:
    do wyświetlenia tekstu na lcd używam komendy
    lcd_print(0, 1,"Jakis tekst");   

    problem powstaje jeśli chcę wyświetlić jakąś zmienną, ponieważ gdy wpiszę
     lcd_print(0, 1, J);   
    J to zmienna to kompilator wyrzuca mi błędy.
    W czym może być problem.

    Ja bym nie nazwał tego problemem , tylko bardziej dosadnie :|
    Wystarczyło zajrzeć do "t6963c.h" i zobaczyć że:
    
    void lcd_print(int x,int y,flash char *string)
    

    Nie wiem jakiego typu jest Twoje "J",ale jeśli jest w RAM-ie , to użyj właściwej funkcji i po kłopocie

    Piotrek
  • #6 2759306
    vipermat
    Poziom 14  
    Posty: 139
    Pomógł: 3
    Ocena: 4
    Niezłym koleś jesteś. Gratuluje. Mimo nie znajomości C potrafisz obsłurzyć LCD :)

    A więc z tego co kolega u góry przytoczył wynika iz J musi być wskażnikiem (nie zabardzo wiem co oznacza pojęcie: "flash" jeśli chodzi o zmienną).
    Tak więc musisz zadeklarować zmienną wskażnikową i potem wpisać do niej zawartość J. Wydaje mi sie że do tego może bć dobra funkcja z rodziny sprint.

    Pozdrawiam
  • REKLAMA
  • #7 2759430
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    august_a napisał:
    Zmienną J deklaruje w następujący sposób:
    unsigned char J;

    Widzę , że pomyliłeś C z Bascomem :D
    Bascom automatycznie konwertuje sobie typy danych(przez co jest pamięciożerny) , a w C musi zrobić to programista , czyli Ty.
    Wiesz , że J to zmienna umiejscowiona w pamięci RAM(data) , więc z funkcji lcd_print(0, 1,"Jakis tekst"); nie możesz korzystać.Mało tego , zmienna J jest typu char , a funkcja "wyświetlająca" oczekuje adresu(wskaźnika) do zmiennej tablicowej typu string i jeszcze na dokładkę , J musisz skonwertować do postaci ciągu ASCII , reprezentującego zmienną J.
    Np. gdy J=0x33 , to do funkcji musisz wysłać wskaźnik na 3 kolejne komórki w RAM-ie , gdzie po konwersji J znajdą się takie dane 0x35,0x31,0x00 ("51\0").Tyle teori :D Jak to osiągnąć - pokombinuj najpierw sam , a dopiero jak nie dasz rady , pytaj.Będziesz "potrzebował": itoa(),char bufor[4],lcd_print_ram(0, 1,bufor);

    Piotrek
  • REKLAMA
  • #8 2759501
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    C sie dopiero uczę.
    Pytanie jeszcze mam jedno: jakiej literatury najlepiej użyć do nauki C dla AVRów?
    Pzdr
  • Pomocny post
    #9 2759555
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    august_a napisał:
    C sie dopiero uczę.

    Ja też :D
    august_a napisał:

    Pytanie jeszcze mam jedno: jakiej literatury najlepiej użyć do nauki C dla AVRów?
    Pzdr

    Hmmmm... trudne pytanie.Język programowania jest tylko narzędziem , więc jeśli znasz się na "robocie" , to instrukcja obsługi(Help) dla tego narzędzia wystarczy.Najlepszą metodą nauki , to własne eksperymenty i podglądanie innych(tfuj) :D

    Piotrek
  • #10 2759693
    august_a
    Poziom 21  
    Posty: 572
    Pomógł: 32
    Ocena: 4
    Dziękuje Zumek już działa.
    Przyznaje rację, że najlepszą metodą nauki , to własne eksperymenty, ale warto też pytać osób które wiedzą więcej...
    Pozdrawiam
  • REKLAMA
  • #11 3883646
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Przyłączę sie do tematu, żeby nie zakładać nowego.

    Mam wyświetlacz DMF5005NY na T6963C z 3 sterownikami kolumn i 1 wierszy (240x64pix). Ma on podświetlenie LED. Podpiąłem do niego 5V ale bardzo się grzeje, muszę zastosować jakiś potencjometr i ograniczyć napięcie do 4.1V (wg dokumentacji). Jaki potencjometr do tego wybrać? Tzn taki gdzieś ok 100ohm, ale bardziej chodzi mi o moc. Wg mnie moc powinna być powyżej 0.5W, ale coś ciężko takie potencjometry dostać.
    Mam te pytanko co do napięcia wstecznego podanego w dokumentacji = 8V. Poco jest ono podawane?

    T6963C na ATmega128: Przesunięcia i śmieci przy FS podłączonym do +5V
  • #12 3885950
    WaldekPrzybyłek
    Poziom 15  
    Posty: 103
    Pomógł: 10
    Ocena: 4
    Zastosuj szeregowo w zasilaniu zwykłą diodę prostowniczą(lub dwie) , np. 1N4007 .Spadek napięcia na przewodzącej diodzie to ok. 0.65V, więc powinno zadziałać.
  • #13 3895598
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Witam.
    Piszę bibliotekę dla T9693C. Mam pytanie. Przeprowadziłem już reset wyświetlacza, wpisałem adresy poleceniami 0x42, 0x43, 0x40, 0x41. Do tego polecenia 0xA7 (wysokość kursora) 0x21 (ustawienie kursora) i 0x9C (kursor widoczny, migający).

    Czy po przeprowadzeniu inicjalizacji kursor powinien się już pojawić, czy trzeba coś jeszcze wpisać do RAMu (np. zapalenie jakiegoś piksela)? Pytam bo jak na razie na ekranie niema nic i nie wiem czy to wina błędu w programie.
  • #14 3904144
    H3nry
    Poziom 32  
    Posty: 1714
    Pomógł: 165
    Ocena: 289
    Myrek1 napisał:

    Mam te pytanko co do napięcia wstecznego podanego w dokumentacji = 8V. Poco jest ono podawane?

    To regulacja kontrastu , na podobnym wyświetlaczu mam -7.46V. uzyskane z dodatkowej przetwornicy .
  • #15 3906982
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    H3nry napisał:
    Myrek1 napisał:

    Mam te pytanko co do napięcia wstecznego podanego w dokumentacji = 8V. Poco jest ono podawane?

    To regulacja kontrastu , na podobnym wyświetlaczu mam -7.46V. uzyskane z dodatkowej przetwornicy .


    Witam.
    To nie to. Ta strona dotyczy podświetlenia LED (osobne 2 piny). Za kontrast odpowiedzialne jest inny styk na 20 pinowym złączu. Jest też osobno opisany razem z Vcc.
  • #16 6541746
    montana1985
    Poziom 10  
    Posty: 8
    Ocena: 1
    Ja mam inny problem... Podlaczam wyswietlacz 240x128 (artronic.pl) na t6963c pod Atmege128. O ile C w miare znam, o tyle programowanie AVR jest na poziomie beginner, zawsze zanim cos napisze sam, testuje polaczenia wysylajac jakiegos gotowca. Bazuje na sterowniku "Radzia". Kontrast mam dobrze podlaczony. Tuz po wlaczeniu zasilania, zapalaja sie wszystkie piksele na aktywnej czesci wyswietlacza (tak ma byc ? ). Analizujac listing, najpierw nastepuje reset, to sie wykonuje, faktycznie, piksele na chwile gasną, pozostawiajac jedna pozioma linię, po czym znow wszystkie pixele sie zapalają, a zgodnie z listingiem powinno nastepowac wygaszanie. Rece opadają. Moze to byc kwestia Fuse Bitów ? Atmega jest nowa i nie grzebana kompletnie jesli chodzi o ustawienia. Moze kwestia kwarcu ? Rzucilem sie na gleboka wode, ale chocby sie walilo, palilo musze zrobic ten projekt (vis maior).
  • #17 6547357
    Myrek1
    Poziom 23  
    Posty: 875
    Pomógł: 17
    Ocena: 53
    Te czarne punkty to kontrast, zmniejsz go trochę na potencjometrze.

    Aby wyeliminować błąd podłączenia, ściągnij sobie BASCOM-AVR i skompiluj taki kod:

    $crystal = 8000000
    $regfile = "m128def.dat"
    Config Graphlcd = 240 * 64 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
    Dim A As Byte
    Cls
    Cursor Blink
    Wait 1
    Locate 1 , 1 : Lcd "cos tam"
    Locate 3 , 1 : Lcd "1234567890"
    Wait 1
    For A=1 To 238
       Pset A, 31, 255
    Next A
    End


    Ustaw tylko dobre linie na początku oraz kwarc. Jeśli LCD zadziała to znaczy, że masz coś nie tak w programie.
  • #18 6685985
    Armin
    Poziom 12  
    Posty: 90
    Pomógł: 1
    Ocena: 2
    Witam
    ja kupiłem taki wyświetlacz
    http://www.artronic.pl/o_produkcie.php?id=559?
    i do tego atmega8 i bascom

    problem polega na tym że
    podświetlenie wyświetlacza słabo świeci
    (w porównaniu z LCD 2x16)pomimo
    podaniu napięcia 5V tak jak w nocie

    i drugi problem z kontrasem
    nie idzie go ustawić
    albo ciemne tło
    albo słaby tekst
    połączyłem VEE przez potencjometr 10k z V0
    i taki efekt

    pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemów z wyświetlaczem LCD opartym na sterowniku T6963C podłączonym do mikrokontrolera ATmega128, programowanym w CodeVisionAVR. Główny problem to przesunięcia obrazu i pojawianie się zakłóceń ("śmieci") na wyświetlaczu po podłączeniu pinu FS (font select) do +5V, podczas gdy podłączenie do masy działa poprawnie. Sugerowano, że problem może wynikać z nieprawidłowej inicjalizacji parametrów wyświetlacza, zwłaszcza ustawienia liczby kolumn (0x41). Wątpliwości pojawiły się także przy wyświetlaniu zmiennych znakowych – funkcja lcd_print oczekuje wskaźnika do łańcucha znaków w pamięci flash, a nie pojedynczej zmiennej typu unsigned char w RAM. Zalecano konwersję zmiennych na ciągi znaków ASCII za pomocą funkcji itoa() i użycie odpowiedniej funkcji lcd_print_ram. Poruszono też kwestie nauki języka C dla AVR oraz przykładowe problemy z kontrastem i podświetleniem w wyświetlaczach T6963C, w tym regulację napięcia podświetlenia i kontrastu, stosowanie potencjometrów i diod prostowniczych do ograniczenia napięcia. Wspomniano o innych modelach wyświetlaczy, takich jak DMF5005NY (240x64 pix) i 240x128 z Artronic, oraz o problemach z inicjalizacją i ustawieniami fuse bitów mikrokontrolera. Podkreślono znaczenie eksperymentów i testowania gotowych przykładów w nauce i rozwiązywaniu problemów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA