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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-07-18T15:17:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=1144&amp;mode</id>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2017-07-18T15:17:56+01:00</updated>
<published>2017-07-18T15:17:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192265#p192265</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192265#p192265"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192265#p192265"><![CDATA[
nie wiem co ty tam w necie znalazłeś ale pytałeś o język c dla avr czyli pod kompilator avrgcc a tam niestety stringi są zawsze kończone znakiem null .<br />a tak prywatnie radzę kup pan sobie blue booka tam masz wszystko jak na tacy wytłumaczone tylko brać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 18 lip 2017, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mytnik3]]></name></author>
<updated>2017-07-18T08:24:09+01:00</updated>
<published>2017-07-18T08:24:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192257#p192257</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192257#p192257"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192257#p192257"><![CDATA[
Tak, procedura włączLCD() służy do inicjalizacji, a co do tego fragmentu i błędu to jakoś do tego doszedłem i kompilowałem dopisując (nie wiedząc czemu) jedno dodatkowe miejsce w tablicy, ale nie wiem czemu w książce z której korzystam jest słowo w słowo to samo i kilku przykładach na necie gdzie jest np. &quot;Hello World!!!&quot;, mający 14 znaków i tyle było przypisane zmiennej łańcuchowej. Dziwne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17579">mytnik3</a> — 18 lip 2017, o 08:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2017-07-17T20:25:33+01:00</updated>
<published>2017-07-17T20:25:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192246#p192246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192246#p192246"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192246#p192246"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />char napis[15] = &quot;Witaj. Kotlecie&quot;;<br /></div><br /><br />Prawdo-podobnie tu masz błąd ponieważ powołujesz tablice stringów o 15 elementach i tyle jest liter ale string powinien na końcu posiadać znak null a ty nie dałeś na ten znak miejsca.<br />powinno to wyglądać tak [syntax=c]char napis&#91;16&#93; = &quot;Witaj. Kotlecie&quot;;[/syntax]<br /><br />a inicjalizowałeś wyświetlacz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 17 lip 2017, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mytnik3]]></name></author>
<updated>2017-07-17T18:52:22+01:00</updated>
<published>2017-07-17T18:52:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192243#p192243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192243#p192243"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=192243#p192243"><![CDATA[
Witam, jestem początkujący i w programowaniu i w nC, wiem, że temat stary i w ogóle, ale może ktoś zaspokoi moją ciekawość i rodzącą się wściekłość na LCD. Korzystam ze środowiska atmel studio i książki &quot;AVR, ARM7. Programowanie mikrokontrolerów dla każdego&quot; i stamtąd wziąłem kod na testy który się nie kompiluje. Problemem jest to miejsce:<br /><br />char napis[15] = &quot;Witaj. Kotlecie&quot;;<br />WlaczLCD();<br />WyswietlLCD(napis, 15);<br /><br />Jakkolwiek bym nie podstawiał zawsze ilość znaków które przypiszę do zmiennej tablicowej napis jest za duża dla podanej przeze mnie. Czemu nawet jeśli dam dwie literki np char napis[2] = &quot;AB&quot;; pojawia się błąd &quot;initializer-string for array of chars is too long [-fpermissive]&quot;.<br />Poza tym wszystkie przykłady jakie oglądam w internecie nie mają przy bibliotece util/delay.h zdefiniowanego parametru F_CPU i nie rozumiem czemu skoro mi bez tego się nie kompiluje.<br />Po wprowadzeniu zmian umożliwiających skompilowanie programu wgranie go powoduje tylko wyświetlenie wszystkich pixeli górnego wiersza wyświetlacza, żadnych liter. Proszę o pomoc bo już jestem zdesperowany.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17579">mytnik3</a> — 17 lip 2017, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2015-05-12T10:27:10+01:00</updated>
<published>2015-05-12T10:27:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128939#p128939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128939#p128939"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128939#p128939"><![CDATA[
Źle wstawiony listing kodu, zapoznaj się z tym:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 12 maja 2015, o 10:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[masterix]]></name></author>
<updated>2015-05-12T09:33:14+01:00</updated>
<published>2015-05-12T09:33:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128935#p128935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128935#p128935"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=128935#p128935"><![CDATA[
Witam mam pewien problem z ogarnięciem wyświetlacza.. A chodzi o to że nić nie mogę na niego wysłać. Kumpel napisał program w bascomie i wyświetlił napis. Ja potem podłączyłem do siebie nic nie zmieniając załadowałem mój program i zaczął świrować i pisał ciągle literki. odłączyłem programator podłączyłem i znowu na nic nie reaguje.. ma ktoś jakiś pomysł ?<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">plik H<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Konfiguracja sygnałów sterujących wyświetlaczem.<br />// Można zmienić stosownie do potrzeb.<br />//<br />//-------------------------------------------------------------------------------------------------<br />#define LCD_RS_DIR      DDRC<br />#define LCD_RS_PORT    PORTC<br />#define LCD_RS         (1 &lt;&lt; PC3)<br /><br />#define LCD_E_DIR      DDRC<br />#define LCD_E_PORT      PORTC<br />#define LCD_E         (1 &lt;&lt; PC4)<br /><br />#define LCD_DB4_DIR      DDRA<br />#define LCD_DB4_PORT   PORTA<br />#define LCD_DB4         (1 &lt;&lt; PA0)<br /><br />#define LCD_DB5_DIR      DDRA<br />#define LCD_DB5_PORT   PORTA<br />#define LCD_DB5         (1 &lt;&lt; PA1)<br /><br />#define LCD_DB6_DIR      DDRA<br />#define LCD_DB6_PORT   PORTA<br />#define LCD_DB6         (1 &lt;&lt; PA2)<br /><br />#define LCD_DB7_DIR      DDRA<br />#define LCD_DB7_PORT   PORTA<br />#define LCD_DB7         (1 &lt;&lt; PA3)<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Instrukcje kontrolera Hitachi HD44780<br />//<br />//-------------------------------------------------------------------------------------------------<br /><br />#define CLEAR                     0x01<br /><br />#define HOME                     0x02<br /><br />#define ENTRY_MODE                  0x04<br />   #define EM_SHIFT_CURSOR            0<br />   #define EM_SHIFT_DISPLAY         1<br />   #define EM_LEWO                  0<br />   #define EM_PRAWO               2<br /><br />#define DISPLAY_ONOFF               0x08<br />   #define DISPLAY_OFF               0<br />   #define DISPLAY_ON               4<br />   #define CURSOR_OFF               0<br />   #define CURSOR_ON               2<br />   #define CURSOR_NOBLINK            0<br />   #define CURSOR_BLINK            1<br /><br />#define DISPLAY_CURSOR_SHIFT         0x10<br />   #define SHIFT_CURSOR            0<br />   #define SHIFT_DISPLAY            8<br />   #define SHIFT_LEWO               0<br />   #define SHIFT_PRAWO               4<br /><br />#define FUNCTION_SET               0x20<br />   #define FONT5x7                  0<br />   #define FONT5x10               4<br />   #define ONE_LINE               0<br />   #define TWO_LINE               8<br />   #define LCD4_BIT               0<br />   #define LCD8_BIT               16<br /><br />#define CGRAM_SET                  0x40<br /><br />#define DDRAM_SET                  0x80<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Deklaracje funkcji<br />//<br />//-------------------------------------------------------------------------------------------------<br /><br />void LCD_WriteCommand(unsigned char);<br />void LCD_WriteData(unsigned char);<br />void LCD_WriteText(char *);<br />void LCD_GoTo(unsigned char, unsigned char);<br />void LCD_Clear(void);<br />void LCD_Home(void);<br />void LCD_Init(void);<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Koniec pliku HD44780.h<br /><br /><br /><br />plik C<br />#include &quot;HD44780.h&quot;<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja wystawiająca półbajt na magistralę danych<br />//<br />//-------------------------------------------------------------------------------------------------<br />void _LCD_h_bajt(unsigned char h_bajt)<br />{<br />if(h_bajt &amp; 0x01)<br />   LCD_DB4_PORT |= LCD_DB4;<br />else<br />   LCD_DB4_PORT  &amp;= ~LCD_DB4;<br /><br />if(h_bajt &amp; 0x02)<br />   LCD_DB5_PORT |= LCD_DB5;<br />else<br />   LCD_DB5_PORT  &amp;= ~LCD_DB5;<br /><br />if(h_bajt &amp; 0x04)<br />   LCD_DB6_PORT |= LCD_DB6;<br />else<br />   LCD_DB6_PORT  &amp;= ~LCD_DB6;<br /><br />if(h_bajt &amp; 0x08)<br />   LCD_DB7_PORT |= LCD_DB7;<br />else<br />   LCD_DB7_PORT  &amp;= ~LCD_DB7;<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja zapisu bajtu do wyświetacza (bez rozróżnienia instrukcja/dane).<br />//<br />//-------------------------------------------------------------------------------------------------<br />void _LCD_Write(unsigned char dataToWrite)<br />{<br />LCD_E_PORT |= LCD_E;<br />_LCD_h_bajt(dataToWrite &gt;&gt; 4);<br />LCD_E_PORT &amp;= ~LCD_E;<br />LCD_E_PORT |= LCD_E;<br />_LCD_h_bajt(dataToWrite);<br />LCD_E_PORT &amp;= ~LCD_E;<br />_delay_us(50);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja zapisu rozkazu do wyświetlacza<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_WriteCommand(unsigned char commandToWrite)<br />{<br />LCD_RS_PORT &amp;= ~LCD_RS;<br />_LCD_Write(commandToWrite);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja zapisu danych do pamięci wyświetlacza<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_WriteData(unsigned char dataToWrite)<br />{<br />LCD_RS_PORT |= LCD_RS;<br />_LCD_Write(dataToWrite);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja wyświetlenia napisu na wyswietlaczu.<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_WriteText(char * text)<br />{<br />while(*text)<br />  LCD_WriteData(*text++);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja ustawienia współrzędnych ekranowych<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_GoTo(unsigned char x, unsigned char y)<br />{<br />LCD_WriteCommand(DDRAM_SET | (x + (0x40 * y)));<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja czyszczenia ekranu wyświetlacza.<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_Clear(void)<br />{<br />LCD_WriteCommand(CLEAR);<br />_delay_ms(2);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja przywrócenia początkowych współrzędnych wyświetlacza.<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_Home(void)<br />{<br />LCD_WriteCommand(HOME);<br />_delay_ms(2);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Procedura inicjalizacji kontrolera HD44780.<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_Init(void)<br />{<br />unsigned char i;<br />LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku pracy wyprowadzeń<br />LCD_DB5_DIR |= LCD_DB5; //<br />LCD_DB6_DIR |= LCD_DB6; //<br />LCD_DB7_DIR |= LCD_DB7; //<br />LCD_E_DIR    |= LCD_E;   //<br />LCD_RS_DIR    |= LCD_RS;  //<br />_delay_ms(15); // oczekiwanie na ustalibizowanie się napiecia zasilajacego<br />LCD_RS_PORT &amp;= ~LCD_RS; // wyzerowanie linii RS<br />LCD_E_PORT &amp;= ~LCD_E;  // wyzerowanie linii E<br /><br />for(i = 0; i &lt; 3; i++) // trzykrotne powtórzenie bloku instrukcji<br />  {<br />  LCD_E_PORT |= LCD_E; //  E = 1<br />  _LCD_h_bajt(0x03); // tryb 8-bitowy<br />  LCD_E_PORT &amp;= ~LCD_E; // E = 0<br />  _delay_ms(5); // czekaj 5ms<br />  }<br /><br />LCD_E_PORT |= LCD_E; // E = 1<br />_LCD_h_bajt(0x02); // tryb 4-bitowy<br />LCD_E_PORT &amp;= ~LCD_E; // E = 0<br /><br />_delay_ms(1); // czekaj 1ms <br />LCD_WriteCommand(FUNCTION_SET | FONT5x7 | TWO_LINE | LCD4_BIT); // interfejs 4-bity, 2-linie, znak 5x7<br />LCD_WriteCommand(DISPLAY_ONOFF | DISPLAY_OFF); // wyłączenie wyswietlacza<br />LCD_WriteCommand(CLEAR); // czyszczenie zawartosći pamieci DDRAM<br />_delay_ms(2);<br />LCD_WriteCommand(ENTRY_MODE | EM_SHIFT_CURSOR | EM_PRAWO);// inkrementaja adresu i przesuwanie kursora<br />LCD_WriteCommand(DISPLAY_ONOFF | DISPLAY_ON | CURSOR_OFF | CURSOR_NOBLINK); // włącz LCD, bez kursora i mrugania<br />LCD_WriteCommand(CLEAR);<br />}<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Koniec pliku HD44780.c<br />//<br />//-------------------------------------------------------------------------------------------------<br /><br />i main<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;HD44780.h&quot;<br /><br />int main(void)<br />{<br />   LCD_Init();<br /><br />   DDRD |= (1&lt;&lt;PD6);<br />   while(1)<br />   {<br />   <br />   LCD_WriteText(&quot;WITAM  &quot;);<br />   _delay_ms(1000);<br />   }<br />}<br /><br />//</div><br /><br />oczywiście wszystko się kompiluje bez problemu.<br />Pomoże ktoś ? Mam nadzieje że to dobre miejsce:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9423">masterix</a> — 12 maja 2015, o 09:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2012-09-03T12:11:11+01:00</updated>
<published>2012-09-03T12:11:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14316#p14316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14316#p14316"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14316#p14316"><![CDATA[
hmmm... skoro nie chcesz pokazać kodu to czego właściwie oczekujesz od tych którzy chcą Ci pomóc?<br />Mają iść do wróżki? Popatrzeć w gwiazdy i zgadnąć co robisz źle?<br /><br />Schemat Panie Kolego i kod to podstawa pomocy <img src="https://forum.atnel.pl/images/smilies/icon_exclaim.gif" alt=":!:" title="Wykrzyknik" /> Inaczej nikt nie zgadnie co spłodziłeś. Gdzie np. pominąłeś średnik a gdzie brakuje przecinka...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 3 wrz 2012, o 12:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sheep]]></name></author>
<updated>2012-09-02T22:17:48+01:00</updated>
<published>2012-09-02T22:17:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14308#p14308</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14308#p14308"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14308#p14308"><![CDATA[
Kod jest w takich powijakach, że wstyd byłoby wklejanie go tutaj, uwierz... <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Jeszcze zoptymalizowanie kodu przede mną dopiero <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Już mi nie gaśnie po resecie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ten model wyświetlacza ma długi przewód myślowy po prostu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=542">Sheep</a> — 2 wrz 2012, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sheep]]></name></author>
<updated>2012-09-02T21:29:09+01:00</updated>
<published>2012-09-02T21:29:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14291#p14291</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14291#p14291"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14291#p14291"><![CDATA[
Mam na myśli poprawienie kodu, wgranie nowego wsadu do procka i wtedy wyswietlacz nie działa już jak powinien, pomimo nie znaczących na początku kodu zmian. Wtedy pomaga tylko odłączenie zasilacza i MCU na 3-4 s i z powrotem działa dobrze. <br /><br />Źle to po prostu napisałem wyżej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=542">Sheep</a> — 2 wrz 2012, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sheep]]></name></author>
<updated>2012-09-02T20:10:59+01:00</updated>
<published>2012-09-02T20:10:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14279#p14279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14279#p14279"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=14279#p14279"><![CDATA[
Dzięki Twojemu poradnikowi chciało mi się zrozumieć działanie HD44780 od zera, dzięki bardzo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Biore się za pisanie własnej obsługi, ale:<br /><br />Nie wiem dlaczego jak już nawiązuję z nim &quot;komunikajszyn&quot; to wyświetlacz działa tylko po pierwszym wgraniu programu do MCU, po resecie jest zapalona pierwsza linia wyświetlacza, zachowuje się jakby były podłączone tylko piny zasilania i kontrastu.<br /><br />Co oznacza w tabeli X?<br /><br />Z jakiej biblioteki Wy korzystacie? Z kursu XYZ czy jeszcze jakaś inna?<br /><br />Tutaj jest ta tabela <br /><!-- m --><a class="postlink" href="http://radzio.dxp.pl/hd44780/hd44780_podstawy.htm" >http://radzio.dxp.pl/hd44780/hd44780_podstawy.htm</a><!-- m --><br /><br />Jeszcze raz chciałem podziękować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Zdraviam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=542">Sheep</a> — 2 wrz 2012, o 20:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-07-15T19:24:01+01:00</updated>
<published>2012-07-15T19:24:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9891#p9891</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9891#p9891"/>
<title type="html"><![CDATA[Re: Odp: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9891#p9891"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />Masz przeciez funkcje LCD_locate(), jesli policzysz, ze masz w pierwszej linii 16 znakow, to mozesz sobie przejsc na druga linie:)<br /></div><br /><br />Nie nie - tzn nie zawsze tak jest. Wyświetlacze LCD tzn standard HD44780 przewiduje, że zawsze jest zapas bajtów na linię - po co? po to żeby wyświetlacz mógł robić sobie sprzętowy scrolling, dlatego spójrzcie panowie na mapy adresów początków każdej linii w różnych wyświetlaczach - nie ma tak że kolejne adresy w wyświetlaczu nawet 16x2 to<br /><br />0<br />16 <br /><br />tylko - zaglądamy do pliku nagłówkowego lcd44780.h i tam co widać? albo tak:<br /><br />[syntax=c]#define LCD_LINE1 0x00// adres 1 znaku 1 wiersza<br />#define LCD_LINE2 0x28// adres 1 znaku 2 wiersza<br />#define LCD_LINE3 0x14  // adres 1 znaku 3 wiersza<br />#define LCD_LINE4 0x54  // adres 1 znaku 4 wiersza[/syntax]<br /><br />albo tak:<br /><br />[syntax=c]#define LCD_LINE1 0x00// adres 1 znaku 1 wiersza<br />#define LCD_LINE2 0x40// adres 1 znaku 2 wiersza<br />#define LCD_LINE3 0x10  // adres 1 znaku 3 wiersza<br />#define LCD_LINE4 0x50  // adres 1 znaku 4 wiersza[/syntax]<br /><br />więc sami widzicie że to nie tak w nich liniowo a co ciekawe zdarzają się wyświetlacze które mają jeszcze inaczej i trzeba sobie po prostu samemu &quot;namacać&quot; adresy początków linii - łatwo to zrobić - ja np robiłem tak:<br /><br />że na wyświetlaczu LED albo na terminal wysyłałem licznik od 0 do powiedzmy 100<br /><br />i kolejno po CLS wysyłałem znaki do LCD co sekundę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />i patrzyłem sobie gdy już zniknęły za końcem pierwszej linii kiedy się pokażą i od której linii się zaczną - wtedy wystarczyło spojrzeć na licznik na LED albo w terminalu i już mamy adres kolejnej linii - i czekamy aż się zaczną pojawiać w kolejnej i tak dalej <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> — 15 lip 2012, o 19:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2012-07-15T18:56:56+01:00</updated>
<published>2012-07-15T18:56:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9882#p9882</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9882#p9882"/>
<title type="html"><![CDATA[Odp: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9882#p9882"><![CDATA[
Masz przeciez funkcje LCD_locate(), jesli policzysz, ze masz w pierwszej linii 16 znakow, to mozesz sobie przejsc na druga linie:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 15 lip 2012, o 18:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-15T18:34:17+01:00</updated>
<published>2012-07-15T18:34:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9877#p9877</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9877#p9877"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9877#p9877"><![CDATA[
No tak, nie skojarzyłem tego. Czyli po pierwszej linijce trzeba wklepać 64-16=48 znaki, które są jakby poza wyświetlaczem (trzecia linijka m.in.) i dopiero od 0x40 zaczyna się druga linijka, czyli znak 64 będzie pierwszym w drugim wierszu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 lip 2012, o 18:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartool]]></name></author>
<updated>2012-07-15T18:30:28+01:00</updated>
<published>2012-07-15T18:30:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9875#p9875</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9875#p9875"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9875#p9875"><![CDATA[
Nie dokońca chyba rozumiem co masz na myśli. Wydaje mi się, że wysyłasz znaki w kodzie ASCII do wyświetlacza i zapełniasz pierwszą linijke i chcesz przejść do drugiej? Jeżeli o to Ci chodzi, to pogroże Ci teraz palcem, ponieważ chyba nie przeczytałeś całego rozdziału w książce Mirka. Wpisując zanaki wewnętrzny rejestr wyświetlacza inkrementuje się po każdym wyświelonym znakiem. Co to oznacza? zajrzyj do ksiązki. Tam jest bardzo ładnie wszystko opisane. Podpowiem Ci, że każde pole wyświetlacza, które wydzisz, ma swój adres. Na stronie 207 masz definicje preprocesor, w ostatniej &quot;grupie&quot; (tam gdzie jest LCD_LINE) możesz wydedukować o co chodzi z tymi adresami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=402">bartool</a> — 15 lip 2012, o 18:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-15T18:13:57+01:00</updated>
<published>2012-07-15T18:13:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9869#p9869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9869#p9869"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9869#p9869"><![CDATA[
Chodzi mi o to, żeby za pomocą twojego projektu tylko za pomocą microswitchy zapisać coś w drugiej linii.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Po zapisaniu jednej linii kursor gdzieś znika...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 lip 2012, o 18:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartool]]></name></author>
<updated>2012-07-15T18:12:08+01:00</updated>
<published>2012-07-15T18:12:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9868#p9868</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9868#p9868"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9868#p9868"><![CDATA[
<div class="quotetitle">Ledes napisał(a):</div><div class="quotecontent"><br />Nie da się przyciskami ustawić trybu dwuwierszowego, zgadza się?<br /></div><br />Chyba masz na myśli trybu 8-bitowego. Nie da się z jednego powodu (jeżeli korzystasz z płytki Mirka), ponieważ fizycznie linie D0-D3 nie są podłączone. Jak sobie sam podłączysz wyświetlacz wszystkimi liniami, to nic nie stoi na przeszkodzie. reszta to kwestia programowa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=402">bartool</a> — 15 lip 2012, o 18:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-15T18:06:18+01:00</updated>
<published>2012-07-15T18:06:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9866#p9866</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9866#p9866"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9866#p9866"><![CDATA[
Rozjaśniło, dzięki. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 50 minutach ]</span></strong><br /><br />Nie da się przyciskami ustawić trybu dwuwierszowego, zgadza się?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 lip 2012, o 18:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartool]]></name></author>
<updated>2012-07-15T17:06:46+01:00</updated>
<published>2012-07-15T17:06:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9857#p9857</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9857#p9857"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9857#p9857"><![CDATA[
<div class="quotetitle">Ledes napisał(a):</div><div class="quotecontent"><br />No chociażby w tabelce w książce Mirka występuje kilka razy ten sam symbol (a dokładniej D) w różnych znaczeniach - jak to rozróżnić?<br /></div><br />Jest to mała niescisłość, ale zaraz to wszystko wyjaśnimy. W tabelce, przy rozkazie &quot;Display On/Off&quot; literka &quot;D&quot; oznacza:<br />1 - włączony wyświetlacz<br />0 - wyłącząny wyświetlacz<br /><br />Przy rozkazie &quot;Function set&quot; literka &quot;D&quot; oznacza:<br />1 - interfejs 8-bitowy<br />0 - interfejs 4-bitowy<br /><div class="quotetitle">Ledes napisał(a):</div><div class="quotecontent"><br />I dlaczego w filmiku przy ustawieniu pracy wyświetlacza jako 4-bitowego przesyłasz tylko starszą połówkę bajtu?<br /></div><br />Słuchaj, to działa tak. Po załączeniu zasialania wyświetlacz pracuje w trybie 8-bitowym. W takiej postaći komendy są odbierane na wszystkich liniach danych (D0-D7). My nadajemy tylko na &quot;starszym półbajcie&quot;, ale wyświetlacz tego nie wie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> i każde kolejne opadające zbocze lini E interpretuję jak jeden pełen bajt (nasze cztery linie D4-D7 i kompletnie nam nie znane stany na liniach D0-D3). I teraz my ustawiamy na liniach D4-D7 warośc komendy trybu 4-bitowego (0010) i dopiero po opadającym zboczu wyświetlacz przestawia się w tryb 4-bitowy. Dopiero od tego momentu wyświetlacz wie, że nadajemy połówkami bajtów. Czy to Ci troche rozjaśniło sytuacje?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=402">bartool</a> — 15 lip 2012, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-15T16:40:11+01:00</updated>
<published>2012-07-15T16:40:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9855#p9855</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9855#p9855"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9855#p9855"><![CDATA[
No chociażby w tabelce w książce Mirka występuje kilka razy ten sam symbol (a dokładniej D) w różnych znaczeniach - jak to rozróżnić? I dlaczego w filmiku przy ustawieniu pracy wyświetlacza jako 4-bitowego przesyłasz tylko starszą połówkę bajtu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 lip 2012, o 16:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartool]]></name></author>
<updated>2012-07-15T16:36:31+01:00</updated>
<published>2012-07-15T16:36:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9854#p9854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9854#p9854"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9854#p9854"><![CDATA[
HEHE Ściąga to lista komend wyświetlacza LCD (tak, z książki Mirka) i lista znaków w kodzie ASCII. Która tabela jest dla Ciebie toporna (komendy czy ASCII)? Napisz co dla Ciebie jest nie jasne. Postaram Ci się jakoś pomóc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=402">bartool</a> — 15 lip 2012, o 16:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-15T16:26:18+01:00</updated>
<published>2012-07-15T16:26:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9851#p9851</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9851#p9851"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9851#p9851"><![CDATA[
Można wiedzieć, skąd wziąłeś swoją &quot;ściągę&quot;? Tabelka z książki Mirka? Ona jest chyba dość toporna, korzystałeś z niej czy z innego źródła?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 15 lip 2012, o 16:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2012-07-12T18:08:29+01:00</updated>
<published>2012-07-12T18:08:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9634#p9634</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9634#p9634"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9634#p9634"><![CDATA[
Super wyszło, w ten weekend będę się bawił LCD więc pewnie się przyda i chciałbym sam coś takiego zrobić, na fajny pomysł wpadłeś. Graty<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 12 lip 2012, o 18:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartool]]></name></author>
<updated>2012-07-11T21:12:07+01:00</updated>
<published>2012-07-11T21:12:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9590#p9590</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9590#p9590"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9590#p9590"><![CDATA[
<div class="quotetitle">cs3 napisał(a):</div><div class="quotecontent"><br />Cześć, takie pytanie do czy jeśli logiczna jedynka na wyjście zapala diodę to ten kod funkcji void toggle_led (void) można zamienić na :<br />LED_PORT ^= MaskPin;<br />LCD_PORT ^= MaskPin; ?<br />przepraszam z góry jeśli to pytanie wydaje się być banalne (dopiero raczkuje w temacie C i uC).<br /></div><br />Nic nie stoi na przeszkodzie, aby zapisać tak jak Ty to pokazałeś. Ba! Nawet będzie lepiej, mniejszy kod, szybciej będzie się wykonywać program.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />I nie przepraszaj, po to tu jesteśmy, aby sobie pomagać. Myślisz, że wszyscy tu jesteśmy starymi wyjadaczami ukontrolerów? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> (ja też jestem na etapie przedszkola)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=402">bartool</a> — 11 lip 2012, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cs3]]></name></author>
<updated>2012-07-11T20:47:59+01:00</updated>
<published>2012-07-11T20:47:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9587#p9587</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9587#p9587"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=9587#p9587"><![CDATA[
Cześć, takie pytanie do czy jeśli logiczna jedynka na wyjście zapala diodę to ten kod funkcji void toggle_led (void) można zamienić na :<br />LED_PORT ^= MaskPin;<br />LCD_PORT ^= MaskPin; ?<br />przepraszam z góry jeśli to pytanie wydaje się być banalne (dopiero raczkuje w temacie C i uC).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=456">cs3</a> — 11 lip 2012, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-06-06T15:38:45+01:00</updated>
<published>2012-06-06T15:38:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=7583#p7583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=7583#p7583"/>
<title type="html"><![CDATA[Re: Obsługa wyświetlacza LCD dla opornych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1144&amp;p=7583#p7583"><![CDATA[
a kto nie lubi :0  zwłaszcza jak ci się SQL kaszani <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 6 cze 2012, o 15:38</p><hr />
]]></content>
</entry>
</feed>