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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-06T16:46:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12222&amp;mode</id>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2015-07-06T16:46:39+01:00</updated>
<published>2015-07-06T16:46:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12222&amp;p=133769#p133769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12222&amp;p=133769#p133769"/>
<title type="html"><![CDATA[Generacja polskich znaków jeden obok drugiego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12222&amp;p=133769#p133769"><![CDATA[
Napisałem prosty program dla wyświetlacza LCD, po wciśnięciu klawiszy pojawia się jakiś tam tekst, a po wciśnięciu ostatniego (nr '8') chciałbym żeby w rzędzie pojawiały się polskie znaki (ą, ę itd.) . Niestety znaki (póki, co testowe) nakładają się na siebie, pewnie cały problem polega na tym, że ja nadpisuje stworzony znak nowym. Próbowałem już takiego rozwiązania, że wywołuje funkcje lcd_data (0x00) wypisuje pierwszy znak i potem daje opóźnienie i wywołuje funkcje lcd_data (0x08). Czasem działa tak, że przesuwa się wszystko o jedną &quot;kratkę&quot; na wyświetlaczu i tam wypisuje a czasem w ogóle to nie działa. Opóźnienie między wywołaniem kolejnych funkcji jest tylko po to żeby zobaczyć czy oba znaki się wyświetlą. Tylko jak mam zrobić żeby wyświetlały się obok siebie? <br />PS.<br />Obwód z wyświetlaczem mam zasymulowany w Proteusie.<br /><br />[syntax=c]#include &lt;ADUC845.h&gt;<br /><br /><br />sbit rs = P2^0;<br />sbit rw = P2^1;<br />sbit en = P2^2;<br /><br />sbit r1 = P1^0;<br />sbit r2 = P1^1;<br />sbit r3 = P1^2;<br />sbit r4 = P1^3;<br />sbit r5 = P1^4;<br />sbit r6 = P1^5;<br />sbit r7 = P1^6;<br />sbit r8 = P1^7;<br />//sbit c7 = P1^7;<br />//unsigned int r8= 0; //do testowania dzialania programu<br /><br /><br /><br />void init_lcd (); // inicjalizacja ldc<br />void lcd_comm (unsigned char value1); // komendy sterujace lcd<br />void lcd_data (unsigned char value2); // dane do lcd<br />void lcd_clr (unsigned char value3);<br />void lcd_msg (unsigned char *ch); // tresc do lcd<br />void delay (unsigned int ms); // opoznienie<br />void scan (); // sprawdzanie klawiatury<br />//void lcd_bussy (c7); // sprawdzanie gotowosci<br />void CCa (); //wlasny znak a<br />void CCc (); //wlasny znak c<br />void CCe (); //wlasny znak e<br />void CCl (); //wlasny znak l<br />void CCn (); //wlasny znak n<br />void CCo (); //wlasny znak o<br />void CCs (); //wlasny znak s<br />void CCz (); //wlasny znak z<br />unsigned int a=0; // zmienna iteracyjna <br />unsigned int b=0; // zmienna iteracyjna <br />unsigned int value3;<br />//unsigned int r1=0;<br /><br />main ()<br />{<br />P0 = 0x00;<br />P2 = 0x00; // port P3 jako wyjscie<br />init_lcd();<br />lcd_msg (&quot;Projekt LCD&quot;);<br />while(1)<br />{<br />scan();<br />}<br />  } <br /><br />void init_lcd()<br />{<br />lcd_comm(0x38);<br />delay(10);<br />lcd_comm(0x0F);<br />delay(10);<br />lcd_comm(0x01);<br />delay(10);<br />lcd_comm(0x06);<br />delay(10);<br />lcd_comm(0x80);<br />}<br /><br />void lcd_comm (unsigned char value1)<br />{<br />// lcd_bussy();<br /> P0 = value1;<br /> rs = 0;<br /> rw = 0;<br /> en = 1;<br />delay(1);<br />en=0;<br />a = 0;<br />}<br /><br />void lcd_data (unsigned char value2)<br />{<br />// lcd_bussy();<br /> P0 = value2;<br /> rs = 1;<br /> rw = 0;<br /> en = 1;<br />delay(1);<br />en=0;<br />}<br /><br /><br />void lcd_msg (unsigned char *ch)<br />{<br /><br /><br />while (*ch !=0)<br />{<br />lcd_data(*ch);<br />ch++;<br />a++;// liczy znaki do konca wyswitlacza max 15 w Proteusie<br />b++;<br />if (a == 16) //warunek koDca lini <br />lcd_comm(0xC0); //przeniesienie do 2 lini <br />}<br />}<br /><br />//void lcd_clr (unsigned char value3)<br />//{<br />// P0 = value3;<br />// rs = 0;<br />// rw = 0;<br />// en = 1;<br />// delay(1);<br />// en=0;<br />//}<br />// ----------------------------POLSKIE ZNAKI--------------------------------------------------------------<br />void CCa()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x00);<br />lcd_data (0x00);<br />lcd_data (0x0e);<br />lcd_data (0x01);<br />lcd_data (0x0F);<br />lcd_data (0x11);<br />lcd_data (0x0F);<br />lcd_data (0x02);<br />}<br />void CCc()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x01);<br />lcd_data (0x02);<br />lcd_data (0x0f);<br />lcd_data (0x10);<br />lcd_data (0x10);<br />lcd_data (0x10);<br />lcd_data (0x0F);<br />lcd_data (0x00);<br />}<br />void CCe()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x00);<br />lcd_data (0x00);<br />lcd_data (0x0e);<br />lcd_data (0x11);<br />lcd_data (0x1F);<br />lcd_data (0x10);<br />lcd_data (0x0e);<br />lcd_data (0x02);<br />}<br />void CCl() <br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x0c);<br />lcd_data (0x04);<br />lcd_data (0x06);<br />lcd_data (0x0c);<br />lcd_data (0x04);<br />lcd_data (0x04);<br />lcd_data (0x0e);<br />lcd_data (0x00);<br />}<br />void CCn()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x02);<br />lcd_data (0x04);<br />lcd_data (0x16);<br />lcd_data (0x19);<br />lcd_data (0x11);<br />lcd_data (0x11);<br />lcd_data (0x11);<br />lcd_data (0x00);<br />}<br />void CCo()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x02);<br />lcd_data (0x04);<br />lcd_data (0x0e);<br />lcd_data (0x11);<br />lcd_data (0x11);<br />lcd_data (0x11);<br />lcd_data (0x0e);<br />lcd_data (0x00);<br />}<br />void CCs()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x02);<br />lcd_data (0x04);<br />lcd_data (0x0e);<br />lcd_data (0x10);<br />lcd_data (0x0e);<br />lcd_data (0x01);<br />lcd_data (0x1e);<br />lcd_data (0x00);<br />}<br />void CCz()<br />{<br />lcd_comm(0x40); // CC RAM set<br />// generacja wlasnego znaku<br />  lcd_data (0x04);<br />lcd_data (0x00);<br />lcd_data (0x1f);<br />lcd_data (0x02);<br />lcd_data (0x04);<br />lcd_data (0x08);<br />lcd_data (0x1f);<br />lcd_data (0x00);<br />}<br />//------------------------------------------------------------------------------------------------------------<br />void scan()<br />{<br /><br />if (r1==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Pierwszy klawisz i jakis tekst&quot;);<br />while (r1==0)<br />delay(10);<br />}<br /><br />if (r2==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Drugi klawisz i jakis tekst&quot;);<br />while (r2==0)<br />delay(10);<br />}<br />if (r3==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Trzeci klawisz i jakis tekst&quot;);<br />while (r3==0)<br />delay(10);<br />}<br />if (r4==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Czwarty klawisz i jakis tekst&quot;);<br />while (r4==0)<br />delay(10);<br />}<br />if (r5==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Piaty klawisz i jakis tekst&quot;);<br />while (r5==0)<br />delay(10);<br />}<br />if (r6==0)<br />{<br />b=0;<br />lcd_comm(0x01);<br />delay(100);<br />//lcd_comm(0x03);<br />lcd_msg (&quot;Wykonal:&quot;);<br />delay(500000);<br />lcd_comm (0x01);<br />delay(100);<br />lcd_msg (&quot;tekst1&quot;);<br />delay(500000);<br />lcd_comm (0x01);<br />delay(100);<br />lcd_msg (&quot;tekst2&quot;);<br />delay(500000);<br />lcd_comm (0x01);<br />delay(100);<br />lcd_msg (&quot;tekst3&quot;);<br />while (r6==0)<br />delay(10);<br />}<br />if (r7==0)<br />{<br />delay(20000);<br />lcd_comm(0x10); // 7 klawisz przesuwa kursor<br />b--;<br />if (b==15)<br />lcd_comm(0x8F);<br />}<br />if (r8==0)<br />{<br />lcd_comm(0x01);<br />delay(100);<br />lcd_data (0x00);<br />CCa();<br />delay(120000);<br />lcd_data (0x08);<br />CCc();<br />while (r8==0)<br />delay(10);<br /><br />}<br />}<br /><br />void lcd_bussy (c7)<br />{<br /> rs = 0;<br /> rw = 1;<br /> en = 1;<br />value3 = c7;<br />delay(10);<br />en = 0;<br /><br />while <br />(value3 != 0)<br />delay(15);<br />}<br /><br /><br />void delay (unsigned int ms)<br />{<br />unsigned int i,j;<br />for (i=0; i&lt;=ms; i++);<br />for (j=0; j&lt;=51; j++);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 6 lip 2015, o 16:46</p><hr />
]]></content>
</entry>
</feed>