Datasheet: http://ledsee.com/index.php?page=shop.getfile&file_id=21...;Itemid=27
Nu is het probleem dat ik wel tekst krijg op mijn scherm, inclusief de juiste ingegeven locatie, maar geen graphics.
Stappen:
1. aanzetten (werkt)
2. initialiseren (werkt)
3. display clearen (werkt)
4. tekst plaatsen (werkt)
5. graphics plaatsen (heel het display cleart, ook tekst weg)
Nou weet ik dat het gewoon een bende is om een lap code neer te zetten, maar dit is alleen de initialize:
code:
// System lcd_write_command(0x40); lcd_delay(); lcd_write_data(0x30); lcd_delay(); lcd_write_data(0x87); lcd_delay(); lcd_write_data(0x07); lcd_delay(); lcd_write_data(0x27); // ((LCD_X_SIZE/8)-1) lcd_delay(); lcd_write_data(0x34); //((LCD_XTAL / 70 / LCD_Y_SIZE) / 9) lcd_delay(); lcd_write_data(0xEF); //(LCD_Y_SIZE - 1) lcd_delay(); lcd_write_data(0x28); //(LCD_X_SIZE/8) lcd_delay(); lcd_write_data(0x00); lcd_delay(); // Scroll lcd_write_command(0x44); lcd_delay(); lcd_write_data(0x00); lcd_delay(); lcd_write_data(0x00); lcd_delay(); lcd_write_data(0xF0); //LCD_Y_SIZE lcd_delay(); lcd_write_data(0x00); lcd_delay(); lcd_write_data(0x10); lcd_delay(); lcd_write_data(0xF0); //LCD_Y_SIZE lcd_delay(); // Horizontal scroll lcd_write_command(0x5a); lcd_delay(); lcd_write_data(0x00); lcd_delay(); // Overlay lcd_write_command(0x5b); lcd_delay(); lcd_write_data(0x03); lcd_delay(); // Display On/Off I lcd_write_command(0x58); lcd_delay(); lcd_write_data(0x14); lcd_delay(); // Cursor format lcd_write_command(0x5d); lcd_delay(); lcd_write_data(0x07); lcd_delay(); lcd_write_data(0x87); lcd_delay(); // Display On/Off II lcd_write_command(0x59); lcd_delay(); lcd_write_data(0x14); lcd_delay(); // Curson direction lcd_write_command(0x4c); lcd_delay(); // CUrsor write lcd_write_command(0x46); lcd_delay(); lcd_write_data(0x00); lcd_delay(); lcd_write_data(0x00); lcd_delay();
En daarbij nog de functie om een pixel in te stellen:
code:
void lcd_pixel(int x, int y, unsigned char show)
{
unsigned int Address;
unsigned char Offset;
unsigned char low;
unsigned char high;
unsigned char byte;
x--;
y--;
Address = (y * 40) + (x / 8); //(LCD_X_SIZE/8)
Offset = x - ((x / 8) * 8);
low = (unsigned char) (Address & 0x00ff);
high = (unsigned char) (((Address & 0xff00) >> 8) + 0x10);
lcd_write_command(0x46);
lcd_delay();
lcd_write_data(low);
lcd_delay();
lcd_write_data(high);
lcd_delay();
lcd_write_command(0x43);
lcd_delay();
byte = lcd_read_data();
if (show != 0) byte |= (0x80 >> Offset);
else byte &= (~(0x80 >> Offset));
lcd_write_command(0x46);
lcd_delay();
lcd_write_data(low);
lcd_delay();
lcd_write_data(high);
lcd_delay();
lcd_write_command(0x42);
lcd_delay();
lcd_write_data(byte);
lcd_delay();
}
Nu heb ik overal al delays tussen gezet van ~2ms
Omdat de tekst wel werkt ga ik ervan uit dat alle lijnen van met atmega128 naar het lcd goed zitten.
Ik heb echt geen flauw idee meer waar ik moet kijken, iemand die dit probleem wel eens heeft gehad? (en opgelost (A)) Of weet waar ik in ieder geval moet zoeken.
[Bericht gewijzigd door ken536 op 26 augustus 2008 16:04:13]


