📄 hg192646.c
字号:
/*向LCD发送命令*/
/*command :命令*/
void PR1l()
{
CheckStatel();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}
/*写显示数据*/
/*dat:显示数据*/
void PR2l()
{
CheckStatel();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}
/*读显示数据*/
unsigned char PR3l()
{
unsigned char dat;
CheckStatel();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort;
; en=0;
return(dat);
}
/*中屏屏操作*/
/*状态检查*/
void CheckStatem()
{
unsigned char dat;
cs1=1;cs2=0;
di=0;
rw=1;
do{
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
dat=0x90 & dat; /*仅当第4rest,7busy 为0时才可操作*/
}while(!(dat==0x00));
}
/*************************************************************/
/*向LCD发送命令*/
/*command :命令*/
void PR1m()
{
CheckStatem();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}
/*写显示数据*/
/*dat:显示数据*/
void PR2m()
{
CheckStatem();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}
/*读显示数据*/
unsigned char PR3m()
{
unsigned char dat;
CheckStatem();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}
/*****************************************/
/*右屏操作*/
/*状态检查*/
void CheckStater()
{
unsigned char dat;
cs1=0;cs2=1;
di=0;
rw=1;
do{
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
dat=0x90 & dat; /*仅当第4rest,7busy 为0时才可操作*/
}while(!(dat==0x00));
}
/*************************************************************/
/*向LCD发送命令*/
/*command :命令*/
void PR1r()
{
CheckStater();
rw=0;
LCD12864DataPort=com;
en=1; en=0;/*下将沿*/
}
/*写显示数据*/
/*dat:显示数据*/
void PR2r()
{
CheckStater();
di=1; rw=0;
LCD12864DataPort=dat1;
en=1; en=0;
}
/*读显示数据*/
unsigned char PR3r()
{
unsigned char dat;
CheckStater();
di=1; rw=1;
LCD12864DataPort=0xff;
en=1; dat=LCD12864DataPort; en=0;
return(dat);
}
/******************************************************/
/* 16*16点阵中文写入函数CCW_PR */
/* 函数参数选择:PARA1 */
/* 内部调用函数:PR1(),PR2(),PR4(),PR5(),PR7(),PR8() */
/* 连接字库: CCTAB */
/* 函数调用入口: CCW_PR() */
/* 函数输入变量: O_X,O_Y,CODE_1 */
/******************************************************/
CCW_PR()
{
unsigned char i,j,k;
i=0;
j=para1;
loop: com=O_Y|0xb8; /* 设页地址 */
PR1l();
PR1m();
PR1r();
if(O_X<j) /* 是否小于一片HD61202控制器控制的宽度 */
{
com=O_X|0x40;
PR1l(); /* 小于写左片 */
k='L';
}
else
{
if(O_X<2*j) /* 是否小于两片HD61202控制器控制的宽度 */
{
com=O_X-j|0x40;
PR1m(); /* 小于写中片 */
k='M';
}
else
{
com=(O_X-2*j)|0x40;
PR1r(); /* 不小于写右片 */
k='R';
}
}
com=com&0x3f;
for(count1=i;count1<i+16;count1++)
{
dat1=CCTAB[code_1][count1];
if(k=='L')
{
PR2l();
}
else
{
if(k=='M')
{
PR2m();
}
else
{
PR2r();
}
}
com++;
if(com==j)
{
if(k=='L')
{
com=0x40;
PR1m();
k='M';
}
else
{
if(k=='M')
{
com=0x40;
PR1r();
k='R';
}
else
{
goto loop2;
}
}
}
}
loop2: if(i==0)
{
i=16;
O_Y++;
if(O_Y==8)
{
return;
}
else
{
goto loop;
}
}
}
/******************************************/
/* 16*16反白点阵中文写入函数CCW_PR */
/* 函数参数选择:PARA1 */
/* 内部调用函数:PR1l(),PR2l(),PR1m(),PR1m(),PR1r(),PR1r() */
/* 连接字库: CCTAB */
/* 函数调用入口: CCW_PR() */
/* 函数输入变量: O_X,O_Y,CODE_1 */
/******************************************************/
CCW_PR1()
{
unsigned char i,j,k;
i=0;
j=para1;
loop: com=O_Y|0xb8; /* 设页地址 */
PR1m();
PR1l();
PR1r();
if(O_X<j) /* 是否小于一片HD61202控制器控制的宽度 */
{
com=O_X|0x40;
PR1l(); /* 小于写左片 */
k='L';
}
else
{
if(O_X<2*j) /* 是否小于两片HD61202控制器控制的宽度 */
{
com=O_X-j|0x40;
PR1m(); /* 小于写中片 */
k='M';
}
else
{
com=(O_X-2*j)|0x40;
PR1r(); /* 不小于写右片 */
k='R';
}
}
com=com&0x3f;
for(count1=i;count1<i+16;count1++)
{
dat1=(CCTAB[code_1][count1]^0xff);
if(k=='L')
{
PR2l();
}
else
{
if(k=='M')
{
PR2m();
}
else
{
PR2r();
}
}
com++;
if(com==j)
{
if(k=='L')
{
com=0x40;
PR1m();
k='M';
}
else
{
if(k=='M')
{
com=0x40;
PR1r();
k='R';
}
else
{
goto loop2;
}
}
}
}
loop2: if(i==0)
{
i=16;
O_Y++;
if(O_Y==8)
{
return;
}
else
{
goto loop;
}
}
}
/********************************************************/
/* 西文字符写入函数:CW_PR */
/* 函数参数选择:PARA1 */
/* 内部调用函数:PR1(),PR2(),PR4(),PR5(),PR7(),PR8() */
/* 连接字库: CHTAB */
/* 函数调用入口: CW_PR() */
/* 函数输入变量: O_X,O_Y,CODE_1 */
/******************************************************/
CW_PR()
{
unsigned char j;
j=para1;
com=O_Y|0xb8; /* 页地址设置 */
PR1l();
PR1m();
PR1r();
if(O_X<j) /* 是否小于HD61202控制器控制的宽度 */
{
com=O_X|0x40;
PR1l(); /* 小于写左片 */
O_Y='L';
}
else
{
if(O_X<2*j) /* 是否小于两片HD61202控制器控制的宽度 */
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -