<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=12&amp;t=5818&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-07T10:18:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=5818&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-05T18:30:01+01:00</updated>
<published>2014-02-05T18:30:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68575#p68575</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68575#p68575"/>
<title type="html"><![CDATA[Re: BASCOM i LCD - inne spojrzenie ;)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68575#p68575"><![CDATA[
No dobra może ktoś skorzysta, może nie... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />To niestety tylko Bascom i jedno z rozwiązań z wykorzystaniem jego naturalnych możliwości poprzez proste podstawowe polecenia jakie on udostępnia. Można by walczyć bezpośrednio na obszarach przy pomocy zmiennej w trybie OVERLAY i efekt byłby lepszy tylko same procedury bardziej rozbudowane. Niestety tu elastyczność na korzyść jeżyka C jest nieporównywalna.<br />Ok, czyli robimy proste działania na zmiennych tekstowych przy pomocy polecenia MID - wycinanie fragmentów tekstu) i LEN - określanie długości tekstu, STR - zamiana liczby na tekst.<br /><br />Zalety rozwiązania:<br />- większa szybkość wyświetlania na LCD (mniej komend do wysłania = mniej czekania);<br />- pełna swoboda w pozycjonowaniu zmiennych (nie musi być już spacji na końcu do zamazywania zmniejszających się liczb;<br />- nie ma konieczności czyszczenia ekranu (po prostu nic nie drukujemy);<br />- aby coś pokazać na ekranie wystarczy wysyłać to odpowiednim poleceniem w pętli głównej, a w momencie zaprzestania wysyłania tekst sam zniknie (bardzo wygodne miganie);<br />- każdy nowy tekst napisany w miejscu już istniejącego ma priorytet i jest wyświetlany na wierzchu przez co można tworzyć ruchome warstwy lub wyświetlić chwilowy komunikat na istniejącym tle;<br /><br />No i wada niestety też jest, żeby nie było za różowo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Jak wiadomo działamy na zmiennych tekstowych, a te w bascomie potrafią narobić zamieszania i zająć sporo miejsca z czym trzeba się liczyć. Zarówno sam program może nieco przybrać na wadze, jak i pojemność RAM może okazać się za mała w niektórych przypadkach. Niemniej warto chociaż przetestować możliwości.<br /><br />Poniższy program demonstruje działanie dwóch poleceń:<br /><br />LCB Y , X , &quot;tekst&quot; - drukowanie na wybranej pozycji<br />oraz<br />LCB_VIEW - odświeżenie ekranu i ukazanie wszystkiego co było wywołane poprzednią instrukcją. Dopiero takie odświeżanie spowoduje że coś się wyświetli i należy to robić przynajmniej co 50-100ms stąd dobrze, żeby program był nieblokujący (najlepiej bez wait i pętli, które czekają na nic...). Oczywiście jeśli na ekranie nie wiele się dzieje to można to zrobić na żądanie w dowolnym momencie.<br />Uwaga aby wyświetlić jakąś zmienną numeryczną (np. zmienna temp) z dodatkami (zdefiniowane znaki, itp) należy ją zamienić najpierw na tekst przy pomocy STR() i użyć dodatkowej zmiennej tekstowej (niestety bascom nie dopuszcza podstawiania instrukcji pod zmienną) ,np:<br /><br /><strong>tekst=STR(temp)+CHR(223)+&quot;C&quot;</strong><br />i ten łańćuszek można już podstawić pod np<br /><strong>LCB 1 , 1 , tekst</strong><br /><br />Ok, programik wygląda tak:<br /><br />[syntax=basic4gl]'-----------------------------<br />'-----------------------------<br />'<br />'Buforowany LCD<br />'<br />'SylwekK<br />'4.02.2014<br />'<br />'dostępne polecenia:<br />'LCB Y,X,&quot;tekst&quot; gdzie Y (1-2) - nr lini, X (1-16) - pozycja w lini, &quot;tekst&quot; - dowolna zmienna tekstowa<br />'LCB_VIEW wysłanie na LCD (odświeżać na końcu pętli co 50-100ms z wykorzystaniem timera programowego)<br />'<br />'Warunek prawidłowego działania: program musi być pisany jako tzw. NIEBLOKUJĄCY !!!<br />'<br />'-----------------------------<br />'-----------------------------<br /><br />$sim                          'tylko do testów, dla mikrokontrolera zakomentować !!!!!!!!<br />$regfile &quot;m88def.dat&quot;<br />$crystal = 8000000<br />$hwstack = 50<br />$swstack = 50<br />$framesize = 100<br />'-----------------------------<br />'-----------------------------<br />'niezbędna konfiguracja i inicjalizacja LCD<br />Config Lcd = 16 * 2<br />Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0<br />Cursor Off Noblink<br />Cls<br />'----<br />'zmienne robocze<br />Dim Lcdb(2) As String * 16    'Bufor lini dla LCD 16x2<br />Dim Strb As String * 16       'Bufor pomocniczy dla liczb i zmiennych złożonych<br />Dim Len_t As Byte<br />Dim Poz_t As Byte<br />Declare Sub Lcb(byval Y_t As Byte , Byval X_t As Byte , Byval Tekst_b As String * 16)<br />Declare Sub Lcb_view()<br />'-----------------------------<br />'-----------------------------<br /><br /><br />'zmienne dla przykładu użycia<br /><br />Dim Z As Bit<br />Dim Zm1 As Bit<br />Dim Linia As Byte<br />Dim Px As Byte<br />Dim Xb As Byte<br /><br />Px = 1<br />Linia = 1<br />'-----------------------------<br />'-----------------------------<br />Do<br />'czym niżej w programie wywołany jest tekst tym ma większy priorytet i wyświetlany jest na wierzchu<br />'<br />'<br />'dla lepszego zobrazowania buforowania górna linia całkowicie zapełniona jakimiś znakami<br />Lcb 1 , 1 , &quot;-=o=-x-=o=-x-=o=&quot;<br /><br />'poniższy tekst się będzie przesuwać<br />Lcb 1 , Px , &quot;&lt;|&gt;&quot;<br /><br />'taka tam definicja ruchu dla obiektu<br />If Z = 0 Then<br />   If Px &lt; 14 Then Incr Px<br />Else<br />   If Px &gt; 1 Then Decr Px<br />End If<br />If Px = 14 Or Px = 1 Then Toggle Z<br /><br />'wyświetlenie przykładowej zmiennej numerycznej i kodu ASCII<br />Strb = Str(px) + Chr(223) + &quot;C temperatura&quot;<br />Lcb 2 , 1 , Strb<br /><br />'przykładowe miganie tekstem<br />Xb = Px Mod 2<br />If Xb = 0 Then Toggle Zm1<br />If Zm1 = 0 Then<br />   Lcb Linia , 6 , &quot;&#91;MIGA&#93;&quot;<br /><br />   'dodatkowa zmiana lini migania zależna od kierunku przesuwu<br />   If Z = 0 Then<br />      Linia = 1<br />   Else<br />      Linia = 2<br />   End If<br />End If<br /><br />'---<br />'Waitms 400                    'to tylko do testów i zamienić później na timer programowy !!!!!!!!!!<br />Lcb_view                      'odświeżenie LCD (wystarczy co 50-100ms)<br />Loop<br />End<br />'-----------------------------<br />'-----------------------------<br />'Głowne podprogramy obsługi LCD<br />'-----------------------------<br />'-----------------------------<br />Sub Lcb(byval Y_t As Byte , Byval X_t As Byte , Byval Tekst_b As String * 16)<br />Poz_t = X_t<br />Len_t = Len(tekst_b)<br />If Y_t = 1 Or Y_t = 2 Then<br />   Mid(lcdb(y_t) , Poz_t , Len_t) = Tekst_b<br />End If<br />End Sub<br />'-----------------------------<br />Sub Lcb_view()<br />Home<br />Lcd Lcdb(1)<br />Lowerline<br />Lcd Lcdb(2)<br />Lcdb(1) = Space(16)<br />Lcdb(2) = Space(16)<br />End Sub<br />'-----------------------------<br />'-----------------------------[/syntax]<br /><br />Program jest dość dobrze skomentowany więc nie powinno być problemu mimo, że wygląda na nieco przydługi - to demonstracja działania zajmuje więcej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Po skompilowaniu go w takiej wersji można zobaczyć od razu efekt na symulatorze bascomowym.<br /><br />Jak ktoś ma pomysły na poprawkę tego rozwiązania, (a na pewno coś by się nalazło) to oczywiście bardzo chętnie je poznam, bo to było robione tak na szybko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 5 lut 2014, o 18:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-04T20:51:45+01:00</updated>
<published>2014-02-04T20:51:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68400#p68400</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68400#p68400"/>
<title type="html"><![CDATA[Re: BASCOM i LCD - inne spojrzenie ;)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68400#p68400"><![CDATA[
Bardzo chętnie poznam ten kod. Mi się podoba, tym bardziej że korzystam z bascoma<br /><br />Wysłane z mojego LG-P760 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 4 lut 2014, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-07T10:18:10+01:00</updated>
<published>2014-02-04T20:47:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68398#p68398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68398#p68398"/>
<title type="html"><![CDATA[BASCOM i LCD - inne spojrzenie ;)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5818&amp;p=68398#p68398"><![CDATA[
Musiałem się jeszcze ostatnio nieco pobawić BASCOM'em, a poniżej efekt moich rozmyślań <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />Ciekawe ile osób się domyśli co to jest i jakie to daje możliwości <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Zapewniam, że kod jest prościutki i malutki, a po bliższym zapoznaniu można zapomnieć o standardowych komendach dla LCD. Pomijam już fakt animacji na innym tekście, ale koniec ze stosowaniem spacji na końcu tekstu dla zmniejszających się wyników z większych liczb powinien nie jednego przekonać... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Jeśli będzie zainteresowanie tematem to przygotuję mały opis jak to ugryźć w BASCOM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 4 lut 2014, o 20:47</p><hr />
]]></content>
</entry>
</feed>