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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T14:19:03+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5195&amp;mode</id>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2013-12-22T18:36:26+01:00</updated>
<published>2013-12-22T18:36:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=62061#p62061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=62061#p62061"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=62061#p62061"><![CDATA[
<div class="quotetitle">squeez napisał(a):</div><div class="quotecontent"><br />Wiesz wydaje mi się, że na takie projekty to i Chuck Norris nie pomoże.<br />Tzn nie twierdzę że to nie wejdzie na 4kb tego procka ale po co sobie strzelać w kolano? rozumie że masz już gotową płytkę (urządzenie) i teraz je modyfikujesz? bo jeśli ktoś zrobił takie założenia na początku projektu to teraz musi się mocno pocić i rwać włosy spod pach.<br /><br />Inna kwestia że ten procesor ma tylko 256b SRAM i jeśli chcesz w nim to wszystko zaimplementować (zakładając że zmieści się we flash) to mogą być problemy ze stosem.<br />Wszystko zależy od tego jak dobrze znasz C oraz jak dobrym jesteś programistą, jak mawia Mirek w swoich poradnikach programistów są tysiące i tyle samo rozwiązań danego problemu, tylko, że niektórzy maja &quot;polo&quot; i fantazję i potrafią rożne sztuczki.<br /><br />Sam często czytam czyjś kod i aż mnie trafia, że sam nie wpadłem na jakieś rozwiązanie, które jest kilka razy bardziej optymalne niż moje, no ale właśnie trzeba mieć &quot;fantazję&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />PS. zapytam też inaczej, jak napiszesz swój kod to ile zajmuje (tzn ile musisz go &quot;odchodzić&quot;).<br /></div><br /><br />Wcale nie uważam się za super programistę, wręcz przeciwnie. A w całej dyskusji chciałem tylko zaznaczyć że czasami warto napisać wlasne procedurki.<br /><br />Pisanie własnych procedur to przyzwyczajenie z czasów '51 i pisania w asemblerze, kiedy to do operacji na liczbach większych niż 8-bitowych, trzeba było pisać własne procedurki. Ten kto pisał w asm na '51 to wie o czym mówię.<br /><br />Nie miałem przypdaku że program się nie mieścił i nie zdażyło mi się odchudzanie programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 22 gru 2013, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-12-20T13:23:32+01:00</updated>
<published>2013-12-20T13:23:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61880#p61880</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61880#p61880"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61880#p61880"><![CDATA[
No to wtedy własnie przydaje się umiejętność wyrwania jednej czy kilku funkcji z całej biblioteki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 20 gru 2013, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2013-12-20T13:21:34+01:00</updated>
<published>2013-12-20T13:21:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61879#p61879</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61879#p61879"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61879#p61879"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />No wziąłeś maluszka to kombinuj, czy ja gdzieś napisałem, że to się nadaje do wszystkiego. Ot po prostu nie mam czasu rzeźbić, wolę dać większy procek z większym flashem, niż dzielić włos na czworo walcząc o każdy bajt flasha czy ramu.<br /></div><br /><br />Niestety, ale nie zawsze jest taka komfortowa sytuacja, że możemy sobie zastosować mikrokontroler z duuuuuuużą ilością pamięci,<br />i wtedy trzeba &quot;dzielić włos na czworo&quot;.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 20 gru 2013, o 13:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-12-20T12:58:34+01:00</updated>
<published>2013-12-20T12:58:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61878#p61878</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61878#p61878"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61878#p61878"><![CDATA[
No wziąłeś maluszka to kombinuj, czy ja gdzieś napisałem, że to się nadaje do wszystkiego. Ot po prostu nie mam czasu rzeźbić, wolę dać większy procek z większym flashem, niż dzielić włos na czworo walcząc o każdy bajt flasha czy ramu.<br /><br />PS. po za tym podałem linka w sumie z gotowym rozwiązaniem. Wystarczy tylko wrzucić do projektu tylko te funkcje których się używa.<p>Statystyki: Napisane przez Gość — 20 gru 2013, o 12:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2013-12-20T12:46:29+01:00</updated>
<published>2013-12-20T12:46:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61874#p61874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61874#p61874"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61874#p61874"><![CDATA[
To teraz mi powiedzcie, jak używając printf, itoa itp. gotowych, zmieścić program do ATTINY 4313<br />który jest pilotem sterującym w tym projekcie:<br /><!-- m --><a class="postlink" href="http://www.e-tronix.eu/21,sterowanie-radiowe.html" >http://www.e-tronix.eu/21,sterowanie-radiowe.html</a><!-- m --><br /><br />W tym przypadku ATTINY4313 jest odpowiedzialny za:<br />- wyświetlacz LCD4x16,<br />- transmisję radiową,<br />- obsługę klawiatury - 6 przycisków,<br />- przetwornik PCF8591, na I2C,<br />- expander PCF8574, też na I2C.<br /><br />Program napisany w C, w Atmel Studio.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 20 gru 2013, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-20T12:02:10+01:00</updated>
<published>2013-12-20T12:02:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61872#p61872</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61872#p61872"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61872#p61872"><![CDATA[
No ja też bardziej na myśli miałem to żeby czasem napisać swoją ew krótszą wersję sprintf'a a nie itoa. Bo sprintf oczywiście jest fajny, dobrze rozbudowane formatowanie - ale właśnie nie zawsze wszystko potrzebne ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 gru 2013, o 12:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-12-20T11:57:27+01:00</updated>
<published>2013-12-20T11:57:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61871#p61871</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61871#p61871"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61871#p61871"><![CDATA[
No też jestem tego zdania, że czasem dla tych 2kb nie warto się spinać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br />Jak zawsze, wszystko zależy od zastosowań. Jak ktoś wymiana w pisaniu softu, potrafi przetestować pod każdym względem taki twór to tak. Osobiście wolę jednak dać oryginalnego itoa itp. Niż rzeźbić to od nowa.<p>Statystyki: Napisane przez Gość — 20 gru 2013, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T14:19:03+01:00</updated>
<published>2013-12-20T11:23:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61869#p61869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61869#p61869"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61869#p61869"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 20 gru 2013, o 11:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-12-20T10:56:35+01:00</updated>
<published>2013-12-20T10:56:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61867#p61867</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61867#p61867"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61867#p61867"><![CDATA[
A ci mniej kumaci, między innymi jak ja <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Mogą podpatrzeć jak to jest zrobione w bibliotekach np. tu <!-- m --><a class="postlink" href="http://cboard.cprogramming.com/linux-programming/125356-complete-function-definition-i-e-atoi.html" >http://cboard.cprogramming.com/linux-pr ... -atoi.html</a><!-- m --><br />I wrzucić tylko potrzebne funkcje.<p>Statystyki: Napisane przez Gość — 20 gru 2013, o 10:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-20T10:30:51+01:00</updated>
<published>2013-12-20T10:30:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61859#p61859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61859#p61859"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61859#p61859"><![CDATA[
<div class="quotetitle">0livaw napisał(a):</div><div class="quotecontent"><br />w ogóle to odradzam używanie itoa i sprintf. Niepotrzebnie zajmują zasoby procesora.<br /></div><br /><br />Samo itoa może już nie zajmuje tyle co sprintf, ale generalnie też dobra końcepcja jak to się mówi - bo własną prostszą funkcję da się napisać i jak kolega mówi będzie mniejszy kłopot z miejscem w procku ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 gru 2013, o 10:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[0livaw]]></name></author>
<updated>2013-12-20T09:31:35+01:00</updated>
<published>2013-12-20T09:31:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61847#p61847</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61847#p61847"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61847#p61847"><![CDATA[
Witam,<br />w ogóle to odradzam używanie itoa i sprintf. Niepotrzebnie zajmują zasoby procesora.<br />Polecam napisanie własnych bibliotek, które będą służyć latami a zostanie miejsca na<br />inne bardziej zaawansowane funkcje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1304">0livaw</a> — 20 gru 2013, o 09:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-12-18T18:22:33+01:00</updated>
<published>2013-12-18T18:22:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61679#p61679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61679#p61679"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61679#p61679"><![CDATA[
W AVRGCC int to short int i ma 16-bitów. Jak chcesz większe liczby to sięgnij po long int i funkcje ltoa, a w sprintf wstaw %ld.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 18 gru 2013, o 18:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-18T09:31:15+01:00</updated>
<published>2013-12-18T09:31:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61598#p61598</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61598#p61598"/>
<title type="html"><![CDATA[Re: Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61598#p61598"><![CDATA[
Ja proponuję jednak zacząć zabawę z C od książki<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />a tu dla uproszczenia podpowiem żebyś zainteresował się wbudowaną funkcją itoa(), która pomoże ci w rozwiązaniu twojego kłopotu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 gru 2013, o 09:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antynick]]></name></author>
<updated>2013-12-18T09:22:32+01:00</updated>
<published>2013-12-18T09:22:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61597#p61597</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61597#p61597"/>
<title type="html"><![CDATA[Błędna konwersja int-&gt;str na HD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5195&amp;p=61597#p61597"><![CDATA[
Próbuję wyświetlić integer na wyświetlaczu. W tym celu konieczna jest konwersja na string.<br />Niestety obie linie wyświetlają liczbę do 32767, a potem od -32768 w górę. Z tego co wiem to jest wielkość shorta a nie inta. Jak to rozwiązać? <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &quot;HD44780.h&quot;<br />#include &quot;HD44780.c&quot;<br /><br />void main(void) {<br />int i=32765;<br />char wynik&#91;10&#93;;<br />LCD_Initalize();<br /><br />while (1) {<br />LCD_GoTo(1, 0);<br />LCD_WriteText(itoa(i,wynik,10));<br /><br />sprintf(wynik,&quot;%d&quot;,i);<br />LCD_GoTo(1, 1);<br />LCD_WriteText(wynik);<br /><br />i++;<br />_delay_ms(1000);<br />}<br />}[/syntax]<br /><br />BIBLIOTEKI:<br />[syntax=c]//-------------------------------------------------------------------------------------------------<br />// Wyświetlacz alfanumeryczny ze sterownikiem HD44780<br />// Sterowanie w trybie 4-bitowym bez odczytu flagi zajętości<br />// z dowolnym przypisaniem sygnałów sterujących<br />// Plik : HD44780.h<br />// Mikrokontroler : Atmel AVR<br />// Kompilator : avr-gcc<br />// Autor : Radosław Kwiecień<br />// Źródło : http://radzio.dxp.pl/hd44780/<br />// Data : 24.03.2007<br />//-------------------------------------------------------------------------------------------------<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Konfiguracja sygnałów sterujących wyświetlaczem.<br />// Można zmienić stosownie do potrzeb.<br />//<br />//-------------------------------------------------------------------------------------------------<br />#define LCD_RS_DIRDDRB<br />#define LCD_RS_PORT PORTB<br />#define LCD_RS(1 &lt;&lt; PB2)<br /><br />#define LCD_E_DIRDDRB<br />#define LCD_E_PORTPORTB<br />#define LCD_E(1 &lt;&lt; PB1)<br /><br />#define LCD_DB4_DIRDDRD<br />#define LCD_DB4_PORTPORTD<br />#define LCD_DB4(1 &lt;&lt; PD4)<br /><br />#define LCD_DB5_DIRDDRD<br />#define LCD_DB5_PORTPORTD<br />#define LCD_DB5(1 &lt;&lt; PD5)<br /><br />#define LCD_DB6_DIRDDRD<br />#define LCD_DB6_PORTPORTD<br />#define LCD_DB6(1 &lt;&lt; PD6)<br /><br />#define LCD_DB7_DIRDDRD<br />#define LCD_DB7_PORTPORTD<br />#define LCD_DB7(1 &lt;&lt; PD7)<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Instrukcje kontrolera Hitachi HD44780<br />//<br />//-------------------------------------------------------------------------------------------------<br /><br />#define HD44780_CLEAR0x01<br /><br />#define HD44780_HOME0x02<br /><br />#define HD44780_ENTRY_MODE0x04<br />#define HD44780_EM_SHIFT_CURSOR0<br />#define HD44780_EM_SHIFT_DISPLAY1<br />#define HD44780_EM_DECREMENT0<br />#define HD44780_EM_INCREMENT2<br /><br />#define HD44780_DISPLAY_ONOFF0x08<br />#define HD44780_DISPLAY_OFF0<br />#define HD44780_DISPLAY_ON4<br />#define HD44780_CURSOR_OFF0<br />#define HD44780_CURSOR_ON2<br />#define HD44780_CURSOR_NOBLINK0<br />#define HD44780_CURSOR_BLINK1<br /><br />#define HD44780_DISPLAY_CURSOR_SHIFT0x10<br />#define HD44780_SHIFT_CURSOR0<br />#define HD44780_SHIFT_DISPLAY8<br />#define HD44780_SHIFT_LEFT0<br />#define HD44780_SHIFT_RIGHT4<br /><br />#define HD44780_FUNCTION_SET0x20<br />#define HD44780_FONT5x70<br />#define HD44780_FONT5x104<br />#define HD44780_ONE_LINE0<br />#define HD44780_TWO_LINE8<br />#define HD44780_4_BIT0<br />#define HD44780_8_BIT16<br /><br />#define HD44780_CGRAM_SET0x40<br /><br />#define HD44780_DDRAM_SET0x80<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_Initalize(void);<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Koniec pliku HD44780.h<br />//<br />//-------------------------------------------------------------------------------------------------[/syntax]<br />[syntax=c]//-------------------------------------------------------------------------------------------------<br />// Wyświetlacz alfanumeryczny ze sterownikiem HD44780<br />// Sterowanie w trybie 4-bitowym bez odczytu flagi zajętości<br />// z dowolnym przypisaniem sygnałów sterujących<br />// Plik : HD44780.c<br />// Mikrokontroler : Atmel AVR<br />// Kompilator : avr-gcc<br />// Autor : Radosław Kwiecień<br />// Źródło : http://radzio.dxp.pl/hd44780/<br />// Data : 24.03.2007<br />//-------------------------------------------------------------------------------------------------<br /><br />#include &quot;HD44780.h&quot;<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Funkcja wystawiająca półbajt na magistralę danych<br />//<br />//-------------------------------------------------------------------------------------------------<br />void _LCD_OutNibble(unsigned char nibbleToWrite)<br />{<br />if(nibbleToWrite &amp; 0x01)<br />LCD_DB4_PORT |= LCD_DB4;<br />else<br />LCD_DB4_PORT  &amp;= ~LCD_DB4;<br /><br />if(nibbleToWrite &amp; 0x02)<br />LCD_DB5_PORT |= LCD_DB5;<br />else<br />LCD_DB5_PORT  &amp;= ~LCD_DB5;<br /><br />if(nibbleToWrite &amp; 0x04)<br />LCD_DB6_PORT |= LCD_DB6;<br />else<br />LCD_DB6_PORT  &amp;= ~LCD_DB6;<br /><br />if(nibbleToWrite &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_OutNibble(dataToWrite &gt;&gt; 4);<br />LCD_E_PORT &amp;= ~LCD_E;<br />LCD_E_PORT |= LCD_E;<br />_LCD_OutNibble(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(HD44780_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(HD44780_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(HD44780_HOME);<br />_delay_ms(2);<br />}<br />//-------------------------------------------------------------------------------------------------<br />//<br />// Procedura inicjalizacji kontrolera HD44780.<br />//<br />//-------------------------------------------------------------------------------------------------<br />void LCD_Initalize(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_OutNibble(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_OutNibble(0x02); // tryb 4-bitowy<br />LCD_E_PORT &amp;= ~LCD_E; // E = 0<br /><br />_delay_ms(1); // czekaj 1ms <br />LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT); // interfejs 4-bity, 2-linie, znak 5x7<br />LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF); // wyłączenie wyswietlacza<br />LCD_WriteCommand(HD44780_CLEAR); // czyszczenie zawartosći pamieci DDRAM<br />_delay_ms(2);<br />LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT);// inkrementaja adresu i przesuwanie kursora<br />LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK); // włącz LCD, bez kursora i mrugania<br />}<br /><br />//-------------------------------------------------------------------------------------------------<br />//<br />// Koniec pliku HD44780.c<br />//<br />//-------------------------------------------------------------------------------------------------[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2251">antynick</a> — 18 gru 2013, o 09:22</p><hr />
]]></content>
</entry>
</feed>