📄 lcd.c
字号:
KS0108B_DAT=KS0108B_DAT|k;
cul=cl;
if(cul>=64) {flag=1;cul=cul-64;}
KS0108B_COM=(0x40)|cul; //列设置
if(flag==0) PRL0(); else PRR0();
if(flag) PRR1(); else PRL1();
q++;cl++;
if((cl>=64)&&(!flag)) {flag=1;KS0108B_COM=0x40;PRR0();}
else if(cl>=128) return;
}
KS0108B_c=0;KS0108B_i=0;return;
}
else {KS0108B_c=0;KS0108B_i=0;return;}
}
/*********************************************************************************************************
* 函数名称:intsys
*
* 功能描述:初始化掖晶显示
*
* 说明:
*
********************************************************************************************************/
void intsys(void)
{
KS0108B_COM=0x3F; //设置显示起始行为第一行
PRL0( );
PRR0( );
KS0108B_COM=0xC0; //开显示设置
PRL0( );
PRR0( );
}
/*********************************************************************************************************
* 函数名称:clear
*
* 功能描述:清屏
*
* 说明:
*
********************************************************************************************************/
void clear(void)
{
uchar page=0,y;
do{
KS0108B_COM = page | 0xb8; //页面设置
PRL0();
PRR0();
KS0108B_COM = 0x40; //列设置
PRL0();
PRR0();
for(y=0; y<64; y++)
{
KS0108B_DAT = 0x0;
PRL1();
PRR1();
}
page++;
}while(page < 8);
}
/*********************************************************************************************************
* 函数名称:PRL0
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRL0(void) //写指令代码子程序(左)
{
uchar BF=0;
uchar b;
do{
b=RCOM_L();
BF=(b>>7);
}while(BF==1); //(P07)BF为0,往下运行
WCOM_L(KS0108B_COM);
}
/*********************************************************************************************************
* 函数名称:PRL1
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRL1(void) //写显示数据子程序(左)
{
uchar b;
uchar BF=0;
do{
b=RCOM_L();
BF=(b>>7);
}while(BF==1);
WDAT_L(KS0108B_DAT); //写显示数据
}
/*********************************************************************************************************
* 函数名称:PRL2
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRL2(void) //读显示数据子程序(左)?
{
uchar b, BF=0;
do{
b=RCOM_L();
BF=b>>7;
}while(BF);
KS0108B_DAT=RDAT_L(); //读显示数据 (左)
}
/*********************************************************************************************************
* 函数名称:PRR0
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRR0(void) //写指令代码子程序(右)
{
uchar b, BF=0;
do{
b=RCOM_R();
BF=(b>>7);
}while(BF==1);
WCOM_R(KS0108B_COM); //写指令代码?
}
/*********************************************************************************************************
* 函数名称:PRR1
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRR1(void) //写显示数据子程序(右)
{
uchar b, BF=0;
do{
b=RCOM_R();
BF=(b>>7);
}while(BF==1);
WDAT_R(KS0108B_DAT); //写显示数据
}
/*********************************************************************************************************
* 函数名称:PRR2
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void PRR2(void) //读显示数据子程序(右)
{
uchar b, BF=0;
do{
b=RCOM_R();
BF=b>>7;
}while(BF);
KS0108B_DAT=RDAT_R(); //读显示数据 (右)
}
/*********************************************************************************************************
* 函数名称:invert
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
uchar invert(uchar a)
{
uchar b=0;
b=a<<7;
b=b|((a&0x02)<<5);
b=b|((a&0x04)<<3);
b=b|((a&0x08)<<1);
b=b|((a&0x10)>>1);
b=b|((a&0x20)>>3);
b=b|((a&0x40)>>5);
b=b|(a>>7);
return b;
}
/*********************************************************************************************************
* 函数名称:RDAT_L
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
uchar RDAT_L(void)
{
uchar x;
CD1;
RW1;
CS11;
CS20;
P2DIR =0x00; //Input
x=P2IN;
CS10;
CS20;
return(x);
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
uchar RDAT_R(void)
{
uchar x;
RW1;
CD1;
CS10;
CS21;
P2DIR =0x00; //Input
x=P2IN;
CS10;
CS20;
return(x);
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
uchar RCOM_L(void)
{
uchar x;
CD0;
RW1;
CS11;
CS20;
P2DIR =0x00; //Input
x=P2IN;
CS10;
CS20;
return(x);
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
uchar RCOM_R(void)
{
uchar x;
RW1;
CD0;
CS10;
CS21;
P2DIR =0x00; //Input
x=P2IN;
CS10;
CS20;
return(x);
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void WCOM_L(uchar k)
{
RW0;
CD0;
CS11;
CS20;
P2DIR |= 0xff; //Output
P2OUT = k;
CS10;
CS20;
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void WCOM_R(uchar k)
{
RW0;
CD0;
CS10;
CS21;
P2DIR |= 0xff; //Output
P2OUT = k;
CS10;
CS20;
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void WDAT_L(uchar k)
{
RW0;
CD1;
CS11;
CS20;
P2DIR |= 0xff; //Output
P2OUT = k;
CS10;
CS20;
}
/*********************************************************************************************************
* 函数名称:
*
* 功能描述:
*
* 说明:
*
********************************************************************************************************/
void WDAT_R(uchar k)
{
RW0;
CD1;
CS10;
CS21;
P2DIR |= 0xff; //Output
P2OUT = k;
CS10;
CS20;
}
/*******************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -