📄 lcd7565r.h
字号:
//#include <reg51.h>
//#include <intrins.h>
#include <ASC_GB16.h>
sbit R_S= P1^5;
sbit RES= P1^1;
sbit W_R= P1^6;
sbit C_S= P1^0;
uchar ID=0,IDF=0;
uchar ID0=0;
bit Fx_flage=0;
void LcdInit();
void Clear();
void show_ad(void);
void ADchange();
void Delayms(uint ms);
void WrateC(uchar cmd);
void WrateD(uchar dat);
void Setadd(uchar xl,uchar yl);
void disp_ch(unsigned char c,uCol,uPage);
void disp_str(unsigned char *p,unsigned char uCol,uPage);
void WrateC(uchar cmd)
{ C_S=0;
R_S=0;
W_R=0;
P0=cmd;
W_R=1;
C_S=1;
}
void WrateD(uchar dat)
{ C_S=0;
R_S=1;
W_R=0;
P0=dat;
W_R=1;
C_S=1;
}
void Clear()
{
unsigned char i,j,m=0;
for(i=0;i<8;i++)
{
Setadd(0,i);
for(j=0;j<128;j++)
WrateD(0x00);
}
}
void Setadd(uchar xl,uchar yl)
{ uchar i;
i=xl&0x0f;
xl=(xl>>4)+0x10;
WrateC(0xb0+yl);
WrateC(xl);
WrateC(i);
}
void LcdInit()
{
RES=0;
Delayms(50);
RES=1;
Delayms(20);
WrateC(0xe2);
WrateC(0xA2);
WrateC(0xA1);
WrateC(0xc0);
WrateC(0x2c);
WrateC(0x2e);
WrateC(0x2F);
WrateC(0x81);
WrateC(0x16);
WrateC(0x25);
WrateC(0xAF);
WrateC(0x40);
Clear();
}
void disp_ch(unsigned char c,uCol,uPage)
{
unsigned char k,j,ch_w;
unsigned char width;
unsigned char len;
len=sizeof(ASC_16)/sizeof(ASC_16[0]);
for(k=0;k<len;k++)
{
if(c == ASC_16[k].Index[0] ) break;
}
if(k<len)
{
if(c=='-'||c==':')
width=ASC_CHR_WIDTH-2;
else if(c=='|')
width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
else
width=ASC_CHR_WIDTH;
Setadd(uCol,uPage);
for(j=0;j<width;j++)
{
ch_w=ASC_16[k].Msk[j];
if(Fx_flage==1)
WrateD(ch_w);
else WrateD(~ch_w);
}
Setadd(uCol,uPage+1);
for(j=0;j<width;j++)
{
ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
if(Fx_flage==1)
WrateD(ch_w);
else WrateD(~ch_w);
}
}
}
void disp_hz(unsigned char *hz,uCol,uPage)
{
unsigned char k,j,ch_w;
//sizeof 用来求一个变量或者一种类型所占用的字节数
for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
{
if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
break;
}
Setadd(uCol,uPage);
for(j=0;j<ASC_HZ_WIDTH;j++)
{
ch_w=GB_16[k].Msk[j];
if(Fx_flage==1)
WrateD(ch_w);
else WrateD(~ch_w);
}
Setadd(uCol,uPage+1);
for(j=0;j<ASC_HZ_WIDTH;j++)
{
ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
if(Fx_flage==1)
WrateD(ch_w);
else WrateD(~ch_w);
}
}
void disp_str(unsigned char *p,unsigned char uCol,uPage)
{
unsigned char i=0;
while(p[i]>0)
{
if(p[i] < 128)
{
disp_ch(p[i],uCol,uPage);
uCol+=8;
}
else
{
disp_hz(&p[i],uCol,uPage);
uCol+=12;
i++;
}
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -