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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-14T17:50:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12621&amp;mode</id>
<entry>
<author><name><![CDATA[Panicz74]]></name></author>
<updated>2015-08-14T17:50:23+01:00</updated>
<published>2015-08-14T17:50:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137286#p137286</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137286#p137286"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137286#p137286"><![CDATA[
Właśnie, zauważyłem że nieważne czy mam podłączone +5V przy potencjometrze czy nie, i tak działa. Ciekawe...<br /><br />Tymczasem zmontowałem sobie program:<br />lcd1.h:<br />[syntax=c]/*<br /> * lcd1.h<br /> *<br /> *  Created on: 13 sie 2015<br /> *      Author: Radek<br /> */<br /><br />#ifndef LCD_H_<br />#define LCD_H_<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LCD_PORTPORTC<br /><br />#define LCD_DDRDDRC<br /><br /><br />#define LCD_RSPC0<br />#define LCD_EPC1<br />#define LCD_D4PC2<br />#define LCD_D5PC3<br />#define LCD_D6PC4<br />#define LCD_D7PC5<br /><br />inline void lcd_half( uint8_t data );<br />void lcd_byte( uint8_t byte );<br />void lcd_cmd( uint8_t cmd );<br />void lcd_data( uint8_t data );<br />void lcd_string( char * string );<br />void lcd_init();<br />void lcd_cls();<br />void lcd_locate( uint8_t x, uint8_t y);<br /><br />#endif /* LCD_H_ */[/syntax]<br />lcd1.c<br />[syntax=c]/*<br /> * lcd1.c<br /> *<br /> *  Created on: 13 sie 2015<br /> *      Author: Radek<br /> */<br /><br />#include &quot;lcd1.h&quot;<br />inline void lcd_half( uint8_t data ) {<br /><br />if( data &amp; (1&lt;&lt;0)) LCD_PORT |= (1&lt;&lt;LCD_D4);<br />else LCD_PORT &amp;= ~(1&lt;&lt;LCD_D4);<br /><br />if( data &amp; (1&lt;&lt;1)) LCD_PORT |= (1&lt;&lt;LCD_D5);<br />else LCD_PORT &amp;= ~(1&lt;&lt;LCD_D5);<br /><br />if( data &amp; (1&lt;&lt;2)) LCD_PORT |= (1&lt;&lt;LCD_D6);<br />else LCD_PORT &amp;= ~(1&lt;&lt;LCD_D6);<br /><br />if( data &amp; (1&lt;&lt;3)) LCD_PORT |= (1&lt;&lt;LCD_D7);<br />else LCD_PORT &amp;= ~(1&lt;&lt;LCD_D7);<br /><br /><br />}<br /><br />void lcd_byte( uint8_t byte ) {<br /><br />LCD_PORT |= (1&lt;&lt;LCD_E);<br />lcd_half( byte &gt;&gt; 4 );<br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_E);<br /><br /><br />LCD_PORT |= (1&lt;&lt;LCD_E);<br />lcd_half( byte );<br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_E);<br /><br />_delay_us(120);<br />}<br /><br />void lcd_cmd( uint8_t cmd ) {<br /><br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS);<br />lcd_byte( cmd );<br />}<br /><br />void lcd_data( uint8_t data ) {<br /><br />LCD_PORT |= (1&lt;&lt;LCD_RS);<br />lcd_byte( data );<br />}<br /><br />void lcd_string( char * string ) {<br /><br />while( *string ) lcd_data( *string++ );<br />}<br /><br />void lcd_cls() {<br />lcd_cmd( 0x01 );<br />}<br /><br />void lcd_locate( uint8_t y, uint8_t x ) {<br /><br />switch( y ) {<br /><br />case 0: y = 0x00; break;<br />case 1: y = 0x40; break;<br /><br /><br /><br />lcd_cmd( (0x80+y+x) );<br /><br />}<br />}<br />void lcd_init() {<br /><br />LCD_DDR |= ( (1&lt;&lt;LCD_RS) | (1&lt;&lt;LCD_E) | (1&lt;&lt;LCD_D4) | (1&lt;&lt;LCD_D5) | (1&lt;&lt;LCD_D6) | (1&lt;&lt;LCD_D7));<br /><br />lcd_cmd( 0x06 );<br />lcd_cmd( 0x0C );<br />lcd_cmd( 0x17 );<br />lcd_cmd( 0x28 );<br /><br />lcd_cls();<br /><br />_delay_us(200);<br /><br /><br />}[/syntax]<br /><br />main.c<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 13 sie 2015<br /> *      Author: Radek<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lcd1.h&quot;<br /><br />int main (void)<br />{<br />lcd_init();<br /><br />while(1)<br />{<br />lcd_string (&quot;abdc    &quot;);<br /><br /><br />}<br /><br /><br />}[/syntax]<br /><br />Efekt taki:<br /><a href="https://obrazkiforum.atnel.pl/9088/a899ac1e000696c644a587a9f8caf1f1.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9088/a899ac1e000696c644a587a9f8caf1f1.jpg" alt="Obrazek" /></a><br /><br />Przypuszczam, że lcd może być uszkodzony bo trochę fruwał w tym kartonie, stąd taki sobie obraz. <br /><br />Tymczasem chciałem was zapytać  o poprawność tego kodu, a teraz spróbuję złożyć bibliotekę z BB <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=9088">Panicz74</a> — 14 sie 2015, o 17:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-08-13T18:33:31+01:00</updated>
<published>2015-08-13T18:33:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137209#p137209</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137209#p137209"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137209#p137209"><![CDATA[
No dobra, a co powiesz na odpalenie biblioteki z BB? Zaimportowałeś sobie projekty do workspace'a tak jak Ci pisałem wcześniej?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Słabo widać połączenia na tym zdjęciu. Jednak widzę, że potencjometr masz źle podłączony. Na moje oko nie podłączyłeś +5V.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 13 sie 2015, o 18:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Panicz74]]></name></author>
<updated>2015-08-13T18:15:07+01:00</updated>
<published>2015-08-13T18:15:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137206#p137206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137206#p137206"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137206#p137206"><![CDATA[
Poczytałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Poradnik na temat podłączania już kilka razy maglowałem. Poza BB poczytałem jeszcze pdf:<br /><br /><!-- m --><a class="postlink" href="http://www.elportal.pl/pdf/k09/23_01.pdf" >http://www.elportal.pl/pdf/k09/23_01.pdf</a><!-- m --><br /><!-- m --><a class="postlink" href="http://www.elportal.pl/pdf/k09/24_07.pdf" >http://www.elportal.pl/pdf/k09/24_07.pdf</a><!-- m --><br /><!-- m --><a class="postlink" href="http://www.elportal.pl/pdf/k09/25_10.pdf" >http://www.elportal.pl/pdf/k09/25_10.pdf</a><!-- m --><br /><!-- m --><a class="postlink" href="http://www.elportal.pl/pdf/k09/27_01.pdf" >http://www.elportal.pl/pdf/k09/27_01.pdf</a><!-- m --><br /><br />I już w miarę zrozumiałem jak to ugryźć. Napisałem sobie program, na razie nie separowałem go do biblioteki. Coś drgnęło, bo po wgraniu do wyświetlacza jest taki efekt:<br /><br /><a href="https://obrazkiforum.atnel.pl/9088/0e01d217a6f5f2a6f15843ef733478ef.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9088/0e01d217a6f5f2a6f15843ef733478ef.jpg" alt="Obrazek" /></a><br /><br />Jednak nadal nie może wyświetlić napisu. Oto kod (połączenia tak jak w deklaracjach):<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 6 kwi 2015<br /> *      Author: Radek<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br /><br />#define LCD_DDR DDRC<br />#define LCD_PORT PORTC<br />#define LCD_RS 0<br />#define LCD_EN 1<br />#define LCD_DB7 5<br />#define LCD_DB6 4<br />#define LCD_DB5 3<br />#define LCD_DB4 2<br /><br />int main(void)<br />{<br />LCD_DDR = (0xF0)|(_BV(LCD_RS))|(_BV(LCD_EN));<br />LCD_PORT = 0;<br />_delay_ms(45);<br />// rozpoczecie wysyłania komendy<br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// ustawienie parametrow wyswietlacza<br />// BIT 4: 1 - 8 linii, 0 - 4 linie,<br />// BIT 3: 1 - 2 wiersze, 0 - 1 wiersz<br />// BIT 2: 0 - wymiar znaku 5x8; 1 - wymiar 5x10<br />LCD_SendChar(0b00101000);<br />LCD_PORT |= _BV(LCD_RS);<br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// BIT 2 - tryb pracy wyświetlacza (inkrementowanie zapisu danych)<br />// BIT1: 1 - przesunięcie okna, 0 - przesunięcie kursora<br />LCD_SendChar(0b00000110);<br />LCD_PORT |= _BV(LCD_RS);<br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// BIT2: 1 - wyświetlacz włączony, 0 - wyłączony<br />// BIT1: 1 - włączenie wyświetlania kursora, 0 - kursor niewidoczny<br />// BIT0: 1 - kursor miga, 0 - kursor nie miga<br />LCD_SendChar(0b00001100);<br />LCD_PORT |= _BV(LCD_RS);<br /><br />    char napis&#91;6&#93; = &quot;blabla&quot;;<br />    LCD_SwitchOn();<br />    LCD_SendText(napis, 6);<br />while(1)<br />{<br /><br />}<br />return 0;<br />}<br /><br />void LCD_SendChar(int8_t bajt)<br />{<br />// wlaczenie linii ENABLE<br />LCD_PORT |= _BV(LCD_EN);<br /><br />//wysłanie 4 starszych bitów<br />LCD_PORT = (bajt &amp; 0xF0)|(LCD_PORT &amp; 0x0F);<br /><br />// potwierdzenie wysłana danych poprzez opadnięcie ENABLE<br />LCD_PORT &amp;= ~(_BV(LCD_EN));<br /><br />// odczekanie jednego cyklu<br />asm volatile(&quot;nop&quot;);<br /><br />LCD_PORT |= _BV(LCD_EN);<br />//wysłanie 4 młodszych bitów<br />LCD_PORT = ((bajt &amp; 0x0F)&lt;&lt;4)|(LCD_PORT &amp; 0x0F);<br />LCD_PORT &amp;= ~(_BV(LCD_EN));<br /><br />// odczekanie niezbędnej długości czasu na potwierdzenie wprowadzenia danych<br />_delay_us(40);<br />}<br /><br />void LCD_Clear()<br />{<br /><br />// przestawia na linii RS wartość na 0 po to by wysłać komendę a nie dane<br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// wysyłamy polecenie wyczyszczenia LCD<br />LCD_SendChar(1);<br /><br />// przestawia linię RS na wartość 1 odpowiadającą wprowadzaniu danych<br />LCD_PORT |= _BV(LCD_RS);<br /><br />// maksymalny czas oczekiwania na wyczyszczenie ekranu LCD<br />_delay_ms(1.64);<br />}<br /><br />void LCD_SwitchOn()<br />{<br />// ustawienie kierunku wyjściowego dla wszystkich linii<br />LCD_DDR = (0xF0)|(_BV(LCD_RS))|(_BV(LCD_EN));<br /><br />// ustawienie początkowego stanu niskiego na wszystkich liniach<br />LCD_PORT = 0;<br /><br /><br />// rozpoczęcie wysyłania komendy<br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// ustawienie parametrów wyświetlacza<br />// BIT 4: 1 - 8 linii, 0 - 4 linie,<br />// BIT 3: 1 - 2 wiersze, 0 - 1 wiersz<br />// BIT 2: 0 - wymiar znaku 5x8; 1 - wymiar 5x10<br />LCD_SendChar(0b00101000);<br />LCD_PORT |= _BV(LCD_RS);<br /><br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// BIT 2 - tryb pracy wyświetlacza (inkrementowanie zapisu danych)<br />// BIT1: 1 - przesunięcie okna, 0 - przesunięcie kursora<br />LCD_SendChar(0b00000110);<br />LCD_PORT |= _BV(LCD_RS);<br /><br /><br />LCD_PORT &amp;= ~(_BV(LCD_RS));<br />// BIT2: 1 - wyświetlacz włączony, 0 - wyłączony<br />// BIT1: 1 - włączenie wyświetlania kursora, 0 - kursor niewidoczny<br />// BIT0: 1 - kursor miga, 0 - kursor nie miga<br />LCD_SendChar(0b00001100);<br />LCD_PORT |= _BV(LCD_RS);<br /><br />LCD_Clear();<br />}<br /><br />void LCD_SendText(char *text, int8_t textLength)<br />{<br />int8_t k=0;<br />while(k &lt; textLength)<br />{<br />LCD_SendChar(text&#91;k&#93;);<br />k++;<br />}<br />}[/syntax]<br /><br />Gdzie może być błąd?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9088">Panicz74</a> — 13 sie 2015, o 18:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-08-13T12:32:31+01:00</updated>
<published>2015-08-13T12:32:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137185#p137185</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137185#p137185"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137185#p137185"><![CDATA[
Oczywiście, że tak.  <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: 47 minutach ]</span></strong><br /><br />Poczytaj koniecznie! Masz książkę i wspaniałą bibliotekę do obsługi tego wyświetlacza w zasięgu ręki, a próbujesz po omacku używać bibliotek z internetu?  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Przede wszystkim obejrzyj ten poradnik, a szczególnie <a href="https://youtu.be/AroKPav3On4?t=602"  class="postlink">ten</a> fragment i zobacz jak dodaje się wszystkie projekty np z płyty z niebieskiej książki do workspace'a w eclipsie. Powinieneś zainteresować się projektem 04_LCD.<br />Następnie poczytaj <a href="http://mirekk36.blogspot.co.uk/2012/04/lcd-hd4478-jak-podaczac.html"  class="postlink">tutaj</a> i koniecznie zobacz ten video poradnik.<br />Jak już to opanujesz daj znać i pokaż schemat jak to podłączyłeś lub zrób chociaż kilka fotek tak, by było dokładnie widać co i jak. Proponuję Ci podłączyć do procesora linie D4 - D7 oraz RS, RW i E do procesora, no i koniecznie potencjometr do regulacji kontrastu (tak jak na zdjęciu nr 2).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 13 sie 2015, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Panicz74]]></name></author>
<updated>2015-08-13T12:23:46+01:00</updated>
<published>2015-08-13T12:23:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137184#p137184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137184#p137184"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137184#p137184"><![CDATA[
No właśnie, nie mogę pojąć do końca jak to działa. Dlatego też nie potrafię skorzystać z gotowej biblioteki. Teraz już wiem skąd się ten kod wziął. Posiadam BB <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> już do niej zaglądam. Czy jak będę miał jakieś problemy to mogę w tym temacie was pytać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9088">Panicz74</a> — 13 sie 2015, o 12:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-08-13T09:51:08+01:00</updated>
<published>2015-08-13T09:51:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137177#p137177</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137177#p137177"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137177#p137177"><![CDATA[
Nie obraź się kolego, ale nie rozumiejąc jak działa ten wyświetlacz ciężko Ci będzie go odpalić. Sądząc po innych Twoich postach odniosłem takie wrażenie. <br />Co do tej biblioteki, którą nieumiejętnie próbujesz zaadoptować, to została ona napisana dla wyświetlacza podłączonego z linią RW do procesora, w trybie 8bitowym i oczywiście z potencjometrem do regulacji kontrastu wyświetlacza. <a href="https://youtu.be/uCKShSBdDG8?t=1839"  class="postlink">Zobacz sam!</a><br />Jeśli jeszcze nie posiadasz BB to gorąco Ci ją polecam. Między innymi dowiesz się z niej jak się pisze taką bibliotekę do jej obsługi i jak ten wyświetlacz działa, a przede wszystkim zdobędziesz fundamentalną wiedzę jak się programuje w języku C i to w ojczystym języku  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  w bardzo przystępny sposób.<br />Zobacz <a href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html"  class="postlink">tutaj.</a><br /><br />A póki co to poczytaj też <a href="http://radzio.dxp.pl/hd44780/"  class="postlink">tutaj.</a> Te biblioteki są pewne i działające. Sprawdzone przez kilku kolegów, którzy nie mieli niebieskiej książki, a bardzo chcieli odpalić wyświetlacz LCD.  <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=7157">anshar</a> — 13 sie 2015, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-08-13T09:34:45+01:00</updated>
<published>2015-08-13T09:34:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137176#p137176</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137176#p137176"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137176#p137176"><![CDATA[
Skąd Kolega wział taki kod?!!! To jakaś makabra. Po pierwsze nie ma tam definicji wszystkich zadeklarowanych funkcji, więc kompilacja wychodzi z błędem. Po drugie w tym programie najwyraźniej wykorzystywane jest sprawdzanie flagi zajętości a na schemacie pin RW jest na stałe podłączony do masy. Pin Vo powinien być podłączony przez potencjometr, żeby można było ustawiać kontrast. Wreszcie magistrala danych podłączona jest czterema przewodami, a z przedstawionych funkcji ani rusz nie wynika, żeby taki był sposób przesyłania danych. Ja też proponuję zacząć od podstaw i poczytać podstawy sterowania LCD w BlueBook-u Pana Mirka i zastosować przedstawione tam sprawdzone i działające programy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 13 sie 2015, o 09:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elsat1]]></name></author>
<updated>2015-08-13T01:01:51+01:00</updated>
<published>2015-08-13T01:01:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137164#p137164</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137164#p137164"/>
<title type="html"><![CDATA[Re: LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137164#p137164"><![CDATA[
Spróbuj wstawić kod Mirka i odpowiednio dopasuj do 8 znaków w linii.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=151">elsat1</a> — 13 sie 2015, o 01:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Panicz74]]></name></author>
<updated>2015-08-12T23:10:02+01:00</updated>
<published>2015-08-12T23:10:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137161#p137161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137161#p137161"/>
<title type="html"><![CDATA[LCD - problem z programem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12621&amp;p=137161#p137161"><![CDATA[
Witam,<br /><br />Rozpocząłem zabawę z LCD HD44780 2x8.<br /><br />Podłączyłem go według schematu:<br /><a href="https://obrazkiforum.atnel.pl/9088/1860650e102235565c4561c02370d6b3.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9088/1860650e102235565c4561c02370d6b3.jpg" alt="Obrazek" /></a><br /><br />Tylko, że zamiast portu B wszystko znajduje się na porcie D.<br /><br />Zmontowałem taki kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /># include &lt;string.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define MrLCDsCrib PORTD<br />#define DataDir_MrLCDsCrib DDRD<br />#define MrLCDsControl PORTD<br />#define DataDir_MrLCDsControl DDRD<br />#define LightSwitch 5<br />#define BiPolarMood 3<br /><br />void Check_IF_MrLCD_isBusy(void);<br />void Peek_A_Boo(void);<br />void Send_A_Command(unsigned char command);<br />void Send_A_Character(unsigned char character);<br />void Send_A_String(char *string);<br /><br />int main(void)<br />{<br />DataDir_MrLCDsControl |= 1&lt;&lt;LightSwitch | 1&lt;&lt;BiPolarMood;<br />_delay_ms(15);<br /><br />Send_A_Command(0x01); //Clear Screen 0x01 = 00000001<br />_delay_ms(2);<br />Send_A_Command(0x38);<br />_delay_us(50);<br />Send_A_Command(0b00001110);<br />_delay_us(50);<br /><br />Send_A_String(&quot;Hello&quot;);<br /><br />while(1)<br />{<br />}<br />}<br /><br />void Check_IF_MrLCD_isBusy()<br />{<br />DataDir_MrLCDsCrib = 0;<br />MrLCDsControl &amp;= ~1&lt;&lt;BiPolarMood;<br /><br />while (MrLCDsCrib &gt;= 0x80)<br />{<br />Peek_A_Boo();<br />}<br />DataDir_MrLCDsCrib = 0xFF; //0xFF means 0b11111111<br />}<br /><br />void Peek_A_Boo()<br />{<br />MrLCDsControl |= 1&lt;&lt;LightSwitch;<br />asm volatile (&quot;nop&quot;);<br />asm volatile (&quot;nop&quot;);<br />MrLCDsControl &amp;= ~1&lt;&lt;LightSwitch;<br />}<br /><br />void Send_A_Command(unsigned char command)<br />{<br />Check_IF_MrLCD_isBusy();<br />MrLCDsCrib = command;<br />MrLCDsControl &amp;= ~ (1&lt;&lt;BiPolarMood);<br />Peek_A_Boo();<br />MrLCDsCrib = 0;<br />}<br /><br />void Send_A_Character(unsigned char character)<br />{<br />Check_IF_MrLCD_isBusy();<br />MrLCDsCrib = character;<br />MrLCDsControl |= 1&lt;&lt;BiPolarMood;<br />Peek_A_Boo();<br />MrLCDsCrib = 0;<br />}[/syntax]<br /><br />Nic się niestety nie wyświetla... Czy ktoś może mi pomóc znaleźć błąd??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9088">Panicz74</a> — 12 sie 2015, o 23:10</p><hr />
]]></content>
</entry>
</feed>