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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19090&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2017-08-30T15:56:52+01:00</updated>
<published>2017-08-30T15:56:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194239#p194239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194239#p194239"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194239#p194239"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ok ok ... no ale sam widzisz, że twoja wina<br /></div><br /><br />a nie bo winny jestem ja ... sam widziałem jak podmieniam kable koledze żeby mu nie działało <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 30 sie 2017, o 15:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-08-30T15:54:16+01:00</updated>
<published>2017-08-30T15:54:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194238#p194238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194238#p194238"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194238#p194238"><![CDATA[
ok ok ... no ale sam widzisz, że twoja wina <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... ok to już tak żartobliwie ale mam nadzieję, że weźmiesz do serca to - żeby na przyszłość podawać jednak własne schematy, porządne schematy czy też inne precyzyjne informacje<br /><br />POWODZENIA ! <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> — 30 sie 2017, o 15:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenq80]]></name></author>
<updated>2017-08-30T15:49:12+01:00</updated>
<published>2017-08-30T15:49:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194237#p194237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194237#p194237"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194237#p194237"><![CDATA[
już któryś raz mówię mój rzeczywisty układ nijak sie miał do tego ze schematu (moja wina). Jak dawałem zdjęcie schematu jest też zdjecie płytki stykowej i tam JAK BYK widać że D0...D4 są luzem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17825">fenq80</a> — 30 sie 2017, o 15:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-08-30T15:41:58+01:00</updated>
<published>2017-08-30T15:41:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194236#p194236</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194236#p194236"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194236#p194236"><![CDATA[
błędne połączenia to miałeś na pewno - jeśli zwarłeś sobie linie D4..D0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 sie 2017, o 15:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenq80]]></name></author>
<updated>2017-08-30T14:28:05+01:00</updated>
<published>2017-08-30T14:28:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194228#p194228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194228#p194228"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194228#p194228"><![CDATA[
Wkońcu udało się , i lcd zadziałał. Problemem nie były błedne podłaczenia, czy definicje portów/pinów w pliku.h (to wszystko miałem dobrze podłaczone gdyż ten schemat który pokazałem wyżej był tylko wzorem. Jak przeglądnąłem linki które mi pan podesłał okazało się że właśnie tak zrobiłem i nie działało), ale , błąd w programie , a raczej w ustawieniach taktowania. Gdyż mój atmega był ustawiony na taktowanie 8MHz a w projekcie w programie , jakimś sposobem zapomniałem zmienić taktowanie i widniało tam domyślne 1MHz. Teraz już wszystko działa. Dziękuje za poświęcony czas.<br /><br /><a href="https://obrazkiforum.atnel.pl/17825/f83bbfb5e09419b1ac16e76b5dc0f930.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/17825/f83bbfb5e09419b1ac16e76b5dc0f930.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17825">fenq80</a> — 30 sie 2017, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-08-29T19:54:35+01:00</updated>
<published>2017-08-29T19:54:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194169#p194169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194169#p194169"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194169#p194169"><![CDATA[
no więc tym bardziej warto zawsze podawać dokładne i precyzyjne dane na forum, żeby ktoś mógł szybko i precyzyjnie pomóc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 sie 2017, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenq80]]></name></author>
<updated>2017-08-29T19:53:09+01:00</updated>
<published>2017-08-29T19:53:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194168#p194168</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194168#p194168"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194168#p194168"><![CDATA[
Dzękuje za tak szybką odpowiedź. Nie czytałęm tego artykułu, ale już się za niego zabieram.<br />A jeśli chodzi o schemat, na tym tylko się wzorowałem, natomiast u siebie na płytce mam piny podłaczone do portu A.(teraz sam widzę żę to smieszne że schematu sam nie zrobiłęm , trochę źle sie za to zabrałem , ale będę miał nauczkę) Natomiast używam mikrokontrolera atmega 16.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17825">fenq80</a> — 29 sie 2017, o 19:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-08-29T19:47:18+01:00</updated>
<published>2017-08-29T19:47:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194167#p194167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194167#p194167"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194167#p194167"><![CDATA[
<div class="quotetitle">fenq80 napisał(a):</div><div class="quotecontent"><br />Połączenia pomiędzy pinami mikrokontrolera a wyświetlacza sprawdzałem miernikiem więc na pewno nie łacza.<br /></div><br />PIERWSZY BABOL - ale najpierw powiedz czy czytałeś  TO ?<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/04/lcd-hd4478-jak-podaczac.html" >http://mirekk36.blogspot.com/2012/04/lc ... aczac.html</a><!-- m --><br /><br />więc ZOBACZ koniecznie i częściej zaglądaj na bloga - sporo dodatkowych rzeczy się dowiesz w uzupełnieniu do książek a przede wszystkim JAK podłączać prawidłowo LCD bo u ciebie co robią te połączenia nieużywanych pinów D4..D0 ? Ani do GND ani luzem ... skąd taki pomysł w ogóle wziąłeś ?<br /><br />kolejny i to MEGA MEGA MEGA BABOL - no na schemacie masz podłączony LCD do PORTB mikrokontrolera zaś w pliku konfiguracyjnym ???? no sam patrzysz na to i nie widzisz ??? toż specjalnie poprosiłem cię o tą konfigurację w pliku *.h licząc że raz dwa sam zobaczysz że pewnie już tam masz BABOLA ... a ty na forum podajesz schemat na PORTB a w konfiguracji na PORTA <br /><br />[syntax=c]#define USE_RW 0<br />#define LCD_D7PORT  A<br />#define LCD_D7 5<br />#define LCD_D6PORT  A<br />#define LCD_D6 4<br />#define LCD_D5PORT  A<br />#define LCD_D5 3<br />#define LCD_D4PORT  A<br />#define LCD_D4 2<br /> <br /> <br />// tu definiujemy piny procesora do których podłączamy sygnały RS,RW, E<br />#define LCD_RSPORT A<br />#define LCD_RS 0<br /> <br />#define LCD_RWPORT A<br />#define LCD_RW 6<br /> <br />#define LCD_EPORT A<br />#define LCD_E 1[/syntax]<br /><br />co więcej taka konfiguracja nawet nie powinna się skompilować na twoim procku ATmega8 - więc pewnie znowu opisujesz tak troszkę (nie obraź się) bałaganiarsko swój problem<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />ale to nie koniec BABOLI - bo jeśli podłączyłeś LCD sobie na PORTB procka - to czy nie zastanowiłeś się, że na tym porcie masz również linie ISP ??? czyli linie programatora ? ... jak myślisz ma prawo to tak działać zawsze i w każdym przypadku ???<br /><br />i znowu jeśli chcesz się dowiedzieć o co tu chodzi i NAUCZYĆ się bardzo ważnej rzeczy to proszę cię obejrzyj TO<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/12/avr-isv-vc-spi-co-wolno-czego-nie-wolno.html" >http://mirekk36.blogspot.com/2013/12/av ... wolno.html</a><!-- m --><br /><br />żeby wiedzieć co wolno a czego nie wolno - i w jaki sposób podłączać coś do linii ISP<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />GWARANTUJĘ ci, że jak obejrzysz linki które podałem ... jak poprawisz BABOLE to wszystko ruszy z kopyta ... <br /><br />niestety widać, też, że kompletnie nie zajrzałeś chyba do rozdziału w Bluebooku na temat LCD - pewnie się nie chciało poczytać całego rozdziału ? chociaż tak przelecieć go oczami co? Bo tam jest jak BYK niestety napisane - jak konfigurować sobie LCD jeśli chodzi o ustawienia w tym pliku *.h<br /><br /><br />aha i na koniec - w związku z tym, że jesteś nowy na forum, to na razie tylko gorąco cię proszę - NIGDY więcej nie wklejaj takich LAUREK - mówię tu o twoim ala schemacie - bo masz dobry kurs dzięki któremu można w 5 minut nauczyć się i narysować porządnie schemat - zobacz<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/kurs-cadsoft-eagle.html" >http://atnel.pl/kurs-cadsoft-eagle.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 sie 2017, o 19:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenq80]]></name></author>
<updated>2017-08-29T19:32:17+01:00</updated>
<published>2017-08-29T19:32:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194166#p194166</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194166#p194166"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194166#p194166"><![CDATA[
Bardzo przepraszam jeśli uraziłem moim pytaniem. Naprawdę nie chciałem aby to wyglądało tak że błędu szukam tylko w kodzie. <br />Zamieszczem potrzebne zdjęcia. Połączenia pomiędzy pinami mikrokontrolera a wyświetlacza sprawdzałem miernikiem więc na pewno nie łacza. <br /><a href="https://obrazkiforum.atnel.pl/17825/be6c140e7401a90c4cbb44747264c588.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/17825/be6c140e7401a90c4cbb44747264c588.jpg" alt="Obrazek" /></a><br />Schemat według którego podłączałem wyglądał mniej więcej tak (z tą róznica ze także piny 15 i 16 podpiąłem do GND i VCC mikrokontrolera)<br /><a href="https://obrazkiforum.atnel.pl/17825/7221de264b35914bd1c2bcdb6f6dda78.gif"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/17825/7221de264b35914bd1c2bcdb6f6dda78.gif" alt="Obrazek" /></a><br /><br />Pierwsze linijki kodu<br />[syntax=c]#ifndef LCD_H_<br />#define LCD_H_<br /><br />#define LCD_Y 2// ilość wierszy wyświetlacza LCD<br />#define LCD_X 16// ilość kolumn wyświetlacza LCD<br /><br />#define USE_RW 0<br />#define LCD_D7PORT  A<br />#define LCD_D7 5<br />#define LCD_D6PORT  A<br />#define LCD_D6 4<br />#define LCD_D5PORT  A<br />#define LCD_D5 3<br />#define LCD_D4PORT  A<br />#define LCD_D4 2<br /><br /><br />// tu definiujemy piny procesora do których podłączamy sygnały RS,RW, E<br />#define LCD_RSPORT A<br />#define LCD_RS 0<br /><br />#define LCD_RWPORT A<br />#define LCD_RW 6<br /><br />#define LCD_EPORT A<br />#define LCD_E 1<br /><br />#define USE_LCD_LOCATE1// ustawia kursor na wybranej pozycji Y,X (Y=0-3, X=0-n)<br /><br />#define USE_LCD_CHAR 1// wysyła pojedynczy znak jako argument funkcji<br /><br />#define USE_LCD_STR_P 1// wysyła string umieszczony w pamięci FLASH<br />#define USE_LCD_STR_E 1// wysyła string umieszczony w pamięci FLASH<br /><br />#define USE_LCD_INT 1// wyświetla liczbę dziesietną na LCD<br />#define USE_LCD_HEX 0// wyświetla liczbę szesnastkową na LCD<br /><br />#define USE_LCD_DEFCHAR1// wysyła zdefiniowany znak z pamięci RAM<br />#define USE_LCD_DEFCHAR_P 1// wysyła zdefiniowany znak z pamięci FLASH<br />#define USE_LCD_DEFCHAR_E 1// wysyła zdefiniowany znak z pamięci EEPROM<br /><br />#define USE_LCD_CURSOR_ON 0// obsługa włączania/wyłączania kursora<br />#define USE_LCD_CURSOR_BLINK 0// obsługa włączania/wyłączania migania kursora<br />#define USE_LCD_CURSOR_HOME 0// ustawia kursor na pozycji początkowej[/syntax]<br />Dziękuję za zainteresowanie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17825">fenq80</a> — 29 sie 2017, o 19:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-08-29T16:18:02+01:00</updated>
<published>2017-08-29T16:18:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194162#p194162</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194162#p194162"/>
<title type="html"><![CDATA[Re: LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194162#p194162"><![CDATA[
<div class="quotetitle">fenq80 napisał(a):</div><div class="quotecontent"><br />następnie wgrałęm program z płyty dołaczonej do ksiązki ale także nie działą poprawnie.<br /></div><br />A nie przeszło ci przez myśl, że coś źle podłączyłeś ??? tylko jak nie działa - to znaczy że wszyscy wszystko robią źle a ja dobrze ?<br /><br />Panie obsługa LCD z Bluebooka to żelazna procedura, która ZAWSZE działa i można się na niej wzorować, działa już u kilku tysięcy czytelników - a ty pierwszy odkrywasz że nie działa ?<br /><br />Broń boże nie zamierzam tymi słowami bronić Bluebooka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no tylko szkoda mi takich początkujących - co to trwonią swój cenny czas szukając wszędzie błędu tylko nie u siebie ...<br /><br /><div class="quotetitle">fenq80 napisał(a):</div><div class="quotecontent"><br />Bardzo proszę Was o pomoc, ponieważ nie wiem juz co mam z tym robic.<br /></div><br /><br />to ZACZNIJ od tego że pokaż JAK Podłączyłeś wyświetlacz pod procka - SCHEMAT <br /><br />pokaż swoją płytkę PCB którą zrobiłeś albo stykówkę - żeby było widać coś tam nababolił w połączeniach - bo ewidentnie masz coś zbabolone skoro ci kod z Bluebooka nie działa<br /><br />Poza tym jeśli już próbujesz kod z Bluebooka - a od tego WARTO ZACZĄĆ ... to wklej tutaj kilkanaście pierwszych linijek kodu pliku bibliotecznego *.h teb biblioteki z BB żeby pokazać JAK SKONFIGUROWAŁEŚ sobie tego LCD<br /><br />wtedy panie kochany - będzie można coś ci próbować pomóc<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><span style="color: #FF0000">Natomiast kod źródłowy na forum formatujemy zgodnie z instrukcją forumową: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --> - więc proszę edytować swój pierwszy post i poprawić ok?</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 sie 2017, o 16:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenq80]]></name></author>
<updated>2017-08-29T19:15:51+01:00</updated>
<published>2017-08-29T16:11:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194160#p194160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194160#p194160"/>
<title type="html"><![CDATA[LCD 2x16 nie działa poprawnie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19090&amp;p=194160#p194160"><![CDATA[
Witam. Mam pewien problem, otóż zacząłem czytać ksiażkę pana Mirosława , tego słynnego Bluebooka, i natrafiłem na problem podczas próby uruchomienia wyświetlacza LCD. Otóż napisałem program na podstawie tego z ksiązki ale niestety LCD nie wyświetlca poprawnie, następnie wgrałęm program z płyty dołaczonej do ksiązki ale także nie działą poprawnie. Opisze dogłebniej co się dzieje: po załadowaniu programu do mikrokontrolera wyswietlacz nic nie wyswietla,( ma ustowione 2 linie ale zadna z nich nie pokazuje zadnych znakow), kiedy zresetuje mikrokontroler przy pomocy switcha dołączonego do linii reset, to po kilku resetach pojawiają sie na wyswietlaczu pewne znaki, jednak nic nie znaczące, i w różych miejscach, gdy znów klikne &quot;reset&quot; inne znaki pojawiaja sie w innych miejscach lub nic sie nie pojawia. Pewne sekwencje tych znków powtarzają sie czasami. Nie wiem w czym mógłby być problem. Procesor jak i lcd zasialam  z programatora podłączonego do usb napięciem 5V.  Oto mój kod:<br />[syntax=c]#ifndef LCD_SERVICE_H_<br />#define LCD_SERVICE_H_<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />//LCD miejsce podłacznia pinów odbierajacych<br />#define LCD_D7_PIN 5<br />#define LCD_D6_PIN 4<br />#define LCD_D5_PIN 3<br />#define LCD_D4_PIN 2<br /><br />//LCD port podłączania pinów odbierajacych<br />#define LCD_D7_PORT A<br />#define LCD_D6_PORT A<br />#define LCD_D5_PORT A<br />#define LCD_D4_PORT A<br /><br />//LCD miejsce podłączenia pinów sterujących<br />#define LCD_RW_PIN 3<br />#define LCD_RS_PIN 0<br />#define LCD_E_PIN 1<br /><br />//LCD port podłączania pinów sterujących<br />#define LCD_RW_PORT A<br />#define LCD_RS_PORT A<br />#define LCD_E_PORT A<br /><br />//piny sterujace ON/OFF<br />#define SET_RS PORT(LCD_RS_PORT) |= LCD_RS_PIN<br />#define CLEAR_RS PORT(LCD_RS_PORT) &amp;= ~LCD_RS_PIN<br /><br />#define SET_RW PORT(LCD_RW_PORT) |= LCD_RW_PIN<br />#define CLEAR_RW PORT(LCD_RW_PORT) &amp;= ~LCD_RW_PIN<br /><br />#define SET_E PORT(LCD_E_PORT) |= LCD_E_PIN<br />#define CLEAR_E PORT(LCD_E_PORT) &amp;= ~LCD_E_PIN<br /><br />//LCD uproszczony dostęp do portów<br />// DDR<br />#define DDR(x) SDDR(x)<br />#define SDDR(x) (DDR##x)<br /><br />// PIN<br />#define PIN(x) SPIN(x)<br />#define SPIN(x) (PIN##x)<br /><br />// PORT<br />#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT##x)<br /><br />//LCD obsługa funkcji<br />#define LCD_CLEAR 1<br />#define LCD_CURSOR_HOME (1 &lt;&lt; 1)<br />#define LCD_ENTRY_MODE (1 &lt;&lt; 2)<br />   #define LCD_CURSOR_ENTRY_RIGHT (1 &lt;&lt; 1)<br />   #define LCD_CURSOR_ENTRY__LEFT 0<br />   #define LCD_DISPLAY_MOVE (1 &lt;&lt; 0)<br />   #define LCD_CURSOR_MOVE 0<br />#define LCD_DISPLAY_ON_OFF (1 &lt;&lt; 3)<br />   #define LCD_DISPLAY_ON (1 &lt;&lt; 2)<br />   #define LCD_DISPLAY_OFF 0<br />   #define LCD_CURSOR_ON (1 &lt;&lt; 1)<br />   #define LCD_CURSOR_OFF 0<br />   #define LCD_CURSOR_BLINK_ON (1 &lt;&lt; 0)<br />   #define LCD_CURSOR_BLINK_OFF 0<br />#define LCD_SHIFT (1 &lt;&lt; 4)<br />   #define LCD_SHIFT_DISPLAY_MOVE (1 &lt;&lt; 3)<br />   #define LCD_SHIFT_CURSOR_MOVE 0<br />   #define LCD_CURSOR_RIGHT (1 &lt;&lt; 2)<br />   #define LCD_CURSOR_LEFT 0<br />#define LCD_FUNCTION_SET (1 &lt;&lt; 5)<br />   #define LCD_INTERFACE_8B (1 &lt;&lt; 4)<br />   #define LCD_INTERFACE_4B 0<br />   #define LCD_TWO_LINES (1 &lt;&lt; 3)<br />   #define LCD_ONE_LINES 0<br />   #define LCD_SIGN_SIZE_5x10 (1 &lt;&lt; 2)<br />   #define LCD_SIGN_SIZE_5x7 0<br />#define LCDC_SET_CGRAM(1 &lt;&lt; 6)<br />#define LCDC_SET_DDRAM  (1 &lt;&lt; 7)<br /><br />//definicje makr podłaczajacych wybrane funkjce<br />#define USE_LCD_LOCATE 1<br /><br />#define USE_LCD_STRING_P 0 //string z flash<br />#define USE_LCD_STRING_E 0 //EEPROM<br /><br />#define  USE_LCD_INT 0<br />#define  USE_LCD_HEX 0<br /><br />#define USE_LCD_DEFINEDCHAR 1<br />#define USE_LCD_DEFINEDCHAR_P 0<br />#define USE_LCD_DEFINEDCHAR_E 0<br /><br />#define USE_LCD_CURSOR_ON 0<br />#define USE_LCD_CURSOR_BLINK 0<br />#define USE_LCD_CURSOR_HOME 0<br /><br />void port_initialization_out();<br /><br />void port_initialization_in();<br /><br />void write_half_of_byte(uint8_t data);<br /><br />void write_byte(uint8_t data);<br /><br />void lcd_write_command(uint8_t data);<br /><br />void lcd_write_data(uint8_t data);<br /><br />void lcd_clear();<br /><br />void lcd_home();<br /><br />void lcd_write_string(char * str);<br /><br />void lcd_initialization();<br /><br />void lcd_locate_set(uint8_t y, uint8_t x);<br /><br />#endif /* LCD_SERVICE_H_ */[/syntax]<br /><br />[syntax=c]#include &quot;lcd_library.h&quot;<br /><br />void port_initialization_out()<br />{<br />DDR(LCD_D7_PORT) |= (1 &lt;&lt; LCD_D7_PIN);<br />    DDR(LCD_D6_PORT) |= (1 &lt;&lt; LCD_D6_PIN);<br />    DDR(LCD_D5_PORT) |= (1 &lt;&lt; LCD_D5_PIN);<br />    DDR(LCD_D4_PORT) |= (1 &lt;&lt; LCD_D4_PIN);<br />}<br /><br />void port_initialization_in()<br />{<br />DDR(LCD_D7_PORT) &amp;= ~(1 &lt;&lt; LCD_D7_PIN);<br />DDR(LCD_D6_PORT) &amp;= ~(1 &lt;&lt; LCD_D6_PIN);<br />DDR(LCD_D5_PORT) &amp;= ~(1 &lt;&lt; LCD_D5_PIN);<br />    DDR(LCD_D4_PORT) &amp;= ~(1 &lt;&lt; LCD_D4_PIN);<br />}<br /><br />void write_half_of_byte(uint8_t data)<br />{<br />if(data &amp; (1 &lt;&lt; 0)) PORT(LCD_D4_PORT) |= LCD_D4_PIN;<br />else PORT(LCD_D4_PORT) &amp;= ~(1 &lt;&lt; LCD_D4_PIN);<br /><br />if(data &amp; (1 &lt;&lt; 0)) PORT(LCD_D5_PORT) |= LCD_D5_PIN;<br />else PORT(LCD_D5_PORT) &amp;= ~(1 &lt;&lt; LCD_D5_PIN);<br /><br />if(data &amp; (1 &lt;&lt; 0)) PORT(LCD_D6_PORT) |= LCD_D6_PIN;<br />else PORT(LCD_D6_PORT) &amp;= ~(1 &lt;&lt; LCD_D6_PIN);<br /><br />if(data &amp; (1 &lt;&lt; 0)) PORT(LCD_D7_PORT) |= LCD_D7_PIN;<br />else PORT(LCD_D7_PORT) &amp;= ~(1 &lt;&lt; LCD_D7_PIN);<br />}<br /><br />void write_byte(uint8_t data)<br />{<br />port_initialization_out();<br /><br />SET_E;<br />write_half_of_byte(data &gt;&gt; 4);<br />CLEAR_E;<br /><br />SET_E;<br />write_half_of_byte(data);<br />CLEAR_E;<br /><br />}<br /><br />void lcd_write_command(uint8_t data)<br />{<br />    CLEAR_RS;<br />    write_byte(data);<br />}<br /><br /> void lcd_write_data(uint8_t data)<br />{<br />    SET_RS;<br />    write_byte(data);<br />}<br /><br />void lcd_clear()<br />{<br />lcd_write_command(LCD_CLEAR);<br />_delay_ms(4.9);<br />}<br /><br />void lcd_write_string(char * str)<br />{<br />register char znak;<br />    while( (znak = *str++))<br />    {<br />    lcd_write_data((znak &gt;= 0x80 &amp;&amp; znak &lt;= 0x87) ? (znak &amp; 0x07) : znak);<br />    }<br />}<br /><br />void lcd_initialization()<br />{<br /> port_initialization_out();<br /> DDR(LCD_RS_PORT) |= (1 &lt;&lt; LCD_RS_PIN);<br /> DDR(LCD_E_PORT) |= (1 &lt;&lt; LCD_E_PIN);<br /><br /> PORT(LCD_RS_PORT) &amp;= ~(1 &lt;&lt; LCD_RS_PIN);<br /> PORT(LCD_E_PORT) &amp;= ~(1 &lt;&lt; LCD_E_PIN);<br /><br /> _delay_ms(15);<br /> PORT(LCD_RS_PORT) &amp;= ~(1 &lt;&lt; LCD_RS_PIN);<br /> PORT(LCD_RW_PORT) &amp;= ~(1 &lt;&lt; LCD_RW_PIN);<br /> PORT(LCD_E_PORT) &amp;= ~(1&lt;&lt;LCD_E_PIN);<br /><br /> SET_E;<br /> write_half_of_byte(LCD_FUNCTION_SET | LCD_INTERFACE_8B);// tryb 8-bitowy<br /> CLEAR_E;<br /> _delay_ms(4.1);<br /><br /> SET_E;<br /> write_half_of_byte(LCD_FUNCTION_SET | LCD_INTERFACE_8B);// tryb 8-bitowy<br /> CLEAR_E;<br /> _delay_us(100);<br /><br /> SET_E;<br /> write_half_of_byte(LCD_FUNCTION_SET | LCD_INTERFACE_8B);// tryb 8-bitowy<br /> CLEAR_E;<br /> _delay_us(100);<br /><br /> SET_E;<br /> write_half_of_byte(LCD_FUNCTION_SET | LCD_INTERFACE_4B);// tryb 4-bitowy<br /> CLEAR_E;<br /> _delay_us(100);<br /><br /> lcd_write_command( LCD_FUNCTION_SET | LCD_INTERFACE_4B | LCD_SIGN_SIZE_5x7 | LCD_TWO_LINES);<br /><br /> lcd_write_command( LCD_DISPLAY_ON_OFF | LCD_CURSOR_OFF );<br /><br /> lcd_write_command( LCD_DISPLAY_ON_OFF | LCD_DISPLAY_ON );<br /><br /> lcd_write_command( LCD_ENTRY_MODE | LCD_CURSOR_ENTRY_RIGHT );<br /><br /><br /><br /> lcd_clear();<br />}<br /><br />#if USE_LCD_CURSOR_HOME == 1<br />void lcd_home()<br />{<br />lcd_write_command(LCD_CLEAR | LCD_CURSOR_HOME);<br />_delay_ms(4.9);<br />}<br />#endif<br /><br />#if USE_LCD_CURSOR_ON == 1<br />void lcd_cursor_on()<br />{<br />lcd_write_command(LCD_DISPLAY_ON_OFF | LCD_CURSOR_ON | LCD_DISPLAY_ON);<br />}<br /><br />void lcd_cursor_off()<br />{<br />    lcd_write_command(LCD_DISPLAY_ON_OFF | LCD_DISPLAY_ON);<br />}<br /># endif<br /><br />#if USE_LCD_CURSOR_BLINK == 1<br />void lcd_blink_on()<br />{<br />lcd_write_command(LCD_DISPLAY_ON_OFF | LCD_DISPLAY_ON | LCD_CURSOR_BLINK_ON);<br />}<br /><br />void lcd_blink_off()<br />{<br />lcd_write_command(LCD_DISPLAY_ON_OFF | LCD_DISPLAY_ON);<br />}<br />#endif<br /><br />#if USE_LCD_LOCATE == 1<br />void lcd_locate_set(uint8_t y, uint8_t x)<br />{<br />if(y == 1) y = 0;<br />if(y == 2) y = 40;<br /><br />lcd_write_command(LCDC_SET_DDRAM + y + x);<br />}<br />#endif<br /><br />#if USE_LCD_STRING_P == 0<br />void lcd_write_string_p(char * str)<br />{<br />register char znak;<br />    while( (znak = pgm_read_byte(str++)))<br />    {<br />    lcd_write_data((znak&gt;=0x80 &amp;&amp; znak &lt;= 0x87) ? (znak &amp; 0x07) : znak);<br />    }<br />}<br />#endif<br /><br />#if USE_LCD_STRING_E == 1<br />void lcd_write_string_e(char * str)<br />{<br />register char znak;<br />while( (znak = eeprom_read_byte((uint8_t *)str++)))<br />{<br />    lcd_write_data((znak&gt;=0x80 &amp;&amp; znak &lt;= 0x87) ? (znak &amp; 0x07) : znak);<br />}<br />}<br />#endif<br /><br />#if USE_LCD_INT == 1<br />void lcd_int(int value)<br />{<br />char buffer&#91;17&#93;;<br />lcd_write_string(itoa(value,buffer,10));<br />}<br />#endif<br /><br />#if USE_LCD_HEX == 1<br />void lcd_hex(int value)<br />{<br />char buffer&#91;17&#93;;<br />lcd_write_string(itoa(value,buffer,16));<br />}<br />#endif<br /><br />#if USE_LCD_DEFINEDCHAR == 1<br />void lcd_defchar(uint8_t code, uint8_t * def_znak)<br />{<br />register uint8_t buffer;<br />lcd_write_command(LCDC_SET_CGRAM + ((code &amp; 0x07) * 8));<br /><br />for(uint8_t i = 0; i &lt; 8; ++i)<br />{<br />    buffer = *(def_znak++);<br />    lcd_write_data(buffer);<br />}<br />}<br />#endif<br /><br />#if USE_LCD_DEFINEDCHAR_P == 1<br />void lcd_defchar_P(uint8_t code, uint8_t * def_znak)<br />{<br />register uint8_t buffer;<br />lcd_write_cmd(LCDC_SET_CGRAM + ((code &amp; 0x07) * 8));<br /><br />for(uint8_t i = 0; i &lt; 8; ++i)<br />{<br />    buffer = pgm_read_byte(def_znak++);<br />    lcd_write_data(buffer);<br />}<br />}<br />#endif<br /><br />#if USE_LCD_DEFINEDCHAR_E == 1<br />void lcd_defchar_P(uint8_t code, uint8_t * def_znak)<br />{<br />register uint8_t buffer;<br />lcd_write_cmd(LCDC_SET_CGRAM + ((code &amp; 0x07) * 8));<br /><br />for(uint8_t i = 0; i &lt; 8; ++i)<br />{<br />    buffer = eeprom_read_byte(def_znak++);<br />    lcd_write_data(buffer);<br />}<br />}<br />#endif[/syntax]<br /><br /><br />main.c<br />[syntax=c]#include &quot;lcd_library.h&quot;<br /><br />int main()<br />{<br />    lcd_initialization();<br />    lcd_locate_set(1,10);<br />    lcd_write_string(&quot;Linia2&quot;);<br />while(1);<br />}[/syntax]<br /><br /> Siedzę nad tym juz kilka dni, i niestety nic nie udało mi sie zrobić.  Bardzo proszę Was o pomoc, ponieważ nie wiem juz co mam z tym robic.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17825">fenq80</a> — 29 sie 2017, o 16:11</p><hr />
]]></content>
</entry>
</feed>