W związku z tym, że obserwuję nadal wiele problemów wśród początkujących w zakresie pierwszego podłączania i testowania popularnych wyświetlaczy LCD, także w związku z tym, iż dostaję na maile tego typu zapytania dosyć często, postanowiłem przygotować taki mały poradnik. Oczywiście poradnik dotyczy zarówno podłączania wyświetlaczy do mikrokontrolerów ale także do innych peryferiów np portu LPT, tyle że wtedy zamiast do pinów mikrokontrolera podłączamy wyświetlacz do pinów portu drukarki. Mam nadzieję, że po zapoznaniu się z nim już nikt nie będzie miał kłopotów z pierwszym uruchomieniem LCD ;) ..... Ostatecznie rozprawimy się teraz z tymi wyświetlaczami - raz na zawsze. Na początek zaproponuję specjalną wersję poradnika w postaci przygotowanego filmu a później jeszcze powiem tutaj na blogu kilka słów.
UWAGA! film najlepiej oglądać przenosząc się na YouTube ponieważ tutaj jest zbyt mały rozmiar. Domyślny rozmiar filmu to 800x450. Będzie widać wszystkie ważne szczegóły, napisy itp.
skróconą wersję w postaci prezentacji FLASH można obejrzeć TUTAJ (link poniżej)
Mam nadzieję, że ten filmik sporo wyjaśnił wielu ludziom na świecie ;) .... Ja ze swojej strony dodam kilka uwag. Pierwsza to jeszcze raz dokładny schemat połączeń a w zasadzie to dwie wersje:
1. z podłączonym pinem R/W wyświetlacza do GND (bardzo często spotykane rozwiązanie, chociaż ja osobiście go nie preferuję z uwagi na zbyt powolną obsługę wyświetlacza ze strony mikrokontrolera. Nie mniej jednak, jeśli chodzi o port drukarki LPT to nie mamy zbytnio innego wyjścia)
2. z podłączonym pinem R/W wyświetlacza do mikrokontrolera. (Taka opcja pozwala na zdecydowanie szybszą obsługę wyświetlaczy oraz realizację takich efektów jakie opisałem już na swoim blogu np tutaj: http://mirekk36.blogspot.com/2012/02/lcd-hd44870-warstwy-efekty.html )
Pamiętaj jednak, że obojętnie jak byś nie podłączał pinu R/W to nie daj się zwieść innym poradnikom czy schematom ale także (o zgrozo książkom!!!!), w których zobaczysz, że nie wykorzystywane piny D0...D3 podczas gdy stosujemy magistralę 4-bitową - ktoś podłącza do GND! TAK NIE MOŻNA !!!
I już tłumaczę dlaczego. Otóż linie danych wyświetlacza są typu I/O (czyli wejścia i wyjścia). A skoro wyjścia to znaczy, że może się na nich pojawić stan wysoki - zgadzasz się ze mną ? I na pewno taki stan będzie się pojawiał na nich podczas korzystania nawet z magistrali 4-bitowej. Teraz chyba już sam się domyślasz, że może to powodować zwarcia po prostu +5V na wyjściu z GND !!! Niektórzy wprawdzie piszą, teksty na forach: "a ja tam tak sobie podłączałem i nic się nie działo" .... no to niestety piszą mega bzdury. To znaczy ja nie twierdzę, że od razu każdy wyświetlacz może się od tego uszkodzić. Pewnie niektóre to przeżyją. Tylko czy jest sens tak je katować? Nie wspomnę o tym że w takich przypadkach sam sterownik wyświetlacza pobiera dużo więcej prądu. Lepiej zatem wiedzieć jak to z tym jest na prawdę i pozostawiać te piny wiszące w powietrzu. Gdyby ktoś pytał dokładniej kiedy to może się pojawić na nich stan wysoki - to odpowiadam - że wtedy, gdy np dokonujemy odczytu danych z wyświetlacza. Np chociażby podczas badania flagi zajętości BusyFlag. Dlatego mam nadzieję, że dobrze to zapamiętasz i nie będziesz popełniał takiego błędu. Tym bardziej, że niektóre wyświetlacze mogą się po prostu fizycznie uszkodzić i później ludzie się dziwią, że w trakcie uruchamiania i regulacji kontrastu mają np takie efekty:
Zwykle jakieś dziwne efekty podczas regulacji kontrastu albo już podczas wyświetlania samych znaków po inicjalizacji, gdzie niektóre są słabo widoczne albo wyświetlają się jakieś bzdury może oznaczać uszkodzenie wyświetlacza i to właśnie spowodowane podłączaniem linii D0...D3 do GND. Nie mniej jednak może to się zdarzyć także przez to, że na początku przez pomyłkę podłączymy odwrotnie zasilanie :( .... wtedy zwykle sterownik od spodu strasznie się nagrzewa - no i rzadko potrafi przeżyć takie męki piekielne.
Mam nadzieję, że to w zupełności wyczerpuje wszystko co związane jest z pierwszym podłączaniem LCD. Jak należy to zrobić prawidłowo i jak testować LCD.
Trzeba tylko pamiętać aby po prawidłowym podłączaniu odpowiednio zainicjalizować wyświetlacz i wyświetlić na nim jakieś znaki bądź to z mikrokontrolera bądź to z portu LPT. Jeśli nic się nie będzie nadal pojawiać - to po prawidłowym podłączeniu - pozostaje nam już szukać tylko błędu w programie obsługi LCD....
Polecam oczywiście zapoznać się z całym rozdziałem jaki poświęciłem współpracy mikrokontrolerów AVR z wyświetlaczami LCD opartymi o sterowniki HD44780 w swojej książce pod tytułem "Mikrokontrolery AVR Język C Podstawy programowania" . Już z samego tytułu widać, że obsługa jest pokazana w języku C dla AVR i może to być nawet prostsze niż w Bascomie ;) zapewniam .... a do tego dużo większe możliwości.
Dziękuje za tak wspaniały opis jak podłączyć LCD zawsze miałem z tym problem aż do dziś ;)
OdpowiedzUsuńNa internecie każdy ma swoje zdanie co może prowadzić do błędów w podłączaniu, jeden mówi do VCC a drugi do GND.
Świetna animacja.
Tylko styki 15 i 16 trzeba odpowiednio podłączyć pod zasilanie jeżeli to wyświetlacz z podświetleniem a takie przeważnie są :)
OdpowiedzUsuńBo inaczej to ciemno będzie pokazywał.
Na schemacie tego jakoś nie widzę.
No tak - pewnie że można podłączyć 15 i 16 - ale czy trzeba ? ;) to już zależy od potrzeb i rodzaju wyświetlacza.
UsuńJeśli jest to typowy żółto zielony to i bez podświetlania będzie w normalnym świetle dziennym pięknie wyświetlał.
Jeśli jest to np niebieski albo jakiś negatywowy to pewnie że trzeba włączyć podświetlenie
a nie wspomnę że są przecież i wyświetlacze bez podświetlenia ;)
Poza tym pod koniec filmiku jest właśnie mowa o tym podświetleniu .... i sam temat podświetlenia jest - jak mi się wydaje bardzo oczywisty - choć mogę się mylić i ty masz rację .... w razie czego uzupełnię to po prostu w opisie.
Ja podłączam nieużywane nogi LCD D0-D3 do GND poprzez rezystory 1K (zazwyczaj SMD ,bo zajmują mniej miejsca).
OdpowiedzUsuńMam pytanie ,czy jeśli zostawię je w powietrzu ,to czy jest ryzyko że jakiś stan nieokreślony spowoduje wyświetlanie się błędnych znaków na LCD, bo jak wiadomo wiszą one w powietrzu w stanie wysokiej impedancji ,więc ani to stan niski ,ani wysoki.
No dobrze że chociaż przez rezystory podłączałeś - dzięki czemu wyświetlacz nie był narażony na uszkodzenie fizyczne. Ale ok do rzeczy - skoro już o to pytasz - tzn czy będą jakieś stany nieustalone?
UsuńPrzede wszystkim to warto byłoby chociaż raz - tak raz w życiu tylko przeczytać dokładnie i zaznajomić się od podstaw z działaniem LCD tzn jak się go programuje a nie tylko z PDF'em jak wyglądają jego wyprowadzenia. Wcale nie trzeba zaraz od nowa pisać własnej biblioteki do jego obsługi ale ją też zrozumieć - jeśli używamy cudzej.
Dlaczego? bo wtedy w zasadzie sam byś sobie mógł odpowiedzieć na to pytanie. Otóż gdy wybiera się tryb pracy 4-bitowy to oznacza, że pozostałe bity w ogóle nie biorą udziału w komunikacji. Tylko że wbrew pozorom one nie są i nie mogą być CAŁY CZAS W STANIE WYSOKIEJ IMPEDANCJI!. Ponieważ to się dzieje dopiero po dokonaniu pełnej inicjalizacji wyświetlacza. A w jej trakcie działają normalnie jako porty I/O i panują na nich normalne stany ZERO albo JEDEN - i wtedy jak ktoś je łączy do GND tak wprost to właśnie powoduje często uszkodzenie takich wyświetlaczy.
A teraz, gdy już wyświetlacz już jest zainicjalizowany to UWAGA! najczęściej piny te są w stanie HiZ (wys. imp) ale nie wszystkie chińskie modele tak mają ;) niektóre potrafią utrzymywać stany na tych pinach takie jakie były w ostatniej fazie inicjalizacji. To kolejny powód dlaczego niektóre szybciej się popsują a inne rzadziej od podłączania do GND
ale ok - jeśli mowa o tych, które mają na tych pinach stan trzeci czyli Hi-Z , to pomysł że jakieś zakłócenia mogą wpływać na bzdury które pojawiają się na wyświetlaczu jest niestety WYSSANY Z PALCA i ktoś go tam gdzieś w internecie powiela bez sensu.
Absolutnie w zdecydowanej części wypadków za te nieoczekiwane bzdury na LCD odpowiadają takie czynniki jak:
1. brak filtracji zasilania !!!!!!! ( 80% przypadków )
2. błędy w programowej obsłudze !!! ( 20% przypadków )
niestety często Chińczycy rezygnują z wlutowania głównego tantalowego kondensatora filtrującego na PCB wyświetlacza ale jest na niego miejsce ;) i można:
- albo samemu go wlutować co znacznie poprawi jego niezawodność
- albo dodać taki kondensator tuż przy pinie zasilania LCD
- albo kupić dobry wyświetlacz
nie ma innych opcji w tym o tajemniczych zakłóceniach pochodzących z nieużywanych pinów D0-D3
Podczas inicjalizacji wszystkie D0-D7 są wejściami. Po inicjalizacji w 4bit są w stanie HiZ (D0-D3) i nie znam modułu który ma inaczej (nie żebym znał wszystkie).
UsuńPo co je do czegoś w ogóle podłączać skoro producent mówi, że są ignorowane to nie mam pojęcia, ale nic się od tego nie zepsuje.
Nawet powielany w Internecie rysunek z inicjalizacją (błędny zresztą, albo przynajmniej niezgodny z dokumentacją HD) mówi, że nie przełącza się go w stan czytania przed ukończeniem procedury, bo wtedy faktycznie wystąpi problem.
No i 95% aplikacji i tak nic z wyświetlacza nie odczytuje (bo i po co).
Jeśli chodzi o ostatnie zdanie że 95% aplikacji i tak nic z wyświetlacza nie odczytuje - to z tym się absolutnie nie zgodzę ;) bo my tu nie mówimy o "jakichś tam aplikacjach" tylko o własnym programowanmiu. A ja np ale i spora ilość ludzi właśnie w 99% odczytuję jednak z wyświetlacza .... co? - no flagę BUSY FLAG - więc jednak odczytów się dokonuje ;)
UsuńDzięki za odpowiedz ,jeśli mowa o filtracji to przypomniałeś mi układ z Nowego Elektronika 337-K miernik pojemności ,gdzie zastosowano przekaźnik (była dioda zabezpieczająca) ,ale nie wystarczało przy rozładowywaniu dużych pojemności powstawały szpilki zasilania ,w efekcie czego na LCD pojawiały się same kwadraciki (pomagał tylko reset) ,potem dolutowałem kondensator 100nF bezpośrednio do goldpinów LCD i problem zniknął.
OdpowiedzUsuńTak na marginesie to jeśli dobrze pamiętam to wykorzystując magistralę 8-bitów mamy dostęp do większej ilości znaków (od chińszczyzny po Ruski ,oraz strzałeczki ,figury ,itp.) ,ale tak jakoś powszechnie przyjęła się magistrala 4-bit.
Jeszcze raz dzięki ,za odpowiedź. Od dziś postaram się już zostawiać te piny w powietrzu ,pozdrawiam.
Witam:
OdpowiedzUsuńFajny artykuł ale jeszcze dobrze by było ostrzec, żeby przed podłączeniem zasilania do LCD zapoznać się z jego notą katalogową. Otóż nie wszystkie LCD mają tak samo wyprowadzone piny zasilania (sam tak uwaliłem lcd z podśw. RGB dostępny na alledrogo). Tutaj jest przykład: http://www.artronic.pl/o_produkcie.php?id=653? . Pozdrawiam
Czy do zasilania podswietlania trzeba stosowac rezystor ograniczajacy prad?
OdpowiedzUsuńoczywiście że nie trzeba, tzn nie widziałem jeszcze wyświetlacza, który nie miałby rezystora wbudowanego.....
UsuńCo do podłączenie lini D0-D3 do masy, to chyba wiem o jakiej książce może być mowa ;) (swoją drogą fajna publikacja ). Właśnie niedawno ją przeglądałem i takie podłączenie rzuciło mi się w oczy. Przyznam, że jakiś czas temu otrzymałem od kogoś układ z tak podłączonym wyświetlaczem, a po przeczytaniu tego artykułu natychmiast rozlutowałem te zworki. Na szczęście wyświetlacz jeszcze działa.
OdpowiedzUsuńPozdrawiam
Zgadzam się w 100% z AUTOREM tej publikacji. Fajny jasno wyjaśniający istotę sprawy artykuł. Przeglądając schematy z elektroniką cyfrową widziałem podłączone piny I/O do masy lub plusa zasilania układu - gdzie ludzie zaawansowani w tej dziedzinie jakoś nie widzieli problemu.
OdpowiedzUsuńI czasem trzeba ze 20 lat poczekać, aby przeczytać taki artykuł obalając mity-bzdury.
A geneza problemu jest taka - mała jeszcze córka w rozmowie z matką ucina rogi u szynki wkładając ją do garnka i pyta się matki czemu tak i po co ona tez ucina rogi od szynki ?, no bo tak robiła jej mama (też ucinała), czemu ?, ona nie wie, ale znowu jej mama też ucinała rogi od szynki. Więc córka postanowiła się spytać prababci, a prababcia "...bo nie miałam większego garnka ..."
hahahaha ;) .... no z tym większym garnkiem to kolega fajnie powiedział .... rewelacyjne porównanie ;)
UsuńPanowie,
OdpowiedzUsuńProsba o info czy można w odpowiedniku HD44780 (noritake VFD) wyswietlić znaki 5x8, przy próbie wyswietlenia tak zdefiniowanego znaku, awysiwtlacz albo obcina do 5x7 albo wyswietla całą 8-mą linię - c0 nie zawsze jest porządane.
p. Tadi
tknas@mediabit.com.pl
697 324 000
W takich wypadkach ZAWSZE niestety trzeba wziąć w rękę notę PDF swojego wyświetlacza - bo tam MUSI być wszystko w szczegółach opisane. Ja nie miałem okazji sprawdzić wszystkich rodzajów wyświetlaczy z całego świata - a są ich tysiące. Więc nie jestem w stanie w ogóle odpowiedzieć na to pytanie tym bardziej że nawet nie mam noty PDF do niego :( .... przykro mi.
Usuńnota jest 1-no stronicowa :(, w sumie wystarczy do poprawnej, standardowej pracy zgodnej ze standardem hd44780, czyli 5x7, 5x8 widocznie albo chłopaki sobie uprościli życie i 8 linia traktowana jest jako całość,
Usuńmodel to CU 20029 produkcji noritake, w sumie rewelacyjny wyswietlacz :)
Okazuje się że w przypadku wyświetlacza LCD 4x20 produkcji no-name wyświetla się wszystko poprawnie, czyli zdefiniowane znaki 5x8, gdzie w ostatniej linii może być pojedynczy pixel (a nie cała linia czyli 5 pixeli)
OdpowiedzUsuńWygląda na to że VFD CU20029 produkcji NORITAKE obsługuje jedynie znaki 5x7, a ostatnia linia to podkreślenie, które występuje jako pusta linia lub cała.
Chyba że można jakoś ominąć to ograniczenie ?
Tak wyświetlacze VFD są przede wszystkim bardzo - że tak powiem eleganckie. Ja osobiście uwielbiam wszelkie wyświetlacze VFD.
OdpowiedzUsuńAle co do zgodności ze standardem VFD bywa naprawdę różnie :( Jeśli jest to tylko taka uboga nota to trudno tym bardziej mi coś podpowiedzieć.
Do Noritake 2x20 dokumetacja jest bardzo obszerna oraz są przykłady w C. Trochę musiałem powalczyć żeby dostosować kod z Twojej książki żeby na tym działał.
OdpowiedzUsuńNo to cieszę się, że ruszyło wszystko ;)
UsuńRuszyło ale to nie ja miałem problem, dużo tu tych anonimowych :).
UsuńNie zwróciłem uwagi na tą kwestię 5x7 i 5x8 bo w zdefiniowanych znaczkach i tak miałem podkreślenia na dole.
Specyfikacje są tu
http://www.noritake-itron.com/pages/5x7lcdemulation.htm
wystarczy tylko kliknąć ikonkę pdf-podobną i wybrać Full Specification. Skąd kody wziąłem nie pamiętam, ale gdzieś je mam nagrane.
Kolega anonimowy chyba się pomylił CU20029 to 2x20 a 2x40 to CU4029.
Prosilbym jeszcze o rozwinięcie tematu podswielania wyświetlacza LCD. W dostępnych opracowaniach zagadnienie traktowane jest niestety po macoszemu. Chce przykładowo wywołać takie tematy jak dobor wartości rezystora dla różnych typow wyświetlaczy, sterowanie impulsowe, z użyciem sygnału PWM w celu podniesienia sprawności.
OdpowiedzUsuńInteresującym tematem jest również napięciowe sterowanie kontrastem bez użycia potencjometru, z wykorzystaniem sygnału PWM generowanego przez mikrokontroler (nowoczesne podejscie, oszczędność miejsca na płytce, programowa regulacja)
Hmmm taaak rzeczywiście nie powiedziałem o podświetleniu ale może dlatego że tu nie ma wyraźnego standardu w takich LCD. W zdecydowanej większości obecnie kupowanych LCD mamy rezystor od podświetlenia już wbudowany na płytce LCD więc nie trzeba żadnego zewnętrznego dodawać, ale proszę tego nie traktować jako aksjomat tylko zawsze zajrzeć do PDF'a swojego wyświetlacza albo z tyłu prześledzić ścieżki - też da się zauważyć ten rezystor i zwykle będzie on miał kilka ohm. A jeśli go nie będzie to pewnie też będzie miejsce żeby go sobie nawet tam wlutować (niektórzy Chińczycy oszczędzają mocno i go nie dają) ;)
UsuńSterowanie PWM podświetlaniem jest jak najbardziej uzasadnione jeśli ktoś chce i niczym się nie różni od sterowania PWM pojedynczą diodą świecącą tylko trzeba to zrobić przez jakiś tranzystor, ponieważ zwykle podświetlenie LCD zjada od kilkudziesięciu do kilkuset mA. Dlatego trzeba też dobrać tranzystor minimum na prąd 500 mA. Sterowanie PWM identyczne jak opisałem np w swojej pierwszej książce:
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html
A schemat sterowania za pomocą tranzystora można podejrzeć na schemacie naszych zestawów uruchomieniowych proszę rzucić okiem - są one ogólnodostępne:
http://atnel.pl/atb-elementy-wizualne.html
jak widać tranzystor goły do wyświetlacza bez żadnego rezystora bo taki oczywiście jest fabrycznie na LCD.
----------
Sterowanie za pomocą PWM kontrastem rzeczywiście interesujące ;) ... i fajnie się z tym pobawić tylko że z kolei często zakres sterowania jest tak wąski że aż nieraz w niektórych modelach wręcz nie opłaca się tego stosować. Nie mniej jednak jak sam przyznaję fajny temat i bajer zrobić sobie do urządzenia własnego sterowanie kontrastem ale programowe a nie zwykłym potencjometrem. Oczywiście sprowadzi się to DOKŁADNIE do tego samego co sterowanie PWM'em podświetlenia ;) nic innego. Oczywiście JEŚLI chodzi o wyświetlacze, które do sterowania kontrastem wykorzystują TYLKO DODATNIE napięcie. Bo są też takie, które wykorzystują przetworniczki z napięciem ujemnym - wtedy układ trzeba byłoby troszkę inaczej zbudować ....
Witam, a jak podłączyć kontrast przez rezystor zamiast potencjometru? Powiedzmy, że chce 2kOM na kontraście. To podłączam pin 3 wyświetlacza przez rezystor 2kOM do masy?
OdpowiedzUsuńA co to jest potencjometr ? - potencjometr to jest dzielnik rezystorowy. Więc nie zastąpisz go jednym rezystorem - no coś ty? Musiałbyś dawać dwa i to jeszcze bawić się w dobieranie wartości tych dwóch rezystorów żeby ustawić właściwy kontrast .... :( przyznam że dziwny pomysł ..... o wiele łatwiej i szybciej jest to zrobić za pomocą byle potencjometru o wartości od 10K nawet do 50K - w czym problem ?
UsuńZmodyfikowałem Pana schemat i narysowałem jak to powinno wyglądać wg mnie. Proszę mnie poprawić jak jest źle.Mam nadzieję, że nie będzie Pan zły - z powodu modyfikacji Pańskich schematów.
OdpowiedzUsuńPodaje link: http://imageshack.us/photo/my-images/716/lcdrwuc1.jpg/
Nie zauważyłem, że już mi Pan odpisał na moje pytanie. Niestety nie mogę korzystać z potencjometru i ma to być zrobione za pomocą rezystora, który został dobrany odpowiednio do kontrastu.
OdpowiedzUsuńAleż jak ja się mogę złościć za modyfikację schematu - toż każdy zrobi po swojemu ;) Tyle tylko że ty sam się szybko zezłościsz na siebie jak podłączysz wg tego schematu - bo zrobisz przepiękne ZWARCIE na zasilaniu ;) połączyłeś masę GND z VCC ;) no coś pięknego .... tylko uważaj i przygotuj gaśnicę na takie modyfikacje. Ale też rozważ czy nie szkoda trochę sprzętu tak psuć i marnować bo jakiś zasilacz może się USMAŻYĆ w mękach piekielnych :(
UsuńSkoro nie masz potencjometru to jeszcze raz powtarzam DWA REZYSTORY - dzielnik - tak jak potencjometr - czy nie wiesz co to jest dzielnik ???
http://pl.wikipedia.org/wiki/Dzielnik_napi%C4%99cia
proszę poczytaj - może uratujemy twój zasilacz
Rozumiem, wiem jak to działa. Jestem ciut niewyspany i wpadłem na taki głupi pomysł. Zapomniałem z tego wszystkiego o dzielniku napięcia... Biorę się więc do roboty i zaraz podeślę nowy schemat.
OdpowiedzUsuńPodaje nowy schemat:
OdpowiedzUsuńhttp://imageshack.us/photo/my-images/819/lcdrwuc2.jpg/
NO! i teraz OK - czeka cię tylko dobranie odpowiednich wartości rezystorów - i będzie działać ;)
UsuńNa płytce kit AVT5333 mam zworke która na stałe włącza podświtlanie wyswietlacza LCD (2x16 01).
OdpowiedzUsuńW jaki sposób mogłbym za pomocą np. mikroswitcha dodac taka mozliwosc, że po naciśnieciu przycisku wyświetlacz zapalił by się np.na 15 sek. i zgasł, a nie zeby była na stałe ta zworka JP1 włączona i cały czas miałby sie on świecic.
Pewnie to troche lamerskie pytanie, ale elektronika to tylko takie moje małe hobby i czasami sobie coś prostego próbuje zmontowac :) Z góry dziekuje za wyrozumiałosc i odpowiedz :)
PS. Ale prosze o jakies proste rozwiazanie :) niestety nie jestem elektronikiem i troche mi wiedzy jeszcze brakuje :(
to jest jakiś gotowy kit z procesorem w środku i jak rozumiem nawet nie bawisz się w programowanie. Więc jeśli do tego nie interesuje cię elektronika - to chyba każde rozwiązanie będzie trudne :( .... Tzn najprostsze byłoby chyba zrobić na dwóch tranzystorkach .... no ale to już ktoś inny musiałby ci podpowiedzieć ... ja zajmuje się tylko cyfrówką....
UsuńTak, przeprogramowanie czy coś podobnego nie wchodzi w gre, ale wielkie dzieki za podpowiedz, będe chociaż wiedział w jakim kierunku szukać rozwiązania :)
UsuńDodam że poczytałem tak z ciekawości kilka Twoich artykułów i są świetnie napisane nawet dla takich osób jak ja które nie maja doświadczenia z elektroniką :)
Wiesz, w tym wszystkim najfajniejsze jest to, że z programowaniem nawet mikroprocków można zacząć wbrew pozorom prawie z zerową znajomością elektroniki - np na jakimś zestawie uruchomieniowym - a później się jej uczyć w miarę postępów nauki programowania - szczególnie gdy okazuje się, że bakcyl zaczyna działać i wciągać. Ja znam wiele osób które od tego zaczynały - a dzisiaj ? ... a dzisiaj śmigają aż miło patrzeć ;) ... sam zobacz zresztą na ten poradnik video:
Usuńhttp://mirekk36.blogspot.com/2012/12/avr-jak-zaczac.html
to nie jest trudne, a do tego wystarczy jeszcze tylko książka:
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html
i dobra zabawa murowana ;) ..... tylko uważaj! to niestety wciąga - czasem bywa jak narkotyk ;) i ponoć jest nieuleczalne ;) ... tzn ja tak mam i lekarze mówią, że nie da się już tego zoperować. Muszę się nauczyć jakoś z tym żyć ;)
Bardzo fajny i pomocny artykuł:) Zastanawia mnie tylko jedna rzecz. Jeżeli swój uC zasilam napięciem 3,3V to wyświetlacz podłączam tak samo?
OdpowiedzUsuńOczywiście, że tak samo ale UWAGA! pod warunkiem, że twój wyświetlacz przeznaczony jest do pracy z zasilaniem 3,3V . To to już musisz sprawdzić sam przed zakupem takiego wyświetlacza w jego nocie katalogowej PDF, a nie liczyć na to że może się uda i że będzie działać przy zasilaniu 3,3V. Niestety nie wszystkie - albo więcej powiem, zdecydowana większość popularnych wyświetlaczy tego typu nie działa poprawnie przy tak niskim zasilaniu. Wymagają bowiem 5V.
UsuńA jeżeli swój układ zasilam zasilaczem stabilizowanym 5V a uC poprzez stabilizator napięcia 3,3V to mogę do VCC wyświetlacza podłączyć 5V a resztę tak jak Pan tutaj opisuje?
Usuńzapomnij o tym i poczytaj o konwersji zasilania pomiędzy układami zasilanymi z różnych napięć. Nigdy tak nie wolno robić. To są najczęstsze przypadki gdy początkujący nie znający podstaw elektroniki wymyśla taki sposób i odsyła swoje elementy elektroniczne do krainy wiecznych łowów :( ....
Usuńzatem jak się upierasz (nie wiem czemu?) żeby procka zasilać 3,3V to szukaj wyświetlacza żeby działał z takim napięciem bo inaczej puścisz z dymem jedno i drugie :(
Może ma wersje L procka?? Nie wiem czy akurat sfajczy owe elementy, ale przynajmniej komunikacja na SPI nie będzie prawidłowo działać, więc daj rezystorki i diody zenera na linii i będzie ok.
UsuńProszę mnie poprawić jeśli nie mam racji....
No ale to już jest właśnie konwersja, najprostsza bo najprostsza ale konwersja
UsuńWitam podłączyłem już prawidłowo wyświetlacz, ale nie wiem jak napisać program, taki jak ma np pan(chodzi o zwykły napis na wyświetlaczu).Jak to zrobić
OdpowiedzUsuńAleż wszystko od podstaw wyjaśniłem, opisałem i pokazałem wręcz jak się pisze taką własną bibliotekę do obsługi LCD w książce ;)
Usuńhttp://atnel.pl/mikrokontrolery-avr-jezyk-c.html
zapraszam więc do zapoznania się z nią. Można się nauczyć z niej wiele i szybko ruszyć w świat języka C.
Witam
OdpowiedzUsuńPosiadam wyświetlacze zgodne z hd44780 i miałem z nimi problem, a mianowicie problem był z wolnymi pinami. Gdy piny "wisiały" nie podłączone to LCD były martwe, a gdy podpoiłem wolne piny do masy wyświetlacze ożywały. Nie wiem czemu ale działają od kilku lat i jest OK.
Wielu fabrycznych konstrukcjach gdzie spotkałem się z LCD były piny podpięte do masy, dlatego po przeczytaniu artykułu zgłupiałem :) Prosił bym autora o wyjaśnieniu dlaczego tak się dzieje.
Pozdrawiam.
W artykule dostatecznie dużo wyjaśniłem o co chodzi więc co? mam się powtarzać? Krótko - D4..0 to są linie danych i to dwukierunkowe. A takich linii NIGDY - podkreślam NIGDY nie podłącza się do GND. Owszem czasem po podłączeniu ich do GND może być tak że nic złego się nie stanie z wyświetlaczem bo to może zależeć od jego konstrukcji ... Ale to tylko tyle
UsuńNatomiast jeśli są wyświetlacze, które mogą pracować w trybie 8- i 4-bitowym to sorki ale nie ma takich, które muszą mieć te linie D4..0 podłączane do GND gdy działamy w trybie 4-bitowym.
Przykro mi ale dla mnie to żadne wyjaśnienie, co kolega pisze, że niby nie działały bez podłączenia do GND tych linii i ożywały po podłączeniu. Być może coś kolega źle robił z inicjalizacją, albo inny czeski błąd i stąd taka a nie inna sytuacja.
Podstawowa zasada w elektronice - pinu który jest WE/WY - NIGDY nie podłączamy na stałe bezpośrednio do zasilania czyli ani do GND ani do VCC. Jak już to przez rezystory.
Niestety ale wszystko było podłączone OK. Program też był ok. Czy to było napisane w C czy Bascomie tak samo się zachowywały. I przypomnę że fabrycznych urządzeniach też się spotkałem z podłączeniem pinami do GND.
OdpowiedzUsuńNie piszę tego że złośliwości i nie neguję że nie ma pan racji. Widocznie zależy to od wyświetlacza. Ale jak jest standard to go się przeważnie trzyma. W książkach do nauki pisania programów też w przykładowych schematach można się spodka z wolnymi pinami podłączonymi do masy. Jako przykład podam pierwszą z brzegu Pana Marcina Wiązania "Programowanie mikrokontrolerów AVR w języku Bascom"
W takiej sytuacji wydaje mi się że tu wchodzi jakość wykonania wyświetlaczy.
Pozdrawiam
Ale ja też nie mam zamiaru dyskutować - powtarzam jest zasada w elektronice PINÓW I/O NIGDY się nie podłącza bezpośrednio do zasilania. To że ktoś w książce czy gdzieś indziej popełnia błąd to nie znaczy że to jest dobrze, tym bardziej, że wyjaśniałem ci dlaczego może to czasem działać ....
Usuńza to na pewno nie wmówisz mi że są takie wyświetlacze, które bez podłączenia do masy nie działają. A jak chcesz wmówić to zapraszam do mnie z takim wyświetlaczem i możemy się założyć o skrzynkę Johny Walkera ;) że pokażę ci że wyświetlacz będzie działać bez podłączenia tych nie używanych pinów do masy. Więc sprawa prosta ....
Ja bym nie mówił słowa NIGDY :) a to dlatego że są urządzenia gdzie dane wyjście czy wejście podłączając do masy jest blokowane. Jako przykład podam tu elektronikę przy klimatyzatorach (Nie wszystkie modele)
OdpowiedzUsuńTo że książka ma błąd zdarza się, ale tą książkę napisał człowiek jak i wiele innych artykułów i kto ma rację?
Dlatego pisząc nigdy grubo bym się zastanowił bo są takie momenty że spotyka się coś co jest według jednego producenta źle czy też w książce, a drugiego będzie OK. Każdy broni swojej racji. I tak jest tu z wyświetlaczami. Ale ja też człowiek i mogę się mylić. :) Z taką sytuacją przy wyświetlaczach miałem zaledwie kilka razy ale się zdarzyły.
Ps. Mam zwyczaj nie zakładania się z drugim człowiekiem, po za tym od wygranej trzeba odprowadzić podatek ;)
Pozdrawiam
Ale ty nie rozumiesz jednej rzeczy, ja tu nie bronię własnego zdania i własnej książki. Sam także błędy popełniam, jestem tylko człowiekiem.
UsuńTo nie jest moje "widzi mi się" że pinów I/O nie podłącza się bezpośrednio do zasilania ;) ... to jest podstawa elektroniki.
A to, że ktoś gdzieś w książce tak zrobił czy w projekcie fabrycznym - no to co z tego jeśli mu działało ... pomimo to może to wprowadzić w błąd innych, którym nie tylko nie zadziała ale się jeszcze sfajczy. Rezystory panie, rezystory przynajmniej wtedy się daje ... Więc nie podchodź wciąż do tego, że mówimy tu albo o moim widzimisię w książce albo o cudzym widzimisię a ty nie wiesz co wybrać bo każdy chwali swoje. Ja podałem wyjaśnienie tych podstaw które jasno mówią dlaczego tak nie można ... i to jest jasny konkretny argument - a nie dziwna obrona własnego zdania czy książki.....
co do zakładu - to obracasz to w żart i dobrze, no ale nie wmówisz mi jak widzisz, że miałeś taki LCD który wymagał podłączenia do GND aby działał poprawnie, bo już pewnie na tym etapie sam nie jesteś pewien jak to było dokładnie, nie do końca pamiętasz itp ....
Reasumując - ja nie narzucam ci swojego zdania - możesz pozostać przy swoim i łączyć te piny do GND do końca życia albo do czasu aż trafisz na poważny problem. I jednocześnie uważam to za dziwne podejście - bo wystarczy działać zgodnie z zasadą elektroniki cyfrowej i jak już to przez rezystory to podłączać i wtedy co jakaś ujma ? ....
no dziwne podejście ale masz prawo do swojego zdania i szanuję to ... każdy je ma w takim samym stopniu ;)
kończmy więc to .... i nie zmieniaj proszę tematu na obronę książek czy tam jakichś własnych poglądów.
Troszeczkę źle mnie zrozumiałeś. Niczego nie bronię i nie mam zamiaru bronić. Po prostu piszę jak jest i może się taka sytuacja zdarzyć. Zresztą przyznałem że w książce może być błąd bo ją pisze człowiek. Więc gdzie ja ją bronie?
OdpowiedzUsuńPiszesz że narzucam ci swoje zdane, a sam mi zarzuciłeś swoje "bo już pewnie na tym etapie sam nie jesteś pewien jak to było dokładnie, nie do końca pamiętasz itp .... "
Widzę że muszę skończyć rozmowę bo ktoś próbuje mi powiedzieć że mam amnezję.
Pozdrawiam
No to może ty też mnie zrozumiałeś - takie to jest dogadywanie się przez net ... absolutnie nie zarzucam ci amnezji ani nie miałem zamiaru cię czymkolwiek urazić i narzucać swojego zdania. Jeśli uraziłem to najmocniej przepraszam ....
Usuńale rzeczywiście widać - że dalej w tym temacie i tak będziemy stali na innym stanowisku - dlatego dajmy akurat z tym spokój a w razie czego porozmawiajmy o czym innym ;)
Witam wszystkich.
OdpowiedzUsuńMam pytanie, gdzie podłączyć RS;R/W;E -w które nóżki mikro kontrolera. Posiadam Atmega88PA, na nocie nie ma tak opisanych wyprowadzeń... Rozumiem, że D4;D5;D6;D7 to w UC są to odpowiednio: PD4;PD5;PD6;PD7.
Dziękuję.
Już znalazłem odpowiedź: podłączam tam gdzie mam ochotę i w zależności od tego gdzie podłączyłem piszę program uwzględniając lokalizację poszczególnych nóżek. Przepraszam za banały, ale naprawdę nie wiedziałem jak tu ugryźć. Panie Mirku, dziękuję za wciągnięcie mnie do świata elektroniki ;)
UsuńNie ma za co - powodzenia ;)
UsuńWitam odniosę się do tych wolnych pinów. Nie mam pojęcia kto ma rację, ale miałem podobny problem, gdy zostawiałem wolne piny, wyświetlacz nie działał. pomogło połączenie ich ze sobą, bez podpinania do masy. Czy takie rozwiązanie również jest groźnie? W ramach ciekawostki w płycie firmy Microsense wolne piny podłączone są do masy. Dodam jeszcze, że program, filtracja zasilania(zgodna z twoimi poradami) na 100% są ok.
OdpowiedzUsuńWięc coś źle robiłeś - i co gorsza robiłeś na zasadzie zgaduj zgadula :( czyli może się uda a może nie uda - bez zrozumienia istoty działania .... wtedy niestety najczęściej takie przedziwne wnioski można spotkać w internecie ...
UsuńNie mówię tego żeby ci dopiec ale żebyś wiedział - że warto dochodzić sedna sprawy a nie zgadywać - bo to doprowadzi cię w równej części np do palenia układów jak i czasem do tego że będą działać ...
A sam chyba rozumiesz - że nie tędy droga.
Właściwie masz rację, jednak do eksperymentu skłoniły mnie podzielone zdania w tym temacie, no i to że wyświetlacz nie działał, może szukam błędu nie tam gdzie trzeba. Zrobię jeszcze mały test. Opisywałem przypadek podłączenia wyświetlacza do mojego projektu płytki. Podłączę ten sam wyświetlacz do płyty microsense tylko z wolnymi pinami. Oczywiście przeanalizuję jeszcze raz cały projekt.
OdpowiedzUsuńPo sprawdzeniu całego projektu wyszło, że nie łączył jeden przewód od wyświetlacza w gnieździe goldpin, które sam zarabiałem. Zadziałanie wyświetlacza poprzez połączenie wolnych pinów było przypadkowe. Pozdrawiam :)
OdpowiedzUsuńMam problem i bardzo proszę o pomoc. Szukam przyczyny takiego zachowania: raz na jakiś czas mój LCD 1x6 przestaje cokolwiek wyświetlać- jest cały pusty. Jak mniemam nie reaguje na polecenia mikrokontolera, bo ten teoretycznie wysyła do niego nowe dane. Dzieje się tak w momencie gdy jakieś urządzenie podpięte do tego samego gniazdka zostanie włączone/wyłączone, ale nie zawsze- mniej więcej raz na 20 prób. Całe urządzenie poza tym działa normalnie, czyli uC się nie resetuje. Zasilanie jest myślę w miarę dobrze zrobione: graetz, 7805, główna filtracja 470u + 220u, do tego kilka odsprzęgów 100nf, w tym jeden bezpośrednio przy nóżkach LCD. Początkowo myślałem, że winne mogą być wiszące w powietrzu D0-D3, więc połączyłem je do GND (tak, wiem..) ale problem wciąż występuje. Nie wiem gdzie dalej szukać rozwiązania.
OdpowiedzUsuńWina takich objawów jest zawsze tylko jedna tzn może w 99% filtracja i złe prowadzenie zasilania. Ale tego nie da się ustalić na podstawie takiego sobie ustnego zapisu i zapewnień że zasilanie masz ok ... bo tak zwykle mówi każdy początkujący - a jak pokaże PCB to wtedy się okazuje że jest masakra :(
Usuńdlatego zapraszam z takim pytaniem na nasze przyjazne forum: www.forum.atnel.pl i tam je zadać ale pokazać wyraźny obraz z PCB z eagla czy tam innego programu - także schemat - wtedy można się zastanawiać i coś pomóc.
witam
OdpowiedzUsuńjak się podłączy zasilanie i potencjometr do portu 1,2,3 i wyświetlacz nie działa to wtedy można sądzić że jest uszkodzony czy winą jest że porty 4 5 6 nie są podpięte do procesora?
Ostatnio na Elektrodzie toczy się dyskusja w oparciu o artykuł Mirka:
OdpowiedzUsuńhttp://www.elektroda.pl/rtvforum/viewtopic.php?p=13419709#13419709
Mirek, czy zechciałbyś wyjaśnić gdzie jest problem? Kto popełnia błąd?
...bo w tym momencie nie wiem już jak właściwie podłączyć LCD.
Powiem krótko - nie dyskutuję z elektrodą. Nie ma mnie tam - nie czytam tego co tam piszą - i powiem więcej mało mnie to obchodzi.
UsuńDlatego jeśli chodzi o twoje pytanie to bardzo cię przepraszam ale nie jestem w stanie odpowiedzieć kto ma rację - bo nie wiem kto i co tam pisze. Elektroda to miejsce skąd wykopała mnie pewna grupka ludzi ;) i teraz mnie obszczekują ... i na zdrowie im ....
Drogi Panie Mirku,
OdpowiedzUsuńPiszę z szybkim pytaniem, co może być przyczyną pojawienia się na wyświetlaczu pionowych kresek (o różnej intensywności), jak na zdjęciu: http://tiny.pl/qzx7m
Jest to wina zakłóceń, czy uszkodzenie wyświetlacza? Pojawiły się dość nagle, dolutowanie kondensatora 100nF do nóżek zasilających nic nie zmieniło, również regulacja kontrastu ich nie eliminuje. Zasilanie z zasilacza sieciowego 4.5 V przez przetwornicę stepup/stepdown 5V (wmontowaną niedawno, więc może problem jest z nią związany - choć nie ustępuje po jej wyjęciu).
Pozdrawiam
Jakub
przyczyn to może być dużo i po taki opisie to nic nie można nawet wywróżyć....
UsuńZapraszam na nasze forum z takimi pytaniami i tam pokazać/opisać przede wszystkim swój kod programu i pokazać dokładny schemat jak to podłączyłeś
Witam, czy istnieje jakaś reguła (pisana, umowna lub czysto porządkowa), jeśli chodzi o wybór portu obsługującego wyświetlacz. Wiadomo, że w np. ATMEGA8 nie ma wielkiego pola manewru, ale już 128,a nawet 16 czy 162 itd. mają po kilka Px - czy jest np. zasada, że nie powinno (albo zaleca) się używać portów wykorzystanych do ADC albo portów, które używa się jako adresowanie zewnętrznej pamięci itd... Konkretnie chodzi mi o sytuację kiedy użyję np. ATMEGI32 tylko do sterowania LCD, dwóch przycisków i trzech tranzystorów :) - mam "trochę" luzu i czy będzie to tylko moja fantazja, które użyję czy może należy się trzymać pewnej konwencji??
OdpowiedzUsuńZ góry przepraszam za pytanie jeśli takie zagadnienie było już omówione, nie zdążyłem jeszcze przegrzebać wszystkiego.
z poważaniem,
b.d.
Ależ nie ma żadnych zaleceń ani przeciwwskazań. Można podłączać jak się żywnie podoba. Jedynie warto mieć na uwadze to:
Usuńhttp://mirekk36.blogspot.com/2013/12/avr-isv-vc-spi-co-wolno-czego-nie-wolno.html
ale to nie tylko ze względu na LCD ...
Dziękuję za odpowiedź, pytanie może trywialne ale lubię porządek dla tego powstało... :) Polecam poradnik Wszystkim, moją szczególną uwagę "przykuła" końcówka poświęcona pinom programowania w ATMEGA128.
Usuńpozdrawiam
Dzień dobry panie Mirku, co sądzi pan o wykorzystaniu wyświetlacza DEM 16217 SYH-LY/V?. Pytam, bo wszędzie widzę że głównie używane są wyświetlacze hd44870. Czy to kwestia ceny, czy łatwiejszej obsługi?.
OdpowiedzUsuńPanie kochany ty chyba .... hmmm nie ... ty na pewno nie zdajesz sobie nawet sprawy z tego co piszesz ani z tego ile na świecie jest rodzajów wyświetlaczy, i mówię tu dla uproszczenia TYLKO o tych na chipsecie starym jak świat HD44780 .... toż nawet nie zajrzałeś do noty PDF tego swojego wyświetlacza .... a jest on kochnieńki własnie na chipsecie HD44780 ... więc sam widzisz, że twoje pytanie jest delikatnie mówiąc kompletnie bezzasadne. Ceny ? ... kurczę co sklep to inna cena ... każdy kupuje to co mu jest wygodne po prostu ;) ... na przyszłość czytaj lepiej uważniej noty PDF bo to podstawa jak się zabierasz za elektronikę. A wystarczy twój typ wyświetlacza wpisać w googla i od razu dostajesz linki z PDFami do niego
Usuńhttp://www.display-elektronik.de/filter/DEM16217SYH-LY.pdf
proszę zajrzyj i sprawdź czym się różni twój wyświetlacz od setek tysięcy jakie są na rynku. Podpowiem - jeśli chodzi o sterowanie NICZYM rozumiesz ? ;) NICZYM
Mirek jeste wielki
OdpowiedzUsuńciezko bylo przecztac koziolka matolka hehehe a ja juz pare tygodni koncze czytac zielona malo tego ze zrozumieniem duzo mi pomogles a debilami sie nie przejmuj niestety ich sieja musza sie jakos pokazac za niedlugo pokaze ci ile mi pomogles skontaktuje sie na skype projekt ciezki mam znajomych w comau oni ani 2% nie pomogli co ty popieram umiesz zamieszac w glowie zeby wszystko polknac szacunek i do przodu
OdpowiedzUsuń