LPT LCD ANSI C

0

Witam kolegów
Mam WIELKI PROBLEm, a co za tym idzie wielką prośbę do Was...Podłączyłem sobie wyświetlacz z procesorkiem H44780 według schematu poniżej
user image

...No i tu zaczyna się problem.Potrzebuję napisać do szkoły program obsługujący ten wyświetlacz w języku C, spod konsoli. NIe wiem za bardzo jak teraz ten kod przekierować, żeby pracował LPT---LCD

Będę wdzięczny za wszelką pomoc...

0

Oj, człowieku to co napisałeś to "bełkot". PC to nie mikrokontroler. Skorzystaj np. z biblioteki inpout32.dll której opisy są w internecie i są również w j. polskim.
Poza tym zapoznaj się z informacjami nt tych wyświetlaczy.
http://www.google.com/search?client=opera&rls=pl&q=sterowanie+wy%C5%9Bwietlacz+hd44780&sourceid=opera&ie=utf-8&oe=utf-8

oraz masz gotowe programy wraz z opisami:
http://www.rafal.waw.pl/wynalazki/lcd/artykul/

////q: innym razem RR napisal:

gizmo1985 wydaje mi się, że porywasz się z motyką na słońce. Skoro dopiero zaczynasz programować w C, to zacznij od czegoś prostszego. Dobrze, że nie postanowiłeś windowsa napisać na samym początku.

Jak wysłać ramkę. Dokładnie tak, jak ci podałem -> google. Ale skoro masz bana na google to:
http://aq.ia.agh.edu.pl/Aquarium/Dydaktyk/Laborat/PUE/Cw8_AVR_LCD.pdf
http://radzio.dxp.pl/hd44780/hd44780_podstawy.htm
http://www.elb.vectranet.pl/~krzysztofg/projekty/o_wyswietlaczach_alfanumerycznych.htm
http://stud.wsi.edu.pl/~sikrolb/artykuly-obsluga_lcd.html
itp

Wiem, że najlepiej byłoby gdyby to ktoś za ciebie napisał, ale to nie takie proste :). Trzeba się wysilić samemu. Masz tutaj dokumentację, wcześniej był link w którym była podana nazwa programu do obsługi wyświetlacza (który niegdyś osobiście testowałem). Tym programem sprawdzisz czy faktycznie dobrze podłączyłeś swój wyświetlacz, a potem już tylko poczytasz i popróbujesz. Jeden link ma nawet podany algorytm co krok po kroku wysyłać. Nic tylko bierz się do roboty...

0

No i tu mi rozjaśniłeś :) Teraz już kumam o co chodzi mniej więcej ;) ... google przeglądałem, ale widocznie słabo się kierunkowałem :)

RS :
stan L - do wyświetlacza podany będzie rozkaz,
stan H - do wyświetlacza wysłana zostanie dana,

  • RS podłączamy do pinu 1 złącza LPT.

Jeszcze tu mam kłopot...podłączenie OK, wysłanie 1 jest OK .... RS=1 lub RS=0, gdy 0, wtedy możemy wedle tabelki wysyłać rozkaz ;) OK...Ale jak identyfikować piny ? aki adres ma pin 1, pin 2... Mnie się zdaje, że pin 1, to 0x01h, ale moge się mylić ;)
Jeżeli choedzi o taki rodzaj elektroniki, to juz próbowałem...bawię się AVR-kami, ale pod BASCOMEM i nie LCD, a ten program piszę do szkoły...:)

Dzięki za zainteresowanie ;)

Pozdrawiam

0
gizmo1985 napisał(a)
#include <dos.h>
//...
#include <windows.h>

Może byś tak się zdecydował jakiego systemu używasz? A błąd jest dlatego, że to jest inline w asm dla trybu 16bit, int ma tam 16bit, Twój program zaś jest kompilowany pod Windows, jako 32bit. DX to rejstr 16bit, dolna cześć rejestru EDX - 32bit, ale... ten inline i tak nie zadziała, od dawna nie ma bezpośredniego dostępu do portów dla zwykłego programu.
Skoro podałeś wcześniej kod dla biblioteki inpout32.dll to jej użyj.

0

Ale jak identyfikować piny ? jaki adres ma pin 1, pin 2...

Przyznam, że nie rozumiem. Rozrysowałeś sobie:

podlaczenie
        LPT                LCD
        -------------------
        3(D1)        ->        R/S
        4(D2)        ->        R/W
        5(D3)        ->        EN
        6(D4)        ->        D4
        7(D5)        ->        D5
        8(D6)        ->        D6
        9(D7)        ->        D7

No więc jaki masz problem. Pin R/S to przesłanie na port 0x378 wartości 0x02, potem R/W 0x04, EN 0x08, D4 0x10 itd itd. O których pinach więc mówisz?
Port 0x378 to wyjście na świat w LPT, LPT pod tym portem to 8 bitów wyprowadzonych na wyjściach 2-9 gniazda. Więc żeby zapalić np. 3 i 8 bit to wpisz do portu 0x378 wartość (0x04 | 0x80).

Poza tym jak napisał deus wywal tego DOSa i korzystaj z biblioteki inpout32 którą ci zapodałem. Pisałem kiedyś coś takiego, ale nie mam teraz tego kodu, gdzieś się zawieruszył, więc i tobie zadziała na pewno jak napiszesz dobrze (i pomyślisz co piszesz).

0

no i chyba znowu zwiecha...szukam i szuak i nie wiem, jak pod to podpiąć tę funkcję z biblioteki...sorki za głupotę, ale dopiero zaczynam...
zrozumiałem, że oup32 (port, rozkaz) wysyła na port....No oki....a załóżmy, że chcę wysłac wyczyśczenie ekranu i napis na ekran, to jak mam się do tego zastosować ?

Pozdroo

0

Jejku, czy ty chociaż przeczytałeś jedno zdanie z tego co ci podałem, bo ja w to wątpię:
Display clear - (RS = 0, R/W = 0, dane = 00000001) -instrukcja ta powoduje wyczyszczenie wyświetlacza poprzez wypełnienie go spacjami, ustawienie trybu zapisu danych od pozycji w lewym górnym rogu wyświetlacza oraz wyłączenie trybu przesuwania okna; maksymalny czas trwania instrukcji - 1,64ms

A tak naprawdę to jestem ciekaw czy masz bana na google. Pomyśl, siedzisz tyle czasu grzebiesz zamiast wcisnąć szukaj i poszukać. Przecież to jest trudne do nazwania.

http://www.edw.com.pl/pdf/k09/23_01.pdf
http://www.edw.com.pl/pdf/k09/24_07.pdf
http://www.edw.com.pl/pdf/k09/25_10.pdf
http://www.edw.com.pl/pdf/k09/27_01.pdf

Jeśli po przeczytaniu tego nadal nie będziesz w stanie sobie poradzić, to już chyba nikt ci nie poradzi nic prócz gotowca. TYLKO PRZECZYTAJ TO! Na podstawie tych opisów w j. polskim to można samemu zrobić sterownik zgodny z HD44780 i nie trzeba znać angielskiego. Tak więc jeśli sobie nie poradzisz to znajdź sobie coś prostszego do zrobienia np. podłącz jedną cyfrę wyświetlacza siedmiosegmentowego i tam poćwicz.

A to co mi podesłałeś z EDW, powinno być miodzio

Mam nadzieję, bo brakło mi słów...

Jeżeli choedzi o taki rodzaj elektroniki, to juz próbowałem...bawię się AVR-kami, ale pod BASCOMEM i nie LCD, a ten program piszę do szkoły...

////q: innym razem RR napisal

To co ty piszesz na AVRy? Masz przecież podstawowe problemy ze zrozumieniem portów (bity w bajcie), problem ze zrozumieniem prostych zapisów, a nawet pełnych algorytmów inicjalizacji podanych w postaci blokowej (jeden z linków z pierwszej listy). Jak bez takiej wiedzy najniższego poziomu można coś napisać na AVR? Sorki, ale po prostu tego nie rozumiem ;) Jeśli bawiłeś się na avrach to napisz sam to na avrze a potem to samo przepisz na PC z wykorzystaniem inpout32.dll, co jest normalnie trywialne. Sam bym ci to przepisał, ale za lenistwo zrobisz sobie to sam :P.

0

przysiądę, spróbuję zakumać...masz rację chyba za słabo przysiadłem do samej teorii wyswietlacza...co do zrozumienia...to mój pierwszy większy program w C, także nie jestem jeszcze oblatany ;) w Bascomie bawiłem się diodami i prostymi matrycami LED...tam est zrozumiałem dostanie się do portu ;) , a tutaj nie potrafię tego zakumać ;) Ale przycisneliście mnie ...to się wezmę :D jeszcze się zdzwicie ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1