So I obtained some LCD screens, but I don't think they are what they are meant to be, or are what the look like they might be.
Using the screens as per the data sheet, nothing works. (non KS0108 controller)
Plugging the screen into some code which I know works with a KS0108 controller, leaves me with strange results. If I connect one Chip select, that side of the screen works (almost) perfectly. It is dropped down by one Y row.
Plugging in both CS lines, the whole display is corrupted. Unplugging the other CS line, and the other side of the screen is (almost) ok.
So a quick test program:
This does exactly what is expected.
However, if I take the code from here A-B and place it /to here/, I end up with the left hand screen mostly white, bar some missing pixels on the very left hand edge (random), and the top 1/8th of the right hand screen white.
This occurrs even if I double all of the waits.
I think that the device is somehow bust on the CS side of things. Any suggestions? (apart from don't buy from there any more if they don't know what they are selling). I did try it with an explicit Y select on the first X too, with no difference (and re-tried when I noticed that this code was missing it)
Using the screens as per the data sheet, nothing works. (non KS0108 controller)
Plugging the screen into some code which I know works with a KS0108 controller, leaves me with strange results. If I connect one Chip select, that side of the screen works (almost) perfectly. It is dropped down by one Y row.
Plugging in both CS lines, the whole display is corrupted. Unplugging the other CS line, and the other side of the screen is (almost) ok.
So a quick test program:
Rich (BB code):
l=0;
for(k=0;k<8;k++){
l=1-l; //from here A
GLCD_CS1=l;
GLCD_CS2=1-l; //from here B
GLCD_EN=1;
GLCD_RS=0;
GLCD_RW=0;
for(j=0;j<100;j++){ //Delay is listed as 72us, this should be at least 100us
_asm NOP _endasm
}
GLCD_DATA=0b10111000+k; //Select X page
GLCD_EN=0;
for(j=0;j<100;j++){
_asm NOP _endasm
}
for(i=0;i<64;i++){ //To here
GLCD_EN=1;
GLCD_RS=1;
GLCD_RW=0;
for(j=0;j<100;j++){
_asm NOP _endasm
}
GLCD_DATA=0b11111111;
//GLCD_DATA=0b00000000; This was used for testing, if CS1, and CS2 are both active, this does what is expected
GLCD_EN=0;
for(j=0;j<100;j++){
_asm NOP _endasm
}
}
}
while(1)
{
_asm NOP _endasm
}
However, if I take the code from here A-B and place it /to here/, I end up with the left hand screen mostly white, bar some missing pixels on the very left hand edge (random), and the top 1/8th of the right hand screen white.
This occurrs even if I double all of the waits.
I think that the device is somehow bust on the CS side of things. Any suggestions? (apart from don't buy from there any more if they don't know what they are selling). I did try it with an explicit Y select on the first X too, with no difference (and re-tried when I noticed that this code was missing it)