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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-15T13:49:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=8399&amp;mode</id>
<entry>
<author><name><![CDATA[Pawel W.]]></name></author>
<updated>2014-09-15T13:49:15+01:00</updated>
<published>2014-09-15T13:49:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=95539#p95539</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=95539#p95539"/>
<title type="html"><![CDATA[Re: Sterowanie LCD numerycznym  bez drivera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=95539#p95539"><![CDATA[
Temat widzę trochę przygasl brak znajomości obsługi lcd albo co niektórzy uważają ze mozna zastosować mux drivera , którego mogę zastować no ale i po co  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  Temat sterowania może się przydać każdemu więc zamieszczam moje kolejne etapy tzn kody jeszcze nie pełne bo pewne problemy są do rozwiązania.<br />[syntax=c]volatile int a,i,j,licznik=1;<br />volatile int cyf_w;//$cyfry wyswietlanej<br />volatile unsigned int znak&#91;5&#93;&#91;3&#93;={<br />LP4,LP5,LP6,<br />LP7,LP8,LP9,<br />LP10,LP11,LP12,<br />LP13,LP14,LP15,<br />LP16,0,0<br />};//tablica dla znaków  cy1,cy2,cy3,cy4<br />// PROCEDURA OBSlUGI PRZERWANIA Đ COMPARE MATCH<br />ISR(TIMER1_COMPB_vect)<br />{<br />if(cyf_w==1)<br />{if(i==0)<br />{<br />   if(licznik &gt;= 2){LED_PORT2 ^= znak&#91;licznik&#93;&#91;2&#93;;}else{LED_PORT1 ^= znak&#91;licznik&#93;&#91;2&#93;;}<br />   LED_PORT1 |= (LP1 | LP2);<br />   i++;<br />}else{<br />if(licznik &gt;= 2){LED_PORT2 |= znak&#91;licznik&#93;&#91;2&#93;;}else{LED_PORT1 |= znak&#91;licznik&#93;&#91;2&#93;;}<br />LED_PORT1 ^= (LP1 | LP2);<br />i--;<br />}<br /><br />}<br />if(cyf_w==2)<br />{<br /><br />if(a==0){<br />if(j==0)<br />{<br /><br />if(licznik &gt;= 2){LED_PORT1 |= znak&#91;licznik&#93;&#91;1&#93;;LED_PORT2 |= znak&#91;licznik&#93;&#91;2&#93;;}else{LED_PORT1 |= (znak&#91;licznik&#93;&#91;1&#93;|znak&#91;licznik&#93;&#91;2&#93;);}<br />    LED_PORT1 ^= LP1;<br />    j++;<br />}else{<br />if(licznik &gt;= 2){LED_PORT1 ^= znak&#91;licznik&#93;&#91;1&#93;;LED_PORT2 ^= znak&#91;licznik&#93;&#91;2&#93;;}else{LED_PORT1 ^= (znak&#91;licznik&#93;&#91;1&#93;|znak&#91;licznik&#93;&#91;2&#93;);}<br />    LED_PORT1 |= LP1;<br />    j--;<br />    a=1;<br />}<br />}<br />if(a==1){<br />if(i==0)<br />{<br />LED_PORT1 |= (znak&#91;licznik&#93;&#91;1&#93;|znak&#91;licznik&#93;&#91;0&#93;);<br />LED_PORT1 ^= (LP2|LP3);<br /> i++;<br />}else{<br />LED_PORT1 ^= (znak&#91;licznik&#93;&#91;1&#93;|znak&#91;licznik&#93;&#91;0&#93;);<br />LED_PORT1 |= (LP2|LP3 );<br />i--;<br />a=0;<br />}<br />}<br />}<br />.......[/syntax]<br />[syntax=c]if(licznik &gt;= 2){LED_PORT2 ^= znak&#91;licznik&#93;&#91;2&#93;;}else{LED_PORT1 ^= znak&#91;licznik&#93;&#91;2&#93;;}[/syntax]<br />roiązanie niezbyt elegancie zmiany portu<br /><br />plik nagłówkowy by było jasniej <br />[syntax=c]#ifndef LED_GLASS_H_H_<br />#define LED_GLASS_H_H_<br /><br />#define LED_PORT1 PORTC //wysjcie starszy bajt sterowanie comm + seg<br />#define LED_PORT2 PORTD //wysjcie mlodszy bajt sterowanie seg<br />#define LED_PORT1_DIR DDRC //kierunek portu C<br />#define LED_PORT2_DIR DDRD // kierunek port B<br /><br />#define LP1  (1&lt;&lt;PC7)//comm<br />#define LP2  (1&lt;&lt;PC6)//comm<br />#define LP3  (1&lt;&lt;PC5)//comm<br />#define LP4  (1&lt;&lt;PC4)//cy1<br />#define LP5  (1&lt;&lt;PC3)//cy1<br />#define LP6  (1&lt;&lt;PC2)//cy1<br />#define LP7  (1&lt;&lt;PC1)//cy2<br />#define LP8  (1&lt;&lt;PC0)//cy2<br />#define LP9  (1&lt;&lt;PD7)//cy2<br />#define LP10 (1&lt;&lt;PD6)//cy3<br />#define LP11 (1&lt;&lt;PD5)//cy3<br />#define LP12 (1&lt;&lt;PD4)//cy3<br />#define LP13 (1&lt;&lt;PD3)//cy4<br />#define LP14 (1&lt;&lt;PD2)//cy4<br />#define LP15 (1&lt;&lt;PD1)//cy4<br />#define LP16 (1&lt;&lt;PD0)//cy5<br /><br />extern volatile int cyf_w;<br /><br />void d_led_init(void);<br /><br />#endif /* LED_GLASS_H_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=253">Pawel W.</a> — 15 wrz 2014, o 13:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pawel W.]]></name></author>
<updated>2014-09-04T16:57:05+01:00</updated>
<published>2014-09-04T16:57:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=94239#p94239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=94239#p94239"/>
<title type="html"><![CDATA[Sterowanie LCD numerycznym  bez drivera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8399&amp;p=94239#p94239"><![CDATA[
Witam <br /><br />Sterowanie segmentowym LED czy też LCD na driverze serii HD nie jest skomplikowane i nie nastręcza dużo kłopotów. Jednakże nie chce odkrawać na nowo programowania stąd moje pytanie/a do Was Koledzy . <br /><br />Jak do tej pory radziłem sobie po prostu odwracjąc polaryzacje na  segment -common . Czy są jakieś inne sposoby .<br />Sterowanie jak LED powoduje, że segment się &quot;nasyca&quot; i wygasa.<br /><br />Poniżej fragment kodu np cyfra 2. : na przerwaniu ok 60 hz na cyfrę . Warto zauważyć że LPx(piny i/o) są tak poukładane by za każdym razem kiedy się pojawi poprzedni stan był przeciwny . Nie oczekuje gotowca tylko jakieś podpowiedzi, naprowadzenia na lepszy sposób wyświetlania<br /><br /><span style="color: #FF0000">[ a kolega to może najpierw zobaczy TO: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --> dokładnie co ? i poprawi formatowanie kodu - ok ? - mirekk36 ]<br /></span><br />//ups, wybacz złe nawyki<br /><br />[syntax=c]if(cyf==2)<br />{<br />if(a==1){<br />if(i==0)<br />{<br />LED_PORT1 ^= LP5;<br />LED_PORT1 |= (LP1 |LP2 |LP3 );<br /> i++;<br />}else{<br />LED_PORT1 |= LP5;<br />LED_PORT1 ^= (LP1 |LP2 |LP3 );<br />i--;<br />a=2;<br />}<br />}<br />if(a==0){<br />if(j==0)<br />{<br />LED_PORT1 ^= (LP6|LP5);<br />    LED_PORT1 |= LP1 ;<br />    j++;<br />}else{<br />    LED_PORT1 |= (LP6|LP5);<br />    LED_PORT1 ^= LP1;<br />    j--;<br />    a=1;<br />}<br />}<br />if(a==2){<br />if(k==0)<br />{<br />    LED_PORT1 ^= (LP4|LP5);<br />    LED_PORT1 |= LP2|LP3 ;<br />    k++;<br />}else{<br />    LED_PORT1 |= (LP4|LP5);<br />    LED_PORT1 ^=  LP2|LP3 ;<br />    k--;<br />a=0;<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=253">Pawel W.</a> — 4 wrz 2014, o 16:57</p><hr />
]]></content>
</entry>
</feed>