Вс окт 31, 2010 20:13:28
Вс окт 31, 2010 20:32:30
Вс окт 31, 2010 21:04:30
Вс окт 31, 2010 21:11:00
void LCDDEV_Reg_Set(unsigned int cmd,unsigned int data)
{
lcd_Command(cmd);
lcd_data16(data);
}
void lcd_init (void)
{ LCD_LO(LCD_CS);
_delay_ms(5);
LCDDEV_Reg_Set(0x28, 0x0006);
_delay_ms(5);
LCDDEV_Reg_Set(0x10, 0x1F92);
LCDDEV_Reg_Set(0x00, 0x0001);
_delay_ms(10);
LCDDEV_Reg_Set(0x02, 0x0380);
//LCDDEV_Reg_Set(0x11, 0x0014);
LCDDEV_Reg_Set(0x11, 0x0014);
LCDDEV_Reg_Set(0x12, 0x0509);
LCDDEV_Reg_Set(0x13, 0x2B00);
LCDDEV_Reg_Set(0x03, 0x6830);
LCDDEV_Reg_Set(0x07, 0x0233);
LCDDEV_Reg_Set(0x28, 0x0006);
LCDDEV_Reg_Set(0x01, 0x31AF);
LCDDEV_Reg_Set(0x04, 0x0000);
LCDDEV_Reg_Set(0x05, 0x0000);
LCDDEV_Reg_Set(0x16, 0x8300);
LCDDEV_Reg_Set(0x17, 0x0109);
LCDDEV_Reg_Set(0x44, 0x8300);
LCDDEV_Reg_Set(0x45, 0xAF00);
LCDDEV_Reg_Set(0x30, 0x0000);
LCDDEV_Reg_Set(0x31, 0x0000);
LCDDEV_Reg_Set(0x32, 0x0000);
LCDDEV_Reg_Set(0x33, 0x0000);
LCDDEV_Reg_Set(0x34, 0x0000);
LCDDEV_Reg_Set(0x35, 0x0000);
LCDDEV_Reg_Set(0x36, 0x0000);
LCDDEV_Reg_Set(0x37, 0x0000);
LCDDEV_Reg_Set(0x3A, 0x0000);
LCDDEV_Reg_Set(0x3B, 0x0000);
LCDDEV_Reg_Set(0x2C, 0x3000);
LCDDEV_Reg_Set(0x21, 0x0000);
lcd_Command(0x22);
for(y=0; y<132; y++){
for(x=0; x<176; x++){
lcd_data16(0x0000);
}
}
Чт ноя 04, 2010 16:52:38
Dalt Дисплей на фото имеет контроллер SSD1286, и паралельную шину 8 бит.
Вс ноя 14, 2010 23:56:23
Пн ноя 15, 2010 02:06:00
Пн ноя 15, 2010 21:30:37
Вс ноя 21, 2010 10:39:25
Вс ноя 21, 2010 22:10:52
Вс ноя 21, 2010 22:34:29
procedure init_m();
begin
RS:=0;
CS:=0;
RESET:=0;
delay_ms(500);
RESET:=1;
delay_ms(500);
write(cmd,0x03); //Booster voltage ON
delay_ms(20);
Write(cmd,0x11); //sleep out
delay_ms(20);
write(cmd,0xb6); //Display control
Write(dat,0x80); //
Write(dat,0x04); //
Write(dat,0x8a); //
write(dat,0x54); //
write(dat,0x45); //
Write(dat,0x52); //
Write(dat,0x43); //
write(cmd,0x25); //Write contrast
Write(dat,0x5d); //
write(cmd,0x29); //Display ON
end;
Вс ноя 21, 2010 23:01:47
Пн ноя 22, 2010 00:57:19
Пн ноя 22, 2010 18:36:33
Пн ноя 22, 2010 20:59:32
Пн ноя 22, 2010 22:06:37
Пн ноя 22, 2010 22:44:53
Вт ноя 23, 2010 21:21:30
Ср ноя 24, 2010 23:39:39
Чт дек 02, 2010 19:37:50
void InitLCD()
{
CLR_RESET;
_delay_ms(100);
SET_RESET;
_delay_ms(1000);
WriteToLCD(CMD,0x01); //reset sw
_delay_ms(50);
WriteToLCD(CMD,0x03); //Booster voltage ON
_delay_ms(40);
WriteToLCD(CMD,0x11); //sleep out
_delay_ms(40);
WriteToLCD(CMD,0xc6); //initial escape
_delay_ms(40);
WriteToLCD(CMD,0xb9); //Refresh set
WriteToLCD(DAT,0x00);
WriteToLCD(CMD,0xb6); //Display control
WriteToLCD(DAT,0x80); //
WriteToLCD(DAT,0x04); //
WriteToLCD(DAT,0x8a); //
WriteToLCD(DAT,0x54); //
WriteToLCD(DAT,0x45); //
WriteToLCD(DAT,0x52); //
WriteToLCD(DAT,0x43); //
WriteToLCD(CMD,0xb3); //Gray scale position set 0
WriteToLCD(DAT,0x02); //
WriteToLCD(DAT,0x0a); //
WriteToLCD(DAT,0x15); //
WriteToLCD(DAT,0x1f); //
WriteToLCD(DAT,0x28); //
WriteToLCD(DAT,0x30); //
WriteToLCD(DAT,0x37); //
WriteToLCD(DAT,0x3f); //
WriteToLCD(DAT,0x47); //
WriteToLCD(DAT,0x4c); //
WriteToLCD(DAT,0x54); //
WriteToLCD(DAT,0x65); //
WriteToLCD(DAT,0x75); //
WriteToLCD(DAT,0x80); //
WriteToLCD(DAT,0x85); //
WriteToLCD(CMD,0xb5); //Gamma curve
WriteToLCD(DAT,0x01); //
WriteToLCD(CMD,0xb7); //Temperature gradient
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x00); //
WriteToLCD(CMD,0xbd); //Common driver output select
WriteToLCD(DAT,0x00); //
WriteToLCD(CMD,0x36); //Memory access control
WriteToLCD(DAT,0x48); //
WriteToLCD(CMD,0x2d); //Colour set
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x03); //
WriteToLCD(DAT,0x05); //
WriteToLCD(DAT,0x07); //
WriteToLCD(DAT,0x09); //
WriteToLCD(DAT,0x0b); //
WriteToLCD(DAT,0x0d); //
WriteToLCD(DAT,0x0f); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x03); //
WriteToLCD(DAT,0x05); //
WriteToLCD(DAT,0x07); //
WriteToLCD(DAT,0x09); //
WriteToLCD(DAT,0x0b); //
WriteToLCD(DAT,0x0d); //
WriteToLCD(DAT,0x0f); //
WriteToLCD(DAT,0x00); //
WriteToLCD(DAT,0x05); //
WriteToLCD(DAT,0x0b); //
WriteToLCD(DAT,0x0f); //
WriteToLCD(CMD,0xba); //Voltage control
WriteToLCD(DAT,0x2f); //
WriteToLCD(DAT,0x03); //
WriteToLCD(CMD,0x25); //Write contrast
WriteToLCD(DAT,0x7f); //
WriteToLCD(CMD,0xbe); //Power control
WriteToLCD(DAT,0x59); //
WriteToLCD(CMD,0x3a); //interfase pixel format
WriteToLCD(DAT,0x03); //
WriteToLCD(CMD,0x29); //Display ON
}
void WriteToLCD(bool w, U8 datt)
{
CLR_CLK;
CLR_DAT;
if(old && !w){
SET_CS;
if( w ){
SET_RS;
}else {
CLR_RS;
}
CLR_CS;
};
if( !old && w ){
SET_CS;
if( w ){
SET_RS;
}else {
CLR_RS;
}
CLR_CS;
}
if(!old && !w){
SET_CS;
if( w ){
SET_RS;
}else {
CLR_RS;
}
CLR_CS;
}
for(int i=0;i < 8;i++){
if( datt & 0x80 ){
SET_DAT;
}
else {
CLR_DAT;
}
SET_CLK;
datt = datt << 1;
CLR_CLK;
_delay_us(TIME_TO_SLEEP_LCD);
}
old = w;
}
void DrawPixel(U8 XPos, U8 YPos, U16 Color)
{
WriteToLCD( CMD, 0x2A );
WriteToLCD( DAT, XPos );
WriteToLCD( DAT, 100 );
WriteToLCD( CMD, 0x2B );
WriteToLCD( DAT, YPos+1 );
WriteToLCD( DAT, 80 );
WriteToLCD( CMD, 0x2C );
WriteToLCD( DAT, (Color >> 8) & 0xFF );
WriteToLCD( DAT, Color & 0xFF );
}
void DrawManyPixels()
{
for(int i = 0; i < 50; i++)
for(int j = 0; j < 50; j++)
DrawPixel( i, j, i+j );
}