A jakby oprogramowanie napisał w linux'ie to już zupełnie samo by chodziło...
Zwalanie krzaczenia lcd'ka na język to próba wykazania wyższości świąt Bożego Narodzenia nad świętami Wielkiej Nocy - bzdura.
jacynka84:
Nie wiem czy próbujesz wykorzystywać jakieś biblioteki do KS'a, jeśli tak to daruj sobie taką pomoc. Ten lcd nie przyjmuje danych jako textowe lub graficzne ponieważ nie ma zaimplementowanego generatora znaków. Cokolwiek próbujesz wyświetlić to zawsze jest tak naprawdę pionowa kreska 1x8 pixeli. Wynika z tego, że chcąc wyświetlić text musisz umieścić w programie tablice danych dla każdej litery i (najlepiej) tablice danych dla grafiki. Przemyślane gospodarowanie przestrzenią wyświetlacza gwarantuje, że nawet wyświetlając text na tle obrazka zostanie zamazany tylko jego fragment w miejscu gdzie aktualnie pojawia się napis. Należy pamiętać, że po wysłaniu danych do rejestru lcd, jego licznik zwiększa automatycznie adres pozycji Y o jeden. Więc jeśli pozostawisz jakąś wartość na porcie danych i przytrzaśniesz ENA to zostanie to wrzucone na lcd'ka. Dlatego istotna jest kolejność wystawiania sygnałów RS, R/W i ENA szczególnie po wysłaniu ostatniego bajtu danych.
Ja zrobiłem to tak:
Sub Posit
Reset Rs
Reset Rw
Set Ena
Waitus 5 ' Delay
Porta = Y
Reset Ena
Waitus 5 ' Delay
Set Ena
Porta = X
Reset Ena
Waitus 5 ' Delay
Porta = 0
Set Ena
Return
End Sub
Sub Marksend
Call Posit
Set Rs
For Count = 1 To Ends
Read Dane
Porta = Dane
Reset Ena
Waitus 5 ' Delay
Set Ena
If Wireflag = 4 Then
Temp = Ends
Elseif Wireflag = 5 Then
Temp = Ends / 3
If Count > 16 Then
Temp = Ends - 16
End If
Elseif Wireflag = 7 Then
X = X - 1
Reset Rs
Porta = X
Reset Ena
Waitus 5
Set Ena
Set Rs
Else
Temp = Ends / 2
End If
If Count = Temp Then
Y = Y + 1
Set Rw
Reset Ena
Call Posit
Set Rs
End If
Next Count
Count = 1
Temp = 0
Return
End Sub
Procedura Posit ustala położenie "kursora" w danej połówce lcd, a Marksend wysyła dane z tablic do wyświetlacza.
Zmienna Wireflag ustala w ilu liniach wyświetlany będzie znak/obraz, Na jej podstawie wyliczany jest moment zmiany linii lcd o 1 w związku z długością tablicy danych wyrażoną zmienną Ends.
Jak widać da się to zrobić nawet w durnym Bascomie...
Pzdr.