📄 st7529.c
字号:
temp=lum<<6;
ucData=((ucData&0xF83F)|temp);
break;
case 2:
ucData=((ucData&0xFFE0)|lum);
break;
}
Wrcom(ucData);
Wrcmd(0XEE); //退出读修改写模式
}
/********************************/
//LCD的一个块中三个像素合成显示函数
//入口数note为图像的地址
/********************************/
unsigned char show_block(unsigned char code *note,unsigned char col_num)
{
unsigned int ucData;
unsigned char i;
unsigned int temp=0;
LCD_dummyRead(); //假读一次
ucData=LCD_DataRead();
i = col%3;
switch(i)
{
case 0:
temp=*note<<8;
temp=temp<<3;
switch(col_num)
{
case 1:
i=1;
ucData=((ucData&0x07FF)|temp);
break;
case 2:
note++; i=2;
temp=temp|(*note<<6);
ucData=((ucData&0x003F)|temp);
break;
default:
note++; i=3;
temp=temp|(*note<<6);
note++;
ucData=temp|*note;
break;
}
break;
case 1:
temp=*note<<6;
if(col_num<2)
{
i=1;
ucData=((ucData&0xF83F)|temp);
}
else
{
note++; i=2;
temp=temp|*note;
ucData=((ucData&0xF800)|temp);
}
break;
case 2:
i=1;
ucData=((ucData&0xFFE0)|*note);
break;
default: i=0;
break;
}
if(Reverse) ucData=~ucData; //取反,以反显
RD = 1; //读数据端置1
Wrcom(ucData);
return i;
}
/********************************/
//LCD的显示一个矩阵图像函数
//点阵数为从左至右、从下至上的模向扫描
//入口数note为图像的首地址
//入口数col_num、row_num为图像的宽和高 。
/********************************/
void show_photo(unsigned char code *note,unsigned char col_num,unsigned char row_num)
{
unsigned char i,j;
unsigned char bak_col;
unsigned char a;
Loadxy(col_num,row_num); //写入图像的显示区域
Wrcmd(0XE0); //进入到读修改写模式
LCD_initRead(); //初始化读数据状态
bak_col=col;
for(i=0;i<row_num;i++)
{
col=bak_col; j=col_num;
while (j!=0)
{
a=show_block(note,j);
note=note+a;
j=j-a; col=col+a;
}
}
Wrcmd(0XEE); //退出读修改写模式
}
/********************************/
//LCD的显示一个点阵字符函数。
//字模数据为从左至右、从上至下的模向扫描模式
//字符点阵数为从左至右、从下至上的模向扫描
//入口数note为字符的首地址
//入口数col_num、row_num为字符的宽和高 。
//入口数lum为字符显示的亮度 ,为0时,最黑
/********************************/
void show_note(unsigned char code *note,unsigned char col_num,unsigned char row_num,unsigned char lum)
{
unsigned char i,j;
unsigned char bak_col;
unsigned char a,k;
unsigned int ucData;
unsigned int temp1,temp2;
temp1=lum<<8;
temp1=temp1<<3;
temp2=lum<<6;
k=col_num/8;
if((col_num%8)!=0) k++;
note=note+(unsigned int)(k*(row_num-1)); //最下一行的首地址
k=2*k;
bak_col=col;
Wrcmd(0X30); //EXT=0
Wrcmd(0X75); //THIRD COMMAND SET LINE ADDRESS
i=START_LINE+row;
Wrdata(i); //START LINE
i=i+row_num-1;
Wrdata(i); //END LINE
i=col/3;
i=START_COL+i;
Wrcmd(0X15); //THIRD COMMAND SET COLUMN ADDRESS
Wrdata(i); //START COLUMN
a=col_num-1;
i=((col+a)/3);
i=i+START_COL;
Wrdata(i); //END COLUMN
Wrcmd(0XE0); //进入到读修改写模式
LCD_initRead(); //初始化读数据状态
for(i=0;i<row_num;i++)
{
a=0; col=bak_col; j=col_num;
while(j!=0)
{
LCD_dummyRead(); //假读一次
ucData=LCD_DataRead();
switch(col%3)
{
case 0:
j--; col++;
if((*note&(1<<a))!=0) ucData=((ucData&0x07FF)|temp1);
else ucData=(ucData|0xF800);
if(a<7) a++;
else {note++; a=0;}
case 1:
if(j!=0) {j--; col++;}
else break;
if((*note&(1<<a))!=0) ucData=((ucData&0xF83F)|temp2);
else ucData=(ucData|0x07C0);
if(a<7) a++;
else {note++; a=0;}
default:
if(j!=0) {j--; col++;}
else break;
if((*note&(1<<a))!=0) ucData=((ucData&0xFFE0)|lum);
else ucData=(ucData|0x003F);
if(a<7) a++;
else {note++; a=0;}
}
Wrcom(ucData);
}
note=note-k;
if(a!=0) note++;
}
Wrcmd(0XEE); //退出读修改写模式
col=bak_col;
}
/********************************/
//液晶屏初始化
/********************************/
void ST7529_init(void)
{
Wrcmd( 0x0030 ); //Ext = 0
Wrcmd( 0x0094 ); //Sleep Out
Wrcmd( 0x00D1 ); //OSC On
Wrcmd( 0x0020 ); //Power Control Set
Wrdata( 0x0008 ); //Booster Must Be On First
Delay( 1 );
Wrcmd( 0x0020 ); //Power Control Set
Wrdata( 0x000B ); //Booster, Regulator, Follower ON
Wrcmd( 0x0081 ); //Electronic Control
Wrdata( 0x0004 ); //Vop=14.0V
Wrdata( 0x0004 );
Wrcmd( 0x00CA ); //Display Control
Wrdata( 0x0000 ); //CL=X1
Wrdata( 0x0027 ); //Duty=160
Wrdata( 0x0000 ); //FR Inverse-Set Value
Wrcmd( 0x00A6 ); // Normal Display
Wrcmd( 0x00BB ); //COM Scan Direction
Wrdata( 0x0002 ); // 79→0 80→159
Wrcmd( 0x00BC ); //Data Scan Direction
Wrdata( 0x0000 ); //inverse show
Wrdata( 0x0000 ); //RGB Arrangement
Wrdata( 0x0001 ); //2字节3像素模式
Wrcmd( 0x0075 ); //Line Address Set
Wrdata( 0x0000 ); //Start Line=0
Wrdata( 0x009F ); //End Line =159
Wrcmd( 0x0015 ); //Column Address Set
Wrdata( 0x0000 ); //Start Column=0
Wrdata( 0x0054 ); //End Column =84
Wrcmd( 0x0031 ); //Ext = 1
Wrcmd( 0x0032 ); //Analog Circuit Set
Wrdata( 0x0000 ); //OSC Frequency =000 (Default)
Wrdata( 0x0001 ); //Booster Efficiency=01(Default)
Wrdata( 0x0000 ); //Bias=1/14
Wrcmd( 0x0034 ); //Software Initial
//Read_LCM_EEPROM(); //Read EEPROM Flow
Wrcmd( 0x0030 ); //Ext = 0
WretPointTest(0xFFFF);
Wrcmd( 0x00AF ); //Display On
}
unsigned char code zimo3[]={ //65*29
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x20,0x00,0x80,0x01,0x04,
0x00,0x30,0x80,0x01,0xE0,0xFF,0xFF,0x01,0xFC,0xFF,0x3F,0x80,0x01,0x60,0x00,0x80,
0x00,0x0C,0x00,0x10,0x80,0x01,0x60,0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0x60,
0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0xE0,0xFF,0xFF,0x00,0xFC,0xFF,0x1F,0x00,
0x00,0x60,0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x0C,0x00,
0x00,0x00,0x00,0x60,0x02,0x04,0x00,0x4C,0x80,0x00,0x00,0x00,0x60,0x0E,0x0C,0x00,
0xCC,0x81,0x01,0x00,0x00,0x60,0x06,0x04,0x01,0xCC,0x80,0x20,0x00,0x00,0x60,0x06,
0x84,0x03,0xCC,0x80,0x70,0x00,0x00,0x20,0xC6,0xC4,0x00,0xC4,0x98,0x18,0x00,0x00,
0x20,0xFE,0x65,0x00,0xC4,0xBF,0x0C,0x00,0x00,0x20,0x06,0x14,0x00,0xC4,0x80,0x02,
0x00,0x00,0x30,0x06,0x0C,0x00,0xC6,0x80,0x01,0x00,0x00,0x30,0x06,0x04,0x00,0xC6,
0x80,0x00,0x00,0x00,0x10,0x06,0x04,0x00,0xC2,0x80,0x00,0x00,0x00,0x10,0x06,0x04,
0x02,0xC2,0x80,0x40,0x00,0x00,0x18,0x86,0x04,0x02,0xC3,0x90,0x40,0x00,0x00,0x08,
0x66,0x04,0x02,0xC1,0x8C,0x40,0x00,0x00,0x08,0x1E,0x04,0x06,0xC1,0x83,0xC0,0x00,
0x00,0x04,0x0E,0xFC,0x87,0xC0,0x81,0xFF,0x00,0x00,0x02,0x04,0xF8,0x43,0x80,0x00,
0x7F,0x00,0x00,0x02,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
};
unsigned char code zimo2[]={ //74*37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0x83,0x01,0x00,0x00,0x00,
0x0E,0x00,0x00,0x70,0x00,0x83,0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x30,0x00,0x83,
0x01,0x00,0x00,0x00,0x0C,0x40,0x00,0x30,0x00,0x83,0x61,0x00,0x40,0x00,0x0C,0xC0,
0x00,0x20,0x00,0x83,0xF1,0x00,0xC0,0xFF,0xFF,0xFF,0x01,0x20,0xF8,0xFF,0x0F,0x00,
0x40,0x00,0x00,0xE0,0x00,0x20,0x00,0x83,0x01,0x00,0x60,0x00,0x00,0x20,0x00,0x20,
0x06,0x83,0x01,0x00,0x70,0x00,0x00,0x10,0x80,0xFF,0x0F,0x81,0x00,0x00,0x70,0x00,
0x00,0x10,0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x30,0xE0,0xFF,
0x1F,0x00,0x80,0xFF,0xFF,0x0F,0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x00,0x1F,
0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x80,0x01,0x00,0xF8,0x60,0x00,0x0C,0x00,
0x00,0x00,0x40,0x00,0x00,0xB8,0xE3,0xFF,0x0F,0x00,0x00,0x00,0x30,0x00,0x00,0x28,
0x67,0x00,0x0C,0x00,0x00,0x00,0x1E,0x00,0x00,0x2C,0x66,0x00,0x0C,0x00,0x00,0x00,
0x0E,0x00,0x01,0x2C,0x66,0x00,0x0C,0x00,0x00,0x00,0x0E,0x80,0x01,0x26,0x64,0x00,
0x0C,0x00,0x00,0x00,0x0E,0xC0,0x03,0x26,0xE0,0xFF,0x0F,0x00,0xFC,0xFF,0xFF,0x3F,
0x00,0x22,0x60,0x18,0x0C,0x00,0x00,0x00,0x0E,0x00,0x00,0x21,0x00,0x18,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x21,0x00,0x18,0x60,0x00,0x00,0x00,0x0E,0x00,0x80,0x30,
0x00,0x18,0xF0,0x00,0x00,0x00,0x0E,0x00,0x40,0x30,0xFC,0xEF,0x0F,0x00,0x00,0x00,
0x0E,0x00,0x00,0x30,0x00,0x2C,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x00,0x4C,
0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x00,0x86,0x00,0x00,0x00,0x00,0x0E,0x00,
0x00,0x30,0x00,0x83,0x01,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x80,0x01,0x07,0x00,
0x00,0xF0,0x07,0x00,0x00,0x30,0xC0,0x00,0x3E,0x00,0x00,0x80,0x07,0x00,0x00,0x70,
0x70,0x00,0xFC,0x00,0x00,0x00,0x03,0x00,0x00,0x70,0x1C,0x00,0x30,0x00,0x00,0x00,
0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,
};
/****************************************/
/*主函数*/
/****************************************/
void main()
{
LCD_Reset();
ST7529_init();
col=6;row=3;
show_note(&zimo[0],32,16,0x00);
col=38;row=3;
show_note(&zimo[0],32,16,0x00);
col=80;row=3;
show_note(&zimo2[0],74,37,0x00);
col=80;row=50;
show_note(&zimo3[0],65,29,0x00);
col=6;row=20;
show_note(&two_boy[0],65,70,0x00);
while(1);
}
unsigned char code zimo[]={ //32*16
0x40,0x00,0x04,0x09,0x80,0x00,0x04,0x09,0xFC,0x3F,0xE4,0x3F,0x04,0x20,0x04,0x09,
0x02,0x10,0xDF,0x1F,0xF8,0x07,0x44,0x10,0x00,0x02,0xCE,0x1F,0x00,0x01,0x56,0x10,
0x80,0x00,0xC5,0x1F,0xFE,0x7F,0x05,0x02,0x80,0x00,0xE4,0x7F,0x80,0x00,0x04,0x02,
0x80,0x00,0x04,0x05,0x80,0x00,0x04,0x19,0xA0,0x00,0x84,0x70,0x40,0x00,0x64,0x20,
};
unsigned char code two_boy[]={ //65*70
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,
0x08,0x00,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0x00,0x90,0xFF,0xFE,0xFF,0xEF,
0x8F,0xFF,0xE0,0x00,0x90,0xED,0x7F,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x98,0xCD,0xCF,
0xFF,0xEC,0xFB,0xFF,0x02,0x00,0x98,0xFC,0xF8,0x5D,0x3B,0x17,0xDA,0x06,0x00,0x88,
0xFF,0xCC,0x13,0x27,0x13,0xFE,0x0C,0x00,0x80,0xE7,0xCD,0x7B,0x5B,0x36,0xDE,0x09,
0x00,0xE0,0xCF,0xCC,0x2F,0x9B,0x33,0xDE,0x00,0x00,0xF8,0xDF,0xCD,0x77,0x5B,0x37,
0xD6,0xE1,0x00,0x98,0xCF,0xCC,0x3F,0x1B,0x33,0xCF,0x80,0x00,0x98,0x9F,0xCD,0x1D,
0x53,0x37,0xDE,0x01,0x00,0x88,0xE3,0xBC,0xFF,0x98,0xB3,0x9B,0x03,0x00,0x8C,0x7F,
0xFF,0xFF,0xFF,0xFD,0xFE,0x06,0x00,0x80,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0x0D,0x00,
0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x09,0x00,0x21,0x00,0x0F,0x03,0x02,0x4E,0xC0,
0x80,0x00,0x00,0x00,0x08,0x00,0x02,0x1F,0x00,0xC0,0x00,0x00,0xC0,0x18,0x00,0x03,
0x72,0x00,0x00,0x00,0x02,0xE0,0x10,0x00,0x05,0xA3,0x00,0x18,0x00,0xC2,0x30,0x10,
0x80,0x1F,0x99,0x00,0x18,0x00,0x46,0x18,0x00,0xC0,0x78,0x89,0x3F,0x34,0x00,0x4C,
0x06,0x0C,0xC4,0x60,0x88,0xF1,0x64,0x00,0x60,0x1F,0xFC,0xCC,0xDC,0x88,0x01,0x46,
0x00,0x60,0x79,0xC0,0xD8,0x78,0x0A,0x03,0x06,0x00,0x01,0xBD,0x00,0xD0,0xF0,0x0F,
0x02,0x02,0x00,0x01,0xCF,0x70,0x90,0xE0,0x1B,0x62,0x02,0x00,0x7F,0x85,0x61,0x80,
0xC3,0x35,0xC3,0x10,0x00,0xEC,0x8D,0xC3,0x81,0xC2,0xFF,0x43,0xF7,0x00,0x52,0x0F,
0x83,0x03,0xC7,0xC3,0x8F,0xC7,0x01,0x9A,0x0B,0x06,0x1F,0xE2,0x77,0x1B,0x0F,0x00,
0x3C,0xFE,0x0D,0x3F,0xD4,0xFE,0x2F,0x1D,0x00,0xC4,0xC6,0x3D,0x74,0xFC,0xEF,0x3E,
0x1C,0x00,0x8E,0xCE,0x5F,0x7C,0x78,0x3F,0x7F,0x16,0x01,0x0C,0xCF,0x7C,0x78,0x6C,
0xFF,0xEF,0x1E,0x01,0x9C,0xFF,0xF7,0xF8,0x7D,0xCF,0xFD,0xF7,0x01,0x98,0xFF,0xFF,
0xF0,0xEC,0x8D,0xE0,0x91,0x01,0xF8,0xFF,0xFF,0xC6,0xF8,0x89,0x47,0xB3,0x00,0x90,
0xFF,0x8A,0xCF,0xBE,0x8E,0xED,0x33,0x00,0xE0,0x2F,0xC0,0xD5,0x28,0x9F,0x7C,0x33,
0x00,0xE0,0x1F,0x3C,0xCD,0x18,0x09,0x70,0x33,0x00,0xE2,0x1F,0x7C,0xCF,0x30,0x03,
0x6A,0x33,0x00,0xE6,0x0B,0xEC,0xCE,0xF0,0x05,0xA1,0x23,0x00,0xE4,0xF1,0xC8,0x0E,
0xF0,0xF1,0xD1,0x1F,0x00,0x4C,0xB1,0x00,0xCE,0xC6,0xF8,0x38,0xFD,0x00,0xC8,0x31,
0x10,0xCF,0xEC,0x01,0xDE,0xC1,0x01,0xC8,0x31,0x90,0xCF,0xD8,0xFF,0xFF,0x00,0x01,
0x81,0x18,0xFE,0x4F,0xF8,0xFD,0x70,0x82,0x01,0x18,0x19,0xDC,0x67,0x71,0x00,0x60,
0x86,0x01,0x0E,0x06,0xBF,0xEF,0x35,0x00,0x60,0x8C,0x00,0x86,0xF6,0xF7,0x8F,0x33,
0x03,0x60,0x8C,0x00,0x00,0xFC,0xFF,0xFF,0x37,0x03,0x50,0x08,0x00,0xC0,0xEC,0xFF,
0xBF,0x33,0x02,0xF8,0x00,0x00,0xC0,0xFC,0xFF,0x3F,0x63,0xFE,0xFF,0x07,0x00,0x44,
0xEE,0xFF,0x7F,0xE0,0xCF,0xBF,0x76,0x00,0x8C,0x9D,0xFF,0x77,0xC6,0xFF,0xFF,0xF6,
0x01,0x8C,0xB9,0xFB,0x3F,0x0A,0xFD,0xFF,0x02,0x00,0x19,0xD9,0xDF,0x1F,0x1F,0xFF,
0xFF,0x03,0x00,0x19,0xB1,0xFF,0x1F,0x1A,0xFF,0x59,0x22,0x00,0x40,0xE0,0xBB,0x07,
0x0E,0xE3,0xC7,0x60,0x00,0xE0,0xC3,0xDF,0x08,0xBC,0xC3,0xC6,0xC0,0x00,0x02,0xC7,
0xDD,0x38,0xD0,0x63,0xC6,0xC0,0x00,0x06,0xFC,0xC8,0xF8,0xF9,0x62,0xC6,0x07,0x00,
0x06,0xFE,0xF0,0x41,0x1B,0xC0,0x07,0x0E,0x00,0x0C,0x26,0xF8,0x0F,0x0F,0xE0,0x03,
0x18,0x00,0x00,0xF2,0xFF,0xBC,0xFF,0xDF,0xFF,0x7D,0x00,0xC0,0xDE,0xBD,0xC0,0x7B,
0x9F,0xBD,0x7B,0x00,0x60,0x00,0xB7,0x01,0x01,0x87,0x01,0xC4,0x00,0xE0,0x00,0xB2,
0x01,0x80,0x83,0x01,0xC4,0x00,
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -