Sterowanie wyswietlaczem LCD przez port LPT

JacekH

Ponieważ sam długo szukałem, ale w końcu znalazłem, więc podzielę się tym, co wiem.

Skorzystałem z freeware'owego zlportio [jest np. na stronce Torry's Delphi...]. Oczywiście pod NT (XP/2K) trzeba doinstalować obsługę portu [google i port95nt3.exe]. Podstawowe elementy kodu:

const
  Data    = $378; // domyślny adres portu
  Status  = Data + 1; 
  Control = Data + 2; 
 
//Posłużyłem się dwoma procedurami:
 
procedure LCD_WriteCommand(a: Byte);
// Wysylanie komend sterujacych
begin
  zlioportwrite(Data, 0, a);
  Sleep(5);
  zlioportwrite(Control, 0, $02);
  Sleep(5);
  zlioportwrite(Control, 0, $03);
  Sleep(5);
end;
 
procedure LCD_WriteData(a: Byte);
// Wysylanie danych
begin
  zlioportwrite(Control, 0, $06);
  Sleep(5);
  zlioportwrite(Data, 0, a);
  Sleep(5);
  zlioportwrite(Control, 0, $07);
  Sleep(5);
end;
 
//Procedura inicjalizacji może wyglądać np. tak
procedure LCD_Init;
begin
  LCD_WriteCommand($38);
  Sleep(20);
  LCD_WriteCommand($06);
  Sleep(20);
  LCD_WriteCommand($0C);
  Sleep(20);
  LCD_WriteCommand($01);
  Sleep(20);
end;
 
//Czasem LCD może "nie załapać" startu, więc $38 można posłać dwa, trzy razy.
 
//Potem jest już z górki ;-) 
LCD_WriteCommand($01) to czyszczenie ekranu
LCD_WriteCommand($02) to powrót kursora na początek
 
//a wysłanie tekstu:
 
procedure LCD_StringSend(S: String);
var
  i: Byte;
begin
  for i := 1 to Length(S) do LCD_WriteData(Ord(S[i]));
end;

Wiem, że to banalne, ale trzeba trochę poszukać. Pozostałe komendy sterujące są w pdf HD44780. Mam nadzieję, że komuś się to przyda ;-)

Jacek

8 komentarzy

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Najlepiej to pobrać sobie jakiś program do sterowania wyświetlaczem ▒
▒ np LCD Ekspert ▒
▒ i jeśli nam czegoś brakuje to napisać do autora programu. ▒
▒ Ja już tak zrobiłem i w następnej wersji już ta funkcja się pojawiła. ▒
▒ ▒
▒ Pozdrawiam ▒
▒ ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Generalnie - pytałem na forum, szukałem na nim i odpowiedzi nie znalazłem; przykłady w sieci opierały się na paru przykładach w C, które mimo przełożenia na mój LCD nie działały. Wiem, że nie odkrylem Ameryki, ale chodziło mi właśnie o te podstawy, których ja nie doszukałem się. Reszta to kwestia rozwinięcia.

chmolu: to nie komponent; teoretycznie można napisać taki, ale żeby był uniwersalny to trzebaby trochę popisać - wyświetlacze mają różną wielkośći dodatkowe funkcje;

Snowak: "Napisales to takim językiem" - co masz na myśli?

Snowak: "Mam wrazenie, ze sam se ocene wystawiles ! ! ! N I E Ł A D N I E ! ! !" - na podstawie czego takie bzdurne pomówienie? Może raczyłbyś zapytać np. admina, jeżeli ten loguje te wpisy, kto wystawił ocenę, zanim odezwiesz się...

Kaboo: Standard HD44780 - bardzo popularne, również na allegro. Od prostych 1x24 znaki po naprawdę duże. Ja konkretnie użyłem 3x24. Przed zakupem dowiedz się o złącze - jeśli jest to ta cienka listwa krawędziowa, to możesz mieć problemy ze znalezieniem gniazda.

Witajcie, uruchomiłem forum o wyświetlaczach LCD pod LPT pod adresem www.lcdstudio.com.pl. Zapraszam wszystkich do pisania i rozwijania tematu.

A jaki schemat podłączenia wyświetlacza do portu LPT użyłeś?

Wystarczy Sleep(2); .... (wiem z autopsji...)
Wrzucę niedługo komponent do tego (kiedyś coś takiego robiłem)....
Idzie o LCD z chipem HD44780 - dostępne w sklepach z elektroniką ...

A może ktoś wie jaki do tego jest potrzebny wyświetlacz? Byłbym wdzieczny :)

Wg mnie wystarczyło wrzucić ten komponent do downloadu. A z Twojego arykułu i tak wiele się dowiedziec nie mozna.