The screen needs a -18V power supply for the LCD and 5V for the logic, so I'm using one from a DVD player.
After connecting the power supply, the display resurrected and showed some noise
The very first arduino code used digitalWrite, it was extremely slow, so after investigating about using the ATMega328 registers I came up with this code:
#define S_LOW (PORTB&=(~(1<<5)));
#define S_HIGH (PORTB|=(1<<5));
#define CP1_LOW (PORTB&=(~(1<<1)));
#define CP1_HIGH (PORTB|=(1<<1));
#define CP2_LOW (PORTB&=(~(1<<0)));
#define CP2_HIGH (PORTB|=(1<<0));
void setup() {
pinMode(13,OUTPUT); // S
pinMode(9,OUTPUT); //CP1
pinMode(8,OUTPUT);//CP2
//Only 2 out of 4 pixels should be drawn
analogWrite(3,200);
analogWrite(4,200);
}
void loop() {
S_HIGH
CP1_HIGH
asm("nop");asm("nop");
CP1_LOW
asm("nop");asm("nop");
S_LOW
for(int y=0;y<240;y++){
CP1_HIGH
asm("nop");asm("nop");
CP1_LOW
for(int bx=0;bx<80;bx++){//4 pixel block
CP2_HIGH
asm("nop");asm("nop");
//send pixels here
CP2_LOW
asm("nop");asm("nop");
}
}
}
Great, it shows 2 pixels per block as expected, but I need to figure out why some lines are missing (maybe EMI?)
So that's all for today, next task: Fill the entire screen with pixels and then map an array to the screen.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.