|
发表于 2009-9-26 16:58:38
|
显示全部楼层
#include <mega128.h>
#include <AsciiLib.c>
flash unsigned char palette[]={0x00,0x00,0xf8,0x00,0x07,0xe0,0x00,0x1f,0xf8,0x1f,0xff,0xe0,0x07,0xff,0xff,0xff,0xfc,0x08,0x0e,0xff};
/*#define RS PORTE.2//红色:0xf800
//绿色:0x07e0
//蓝色:0x001f
//黄色:0xffe0 红绿混合
//紫色:0xf81f 红蓝混合
//青色:0x07ff 蓝绿混合
//天蓝:0x0eff
//橘黄:0xfe00
#define WR PORTE.3
#define RESET PORTE.1*/
#define RS PORTE.1
#define WR PORTE.2
#define RESET PORTE.3
#define LCD_DATA_L PORTA
#define LCD_DATA_H PORTF
unsigned char lcd_buffer[100],vort[10];
void WMLCDCOM(unsigned char data_1,unsigned char data_2)
{
RS=0;
PORTF=data_1;
PORTA=data_2;
WR=0;
WR=1;
}
void WMLCDDATA(unsigned char data_1,unsigned char data_2)
{
RS=1;
PORTF=data_1;
PORTA=data_2;
WR=0;
WR=1;
}
void INIT()
{
//************* RESET LCD Driver ****************//
RESET=1;
delay_ms(100);
RESET=0;
delay_ms(100);
RESET=1;
delay_ms(100);
WMLCDCOM(0x00, 0x46);WMLCDDATA(0x00, 0x91);
WMLCDCOM(0x00, 0x47);WMLCDDATA(0x00, 0x11);
WMLCDCOM(0x00, 0x48);WMLCDDATA(0x00, 0x00);
WMLCDCOM(0x00, 0x49);WMLCDDATA(0x00, 0x66);
WMLCDCOM(0x00, 0x4A);WMLCDDATA(0x00, 0x37);
WMLCDCOM(0x00, 0x4B);WMLCDDATA(0x00, 0x04);
WMLCDCOM(0x00, 0x4C);WMLCDDATA(0x00, 0x11);
WMLCDCOM(0x00, 0x4D);WMLCDDATA(0x00, 0x77);
WMLCDCOM(0x00, 0x4E);WMLCDDATA(0x00, 0x00);
WMLCDCOM(0x00, 0x4F);WMLCDDATA(0x00, 0x1F);
WMLCDCOM(0x00, 0x50);WMLCDDATA(0x00, 0x0F);
WMLCDCOM(0x00, 0x51);WMLCDDATA(0x00, 0x00);
//240x320 window setting
WMLCDCOM(0x00, 0x02);WMLCDDATA(0x00, 0x00); // Column address start2
WMLCDCOM(0x00, 0x03);WMLCDDATA(0x00, 0x00); // Column address start1
WMLCDCOM(0x00, 0x04);WMLCDDATA(0x00, 0x00); // Column address end2
WMLCDCOM(0x00, 0x05);WMLCDDATA(0x00, 0xEF); // Column address end1
WMLCDCOM(0x00, 0x06);WMLCDDATA(0x00, 0x00); // Row address start2
WMLCDCOM(0x00, 0x07);WMLCDDATA(0x00, 0x00); // Row address start1
WMLCDCOM(0x00, 0x08);WMLCDDATA(0x00, 0x01); // Row address end2
WMLCDCOM(0x00, 0x09);WMLCDDATA(0x00, 0x3F); // Row address end1
// Display Setting
WMLCDCOM(0x00, 0x01);WMLCDDATA(0x00, 0x06); // IDMON=0, INVON=1, NORON=1, PTLON=0
WMLCDCOM(0x00, 0x16);WMLCDDATA(0x00, 0xc8); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0
WMLCDCOM(0x00, 0x23);WMLCDDATA(0x00, 0x95); // N_DC=1001 0101
WMLCDCOM(0x00, 0x24);WMLCDDATA(0x00, 0x95); // PI_DC=1001 0101
WMLCDCOM(0x00, 0x25);WMLCDDATA(0x00, 0xFF); // I_DC=1111 1111
WMLCDCOM(0x00, 0x27);WMLCDDATA(0x00, 0x02); // N_BP=0000 0010
WMLCDCOM(0x00, 0x28);WMLCDDATA(0x00, 0x02); // N_FP=0000 0010
WMLCDCOM(0x00, 0x29);WMLCDDATA(0x00, 0x02); // PI_BP=0000 0010
WMLCDCOM(0x00, 0x2A);WMLCDDATA(0x00, 0x02); // PI_FP=0000 0010
WMLCDCOM(0x00, 0x2C);WMLCDDATA(0x00, 0x02); // I_BP=0000 0010
WMLCDCOM(0x00, 0x2D);WMLCDDATA(0x00, 0x02); // I_FP=0000 0010
WMLCDCOM(0x00, 0x3A);WMLCDDATA(0x00, 0x01); // N_RTN=0000, N_NW=001
WMLCDCOM(0x00, 0x3B);WMLCDDATA(0x00, 0x01); // PI_RTN=0000, PI_NW=001
WMLCDCOM(0x00, 0x3C);WMLCDDATA(0x00, 0xF0); // I_RTN=1111, I_NW=000
WMLCDCOM(0x00, 0x3D);WMLCDDATA(0x00, 0x00); // DIV=00
delay_ms(20);
WMLCDCOM(0x00, 0x35);WMLCDDATA(0x00, 0x38); // EQS=38h
WMLCDCOM(0x00, 0x36);WMLCDDATA(0x00, 0x78); // EQP=78h
WMLCDCOM(0x00, 0x3E);WMLCDDATA(0x00, 0x38); // SON=38h
WMLCDCOM(0x00, 0x40);WMLCDDATA(0x00, 0x0F); // GDON=0Fh
WMLCDCOM(0x00, 0x41);WMLCDDATA(0x00, 0xF0); // GDOFF
// Power Supply Setting
WMLCDCOM(0x00, 0x19);WMLCDDATA(0x00, 0x47); // CADJ=0100, CUADJ=100, OSD_EN=1 ,60Hz
WMLCDCOM(0x00, 0x93);WMLCDDATA(0x00, 0x0F); // RADJ=1111, 100%
delay_ms(20);
WMLCDCOM(0x00, 0x20);WMLCDDATA(0x00, 0x40); // BT=0100
WMLCDCOM(0x00, 0x1D);WMLCDDATA(0x00, 0x07); // VC1=111
WMLCDCOM(0x00, 0x1E);WMLCDDATA(0x00, 0x00); // VC3=000
WMLCDCOM(0x00, 0x1F);WMLCDDATA(0x00, 0x03); // VRH=0011
WMLCDCOM(0x00, 0x44);WMLCDDATA(0x00, 0x50); // VCM=101 0000
WMLCDCOM(0x00, 0x45);WMLCDDATA(0x00, 0x13); // VDV=1 0001
delay_ms(20);
WMLCDCOM(0x00, 0x1C);WMLCDDATA(0x00, 0x04); // AP=100
delay_ms(20);
WMLCDCOM(0x00, 0x43);WMLCDDATA(0x00, 0x80); //set VCOMG=1
delay_ms(20);
WMLCDCOM(0x00, 0x1B);WMLCDDATA(0x00, 0x08); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=0, STB=0
delay_ms(50);
WMLCDCOM(0x00, 0x1B);WMLCDDATA(0x00, 0x10); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=0, STB=0
delay_ms(50);
// Display ON Setting
WMLCDCOM(0x00, 0x90);WMLCDDATA(0x00, 0x7F); // SAP=0111 1111
WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x04); //GON=0, DTE=0, D=01
delay_ms(60);
WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x24); //GON=1, DTE=0, D=01
delay_ms(60);
WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x2C); //GON=1, DTE=0, D=11
delay_ms(60);
WMLCDCOM(0x00, 0x26);WMLCDDATA(0x00, 0x3C); //GON=1, DTE=1, D=11
delay_ms(60);
WMLCDCOM(0x00, 0x22); //WRITE DATA TO GRAM
}
void lcd_display_area(unsigned int StartX, unsigned int StartY,unsigned int EndX, unsigned int EndY)
{
WMLCDCOM(0x00, 0x02);
WMLCDDATA(0x00, StartY>>8);
WMLCDCOM(0x00,0x03);
WMLCDDATA(0x00, StartY);
WMLCDCOM(0x00, 0x04);
WMLCDDATA(0x00, EndY>>8);
WMLCDCOM(0x00, 0x05);
WMLCDDATA(0x00, EndY);
WMLCDCOM(0x00, 0x06);
WMLCDDATA(0x00, StartX>>8);
WMLCDCOM(0x00, 0x07);
WMLCDDATA(0x00, StartX);
WMLCDCOM(0x00, 0x08);
WMLCDDATA(0x00, EndX>>8);
WMLCDCOM(0x00, 0x09);
WMLCDDATA(0x00, EndX);
WMLCDCOM(0x00, 0x22);
} |
|