Działanie:Schemat ideowy układu został przedstawiony na rysunku poniżej:
Sercem układu jest mikrokontroler U1 (ATTINY2313) wraz z rezonatorem kwarcowym X1 (16MHz) i dwoma kondensatorami C1 (22pF) i C2 (22pF). Potencjomatr P1 (10k) umożliwia regulację kontrastu wyświetlacza LCD W1 (16x2). Tranzystor T1 (BC556) wraz z rezystorami R1 (3,3k) i R2 (3,3k) umożliwia sterowanie podświetlaniem LCD. Rezystor R3 (47R) ogranicza prąd obwodow podświetlania wyświetlacza W1. Kondensatory C7 (100uF) i C8 (100nF) filtrują napięcie zasilania mikrokontrolera. Układ U2 (MAX232) jest konwerterem napięć, dostosowuje on stany logiczne występujące na porcie RS-232 do standardow obsługiwanych przez mikrokontroler. Kondensatory elektrolityczne C3 - C6 (1uF) są konieczne do poprawnej pracy układu U2. Złącza RxD_G oraz TxD_Vcc umożliwiają podłączenie zasilania i przewodow sygnałowych portu RS-232. Ponieważ port szeregowy jest dwukierunkowy istnieje możliwość podłączenie klawiatury i sterowania drugim mikrokontrolerem lub programem komputerowym. Do tego celu służy złącze GP1(wymaga modyfikacji programu). Do zaprogramowania mikrokontrolera służy złącze Prog a dodatkowo jego dwa piny (nie podłączone do wyświetlacza W1) mogą być wykorzystane w dowolny sposob (po zaprogramowaniu mikrokontrolera) Budowa:Wyświetlacz można zbudować w oparciu u płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym można pobrać tutaj. Montaż należy rozpocząć od wlutowania trzech zworek. Kondensatory elektrolityczne C3- C7 należy zamontować w pozycji leżącej, tak aby zmieściły się pod wyświetlaczem LCD, znajdującym się nad całą płytką drukowaną. Złącza Prog i GP1 mogą być w wersji "kątowej", ułatwi to podłączenie po zamontowaniu wyświetlacza. Rezonator kwarcowy musi być w wersji niskiej z tego samego powodu co leżące kondensatory. Pod mikrokontroler i układ U2 należy zastosować podstawki. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj Wykaz Elementów:2x Złącze Śrubowe ARK2(podwójne) 2x 3,3k 2x 22pF 1x Rezonator Kwarcowy 16MHz Programowanie:Mikrokontroler został zaprogramowany w wersji demo programu BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: '************* Konfiguracja uC ***************** '*********************************************** $regfile = "attiny2313.dat" $crystal = 16000000 $baud = 9600 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111 : Portd = &B10111111 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5 'mirley test board Config Lcd = 16 * 2 Cls Cursor On Blink 'Typ wyswietlacza LCD Kmax*Wmax Const Kmax = 16 Const Wmax = 2 '********** Konfiguracja uC Koniec ************ '****************** Zmienne ******************* '*********************************************** Dim Znak As Byte Dim S As String * 1 Dim K As Byte , W As Byte '************* Zmienne Koniec **************** '************ Warunki Poczatkowe *************** '*********************************************** K = 1 W = 1 '******* Warunki Poczatkowe Koniec *********** '************** Petla glowna ****************** '*********************************************** Do Inputbin Znak If Znak <> 0 Then Select Case Znak Case 1: '**************************** podswietlanie Toggle Portd.6 '**************************** 'Case 2....7 Case 8: '**************************** kasowanie ostatniego (backspace) Decr K If K = 0 Then K = Kmax Decr W If W = 0 Then W = Wmax End If Locate W , K Lcd " " Locate W , K '**************************** kasowanie ostatniego (backspace) 'Case 9....12 Case 13: '**************************** enter Incr W If W > Wmax Then W = 1 K = 1 Locate W , K '**************************** enter 'Case 14....26 Case 27: '**************************** kasowanie calosci(ESC) Cls K = 1 W = 1 Locate W , K '**************************** kasowanie calosci 'Case 28....31 Case 32 To 126: '**************************** znaki standardowe S = String(1 , Znak) Locate W , K Lcd S Incr K If K > Kmax Then K = 1 Incr W If W > Wmax Then W = 1 End If '**************************** znaki standardowe 'Case 127....160 Case 161 To 244: '**************************** locate K = Znak And &B00011111 W = Znak And &B01100000 Shift W , Right , 5 If K <= Kmax And W <= Wmax Then Locate W , K End If '**************************** locate 'locate -> Wysylamy wartosc 1kkwwwww (kk-numer kolumny, wwwww-numer wiersza) 'gdzie kk = (01....11) wwwww = (00001.....10100) 'Case 245....255 End Select End If Loop End '************ Petla glowna Koniec ************** Obsługa:Do osługi wyświetlacza konieczny jest komputer z programem typu terminal, lub własnym programem sterującym. Można także wykorzystać drugi mikrokontroler i wysyłać odpowiednie informacje za jego pomocą. Kody sterujące (wysyłane wartości liczbowe): Zdjęcia Projektu:
|
|||||||||||||||||||||


Układ jest uniwersalnym wyświetlaczem LCD sterowanym za pośrednictwem portu RS-232. Dzięki zastosowaniu mikrokontrolera 









Witam, mam pytanie. Co
Witam, mam pytanie. Co można wyświetlać na LCD. Czy dane z winampa np nazwa wykonawcy i tytuł tworu, prędkość download'u i upload'u itp?
Re: Sterowanie
Wyświetlacz pokazuje wszystko co przyjdzie po porcie RS232 + dodatkowe komendy sterujące jednobajtowe. Analizując kod można się wiele dowiedzieć o zakresie liczbowym jaki jest obsługiwany. Opis projektu nie jest jeszcze skończony ze względu na ograniczony czas ale wszystko to zostanie opisane. Skoro mowa o winampie to w wolnej chwili sprawdze czy da się wyswietlić odpowiedni napis
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Polskie znaki na LCD ?
Witam
Czy wysyłając polskie znaki z Windowsa (kodowanie Win1250) na port szeregowy poprawnie są na LCD wyświetlane ?
Z poważaniem
Silos
Re: Polskie Znaki
Wyświetlacze nie obsługują polskich znakow, ale jest mozliwość zdefiniowania swoich 8 dowolnych znakow w programie mikrokontrolera. Należało by napisać w kodzie możliwość definiowania swoich znakow, będzie to jednak z pewnością kłopotliwe bo żeby wyświetlacz nauczył się nowego znaku konieczne jest wykonanie ponownej inicjalizacji wyświetlacza (w bascomie jest to polecenie Cls) ktora wyczyści jego zawartość i trzeba będzie tekst na nowo wprowadzić
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Matryca LED 10x50
Witam!
A jakbyśmy chcieli zamiast LCD dać matrycę LED 10x50... To jakby to wyglądało? Trzeba by było łączyć kilka procków i jakby wyglądało sterowanie za pomocą programu?
Pozdrawiam!
Re: Matryca LED
Kiedys zastanawiałem się nad tym jak mozna by było sterowac taką matrycą (cos podobnego do takiej jak w autobusie:) ). Tak zwykle to raczej nie będzie się dało bo nawet ATMEGA64 nie ma tylu wyprowadzeń. Można spróbować użyć układu FPGA ale nie jest to tanie rozwiązanie a zamontowanie takiego chipa na płytce jest w domowych warunkach niemożliwe i trzeba by było korzystać z jakiejś fabrycznej płytki.
Rozwiązaniem najbardziej optymalnym jest zastosowanie expenderów działających na magistrali I2C. jeden posiada pełny port 8- bitowy. kilka takich powino dać radę ale nie wiem jak z szybkością multipleksowania. Mozna by podzielić ewentualnie na kilka sekcji, ale to jeszcze zwiększy ilość wyprowadzeń.
Ostatnią możliwościa jest, tak jak wspomniałeś, więcej mikrokontrolerów. Problemem bedzie komunikacja między nimi
Ogólnie całe zagadnienie nie wydaje się proste, ale może tylko tak strasznie wygląda na pierwszy rzut oka :)
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Re: Matryca LED
Witam
Może błądzę ale wydaje mi się, że możnaby było to zrealizować na jednym uC łącząc w rzędy i kolumny anody i katody diod. Wtedy dla matrycy 5x10 wystarczyłoby 15 wyprowadzeń (wraz z małymi tranzystorkami na tych 5) a multipleksowaniem zająłby sie mikrokontroler. Zrealizowałem coś podobnego ale z 6 wyswietlaczami 7-segmentowymi na uC atmega8. Tutaj również jest macierz LEDów 6x7, tyle, że inaczej ułożonych ;)
Pozdrawiam
PS. Świetna strona! Będę tu często zaglądał.
Re: Matryca LED
Ups...
Źle spojrzałem - 10x50 ;)
To faktycznie problem. W tej chwili na myśl przychodzi mi tylko podzielenie tego na 2 sekcje i traktowanie jako macierzy 20x25. 45 wyprowadzeń chyba bałoby się uzyskać stosując 40-nożkowy uC i jakiś dekoder. Co sądzicie o tym?
Re: Matryca
jak już mówiłem 10x50 to jest problem. Przydał by sie expender 16-bitowy na I2C to by nie było takiego problemu. Narazie nie wiem jakby to zrobić ale bedę się zastanawiał :))
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Re: Matryca LED
Wyżej pisałeś, że nie wiesz jak by to wyglądało z szybkością multipleksowania. Myślę, że z powodzeniem możnaby zastosować demultipleksery/dekodery 74LS154. Zamieniają 4-bitowy kod NKB na "1 z 16". Używając trzy dla 48 linii (lub cztery dla 64), łącząc ich wejścia adresowe równolegle do 4 linii portu a ich wejścia informacyjne przez kolejny, mniejszy (NKB na "1 z 4" - 1/2 74LS155), demultiplekser. Coś na kształt połączenia kaskadowego. Jego wejścia adresowe należałoby podłączyć do kolejnych dwóch pinów uC a wejscie danych do +5V. Wtedy wystarczy 6 bitów do sterowania a liczba wystawiona na porcie będzie numerem linii, jeśli użyje się bitów 0-5. Na sterowanie diodami w linni kolejne 10 pinów, co daje 16, czyli dwa pełne porty 8-bitowe. Mam nadzieję, że się komuś do czegoś przyda ten elaborat ;)
Re: Matryca
Może na razie nie zaprzątaj sobie tym głowy :)
Z tymi expanderami to tak wcześniej myślałem... Ale szybko mi to umknęło... A to źle. Bo to niezła opcja :)
Pokombinuję troszkę w przyszłym tygodniu z 2 expanderkami 8 bitowymi (bo takie mi najłatwiej zdobyć na tą chwile) i jak coś fajnego wyjdzie to poszerzę swoją matrycę bo w sumie jeden szereg będe mógł połączyć z już istniejącym a do drugiego podłączę 16 bitowy expander i pójdą 4 dodatkowe szyny do uC :)
Jak będę miał jakieś problemy to rozumiem że mogę liczyć na radę... A mogą być małe problemy z oprogramowaniem do uC ;)
Niemniej jednak jak już projekt będę to będe namawiał na zamieszczenie na stronce ze względu na uniwersalność i prostotę bo schemacik mam już rozrysowany dla matrycy 16x16 (256 diod). Oczywiście diody to nic strasznego bo w sklepach elektronicznych byśmy zostawili majątek ale od czego jest allegro... Ja znalazłem fajne LEDy SMD po 16gr/szt... No ale starczy tego gadania - trzeba się brać do pracy ;)
Pozdrawiam!
P.S.
Jakby ktoś uważał że to jest nie na temat to nic mylnego bo matryca będzie wykorzystana do wyświetlania znaków zadanych przez port RS232 a więc cząstkowo związane z projektem :)
Re: Matryca
Jeszcze wspomnę że jakby coś migało czy też za wolno chodziło to można zastosować Atmege48... Ona może śmigać na kwarcu 24MHz :)
Re: Matryca LED
W sumie to matryca bardziej pasuje do artykułu o Wyświetlaczu LED na RS-232 niż do tego ale faktycznie luźno jest związana z projektem :)
Jak możecie to piszcie pod wyświetlaczem LED na RS232
Odnośnie dekoderów typu "kod binarny -> 1 z 10" to jest to dobry pomysł do sterowania wierszy a ponadto upraszcza program.
Przy programowaniu w miarę możliwości pomogę
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Matryca lcd
Witam, projekt bardzo ciekawy lecz moje pytanie dotyczy czy można inny wyświetlacz alfanumeryczny wykorzystać?
Jeśli tak to jaki?
Re: LCD
Można wykorzystać dowolny wyswietlacz LCD, jego wymiary podaje sie na początku w kodzie programu. Należy zmodyfikować linie:
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
locate
Witam
Mogłbyś krok po kroku napisać jak działa polecenie locate ?
Case 161 To 244: '**************************** locate K = Znak And &B00011111 W = Znak And &B01100000 Shift W , Right , 5 If K <= Kmax And W <= Wmax Then Locate W , K End If '**************************** locate 'locate -> Wysylamy wartosc 1kkwwwww (kk-numer kolumny, wwwww-numer wiersza) 'gdzie kk = (01....11) wwwww = (00001.....10100)co daje napisanie K = Znak And &B00011111 ?
Pozdrawiam
Re: Locate
Nie ma tu nic skomplikowanego a tylko kilka operacji logicznych na bitach:
Linia:
to zwykłe maskowanie bitów za pomocą operacji iloczynu logicznego (AND). Każdy bit zmiennej 8-bitowej Znak jest porównywany z odpowiadającym mu bitem w masce &B00011111 . W efekcie tam gdzie jest 0 w masce odpowiadające bity zmiennej Znak zostaną wyzerowane. Tam gzie jest 1 w masce, odpowiadający bit zostanie bez zmian (Zgodnie z tabelą prawdy bramki AND: 1 and 1 = 1, pozostałe przypadki 0)
Pozwala to z jednej zmiennej wyciąć dwie informacje, o kolumnie i wierszu. W pierwszym przypadku wycinamy 3 najstarsze bity a w drugim, w linijce:
zostawiamy tylko bit numer 6 i 5, pozostałe zerując. Ponieważ w drugim przypadku, uzyskana wartość nie jest z przedziału 0-4, przesuwamy bity poleceniem Shift, tak aby potrzebne wartości znalazły się na bitach 0 i 1.
W dalszej części kodu sprawdzamy czy wartości odczytane są z dobrego przedziału i ustawiamy kursor w odpowiednim miejscu.
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
rs-232 i podnośnik
a jeżeli w podnośniku koszowym ruthmann mam port rs232 do obsługi drugiego wyświetlacza to będzie on chodzi a i czy mogę podłączyć wyświetlacz lcd 4x20
Rs: Wyswietlacz LCD
Wyświetlacz 4x20 będzie chodził z moim urządzeniem ale nie zanaczy to że możesz podłączyć całość do RS-232 w swoim podnośniku. To że jest tam też port Rs232 to nic nie znaczy, ważne jest to co układ po nim wysyła. Co trzeba wysyłać aby moje urządzenie działało podałem wyżej w opisie. Musisz mieć jakąś specyfikacje albo coś podobnego odnośnie twojego podnośnika aby dowiedzieć sie na jakiej zasadzie odbywa się transmisja (co jest wysyłane a co odbierane)
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
wykonałem ale nie chodzi
cześć wykonałem ten układ ale niestety nie chodzi na lcd miga kursor ale nie mam komunikacji z pc port mam sprawny bo zrobiłem zworkę pomiędzy rxd a txd co może być nie tak na płytce jak zewrze rx i tx przed max to tech widzę w terminalu co wysyłam a jak zewrze za maxem to już nic nie widzę
Re: MAX
Sprawdź jakie napięcia panują na pinach 2 i 6 układu MAX232. Powinno byc około +8V i -8V, a nawet troszkę więcej (zależy od układu)
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
max
na 2 pinie jest 9 v a na 6 -8,5 v
----
już hula miałem źle ustawiony ckdiv 8
Mirley: posty scaliłem proszę nie pisać kilku swoich wypowiedzi jedna pod drugą, zaloguj się aby uzyskać możliwość edycji wpisów
LCD via RS-232
Witam ! Trudno znaleźć stronę na której opisane jest wszystko tak dokładnie - co z kolei pomaga zrozumieć i wiele się nauczyć (np.takim jak ja)początkującym GRATULUJĘ !!!!!!.
OD powstania powyższego projektu minęło już sporo czasu i nie wiem czy ktoś mi pomoże.Mam dwa pytania : w projekcie zastosowano ATTINY2313 a czy można zastosować AT89S2313( mam ich kilka w swoich zbiorach), oraz czy trudno byłoby wykonać komunikację dwukierunkową ( np. kilka przycisków na wolnych portach uP)
Re: Wyświetlacz LCD na RS232
Chyba koledze chodzi o AT90S2313 a nie AT89.... ale tak czy innaczej nie mam na czym zrobić testów czy to będzie działać, więc mimo że ATTINY 2313 to nowsza wersja AT90S2313 nie jestem do końca pewien czy to zadziała. Polecam raczej kupic Tiny2313 a te starsze wykorzystać w innych układach.
Co do komunikacji dwustronnej to myślę że nie powinno być problemu. Specjalnie przewidziałem dodatkowy goldpin GP1 do tego celu (w opisie jest napisane). Należy tylko skonfigurować timer w układzie na przerwania co 4ms i za jego pomocą zająć się obsługą klawiatury. Prawdopodobnie polecenie input będzie trzeba zastąpić inkey() aby nie wstrzymywało programu w pętli głównej.
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Witam!!! Jak wysyłam jakieś
Witam!!!
Jak wysyłam jakieś dane przez terminal to jakieś dziwne znaki mi na wyświetlaczu wychodzą.
Korzystam z programu Terminal.
Jak dam 27 i send to nic się nie dzieje a powinno skasować wyświetlacz.
Co robie nie tak??
----
Mam pytanie, aby sterować drugim procesorem i aby wyświetlić (tak jak to jest standardowo w bascom np locate1,1) to trzeba dać printbin 161??
Re: Wyświetlacz
locate 1,1 to binarnie 10100001 czyli 161, zgodnie z opisem wyżej. wysłanie za pomocą printbin 161 powinno dać efekt jaki oczekujesz. W basomie trzeba dać:
bezpośrednio printbin 161 może nie działać więc trzeba dać zmienną x typu byte
:: Zapoznaj się z regulaminem :: Załóż konto! :: Wesprzyj stronę
Testowałem i normalnie działa
Testowałem i normalnie działa jak wpiszę bezpośrednio printbin xxx.
W twoim programie dodałem bufor, a w drugim procku przy częsty pisaniu na wyświetlaczu trzeba czasami dodać waitms.
Config Serialin = Buffered , Size = 20
Enable Interrupts
Post new comment