<?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=4&amp;t=1967&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-23T19:12:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1967&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-23T19:12:49+01:00</updated>
<published>2012-12-23T19:12:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21999#p21999</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21999#p21999"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21999#p21999"><![CDATA[
w ten sposób tracisz więcej pamięci flash a w tym przypadku także ram. Można np tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]void clear_line( uint8_t line ) {<br /><br />   uint8_t i;<br />   lcd_locate( line, 0 );<br />   for( i=0; i&lt;16; i++) lcd_char(' ');<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 gru 2012, o 19:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2012-12-23T18:48:44+01:00</updated>
<published>2012-12-23T18:48:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21998#p21998</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21998#p21998"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21998#p21998"><![CDATA[
Np tak:<br /><br />[syntax=c]<br />void clear_lcd(uint8_t line)<br />{<br />     lcd_locate(line,0);<br />     lcd_str(&quot;                &quot;);<br />}<br />[/syntax]<br /><br />??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 23 gru 2012, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tom1988p]]></name></author>
<updated>2012-12-23T18:44:40+01:00</updated>
<published>2012-12-23T18:44:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21997#p21997</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21997#p21997"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21997#p21997"><![CDATA[
Ja bym zapisał spacjami całą linijkę. Może wystarczy stworzyć makro?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=746">tom1988p</a> — 23 gru 2012, o 18:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-23T15:42:02+01:00</updated>
<published>2012-12-23T15:42:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21952#p21952</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21952#p21952"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21952#p21952"><![CDATA[
<div class="quotetitle">Taktyk napisał(a):</div><div class="quotecontent"><br />Czy spotkał się ktoś z funkcją podobną w działaniu do lcd_cls(); ale czyszcząca tylko jedną wybraną linie alfanumerycznego wyświetlacza LCD?<br /></div><br /><br />Tak - ja się spotkałem - po raz pierwszy się z nią spotkałem gdy ją sam sobie napisałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Napisz ją sobie - to na prawdę nie jest trudne. Ale jeśli napotkasz przy tym kłopot - to śmiało pytaj , pokaż co stworzyłeś i gdzie masz problem - szybko pomożemy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 gru 2012, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Taktyk]]></name></author>
<updated>2012-12-23T12:40:58+01:00</updated>
<published>2012-12-23T12:40:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21931#p21931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21931#p21931"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21931#p21931"><![CDATA[
Czy spotkał się ktoś z funkcją podobną w działaniu do lcd_cls(); ale czyszcząca tylko jedną wybraną linie alfanumerycznego wyświetlacza LCD?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=139">Taktyk</a> — 23 gru 2012, o 12:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2012-12-22T08:08:26+01:00</updated>
<published>2012-12-22T08:08:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21843#p21843</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21843#p21843"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21843#p21843"><![CDATA[
Koledzy, przeanalizowałem Wasze sposoby i uważam, że obydwa są dobre. Zniwelowały migotanie oraz nakładające się napisy i o to chodziło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Dziękuję za pomoc!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 22 gru 2012, o 08:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-21T23:22:53+01:00</updated>
<published>2012-12-21T23:22:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21827#p21827</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21827#p21827"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21827#p21827"><![CDATA[
eeee tam <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />w ogóle nie stosuj lcd_cls() - to tragicznie powolna operacja i w zasadzie jak dobrze pomyśleć to prawie w ogóle niepotrzebna.<br /><br />Po pierwsze po co w każym case stosujesz ten sam zapis ????<br /><br />[syntax=c]lcd_locate(0,5);<br />lcd_str(&quot;MENU&quot;);[/syntax]<br /><br />czyż nie lepiej dać to jeden raz przed instrukcją switch ???<br /><br />to po pierwsze<br /><br /><strong><span style="color: #FF0000"><em>lcd_cls()</em></span></strong> w ogóle wywalasz z tego kodu na zbity pyszczek <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />a w każdym case dajesz sobie:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_locate(1,0);</div><br /><br />a potem kolejno:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_str(&quot;                &quot;);<br /><br />lcd_str(&quot;1. Zapal diode  &quot;);<br /><br />lcd_str(&quot;2. Zgas diode   &quot;);</div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />to jeden z najprostszych sposobów oczywiście<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 gru 2012, o 23:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Klucha]]></name></author>
<updated>2012-12-21T22:21:05+01:00</updated>
<published>2012-12-21T22:21:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21823#p21823</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21823#p21823"/>
<title type="html"><![CDATA[Re: Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21823#p21823"><![CDATA[
Jeżeli chcesz kolego, aby nie migały ci wyświetlane znaki spowodowane ciągłym lcd_cls(); to możesz uzyć tej funkcji tylko tu:<br />[syntax=c]   if(klawisz_wcisniety(KEY1_PIN))                         //jesli wcisnales przycisk strzalka w bok<br />                {<br />                        _delay_ms(200);                                                 //odczekaj chwile<br />                        menu_element++;                                                 //oraz zwieksz licznik elementu menu<br />                        lcd_cls();<br />                }[/syntax]<br />Funkcja ta wykona się tylko raz podczas wciśnięcia:) Sprawdź sobie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=232">Klucha</a> — 21 gru 2012, o 22:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2012-12-22T08:06:33+01:00</updated>
<published>2012-12-21T20:47:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21813#p21813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21813#p21813"/>
<title type="html"><![CDATA[Realizacja menu na wyświetlaczu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1967&amp;p=21813#p21813"><![CDATA[
Witam!<br /><br />Wpadłem na genialny pomysł, aby poćwiczyć programowanie w C dla Atmegi32 i wymyśliłem programik, który będzie realizował proste zadania, wybierając je odpowiednio z menu na wyświetlaczu LCD.<br /><br />Założenia:<br /><br />Dwa przyciski: <strong>strzałka</strong>, która zmienia aktualnie wybrany element menu oraz <strong>enter</strong><br />Dioda LED: aby coś tam się działo po wciśnięciu Enter.<br />Niestety to tyle, bo nie mam więcej drucików do zestawu ATB <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Spłodziłem pewien kod, który działa bardzo dobrze, ALE.<br /><br />Mam jego dwie wersje: <br /><br />Pierwsza posiada błąd migotania - zauważalnie napisy migoczą dlatego, że w pętli czyszczę i wyświetlam napis na LCD, czyszczę i wyświetlam, czyszczę i wyświetlam [...]<br /><br />Druga posiada błąd braku wygaszania - Załóżmy, że napisałem słowo: DLUGASNY_NAPIS [14 znaków]. Potem chcę wyświetlić napis PIES [4 znaki] bez kasowania. Wiadomym jest to, że wyświetli mi się PIESASNY_NAPIS, ponieważ nie wygasił poprzednich śmieci.<br /><br />I teraz nie wiem co zrobić. Fakt, że wymyśliłem na szybko kod obsługi menu, na pewno istnieje inny, lepszy. Może ktoś się podzieli swoimi spostrzeżeniami? Chciałbym rozwinąć kiedyś menu, i zrobić kod taki jakby uniwersalny dla MENU, że jak sobie kiedyś wymyślę, aby zrobić termostat na AVR, to abym mógł zaadaptować już stworzone wcześniej menu. Taką mam zasadę życiową, po co tworzyć na nowo żarówkę, jak ktoś już ją wcześniej stworzył? Oczywiście chodzi mi o to, że to ja stworzyłem żarówkę (menu), kumacie? Ee, nie ważne <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Oto moje wypocinki:<br /><br />[syntax=c]<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define KEY1_PIN (1&lt;&lt;PC0)//przycisk 1 - port PC0<br />#define KEY2_PIN (1&lt;&lt;PC1)//przycisk 2 - port PC1<br /><br />#define LED_PIN (1&lt;&lt;PD0)//dioda LED - port PD0<br />#define LED_ON PORTD &amp;= ~LED_PIN//dioda LED - makro ON<br />#define LED_OFF PORTD |= LED_PIN//dioda LED - makro OFF<br />#define LED_BLACKLIGHT (1&lt;&lt;PB7)//wyswietlacz LED - port podswietlenia<br />#define LED_BLACKLIGHT_ON PORTB |= LED_BLACKLIGHT//wyswietlacz LED - marko BLACKLIGHT=ON<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz);//funkcja obslugujaca wcisniecie klawisza<br />void set_menu(uint8_t element);//funkcja wywolujaca zdarzenie z menu<br />void menu(uint8_t element);//funkcja wyswietlajaca menu<br /><br />int main(void)<br />{<br /><br />uint8_t menu_element = 0;//licznik, dzieki ktoremu wiem w ktorym<br />//elemencie menu jestem<br />LED_BLACKLIGHT_ON;<br /><br />DDRD |= LED_PIN;<br />PORTD |= LED_PIN;<br />DDRC &amp;= ~( KEY1_PIN | KEY2_PIN );<br />PORTC |= KEY1_PIN | KEY2_PIN;<br /><br />lcd_init();<br />lcd_cls();<br /><br />while(1)<br />{<br /><br />menu(menu_element);//wyswietl menu o odpowiednim elemencie<br /><br />if(klawisz_wcisniety(KEY1_PIN))//jesli wcisnales przycisk strzalka w bok<br />{<br />_delay_ms(200);//odczekaj chwile<br />menu_element++;//oraz zwieksz licznik elementu menu<br />}<br /><br />if(klawisz_wcisniety(KEY2_PIN))//jesli wcisnales przycisk enter<br />{<br />set_menu(menu_element);//wywolaj funkcie set_menu()<br /><br />}<br />if (menu_element &gt; 2) menu_element = 0;//menu zawiera 2 elementy, jesli przekroczysz<br />}//2 to zeruj licznik<br /><br />}<br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />if (!(PINC &amp; klawisz))<br />{<br />_delay_ms(80);<br />return 1;<br />}<br />return 0;<br />}<br /><br />void set_menu(uint8_t element)<br />{<br />switch(element)<br />{<br />case 0:<br />break;<br />case 1:<br />LED_ON;<br />break;<br />case 2:<br />LED_OFF;<br />break;<br />}<br />}<br /><br />void menu(uint8_t element)<br />{<br />switch(element)<br />{<br />case 0:<br />lcd_cls();//jak tego nie dam to nie migota<br />lcd_locate(0,5);<br />lcd_str(&quot;MENU&quot;);<br />break;<br />case 1:<br />lcd_cls();//jak tego nie dam to nie migota<br />lcd_locate(0,5);<br />lcd_str(&quot;MENU&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;1. Zapal diode&quot;);<br />break;<br />case 2:<br />lcd_cls();//jak tego nie dam to nie migota<br />lcd_locate(0,5);<br />lcd_str(&quot;MENU&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;2. Zgas diode&quot;);<br />break;<br />}<br />}<br /><br />[/syntax]<br /><br />Film z migotaniem napisów<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 />Film z nakładającymi się napisami:<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><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 21 gru 2012, o 20:47</p><hr />
]]></content>
</entry>
</feed>