Hi,
ein paar codeschnipsel aus meiner ansteuerung, ich steuere das ding nicht via spi an, einfach nur durch takt und daten.
DOGS102_tx_byte(byte b, byte typ)
{
byte i;
LCD_CLR_CS;
if(typ) LCD_SEND_DATA;
else LCD_SEND_CMD;
for(i=0;i<8;i++)
{
LCD_CLR_CLK;
if(b>0x7F) LCD_SET_DATA;
else LCD_CLR_DATA;
b<<=1;
LCD_SET_CLK;
}
LCD_SET_CS;
}
DOGS102_set_col_addr(byte adr)
{
DOGS102_tx_byte(adr & 0x0F, 0);
DOGS102_tx_byte((adr >> 4) | 0x10, 0);
}
DOGS102_set_page_addr(byte adr)
{
DOGS102_tx_byte((adr & 7) | 0xB0, 0);
}
DOGS102_clear()
{
byte c, p;
for(p=0;p<8;p++)
{
for(c=30;c<132;c++)
{
DOGS102_set_page_addr(p);
DOGS102_set_col_addr(c);
DOGS102_tx_byte(0,1);
}
}
}
DOGS102_clear_line(byte line)
{
byte col;
for(col=30; col<132; col++)
{
DOGS102_set_page_addr(2*line);
DOGS102_set_col_addr(col);
DOGS102_tx_byte(0,1);
DOGS102_set_page_addr(2*line+1);
DOGS102_set_col_addr(col);
DOGS102_tx_byte(0, 1);
}
}
byte DOGS102_write_char_at(char c, char line, char col) // line 0..3, col 30..131
{
byte i;
flash char* chpt=char_table[c-ch_offset];
for(i=0; i<char_width[c-ch_offset]; i++)
{
DOGS102_set_page_addr(2*line);
DOGS102_set_col_addr(col+30);
DOGS102_tx_byte(*chpt++,1);
DOGS102_set_page_addr(2*line+1);
DOGS102_set_col_addr(col+30);
DOGS102_tx_byte(*chpt++, 1);
col++;
}
return (col);
}
vielleicht hiflts weiter.
mfg
Achim
Lesezeichen