vlad145 (Владимир) » 31 май 2014, 04:58
Настройка порта и сброс:
set_bit(MX_GFXLCD_DDR, MX_GFXLCD_RES); //Configure I/O
set_bit(MX_GFXLCD_DDR, MX_GFXLCD_CS);
set_bit(MX_GFXLCD_DDR, MX_GFXLCD_SDATA);
set_bit(MX_GFXLCD_DDR, MX_GFXLCD_SCLK);
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_CS);
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK);
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_RES); //Reset LCD
delay_ms(200);
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_RES); //Startup LCD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Set Clock Pin High
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA); //Set Data Pin High
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Set Clock Pin High
Инициализация (PCF8833):
gLCD_SendByte(MX_GFXLCD_CMD, 0x01);
gLCD_SendByte(MX_GFXLCD_CMD, 0x11);
gLCD_SendByte(MX_GFXLCD_CMD, 0x03);
delay_ms(10);
gLCD_SendByte(MX_GFXLCD_CMD, 0x29);
gLCD_SendByte(MX_GFXLCD_CMD, 0x13);
gLCD_SendByte(MX_GFXLCD_CMD, 0x25);
gLCD_SendByte(MX_GFXLCD_PARAM, 0x3F);
gLCD_SendByte(MX_GFXLCD_CMD, 0x20);
gLCD_SendByte(MX_GFXLCD_CMD, 0x3A);
gLCD_SendByte(MX_GFXLCD_PARAM, 0x03);
gLCD_SendByte(MX_GFXLCD_CMD, 0x2D);
gLCD_SendByte(MX_GFXLCD_PARAM, 0);
gLCD_SendByte(MX_GFXLCD_PARAM, 2);
gLCD_SendByte(MX_GFXLCD_PARAM, 5);
gLCD_SendByte(MX_GFXLCD_PARAM, 7);
gLCD_SendByte(MX_GFXLCD_PARAM, 9);
gLCD_SendByte(MX_GFXLCD_PARAM, 11);
gLCD_SendByte(MX_GFXLCD_PARAM, 14);
gLCD_SendByte(MX_GFXLCD_PARAM, 16);
gLCD_SendByte(MX_GFXLCD_PARAM, 0);
gLCD_SendByte(MX_GFXLCD_PARAM, 2);
gLCD_SendByte(MX_GFXLCD_PARAM, 5);
gLCD_SendByte(MX_GFXLCD_PARAM, 7);
gLCD_SendByte(MX_GFXLCD_PARAM, 9);
gLCD_SendByte(MX_GFXLCD_PARAM, 11);
gLCD_SendByte(MX_GFXLCD_PARAM, 14);
gLCD_SendByte(MX_GFXLCD_PARAM, 16);
gLCD_SendByte(MX_GFXLCD_PARAM, 0);
gLCD_SendByte(MX_GFXLCD_PARAM, 6);
gLCD_SendByte(MX_GFXLCD_PARAM, 11);
gLCD_SendByte(MX_GFXLCD_PARAM, 15);
delay_ms(5);
gLCD_SendByte(MX_GFXLCD_CMD, 0x36);
gLCD_SendByte(MX_GFXLCD_PARAM, 0x00);
gLCD_SendByte(MX_GFXLCD_CMD, 0x2C);
delay_ms(50);
gLCD_SendByte(MX_GFXLCD_CMD, 0x28);
Lcd_Box(0,0,131,131,1, WHITE,0); // прямоугольник x,y,x1,y1,0-рамка(1-закрашенный),цвет,толщина линии (при типе - рамка)
gLCD_SendByte(MX_GFXLCD_CMD, 0x29);
************************************************************************************************************
Замени код функции gLCD_SendByte:
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_CS); //MX_GFXLCD_CS 0 start of sequence
//********************************************
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if (Command == MX_GFXLCD_CMD)
{
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA); //0 = MX_GFXLCD_CMD
}
else
{
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA); //1 = MX_GFXLCD_PARAMeter
}
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
//*********************************************
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 128) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 64) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 32) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 16) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 8) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 4) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 2) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 0
if ((Lcdout & 1) != 0)
{set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);}
else
{clear_bit(MX_GFXLCD_PORT, MX_GFXLCD_SDATA);} //0 = MX_GFXLCD_CMD
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_SCLK); //Clock 1
set_bit(MX_GFXLCD_PORT, MX_GFXLCD_CS); //MX_GFXLCD_CS 1