Ahoj,
po dlouhé době zase já a moje GLCD. Kvůli křížené čar a obrazců potřebuji načítat hodnotu, která je zapsaná v LCD. Udělal jsem si na to jednoduchý program, kdy to na první řádek vypíše 3 byte a na druhý by to mělo vyčíst hodnoty z prvního a zapsat je. Bohužel mi to vypisuje na druhý řádek kydy. Mohl by mi to někdo prosím projít na co jsem zapomněl, nebo kde jsem udělal chybu. Děkuji
PS: Bota bude asi ve funkci GLCD_read, zbytek mi funguje.
[code]int GLCD_read(int x, int y)
{
TRISD = 0x1111111;
int data;
Select_page(1);
if (x > 63)
{
Select_page(0);
}
GLCD_Comd(0b10111000 | y);
GLCD_Comd(0b01000000 | x);
RS = 1;
RW = 1;
E = 1;
data = DATA;
E = 0;
TRISD = 0x00000000;
return data;
}
void GLCD_write(int x, int y, int data) // x= (0;127), y= (0;7)
{
Select_page(1);
if (x > 63)
{
Select_page(0);
}
GLCD_Comd(0b10111000 | y);
GLCD_Comd(0b01000000 | x);
GLCD_Data(data);
}
void GLCD_Init()
{
unsigned char Comd[5]={0xc0,0xb8,0x40,0x3f};
Select_page(1);
for(i=0 ;i<4; i++)
GLCD_Comd( Comd* );
Select_page(0);
for(i=0; i<4; i++)
GLCD_Comd( Comd* );
}
void Select_page(unsigned char Page)
{
if(Page == 0)
{
CS1 = 0;
CS2 = 1;
}
else
{
CS1 = 1;
CS2 = 0;
}
}
void GLCD_Comd(unsigned char command)
{
RS = 0;
RW = 0;
E=1;
DATA=command;
E=0;
}
void GLCD_Data(unsigned char data)
{
RS = 1;
RW = 0;
E=1;
DATA=data;
E=0;;
}
void GLCD_ClrScr(void)
{
for (Page=0; Page<8; Page++)
{
Select_page(1);
GLCD_Comd(0xb8 | Page);
GLCD_Comd(0x40);
for (Column=0; Column<128; Column++)
{
if (Column == 64)
{
Select_page(0);
GLCD_Comd(0xb8 | Page);
GLCD_Comd(0x40);
}
GLCD_Data(0x00); //This is Method 3
}
}
}
void main(void)
{
ADCON1 = 7;
TRISA = 0x00000000;
TRISC = 0x00000000;
TRISD = 0x00000000;
GLCD_Init();
__delay_ms(100);
GLCD_ClrScr();
while(1)
{
GLCD_ClrScr();
__delay_ms(500);
GLCD_write(1,0,0b00001111);
GLCD_write(2,0,0b11110000);
GLCD_write(3,0,0b00111100);
GLCD_write(1,1,GLCD_read(1,0));
GLCD_write(2,1,GLCD_read(2,0));
GLCD_write(3,1,GLCD_read(3,0));
__delay_ms(5000);
}
}
[/code]**