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

LCD od S65 sterowany przez ATmega16.

pmichniewski 28 Sty 2006 15:11 168668 366
REKLAMA
  • #331 10202014
    snnaap
    Poziom 25  
    Posty: 677
    Pomógł: 83
    Ocena: 10
    Wielkościowo jest podobny do tego z s65, tak jak kolega wspomniał rozdzielczość jest większa. Dodatkowo opisana komunikacja równoległa jakoś mnie nie przekonuj, ale chyba można je również sterować szeregowo?!
    Pozdrawiam
  • REKLAMA
  • #332 10202083
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #333 10202115
    snnaap
    Poziom 25  
    Posty: 677
    Pomógł: 83
    Ocena: 10
    Rozumiem o co Ci chodzi, faktem jest że przy takiej rozdzielczości ciężko byłoby przy szeregowym interfejsie zmieniać zawartość całego wyświetlacza w rozsądnym czasie.

    Zależy kto do czego używa takiego wyświetlacza. Jeżeli chcesz zapełniać jego całość danymi to wiadomo że interface równoległy jest tu zbawienny.
    Ja natomiast zazwyczaj nie zmieniam dużej powierzchni wyświetlacza naraz dlatego kieruje się bardziej oszczędnością wyprowadzeń jakie muszę zużyć na jego podłączenie.
  • #334 10206345
    J_Bravo
    Poziom 28  
    Posty: 1373
    Pomógł: 36
    Ocena: 161
    Pozostaje ci wyświetlacz z S65 albo z nokii 6610. Oba mają interface szeregowy i oba są dobrze opisana na elektrodzie.
  • #335 10450844
    kred
    Poziom 20  
    Posty: 269
    Pomógł: 30
    Ocena: 18
    Witam,

    Bawię się teraz wyświetlaczem z LS020 podłączonym do STM32F103 i taka uwaga dla potomnych którzy mają problem z prawidłowym odpaleniem: w moim egzemplarzu przy zmianie RS z COMMAND na DATA trzeba też przepinać linię CS. Bez tego sterownik nie chciał wyegzekwować przesłanej komendy.
    Na początku zakładałem że komendy i dane da się wysłać za jednym zamachem mając CS w stanie niskim, ale niestety nie da rady.
  • REKLAMA
  • #336 10454890
    J_Bravo
    Poziom 28  
    Posty: 1373
    Pomógł: 36
    Ocena: 161
    Dane
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Komenda
    Kod: text
    Zaloguj się, aby zobaczyć kod


    i wszystko hula.
  • #337 10865985
    sweter_007
    Poziom 14  
    Posty: 139
    Pomógł: 3
    Ocena: 15
    Przesiadłem się na mikrokontroler atmega32u4 i mam problem z prawidłowym ustawieniem podświetlenia (generacja PWM), cewka 1mH.
    Przy ustawieniu:
    DDRB|=(1 << PB7);
    TCCR0A = (1<<WGM01) | (1<<WGM00) | (1<<COM0A1);
    TCCR0B = (1<<CS00);
    OCR0A = 120;

    działa jednak podświetlenie miga, i przy tym ustawieniu nie wiadomo dlaczego jak zmieniam wartość rejestru OCR0A zmienia się(jasność) podświetlenia a jednak TOP = 0xFF

    a powinno być tak ale nie chce działać:
    DDRB|=(1 << PB7);
    TCCR0A = (1<<WGM01) | (1<<WGM00) | (1<<COM0A1);
    TCCR0B = (1<<CS02) | (1<<WGM02);
    OCR0A = 120;

    czyli :
    - Clear OC0A on Compare Match, set OC0A at TOP
    - Fast PWM, TOP = OCR0A
    - clock = clk/256 (From prescaler)

    EDIT:
    eh. problem ma związek z bootloaderem. Zaprogramowany układ odłączony i podłączony do prądu działa. Zresetowany również. Przy programowaniu flipem, jak kliknę "start application" oraz zaznaczony jest reset, program najprawdopodobniej wpada w jakąś pętle(co chwile reset), jak odznaczony jest reset wszystko działa:
    Jednak działa to pierwsze ustawienie, druga konfiguracja PWM bez efektu.. dlaczego?
  • #339 10963301
    Konto nie istnieje
    Poziom 1  
  • #340 10963325
    snnaap
    Poziom 25  
    Posty: 677
    Pomógł: 83
    Ocena: 10
    atom1477 napisał:
    To chyba ślepy jesteś. Ja wszystko widzę.



    HEHEH

    Nie o to chodzi.
    Chodzi o to że nie mogę odczytać jaki kolor ma dany piksel. Brakuje funkcji odczytu poszczególnych pikseli tak jak masz funkcję odczytu z w hd7.. jaki znak znajduje się na danym polu za pomocą odpowiedniej komendy i piny R/W.
    Łapiesz?

    Problem polega na tym że jak coś przykryje kursorem to muszę wiedzieć co pod nim było aby to nie znikło, nie ma takiej możliwości ponieważ nie mogę tego odczytać z pamięci wyświetlacza. No chyba że jest taka funkcja a jedynie ja o niej nie wiem?!
  • #341 10964832
    Konto nie istnieje
    Poziom 1  
  • #342 10995632
    Mars1990
    Poziom 11  
    Posty: 5
    Ocena: 1
    Witam,
    Czas na moje trzy grosze w tym temacie :)

    Otóż...z drobną pomocą (dzięki snnaap!) udało mi się przebrnąć przez inicjację LCD, model LS020(z końcówką 5, czyli bez zielonej "wstawki" z tyłu w sterowniku). Jednakże mam problem z użytecznymi komendami.

    Na początek chciałbym oczywiście wypełnić cały wyświetlacz jakimś kolorem, ale...wypełnia się tylko do połowy:
    http://img442.imageshack.us/img442/4016/ls0202.jpg
    Również, gdy pobawię się funkcją wypełniającą, uzyskuję zerwanie ciągłości obrazu w środku wyświetlacza:
    http://img834.imageshack.us/img834/332/ls0201.jpg
    Co dziwne, udaje się wypełnić cały...ale to chyba ze względu na cykliczne wysyłanie tej funkcji w pętli for (sprawdzić muszę jak to będzie wyglądało przy wysłaniu tylko raz).
    Gdy wyślę dwie komendy fill_screen (dla sprawdzenia o różnym kolorze), to druga połowa wypełnia się drugim kolorem. Więc wygląda na to, że 132*176 w pętli for to połowa. No ale jak dam 132*176*2, to nic się nie rysuje (random screen po inicjacji pozostaje).
    Natomiast gdy miałem w pętli po kolei zapełnianie kolorami 0-255 (można inny zakres?) to...polecam filmik:
    http://www.youtube.com/watch?v=ytKgHUcygOU
    Czyli kolory niby prawidłowo się scrollują(taki efekt wychodzi ;)), ale mają dwa "odcienie", bo znów coś jest nie tak przy przejściu przez środek. Jakieś pomysły?

    Nie działają również komendy do włączania i wyłączania LCD. Sekwencja ostatecznie odłączająca LCD działa, aczkolwiek nie udaje jej się w pełni wygasić wyświetlacza przed odcięciem zasilania (ale lepsze to od ręcznego rozłączenia).

    Mam jeszcze pytanie odnośnie trybów wyświetlania. 8 bit, 16 bit, 8 color, 65k color. O co w nich chodzi? 65k to nie 16 bit? Jakieś objaśnienia mile widziane. Bo w sumie póki co nie korzystam z nich (nawet nie wiem czy działają u mnie).

    To chyba wszystko. Załączam oczywiście kod:
    http://pastebin.com/R4zBKssR

    Korzystam z Arduino UNO. W zasadzie nic to nie zmienia w uC, którym jest ATMEGA328. Kwestia gotowych bibliotek do obsługi (to tak dla informacji, żeby nikt się nie czepiał "co to jest?!")

    Info: funkcja initialization() jest napisana przeze mnie, setup() to funkcja Arduino, która wykonuje się RAZ po starcie, natomiast loop() jest również funkcją od Arduino, ale działa ona w pętli (czyli taki zwykły while).

    [EDIT]
    Ok. Znów dzięki pomocy kolegi snnaap udało się ogarnąć sprawę. Wszystko przez to, że próbowałem słać po SPI dwa bajty, a nie jeden...
    No ale świeżak jestem - mam prawo być debilem : D
  • #343 11319659
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Witam
    Posiadam LCD zmontowany wg. tej strony
    http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
    Wgrywam pliki do atmegi także z tej strony plik simple.hex
    Niestety nic sie na lcd nie dzieje,mruga tylko dioda przy atmedze.Dodam że to jest atmega 8 ,posiadam Bascoma ale kompletnie nie wiem od czego zacząć.
    Pliki wgrywam MKavrCALCulatorem.
    Mam jeden pliczek .bas co nieco w nim pozmieniałem ,ale lcd nie startuje.Ma ktoś może z Was jakiś start pod megę8 i lcd siemensa?(epson).
    Załączniki:
    • Nowy Dokument tekstowy.txt (4.99 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #344 11320115
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2811
    Napisz jeszcze który masz wyświetlacz, bo wróżki są jeszcze na urlopie.
  • #346 11320451
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2811
    inspector_electro napisał:
    Jakie wróżki? :| przecież napisałem że to epson.Jego symbol to: L2F50126.

    ... a gdzie użyta biblioteka ? - komendy w Bascomie nie wyrobią się.
    Masz w załączniku sprawdzoną bibliotekę i przykład użycia.
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • LCD-EPSON_L2F50_C.ZIP (2.89 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #347 11320517
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Kurcze, chyba nie sprawdzę tego. Podejrzewam, że ubiłem megę :cry: .
    Niepotrzebnie zaznaczyłem fusebity i teraz mam brak odzewu od procka.

    Znalazłem fusebit doctora. Mam pytanie - czy do naprawy fusebitów wystarczy zmontowanie wtyczki pod COM1 i MAX232?

    Już z tym sobie poradziłem.
    Gdy próbuję skompilować tą bibliotekę, wywala mi dwa błędy w pierwszym wierszu.
    Nie bardzo wiem czemu...

    LCD od S65 sterowany przez ATmega16.
  • #349 11322510
    mariuz
    Poziom 31  
    Posty: 1772
    Pomógł: 141
    Ocena: 108
    Skasuj cały początek aż do wiersza History (razem z nim).

    Chociaż jak wrzuciłem do folderu LIB bibliotekę bez żadnych zmian i skompilowałem przykład to jedyny błąd jaki mi wyskoczył to ograniczenie kodu wynikowego do 4kB...
  • #351 11322572
    mariuz
    Poziom 31  
    Posty: 1772
    Pomógł: 141
    Ocena: 108
    Ale właściwie dlaczego próbujesz kompilować bibliotekę? To wrzucasz do folderu LIB Bascoma i zapominasz. Potem używasz w programie tylko jej poleceń jak w przykładzie Freddy'ego z postu #346
  • #352 11322617
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Ehhh chodzi mi oto ,że nie ogarniam na razie programowania.Chciałbym odpalić ten lcd ,aby po tym zmieniać odpowiednio komendy itd. a do tego potrzebna mi jest startowa biblioteka np. >bas ,aby potem zrobić konwersję na hexa.Po prostu jestem zielony.Naukę chcę podjąć w sposób prób i błędów , dodając odejmując w wierszach komend i.t.d.Wcale nie sugeruję aby ktoś na siłę DAŁ mi gotowca.Ja tylko chcę odpalić lcd i się uczyć na próbach.
  • #353 11322624
    mariuz
    Poziom 31  
    Posty: 1772
    Pomógł: 141
    Ocena: 108
    No to jeżeli nie ogarniasz to nie rzucaj się od razu na głęboką wodę. Zrób tak jak napisałem - wrzuć bibliotekę do odpowiedniego folderu, potem albo skompiluj kod od Freddy'ego, albo na jego podstawie pisz po kawałku własny. Niskopoziomową obsługą lcd jeszcze zdążysz się zająć. I zapewne do tego czasu porzucisz bascoma na rzecz C.
  • #354 11322662
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Zrobiłem jak kazałeś.Dwa błędy i pojawiły się pliki .err

    Doszedłem do ładu.skompilowałem coś takiego:
    Ale nie działa.Miga od czasu do czasu dioda przy medze.
    Załączniki:
    • new 2.c (11.05 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #355 11323399
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Próbuję już na różne sposoby ,ale to jest ciężkie.
    Powiedzcie mi w którym z tych plików , i gdzie ustawia się ,pod który port podpięty jest lcd.
    PROSZĘ
    Załączniki:
    • L2F50_display4_V02.zip (13.33 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #356 11323422
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2811
    Człowieku, zróbże wreszcie według moich i innych wskazówek i nie kombinuj.
    Kazałem Ci zastosować bibliotekę, którą dostarczyłem, inni radzą to samo - i co ? dalej nic. Nie raczyłeś zrobić nic !
  • #358 11323633
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Freddy ten kod od Ciebie wklejam w okno jako nowy plik.Tworzy mi się noname.bas .
    Noname.bas kompiluję. Czy prawidłowo? czy cały czas coś paprzę? aha i ten plik który mi podałeś LCD_epson.....LBX wrzuciłem do katalogu LIB.
    Nie wiem co robię nie tak.
    Eh w końcu coś wyświetlił ten lcd.ekran jest cały w kolorowych pixelach ,po zapodaniu tego kodu testowego:

    ' ------------------------------------------------------------------------------
    ' TEST lcd siemens s65
    ' ------------------------------------------------------------------------------
    $lib "LCD-EPSON_L2F50_C.LBX"
    $regfile = "m8def.dat"
    $crystal = 8000000

    $baud = 19200


    Config Graphlcd = Color , Controlport = Portc , Cs = 3 , Rs = 5 , Scl = 2 , Sda = 1 , Reset = 4

    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Disconnect , Prescale = 1
    Pwm1a = 240
    Dim Ya As Long


    '16Bit Color -> RRRRRGGGGGBBBBB
    Const Lila = &B1111100000011111
    Const Blue = &B0000000000011111
    Const White = &HFFFF
    Const Black = &H0000
    Const Rot = &B1111100000000000
    Const Gruen = &B0000011111100000
    Const Cyan = &B0000011111111111
    Const Gold = &B1111111111100000
    Const Grau = &B1111111111110110
    Const Hgelb = &B1111011110101000
    Const Dgelb = &B1111011111010000

    Const X = 176
    Const Y = 132

    Cls

    Ggg:

    Showpic 0 , 22 , Plaatje
    Wait 2
    Showpic 0 , 22 , Plaatje1
    Wait 2
    Goto Ggg
    End

    Plaatje:
    $bgf "mcse.bgc"

    Plaatje1:
    $bgf "Font8x8.font"

    Powiedzcie co jest nie tak ,i jak wyświetlić jakiś text ,jak wstawić pod ten kod?
  • #359 11325561
    Freddy
    Poziom 43  
    Posty: 19997
    Pomógł: 1394
    Ocena: 2811
    Obrazek masz ?
    Fonty 8x8 masz ?
    Pokaż schemat podłączenia, tylko nie link do strony, tylko rzeczywisty Twój.
  • #360 11326400
    inspector_electro
    Poziom 22  
    Posty: 908
    Pomógł: 18
    Ocena: 29
    Witam
    W końcu sobie jakoś poradziłem.Lcd miałem podpięty wg.strony:
    http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
    Niestety dla mojego lcd to zła konfiguracja.
    Rezystory 470 miałem ,ale 610 om już nie więc dałem takie jakie miałem czyli SMD 820 om.Przy tej konfiguracji miałem kolorowy śnieg.Odpiąłem te 810 om od masy i dałem je bezpośrednio zn. szeregowo do lcd ,bez dzielenia napięcia.Lcd wstał ,wyświetla.Teraz spróbuję zrobić jakąś przetworniczkę z 5v na powiedzmy 11, 12v do podświetlenia lcd.Oprogramowaniem zajmę sie, jak zrobie podświetlenie.
    LCD od S65 sterowany przez ATmega16. LCD od S65 sterowany przez ATmega16.

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania wyświetlaczem LCD Siemens S65 (model LS020) za pomocą mikrokontrolera ATmega16 oraz innych układów AVR i ARM. Autor projektu wykorzystał kod źródłowy Christiana Kranza, modyfikując go pod kątem kalibracji oscylatora i protokołu transmisji z kontrolą CRC16, aby poprawić stabilność komunikacji przez port szeregowy. Wątek porusza kwestie podłączenia wyświetlacza, zasilania podświetlenia (stosowanie przetwornic impulsowych, LM317, napięć 2.9V-3.3V), oraz problemów z prędkością transmisji danych i błędami wynikającymi z zakłóceń elektromagnetycznych. Dyskutowano o alternatywach dla RS232, takich jak USB z układem FT245BM, oraz o planach migracji na procesory ARM (np. LPC2103) dla zwiększenia wydajności i szybkości SPI (do 20-30 MHz).

Wielu uczestników dzieliło się doświadczeniami z wyświetlaniem grafik BMP i animacji, wskazując na ograniczenia prędkości transmisji i konieczność optymalizacji kodu (np. asembler, sprzętowe SPI, buforowanie danych z karty SD). Poruszono też temat konwersji obrazów do formatu zgodnego z wyświetlaczem (16-bitowa paleta kolorów 5R-6G-5B) oraz narzędzi do generowania tablic danych w C. Wspomniano o problemach z dostępnością elementów, takich jak tranzystory BSS84, BSS123, cewki indukcyjne oraz stabilizatory 3.3V, a także o projektach schematów i płytek PCB w Eagle.

Dyskusja obejmuje również praktyczne zastosowania, takie jak elektroniczne ramki na zdjęcia, wyświetlanie parametrów sprzętu, proste animacje, a nawet oscyloskop na bazie wyświetlacza S65. Użytkownicy wymieniali się linkami do filmów prezentujących efekty działania, kodów źródłowych i schematów. Podkreślono, że wyświetlacz działa poprawnie bez podświetlenia, przy zasilaniu 3.3V, a podświetlenie wymaga osobnego zasilania i sterowania PWM. Wskazano, że prędkość transmisji i stabilność działania zależą od taktowania mikrokontrolera, jakości protokołu komunikacji oraz zastosowanego sprzętu.

Podsumowując, projekt sterowania LCD S65 za pomocą ATmegi jest wykonalny, ale wymaga starannego doboru elementów, optymalizacji oprogramowania i odpowiedniego zasilania, a dla bardziej zaawansowanych zastosowań rekomendowane jest użycie szybszych mikrokontrolerów ARM i interfejsów SPI o wysokiej prędkości.
Wygenerowane przez model językowy.
REKLAMA