📄 lcd.c
字号:
SEDA0 = 0;
SEDRD = 0;
P1 = 0xff;
busy = P1&0x40;
SEDRD = 1;
return busy;
}
*/
/*
void writecmd(unsigned char cmd)
{
P1=cmd;
SEDA0=1;
SEDWR=0;
SEDWR=1;
}
void writedat(unsigned char dat)
{
P1=dat;
SEDA0=0;
SEDWR=0;
SEDWR=1;
}
*/
/*
unsigned char readdat()
{
unsigned char dat;
SEDA0=1;
P1=0XFF;
SEDRD=0;
dat=P1;
SEDRD=1;
return dat;
}
*/
void clear(unsigned short addr)
{
unsigned int i;
writecmd(0x4c); /// CSRDIR 代码
writecmd(0x46); /// CSRW 代码
writedat(addr&0xff); /// 设置参数光标指针低8位
writedat(addr>>8); /// 设置参数光标指针高8位
writecmd(0x42); /// MWRITE 代码
for(i=0;i<9600;i++) ///清64K的显示存储器
{
writedat(0x00); /// 写入数据
}
}
/*
void initcgram()
{
unsigned char i,j;
writecmd(0x5c); /// CGRAMADR 代码
writedat(0x00); /// 设置SAG=0x8000
writedat(0xc0);
writecmd(0x46); /// CSRW 代码
writedat(0x00); /// 设置CSR=0x8400(字符代码=80H)
writedat(0xc4);
writecmd(0x4c); /// CSRDIR 代码
writecmd(0x42); /// MWRITE 代码
for(j=0;j<4;j++)
{
for(i=0;i<32;i++)
{
writedat(font16[j][i]); /// 写入字模数据
}
}
}
*/
void delay(ushort dly)
{
uchar i=0;
while(dly--)
while(--i);
}
void initlcd()
{
SEDRST = 0;
SEDCS = 0;
delay(1);
SEDRST = 1;
delay(1);
SEDDISP = 1;
delay(1);
}
void initdisplay(SystemParam *pSysParam)
{
writecmd(0x40); /// SYSTEM SET代码
writedat(pSysParam->param);
writedat(pSysParam->fx);
writedat(pSysParam->fy);
writedat(pSysParam->cr);
writedat(pSysParam->tcr);
writedat(pSysParam->lf);
writedat(pSysParam->apl);
writedat(pSysParam->aph);
}
/*
void sleepin()
{
writecmd(0x53);
}
*/
void setdisplayon(bit bdisplay,unsigned char mode)
{
if(bdisplay)
{
writecmd(0x59);
}
else
{
writecmd(0x58);
}
writedat(mode);
}
void setdisplayparam(DisplayParam *pDispParam)
{
writecmd(0x44);
writedat(pDispParam->saddr1lo);
writedat(pDispParam->saddr1hi);
writedat(pDispParam->sl1);
writedat(pDispParam->saddr2lo);
writedat(pDispParam->saddr2hi);
writedat(pDispParam->sl2);
writedat(pDispParam->saddr3lo);
writedat(pDispParam->saddr3hi);
writedat(pDispParam->saddr4lo);
writedat(pDispParam->saddr4hi);
}
void setcursorform(bit mode,unsigned char crx,unsigned char cry)
{
writecmd(0x5d);
writedat(crx);
cry &= 0x0f;
if(mode)
{
writedat(0x80|cry);
}
else
{
writedat(0x7f&cry);
}
}
void setcursordirection(CursorDirection csrdrt)
{
writecmd(csrdrt);
}
//mode 0 0 0 OV DM2 DM1 MX1 MX0
void setoverlay(unsigned char mode)
{
writecmd(0x5b);
writedat(mode);
}
/*
void setcgramaddr(unsigned short addr)
{
writecmd(0x50);
writedat(addr&0xff);
writedat((addr>>8)&0xff);
}
*/
//dot 0 0 0 0 0 D
void sethdot(unsigned char dot)
{
writecmd(0x5a);
writedat(dot);
}
void setcursoraddr(unsigned short cursoraddr)
{
writecmd(0x46);
writedat(cursoraddr&0xff);
writedat((cursoraddr>>8)&0xff);
}
/*
unsigned short readcursoraddr()
{
unsigned short addr;
writecmd(0x47);
addr |= readdat();
addr <<= 8;
addr |= readdat();
return addr;
}
*/
/*
void writedispram(unsigned char *pdat,unsigned short len)
{
writecmd(0x42);
while(len--)
writedat(*pdat++);
}
*/
/*
void readdispram(unsigned char *pdat,unsigned short len)
{
writecmd(0x43);
while(len--)
*pdat = readdat();
}
*/
/*
void printchar8(unsigned short addr,unsigned char ch)
{
unsigned char i,j,idx;
idx = 0xff;
for(i=0;i<sizeof(font8)/sizeof(Font8);i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -