| ??? 01/04/09 08:25 Modified: 01/04/09 09:38 Read: times |
#161297 - Ks0108 Graphics LCD read problem |
I wanted to know that, to read a byte fron the Ks0108 controller, how to set the address of the byte which i want to read? I am using 128*64 LCD - PL-G12864A, and currently i hv made the func:
unsigned char lcdread(unsigned char page, unsigned char column, unsigned char chipselect) which inturn calls setpage(page, chipselect); and setcolumn(column, chipselect); to select the (read) pointer on the LCD, can anybody confirm if its correct..? I mean do the changing if rs, rw, en in setcolumn() and setpage() functions interfere with reading of LCD. I am using the same functions for setting DDRAM address pointer also for putting data on LCD. I am unable to read from the LCD.
while(1)
{ P1 = 0; // prog has ended turn on led
MSDelay(1000);
for(y=0;y<8;y++) //just wanted to read the LCD
// setpage(y,1); //they dont seem to work :(
// setcolumn(x,1);
for(x=0;x<64;x++)
{
P0 = lcdread(y,x,1); //P0 just shows random data, dont kno even if it's random!
MSDelay(1000); //delay between successive reads
} //to see leds blinking acc to data on disp
// setpage(y,2);
// setcolumn(x,2);
for(x=0;x<64;x++)
{
P0 = lcdread(y,x,2);
MSDelay(1000);
}
}
//P0 = lcdread(3,8,1);
}
unsigned char lcdread(unsigned char page, unsigned char column, unsigned char chipselect)
{
setpage(page, chipselect);
setcolumn(column, chipselect);
ldata=0xFF; //make I/P port to read data
// en=0;
rw=1; // now reading from the LCD
en=0;
rs=1; //data
if(chipselect==1) // if in Left half of LCD
{
cs1=1;
cs2=0;
}
else //nahi to right half
{
cs1=0;
cs2=1;
}
en=1; //now data wud have come to port
return(ldata);
}
void setpage(unsigned char y, unsigned char chipselect)
{
lcdcmd(0xB8+y,chipselect);
}
void setcolumn(unsigned char x, unsigned char chipselect)
{
lcdcmd(0x40+x,chipselect);
}
void lcdcmd(unsigned char cmd, unsigned char chipselect)
{
rw=0;
if(chipselect==1) //if in Left half of LCD
{
cs1=1;
cs2=0;
}
else //nahi to right half
{
cs1=0;
cs2=1;
}
rs=0; //command
ldata = cmd;
en=1;
//for(a=0;a<10;a++); //lill delay
en=0;
}
|
| Topic | Author | Date |
| Ks0108 Graphics LCD read problem | 01/01/70 00:00 | |
| You need to obey the data sheet. | 01/01/70 00:00 | |
| I tried all things but... | 01/01/70 00:00 | |
| Using bit masks. | 01/01/70 00:00 | |
| SORTED ! :) | 01/01/70 00:00 | |
| Your strobe still leaves EN true | 01/01/70 00:00 | |
Prhps other functions take care of it... | 01/01/70 00:00 |



