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++);
}