Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Proteus - generacja polskich znaków

bastik
-
-
Posty: 18
Rejestracja: 26 paź 2014, o 23:45

Proteus - generacja polskich znaków

Postautor: bastik » 4 lip 2015, o 15:23

Mam w symulatorze proteus prosty program dla wyświetlacza LCD, po wciśnięciu klawiszy pojawia się jakiś tam tekst, a po wciśnięciu ostatniego chciałbym żeby w rzędzie pojawiały się polskie znaki (ą, ę itd.) . Niestety znaki (póki, co testowe) nakładają się na siebie, kursor się nie przesuwa. Nawet ręcznie próbuję przesunąć kursor (lcd_data(0x82)) przed wypisaniem kolejnego znaku, ale i 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 ?

Kod: Zaznacz cały

#include <ADUC845.h> sbit rs = P2^0; sbit rw = P2^1; sbit en = P2^2; sbit r1 = P1^0; sbit r2 = P1^1; sbit r3 = P1^2; sbit r4 = P1^3; sbit r5 = P1^4; sbit r6 = P1^5; sbit r7 = P1^6; sbit r8 = P1^7; //sbit c7 = P1^7; //unsigned int r8= 0; //do testowania dzialania programu void init_lcd (); // inicjalizacja ldc void lcd_comm (unsigned char value1); // komendy sterujace lcd void lcd_data (unsigned char value2); // dane do lcd void lcd_clr (unsigned char value3); void lcd_msg (unsigned char *ch); // tresc do lcd void delay (unsigned int ms); // opoznienie void scan (); // sprawdzanie klawiatury //void lcd_bussy (c7); // sprawdzanie gotowosci void CCa (); //wlasny znak a void CCc (); //wlasny znak c void CCe (); //wlasny znak e void CCl (); //wlasny znak l void CCn (); //wlasny znak n void CCo (); //wlasny znak o void CCs (); //wlasny znak s void CCz (); //wlasny znak z unsigned int a=0; // zmienna iteracyjna unsigned int b=0; // zmienna iteracyjna unsigned int value3; //unsigned int r1=0; main () { P0 = 0x00; P2 = 0x00; // port P3 jako wyjscie init_lcd(); lcd_msg ("Projekt LCD"); while(1) { scan(); } } void init_lcd() { lcd_comm(0x38); delay(10); lcd_comm(0x0F); delay(10); lcd_comm(0x01); delay(10); lcd_comm(0x06); delay(10); lcd_comm(0x80); } void lcd_comm (unsigned char value1) { // lcd_bussy(); P0 = value1; rs = 0; rw = 0; en = 1; delay(1); en=0; a = 0; } void lcd_data (unsigned char value2) { // lcd_bussy(); P0 = value2; rs = 1; rw = 0; en = 1; delay(1); en=0; } void lcd_msg (unsigned char *ch) { while (*ch !=0) { lcd_data(*ch); ch++; a++; // liczy znaki do konca wyswitlacza max 15 w Proteusie b++; if (a == 16) //warunek koDca lini lcd_comm(0xC0); //przeniesienie do 2 lini } } // void lcd_clr (unsigned char value3) // { // P0 = value3; // rs = 0; // rw = 0; // en = 1; // delay(1); // en=0; // } // ----------------------------POLSKIE ZNAKI-------------------------------------------------------------- void CCa() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x00); lcd_data (0x00); lcd_data (0x0e); lcd_data (0x01); lcd_data (0x0F); lcd_data (0x11); lcd_data (0x0F); lcd_data (0x02); } void CCc() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x01); lcd_data (0x02); lcd_data (0x0f); lcd_data (0x10); lcd_data (0x10); lcd_data (0x10); lcd_data (0x0F); lcd_data (0x00); } void CCe() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x00); lcd_data (0x00); lcd_data (0x0e); lcd_data (0x11); lcd_data (0x1F); lcd_data (0x10); lcd_data (0x0e); lcd_data (0x02); } void CCl() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x0c); lcd_data (0x04); lcd_data (0x06); lcd_data (0x0c); lcd_data (0x04); lcd_data (0x04); lcd_data (0x0e); lcd_data (0x00); } void CCn() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x02); lcd_data (0x04); lcd_data (0x16); lcd_data (0x19); lcd_data (0x11); lcd_data (0x11); lcd_data (0x11); lcd_data (0x00); } void CCo() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x02); lcd_data (0x04); lcd_data (0x0e); lcd_data (0x11); lcd_data (0x11); lcd_data (0x11); lcd_data (0x0e); lcd_data (0x00); } void CCs() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x02); lcd_data (0x04); lcd_data (0x0e); lcd_data (0x10); lcd_data (0x0e); lcd_data (0x01); lcd_data (0x1e); lcd_data (0x00); } void CCz() { lcd_comm(0x40); // CC RAM set // generacja wlasnego znaku lcd_data (0x04); lcd_data (0x00); lcd_data (0x1f); lcd_data (0x02); lcd_data (0x04); lcd_data (0x08); lcd_data (0x1f); lcd_data (0x00); } //------------------------------------------------------------------------------------------------------------ void scan() { if (r1==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Pierwszy klawisz i jakis tekst"); while (r1==0) delay(10); } if (r2==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Drugi klawisz i jakis tekst"); while (r2==0) delay(10); } if (r3==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Trzeci klawisz i jakis tekst"); while (r3==0) delay(10); } if (r4==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Czwarty klawisz i jakis tekst"); while (r4==0) delay(10); } if (r5==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Piaty klawisz i jakis tekst"); while (r5==0) delay(10); } if (r6==0) { b=0; lcd_comm(0x01); delay(100); //lcd_comm(0x03); lcd_msg ("Wykonal:"); delay(500000); lcd_comm (0x01); delay(100); lcd_msg ("tekst testowy 1"); delay(500000); lcd_comm (0x01); delay(100); lcd_msg ("tekst testowy 2"); delay(500000); lcd_comm (0x01); delay(100); lcd_msg ("tekst testowy 3"); while (r6==0) delay(10); } if (r7==0) { delay(20000); lcd_comm(0x10); // 7 klawisz przesuwa kursor b--; if (b==15) lcd_comm(0x8F); } if (r8==0) { lcd_comm(0x01); delay(100); lcd_data (0x00); CCa(); delay(120000); lcd_data(0x82); CCc(); while (r8==0) delay(10); } } void lcd_bussy (c7) { rs = 0; rw = 1; en = 1; value3 = c7; delay(10); en = 0; while (value3 != 0) delay(15); } void delay (unsigned int ms) { unsigned int i,j; for (i=0; i<=ms; i++); for (j=0; j<=51; j++); }

Wróć do „Pozostałe mikrokontrolery (PIC, MSP430, PSoC, 8051 ...)”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości