Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Problem z wyświetlaniem zmiennych na LCD

Billy
-
-
Posty:25
Rejestracja:28 lis 2004, o 17:45
Lokalizacja:Wronki
Kontaktowanie:
Problem z wyświetlaniem zmiennych na LCD

Postautor: Billy » 28 lis 2004, o 18:04

W BASCOMIE 8051 mam taki program: (bawie się na AT89C2051)

Config Lcd = 16 * 1
Dim Komunikat As String * 10
Komunikat="PORT P3.2"
Cls
Lcd Komunikat
End

Jeżeli chcę wyświetlić wartoś jakiejkolwiek zmiennej, to wyświetla się tylko 8 pierwszych jej znaków (wyświetla tylko "PORT P3."). Próbowalem wysyłać bajt po bajcie (pojedyńcze literki) i efekt był ten sam (8 znaków ). Oczywiście sprawdzałem to na różnych wersjach programu i wszedzie było identycznie.

Jesli na wyświetlacz podam jakikolwiek ciąg stałych znaków, to wszystko jest ok:


Lcd "dowolny ciag"

odp. "dowlny ciag"


Czy ktoś wie dlaczego tak się dzieje??
Czy ktoś wie w jaki sposob rozwiązać ten problem wyświetlania zmiennych??

Jeśli tak, to bedę bardzwo wdzięczny za podpowiedź.

Z góry dziękuję.

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 28 lis 2004, o 18:20

Typowy problem z wyświetlaczem 1*16.
Zmień "Config Lcd = 16 * 1" na "Config Lcd = 16 * 1a" powinno zadziałać.

Billy
-
-
Posty:25
Rejestracja:28 lis 2004, o 17:45
Lokalizacja:Wronki
Kontaktowanie:

Postautor: Billy » 29 lis 2004, o 17:45

Typowy problem z wyświetlaczem 1*16.
Zmień "Con :( fig Lcd = 16 * 1" na "Config Lcd = 16 * 1a" powinno zadziałać.
Już to robiłem, w starszej wersji BASCOM nie ma żadnych zmian, a w nowszej wyświetlacz jest głuchy :-(

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 29 lis 2004, o 20:23

To może wyświetlacz jest nietypowy? Możesz podać jego model i producenta?

Awatar użytkownika
Lemur
-
-
Posty:17
Rejestracja:27 lip 2004, o 08:30
Lokalizacja:Pruszków

Postautor: Lemur » 29 lis 2004, o 20:51

Witam...
Musisz podzielić tekst na części 8 znakowe i drugą część wysłać przez
Locate 2,1
Lcd xxxxxxx
(dzieje się tak zdaje ze względu na organizację pamięci wyświetlacza)

Billy
-
-
Posty:25
Rejestracja:28 lis 2004, o 17:45
Lokalizacja:Wronki
Kontaktowanie:

Postautor: Billy » 29 lis 2004, o 23:18

To może wyświetlacz jest nietypowy? Możesz podać jego model i producenta?
Nie... wyświetlacz jest typowy.. Hitachi 47... coś tam. Wyświetlacz jest ok.

[ Dodano: 29-11-2004, 22:41 ]
Witam...
Musisz podzielić tekst na części 8 znakowe i drugą część wysłać przez
Locate 2,1
Lcd xxxxxxx
(dzieje się tak zdaje ze względu na organizację pamięci wyświetlacza)
Dzięki za podpowiedź, Twój sposób działa.

Doszedłem sam dlaczego tak się dzieje :-)
Otórz....
Zmienna string*x skłąda się z 1byte*x i czasami (nie wiem jeszcze od czego to zależy ale chyba jak zmienna typu string jest większa niz 8, bo początkowo myślałem, ze zawsze tak jest) 1 byte o wartości hex=0A, który znajduje się zawsze na początku zmiennej typu string.
Jak wyświetlacz otrzyma taką wartość, to poprostu głupieje :-(
Doszedłem do tego przy zabawie zapisu danych w 24C02, gdzie zapisywałem bajtowo poszczególne znaki zmiennej typu string, zawsze na początku występowala warość hex=0A.
Można się o tym przekonać jeszcze w inny sposób:
Input C
(podajemy np. "jakas tam wartos") (16 znaków)
wartość z Len(C) będzie wynosiła 17 a nie szesnaście jakby się wydawało.
I myślę, że tutaj leży całkowicie przyczyna.
Jeśli ktoś zna lepsze wytłumaczenie, to bardzo proszę napiszcie.
Pozdrawiam
i jeszcze raz dziękuję :-)

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 67 gości