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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-05-04T18:56:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15295&amp;mode</id>
<entry>
<author><name><![CDATA[vitt]]></name></author>
<updated>2016-05-04T18:56:39+01:00</updated>
<published>2016-05-04T18:56:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159992#p159992</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159992#p159992"/>
<title type="html"><![CDATA[Re: Ustawienie czasu - przemieszczanie kursora LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159992#p159992"><![CDATA[
Ogarnąłem to na swój sposób, może nieestetycznie to wygląda, ale działa tak jak chciałem. Dla zainteresowanych kod poniżej.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br /><br /><br /><br />int dz_godz=0;<br />int jed_godz=0;<br />int dz_minut=0;<br />int jed_minut=0;<br />uint8_t key_lock;<br /><br />char buffer&#91;10&#93;;<br /><br />#define up (1&lt;&lt;PC5)<br />#define ok (1&lt;&lt;PC4)<br /><br /><br />int main (void){<br /><br />PORTC |= up | ok;<br />LCD_Initalize();<br /><br />while(1){<br /><br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;WPROWADZ CZAS&quot;);<br />LCD_GoTo(0,1);<br />LCD_WriteText(itoa(dz_godz,buffer,10));<br />LCD_WriteText(itoa(jed_godz,buffer,10));<br />LCD_GoTo(2,1);<br />LCD_WriteText(&quot;:&quot;);<br />LCD_WriteText(itoa(dz_minut,buffer,10));<br />LCD_WriteText(itoa(jed_minut,buffer,10));<br /><br />//////////////////////// ustawianie godziny i obsluga przyciskow<br /><br /><br />////// DZIESIATKI GODZIN<br />while(PINC &amp; ok){<br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />dz_godz++;<br />if (dz_godz == 3)<br />dz_godz = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br />LCD_GoTo(0,1);<br />LCD_WriteText(itoa(dz_godz,buffer,10));<br />}<br />_delay_ms(200);<br /><br />////// JEDNOSCI GODZIN<br />while(PINC &amp; ok){<br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />jed_godz++;<br />if (jed_godz == 10)<br />jed_godz = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br />LCD_GoTo(1,1);<br />LCD_WriteText(itoa(jed_godz,buffer,10));<br />}<br />_delay_ms(200);<br /><br /><br />////// DZIESIATKI MINUT<br />while(PINC &amp; ok){<br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />dz_minut++;<br />if (dz_minut == 6)<br />dz_minut = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br />LCD_GoTo(3,1);<br />LCD_WriteText(itoa(dz_minut,buffer,10));<br />}<br />_delay_ms(200);<br /><br /><br />////// JEDNOSCI MINUT<br />while(PINC &amp; ok){<br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />jed_minut++;<br />if (jed_minut == 10)<br />jed_minut = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br />LCD_GoTo(4,1);<br />LCD_WriteText(itoa(jed_minut,buffer,10));<br />}<br />_delay_ms(200);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13803">vitt</a> — 4 maja 2016, o 18:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wchpikus]]></name></author>
<updated>2016-05-03T19:23:33+01:00</updated>
<published>2016-05-03T19:23:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159888#p159888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159888#p159888"/>
<title type="html"><![CDATA[Re: Ustawienie czasu - przemieszczanie kursora LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159888#p159888"><![CDATA[
Ok.<br />Wchodzisz w tryb programowania.<br />Nowe zmienne lokalne pozycja i buf_ustaw.<br />Pozycje masz 0,1 dla godziny i 3,4 dla minut tak?<br />Zmiena pozycja musi sie zmieniac 0,1,3,4,=&gt;0.1...<br />Wiec albo select case lub if jak wolisz.<br /><br />Sprawdzasz pozycja i reagujesz na klawisz up, rozumiem ze ok potwierdza i przechodzi do nastepnej wartosci?<br />Czyli ok wybierasz pozycja.<br />Up wtedy ustawiasz<br />Ok wybierasz nastepna pozycje.<br />Buf-ustaw bym zrobil bys zapisal do niej wartosc przed zmiana ( po klawiszu ok), i zmienial ja, przed wyjsciem do nastepnej pozycji przypisac do zczytanej poprzednio.<br />Zawsze bedziesz mial zmienna taka sama jak masz przed zmianami.<br /><br />Teraz nie rozpisze kodu na komorce ciezko;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3859">wchpikus</a> — 3 maja 2016, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[vitt]]></name></author>
<updated>2016-05-03T17:34:38+01:00</updated>
<published>2016-05-03T17:34:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159867#p159867</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159867#p159867"/>
<title type="html"><![CDATA[Re: Ustawienie czasu - przemieszczanie kursora LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159867#p159867"><![CDATA[
Wyświetlacz to HD44780 16x2 w trybie 4-bitowym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13803">vitt</a> — 3 maja 2016, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wchpikus]]></name></author>
<updated>2016-05-03T17:26:02+01:00</updated>
<published>2016-05-03T17:26:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159863#p159863</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159863#p159863"/>
<title type="html"><![CDATA[Re: Ustawienie czasu - przemieszczanie kursora LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159863#p159863"><![CDATA[
Ja bym zrobil tak:<br />Wprowadz sobie zmienna pozycja.<br />Jaki to lcd? 4 linie po ile wierszy?<br />Klawiszem bedziesz ustawial pozycje, potem zrob case od pozycji i tam zmieniaj nastawy.<br />Teraz to ja nic z tego nie rozumiem;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3859">wchpikus</a> — 3 maja 2016, o 17:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[vitt]]></name></author>
<updated>2016-05-03T17:06:45+01:00</updated>
<published>2016-05-03T17:06:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159860#p159860</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159860#p159860"/>
<title type="html"><![CDATA[Ustawienie czasu - przemieszczanie kursora LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15295&amp;p=159860#p159860"><![CDATA[
Witam!<br /><br />Za pomocą dwóch przycisków chcę sterować ustawieniem godziny na wyświetlaczu LCD. Przycisk &quot;up&quot; poprzez przytrzymanie go lub naciskanie ma ustawiać poszczegolne sekcje godziny (dziesiątki godzin, jedności godzin, dziesiątki minut, jedności minut) a przycisk &quot;ok&quot; ma zmieniać pozycję kursora i zatwierdzać poprzednią sekcję. Niestety pomimo licznych prób nadal nie wiem jak powinien wyglądać kod. Doszedłem do momentu krytycznego i potrzebuję waszej pomocy.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br /><br />int dz_godz=0;<br />int jed_godz=0;<br />int dz_minut=0;<br />int jed_minut=0;<br />uint8_t key_lock;<br /><br />char buffer&#91;10&#93;;<br /><br />#define up (1&lt;&lt;PC5)<br />#define ok(1&lt;&lt;PC4)<br /><br />int main (void){<br /><br />PORTC |= up | ok ;<br /><br />while(1){<br />LCD_Initalize();<br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;WPROWADZ CZAS&quot;);<br />LCD_GoTo(0,1);<br />LCD_WriteText(itoa(dz_godz,buffer,10));<br />LCD_WriteText(itoa(jed_godz,buffer,10));<br />LCD_GoTo(2,1);<br />LCD_WriteText(&quot;:&quot;);<br />LCD_WriteText(itoa(dz_minut,buffer,10));<br />LCD_WriteText(itoa(jed_minut,buffer,10));<br /><br />//////////////////////// ustawianie godziny i obsluga przyciskow<br /><br />////// DZIESIATKI GODZIN<br /><br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />dz_godz++;<br />if (dz_godz == 3)<br />dz_godz = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br /><br />if(!(PINC &amp; ok))<br />LCD_GoTo(1,1);<br /><br />////// JEDNOSCI GODZIN<br /><br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />jed_godz++;<br />if (jed_godz == 10)<br />jed_godz = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br /><br />if(!(PINC &amp; ok))<br />LCD_GoTo(3,1);<br /><br />////// DZIESIATKI MINUT<br /><br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />dz_minut++;<br />if (dz_minut == 6)<br />dz_minut = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br /><br />if(!(PINC &amp; ok))<br />LCD_GoTo(4,1);<br /><br />////// JEDNOSCI MINUT<br /><br />if (!key_lock &amp;&amp; !(PINC &amp; up)){<br />_delay_ms(200);<br />jed_minut++;<br />if (jed_minut == 10)<br />jed_minut = 0;<br />}else if(key_lock &amp;&amp; (PINC &amp; up)) key_lock++;<br />}<br />}[/syntax]<br /><br />Projekt tworzę na ATmega8.<br />W tej chwili działa to tak, że poprzez naciskanie przycisku zmienia się pozycja od dziesiątek godzin. Przy przytrzymaniu zmieniają się wszystkie sekcje. Czy ktoś z szanownych forumowiczów mógłby pomóc z kodem lub chociaż naprowadzić na prawidłowy tok myślenia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13803">vitt</a> — 3 maja 2016, o 17:06</p><hr />
]]></content>
</entry>
</feed>