台湾矽创微电子LCD驱动IC ST7528 用于128128LCD点阵 参考程序.docx
《台湾矽创微电子LCD驱动IC ST7528 用于128128LCD点阵 参考程序.docx》由会员分享,可在线阅读,更多相关《台湾矽创微电子LCD驱动IC ST7528 用于128128LCD点阵 参考程序.docx(33页珍藏版)》请在冰豆网上搜索。
台湾矽创微电子LCD驱动ICST7528用于128128LCD点阵参考程序
台湾矽创微电子LCD驱动ICST7528用于128*128点阵参考程序主程序
//CONTROLICST7528
//DESIGNEDLIUKING
#include
#include
#include"test.h"
#include"logo.txt"
#include"logo_pic.txt"
#definenop_nop_()
#defineucharunsignedchar
#defineuintunsignedint
#definecom128
#defineseg128
#defineADDMAP0x08//P2^3
#defineSUBMAP0x04//P2^2
#defineADDVOP0x02//P2^1
#defineSUBVOP0x01//P2^0
#definemapmax9
#defineKEY_INP2
sbita0=P3^3;
sbitrw=P3^2;
sbite=P3^1;
sbitreset=P3^4;
sbitcs1=P3^5;
voiddelay_10us(void);
voiddelay_n_ms(uintn);
voidwrcmd(ucharcmd);
voidwrdata(ucharData);
voidinit(void);
voidgray(void);
voiddisplay_all(void);
voiddisplay_off(void);
voiddisplay_fl1(void);
voiddisplay_fl2(void);
ucharVOP=0x1a;
ucharMAP_ID=0;
voidinit(void)
{
cs1=0;
nop;
reset=0;
delay_n_ms(200);
reset=1;
delay_n_ms(200);
/////////////////////EXT=0/////////////////////////
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
123HZandEXT=0
delay_n_ms(10);
delay_n_ms(10);
wrcmd(0x40);
wrcmd(0x00);//setinitialdisplaylineregister
delay_n_ms(10);
wrcmd(0x44);
wrcmd(0x00);//setinitialdisplaycom0register
delay_n_ms(10);
wrcmd(0xab);//oscillatoron
wrcmd(0x27);//setRb,Ra
wrcmd(0x81);
wrcmd(0x3f);//setreference
wrcmd(0x54);//set1/11bias
delay_n_ms(10);
wrcmd(0xc8);//comreverse
wrcmd(0xa0);//normalseg
//wrcmd(0x64);//set3timesbooster
delay_n_ms(200);
//wrcmd(0x2c);//setpowercontrol;allon
wrcmd(0x67);//set6timesbooster
delay_n_ms(200);
//wrcmd(0x2e);
delay_n_ms(10);
wrcmd(0x2f);
delay_n_ms(200);
wrcmd(0xbf);//set4FRCand60PWM
}
voiddisplay_all()
{
uchari,j,page=0;
//wrcmd(0x40);
//wrcmd(0x00);//setinitialdisplaylineregister
for(i=16;i>0;i--)
{
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(j=0;j<128;j++)
{
wrdata(0xff);
wrdata(0xff);
wrdata(0xff);
wrdata(0xff);
}
page++;
}
wrcmd(0xaf);
}
ucharcodegraycode[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,
0xff,0x00,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0x00,0xff,0xff,0x00,0x00,0x00,
0x00,0xff,0xff,0xff,0x00,0xff,0xff,0x00,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0x00,
0x00,0x00,0xff,0xff,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00
};
voidgraytest2(void)
{
uchari,j,m,column,page=0;
//wrcmd(0x40);
//wrcmd(0x00);//setinitialdisplaylineregister
for(i=17;i>0;i--)
{
wrcmd(0xb0+page);//setpageaddress
column=0;
for(m=0;m<16;m++)
{
wrcmd(0x10+column/16);//setcolumnhighaddress
wrcmd(0x00+column%16);//setcolumnlowaddress
for(j=0;j<10;j++)
{
wrdata(graycode[4*m+0]);
wrdata(graycode[4*m+1]);
wrdata(graycode[4*m+2]);
wrdata(graycode[4*m+3]);
}
column=column+10;
}
page++;
}
wrcmd(0xaf);
}
voiddisplay_off()
{
uchari,j,page=0;
//wrcmd(0x40);
//wrcmd(0x00);//setinitialdisplaylineregister
for(i=com/8+1;i>0;i--)
{
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(j=0;j{
wrdata(0x00);
wrdata(0x00);
wrdata(0x00);
wrdata(0x00);
}
page++;
}
wrcmd(0xaf);
}
voiddisplay_fl1(void)
{
uchari,j,page=0;
//wrcmd(0x40);
//wrcmd(0x00);//setinitialdisplaylineregister
for(i=com/8+1;i>0;i--)
{
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(j=0;j{
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
}
page++;
}
wrcmd(0xaf);
}
voiddisplay_fl2(void)
{
uchari,j,page=0;
//wrcmd(0x40);
//wrcmd(0x00);//setinitialdisplaylineregister
for(i=com/8+1;i>0;i--)
{
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(j=0;j{
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0x33);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
wrdata(0xcc);
}
page++;
}
wrcmd(0xaf);
}
ucharcodea[]={0x03,0x0F,0x1F,0x1E,0x3C,0x38,0x38,0x38,0x38,0x38,0x3D,0x1F,0x1F,0x3F,0x7B,0x30,
0xF0,0xFC,0xFE,0x1E,0x0F,0x07,0x07,0x07,0x07,0x87,0xCF,0x9E,0xFE,0xFC,0xF0,0x00};
voidgray_setmode(void)
{
delay_n_ms(30);
graywhite();
gray1();
gray2();
gray3();
gray4();
gray5();
gray6();
gray7();
gray8();
gray9();
gray10();
gray11();
gray12();
gray13();
gray14();
grayblack();
delay_n_ms(30);
}
voidwhrite_data(ucharpage,ucharcode_com)
{
uchart,y;
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(t=0;t<128;t++)
{
for(y=0;y<4;y++)
{
wrdata(code_com);
}
}
}
voidcom_scan(uintspeed)
{
uchars,x,page=0,code_com=0x01,mark;
for(x=0;x<8;x++)
{
for(s=0;s<8;s++)
{
whrite_data(page,code_com);
whrite_data(page+8,code_com);
if(mark==1)
{
whrite_data(page-1,0x00);
whrite_data(page+8-1,0x00);
mark=0;
}
code_com*=2;
if(s==7)
{
whrite_data(page-1,0x00);
whrite_data(page,0x80);
whrite_data(page+8-1,0x00);
whrite_data(page+8,0x80);
mark=1;
}
delay_n_ms(speed);
}
code_com=0x01;
page++;
}
wrcmd(0xaf);
}
voidwhrite_data_seg(ucharNO,ucharcode_com,ucharpage)
{
uchart,y;
wrcmd(0xb0+page);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(t=0;t<64+NO;t++)
{
if((t==NO-1)||(t>=(NO-1+64)))
{
for(y=0;y<4;y++)
{
wrdata(code_com);
}
}
elseif((t{
for(y=0;y<4;y++)
{
wrdata(0x00);
}
}
}
}
voidseg_scan(uintspeed)
{
uchari,j;
for(i=0;i<64;i++)
{
for(j=0;j<16;j++)
{
whrite_data_seg(i,0xff,j);
}
delay_n_ms(speed);
}
}
voidgraphic_change(uchar*p)
{
uchari,j,y,code_logo;
for(i=0;i<16;i++)
{
wrcmd(0xb0+i);//setpageaddress
wrcmd(0x10);
wrcmd(0x00);//setcolumeaddress
for(j=0;j<128;j++)
{
code_logo=p[(j*16)+15-i];
for(y=0;y<4;y++)
{
wrdata(code_logo);
}
}
}
wrcmd(0xaf);
}
main()
{
delay_10us();
init();
gray_setmode();//灰度程式设置
while
(1)
{
display_off();
display_all();
delay_n_ms(2000);
display_off();
delay_n_ms(1000);
display_fl1();
delay_n_ms(2000);//黑白方格测试部分
display_fl2();//黑白方格测试部分
delay_n_ms(2000);
display_off();
seg_scan
(1);
display_off();
com_scan(200);
graphic_change(logo_pic);
delay_n_ms(2000);
}
}
以下是库程序:
#include
#include
#definenop_nop_()
#defineucharunsignedchar
#defineuintunsignedint
#definecom128
#defineseg128
#defineADDMAP0x08//P2^3
#defineSUBMAP0x04//P2^2
#defineADDVOP0x02//P2^1
#defineSUBVOP0x01//P2^0
#definemapmax9
#defineKEY_INP2
sbita0=P3^3;
sbitrw=P3^2;
sbite=P3^1;
sbitreset=P3^4;
sbitcs1=P3^5;
voiddelay_10us()
{
uchari;
for(i=1;i>0;i--)
{
}
}
voiddelay_n_ms(uintn)
{
uinti,j;
for(j=n;j>0;j--)
{for(i=86;i>0;i--)
{
}
}
}
voidwrcmd(ucharcmd)
{
a0=0;
rw=0;
cs1=0;
nop;
e=1;
nop;
nop;
P1=cmd;
nop;
nop;
e=0;
//cs1=1;
//rw=1;
}
voidwrdata(ucharData)
{
a0=1;
rw=0;
cs1=0;
nop;
e=1;
nop;
nop;
P1=Data;
nop;
nop;
e=0;
//cs1=1;
//rw=1;
}
voidgray1(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x84);
wrcmd(3);
wrcmd(0x85);
wrcmd(3);
wrcmd(0x86);
wrcmd(3);
wrcmd(0x87);
wrcmd(3);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray2(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x88);
wrcmd(6);
wrcmd(0x89);
wrcmd(6);
wrcmd(0x8a);
wrcmd(6);
wrcmd(0x8b);
wrcmd(6);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray3(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x8c);
wrcmd(9);
wrcmd(0x8d);
wrcmd(9);
wrcmd(0x8e);
wrcmd(9);
wrcmd(0x8f);
wrcmd(9);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray4(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x90);
wrcmd(12);
wrcmd(0x91);
wrcmd(12);
wrcmd(0x92);
wrcmd(12);
wrcmd(0x93);
wrcmd(12);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray5(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x94);
wrcmd(15);
wrcmd(0x95);
wrcmd(15);
wrcmd(0x96);
wrcmd(15);
wrcmd(0x97);
wrcmd(15);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray6(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x98);
wrcmd(18);
wrcmd(0x99);
wrcmd(18);
wrcmd(0x9a);
wrcmd(18);
wrcmd(0x9b);
wrcmd(18);
wrcmd(0x38);
wrcmd(0xf4);//2byteinstructionsetmode:
64HZandEXT=0;
}
voidgray7(void)
{
wrcmd(0x38);
wrcmd(0xf5);//2byteinstructionsetmode:
64HZandEXT=1
delay_n_ms(200);
wrcmd(0x9c);
wrcmd(21);
wrcmd(0x9d);
wrcmd(21);
wrcmd(0x9e);
wrcmd(21);
wrcmd(0x9f);
wrcmd(21);