📄 project based on embeded system(c51).txt
字号:
}
/*********************************************************************************************************
** 函数名称: lcd1INT_1()
** 功能描述: lcd1初始化
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: lcd1PR1();
lcd1PR4();
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd1INT_1()
{
lcd1com=reset; /* 复位*/
lcd1PR1(); /* 写指令函数 */
lcd1PR4(); /* 写指令函数 */
lcd1com=sleep_off;/* 关闭休闲状态*/
lcd1PR1();
lcd1PR4();
lcd1com=duty32; /* 占空比为32DUTY*/
lcd1PR1();
lcd1PR4();
lcd1com=ADC_P; /* ADC=0正向顺序 */
lcd1PR1();
lcd1PR4();
lcd1com=start_line0; /* 显示起始行为0 */
lcd1PR1();
lcd1PR4();
lcd1com=display_on; /* 开显示 */
lcd1PR1();
lcd1PR4();
}
/*********************************************************************************************************
** 函数名称: lcd1CLEAR()
** 功能描述: lcd1 清屏函数
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd1CLEAR()
{
unsigned int i;
for(count1=0xb8;count1!=0xbc;count1++) /*以页地址作为循环量*/
{
lcd1com=count1; /* 页面地址设置 */
lcd1PR1();
lcd1PR4();
lcd1com=0x00; /* 列地址设置为"0" */
lcd1PR1();
lcd1PR4();
for(i=0;i<62;i++) /*清除所有SED1520的内部RAM单元*/
{
dat1=0x00; /* 写入数据为"0x00"*/
lcd1PR2();
lcd1PR5();
}
}
}
/*********************************************************************************************************
** 函数名称: lcd2PR1()、lcd2PR4()
** 功能描述: 向lcd1模块发送命令,因为使用的液晶为两个部分,所以分别控制
**
** 输 入: 无
** 输 出: 无
** 全局变量: DATA2,以及lcd1有关的一些端口
** 调用模块:
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2PR1()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E1=1;
ACC=DATA2; /* 读状态字 */
lcd2E1=0;
} while (ACC_7==1); /* 判“忙”标志 */
lcd2RW=0;
DATA2=lcd2com;
lcd2E1=1;
lcd2E1=0;
}
void lcd2PR4()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E2=1;
ACC=DATA2; /* 读状态字 */
lcd2E2=0;
} while (ACC_7==1); /* 判“忙”标志 */
lcd2RW=0;
DATA2=lcd2com;
lcd2E2=1;
lcd2E2=0;
}
/*********************************************************************************************************
** 函数名称: lcd2PR2()、lcd2PR5()
** 功能描述: 向lcd1模块发送数据,因为使用的液晶为两个部分,所以分别控制
**
** 输 入: 无
** 输 出: 无
** 全局变量: DATA1,以及lcd1有关的一些端口
** 调用模块:
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2PR2()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E1=1;
ACC=DATA2; /* 读状态字 */
lcd2E1=0;
} while (ACC_7==1); /* 判“忙”标志 */
lcd2RS=1;
lcd2RW=0;
DATA2=dat2;
lcd2E1=1;
lcd2E1=0;
}
void lcd2PR5()
{
lcd2RS=0;
lcd2RW=1;
do
{
DATA2=0xFF;
lcd2E2=1;
ACC=DATA2; /* 读状态字 */
lcd2E2=0;
} while (ACC_7==1); /* 判“忙”标志 */
lcd2RS=1;
lcd2RW=0;
DATA2=dat2;
lcd2E2=1;
lcd2E2=0;
}
/*********************************************************************************************************
** 函数名称: lcd2INT_1()
** 功能描述: lcd2初始化
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: lcd2PR1();
lcd2PR4();
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2INT_1()
{
lcd2com=reset; /* 复位*/
lcd2PR1(); /* 写指令函数 */
lcd2PR4(); /* 写指令函数 */
lcd2com=sleep_off;/* 关闭休闲状态*/
lcd2PR1();
lcd2PR4();
lcd2com=duty32; /* 占空比为32DUTY*/
lcd2PR1();
lcd2PR4();
lcd2com=ADC_P; /* ADC=0正向顺序 */
lcd2PR1();
lcd2PR4();
lcd2com=start_line0; /* 显示起始行为0 */
lcd2PR1();
lcd2PR4();
lcd2com=display_on; /* 开显示 */
lcd2PR1();
lcd2PR4();
}
/*********************************************************************************************************
** 函数名称: lcd2CLEAR()
** 功能描述: lcd2 清屏函数
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: lcd2PR1();
lcd2PR4();
lcd2PR2();
lcd2PR5();
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void lcd2CLEAR()
{
unsigned int i;
for(count2=0xb8;count2!=0xbc;count2++) /*以页地址作为循环量*/
{
lcd2com=count2; /* 页面地址设置 */
lcd2PR1();
lcd2PR4();
lcd2com=0x00; /* 列地址设置为"0" */
lcd2PR1();
lcd2PR4();
for(i=0;i<62;i++) /*清除所有SED1520的内部RAM单元*/
{
dat2=0x00; /* 写入数据为"0x00"*/
lcd2PR2();
lcd2PR5();
}
}
}
/*********************************************************************************************************
** 函数名称: CW_PR1()
** 功能描述: lcd1 西文写入函数
**
** 输 入: 无
** 输 出: 无
** 全局变量: lcd1com、lcd1O_X、lcd1O_Y
** 调用模块: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陈杰峰 wishercjf@163.com
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void CW_PR1()
{
unsigned int i,j;
unsigned char k;
i=0;
j=para1;
loop: lcd1com=lcd1O_Y|0xb8; /* 设页地址 */
lcd1PR1();
lcd1PR4();
if(lcd1O_X<j) /* 是否小于SED1520控制器宽度 */
{
lcd1com=lcd1O_X;
lcd1PR1(); /* 小于写E1 */
k=1;
}
else
{
lcd1com=lcd1O_X-j;
lcd1PR4(); /* 不小于写E2 */
k=0;
}
for(count1=i;count1<i+8;count1++)
{
dat1=CHTAB[code_1][count1]; /* 取数据 */
if(k==1)
{
lcd1PR2(); /* 写E1 */
}
else
{
lcd1PR5(); /* 写E2 */
}
lcd1com++; /* 计算列 */
if(j==lcd1com)
{
if(k==1) /* 判左屏出界还是右屏出界 */
{
lcd1com=0;
lcd1PR4(); /* 左屏出界写右屏 */
k=0;
}
else
{
goto loop2;
}
}
}
loop2: if(i==0)
{
i=8;
lcd1O_Y++; /* 计算页 */
if(lcd1O_Y==4)
{
return;
}
else
{
goto loop;
}
}
}
/*********************************************************************************************************
** 函数名称: CW_PR1()
** 功能描述: lcd1 中文写入函数
**
** 输 入: 无
** 输 出: 无
** 全局变量: lcd1com、lcd1O_X、lcd1O_Y
** 调用模块: lcd1PR1();
lcd1PR4();
lcd1PR2();
lcd1PR5();
**
** 作 者: 陈杰峰 wishercjf@163
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -