📄 drv_lcm12232.c
字号:
temp= x + len;
if(y<4) /* 在第一行显示 */
{
SET_P1(y);
SET_P0(y);
if (x < 61) /* 有效的列号 */
{
SET_Y0(0);
SET_Y1(0);
for( ; x < temp ; x++)
{
if(x<61)
{
SET_X0(x);
Lcd12232SendData0(*Data++); /* 显示一个字符 */
}
else
{
SET_X1(x-61);
Lcd12232SendData1(*Data++); /* 显示一个字符 */
}
}
}
else if (x > 60) /* 有效的列号 */
{
SET_Y1(0);
for( ; x < temp ; x++)
{
SET_X1(x-61); /* 设置显示地址 */
Lcd12232SendData1(*Data++); /* 显示一个字符 */
}
}
}
}
/*********************************************************************************************************
** 函数名称: Lcd12232DispBar()
** 功能描述: 在lcd指定位置显示进度条
**
** 输 入: Data: 进度条的长度
**
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232SendComm(),Lcd12232SendData()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232DispBar( uint8 Data)
{
uint8 x;
uint16 temp;
temp= Data*118;
temp>>=8;
temp+=2;
SET_P1(3);
SET_P0(3);
SET_Y0(0);
SET_Y1(0);
SET_X0(1);
Lcd12232SendData0(0X7E);
for(x=2 ; x < 61 ; x++)
{
if(x<temp)
{
SET_X0(x);
Lcd12232SendData0(0XFF); /* 显示一个字符 */
}
else if(x==temp)
{
SET_X0(x);
Lcd12232SendData0(0X7E); /* 显示一个字符 */
}
else
{
SET_X0(x);
Lcd12232SendData0(0X81);
}
}
for(x=61 ; x < 120 ; x++)
{
if(x<temp)
{
SET_X1(x-61);
Lcd12232SendData1(0XFF); /* 显示一个字符 */
}
else if(x==temp)
{
SET_X1(x-61);
Lcd12232SendData1(0X7E); /* 显示一个字符 */
}
else
{
SET_X1(x-61);
Lcd12232SendData1(0X81);
}
}
SET_X1(59);
Lcd12232SendData1(0X7E);
}
/*********************************************************************************************************
** 函数名称: Lcd12232DispChnChar()
** 功能描述: 在lcd指定位置显示一个中文字符
**
** 输 入: x,y : 显示的开始坐(作上角为(1,1))
** Data: 将要显示的字符
** len : 数组长度
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232DispChar()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232DispChnChar(uint8 x, uint8 y, uint8 *Data)
{
uint8 * p;
uint8 * pData;
*p=y;
pData=Data+16;
Lcd12232DispChar(x, y, Data , 16);
y=*p;
y++;
Lcd12232DispChar(x, y, pData, 16);
}
/*********************************************************************************************************
** 函数名称: Lcd12232Clr()
** 功能描述: 清除lcd的指定区域
**
** 输 入: X0,Y0:指定区域起点
dx, dy:偏置值
**
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232DispStr()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232Clr(uint8 X,uint8 Y,uint8 dx,uint8 dy)
{
uint8 i,j;
uint8 di,dj;
i=X;
j=Y;
di=i+dx;
dj=j+dy;
for(;(j<dj)&&(j<4);j++)
{
SET_P0(j);
for(;(i<di)&&(i<61);i++)
{
SET_X0(i);
Lcd12232SendData0(0);
}
SET_P1(j);
if(i<di)
{
for(;(i<di)&&(i<122);i++)
{
SET_X1(i-61);
Lcd12232SendData1(0);
}
}
i=X;
}
}
/*********************************************************************************************************
** 函数名称: Lcd12232Init()
** 功能描述: lcd初始化
**
** 输 入: 无
**
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232SendComm(),Lcd12232Clr()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232Init(void)
{
P2=0X00;
P1=0X00;
Lcd12232SendComm0(0XAE); // 设置LCM读改写模式
Lcd12232SendComm0(0XA4); // 打开LCM动态显示
Lcd12232SendComm0(0XA9); // 复位
Lcd12232SendComm0(0XA0); // 开始显示
Lcd12232SendComm0(0XEE); // 设置LCM读改写模式
Lcd12232SendComm0(0X00); // 打开LCM动态显示
Lcd12232SendComm0(0XC0); // 复位
Lcd12232SendComm0(0XE2); // 复位
Lcd12232SendComm0(0XAF); // 开始显示
Lcd12232SendComm1(0XAE); // 设置LCM读改写模式
Lcd12232SendComm1(0XA4); // 打开LCM动态显示
Lcd12232SendComm1(0XA9); // 复位
Lcd12232SendComm1(0XA0); // 开始显示
Lcd12232SendComm1(0XEE); // 设置LCM读改写模式
Lcd12232SendComm1(0X00); // 打开LCM动态显示
Lcd12232SendComm1(0XC0); // 复位
Lcd12232SendComm1(0XE2); // 复位
Lcd12232SendComm1(0XAF); // 开始显示
SET_Y1(0);
SET_Y0(0);
Lcd12232Clr(0,0,122,4); // 清屏
}
/*********************************************************************************************************
** 函数名称: Lcd12232LoadChar()
** 功能描述: 从lcd指定地址处写多个字节数据
**
** 输 入: X : 指定的地址
Y : 指定的行
** Data : 将要写入的数据开始地址
** NChar: 写入的直接数
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232DispChar();
**
** 作 者:
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern unsigned char code ASCII_CODE[][6];
void Lcd12232LoadChar(uint8 X,uint8 Y, uint8 *Data, uint8 NChar)
{
uint8 *p;
uint8 *q;
uint8 i;
uint8 x,y;
x=X;
y=Y;
q=Data;
for(i=0;(i<NChar)&&((i*6+x+6)<122);i++)
{
p=ASCII_CODE+(*q)-0x20;
Lcd12232DispChar((x+i*6), y, p,6);
q++;
}
}
/**********************end****************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -