⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_driver.c

📁 RA8835控制320240液晶驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
┃参数意义┃  第3显示区  ┃第2、4显示区┃  第1显示区  ┃     光标     ┃ 
┗━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ 
“各组合参数位”设置值意义如下: 
┏━━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┓ 
┃参数位值┃  0   ┃  1   ┃  0   ┃  1   ┃  0   ┃  1   ┃  0   ┃  0   ┃ = 0x54 
┣━━━━╋━━━┻━━━╋━━━┻━━━╋━━━┻━━━╋━━━┻━━━┫ 
┃ 值意义 ┃显示但关闭闪烁┃显示但关闭闪烁┃显示但关闭闪烁┃    不显示    ┃ 
┗━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ 
 备注:这些参数位都是控制着各显示区的显示状态。该状态的实现需要在总开关为打开状态时有效。 
*/ 


#define    CsrDirR            0x4c    //  光标向右移动Reg操作
#define    CsrDirL            0x4d	  //  光标向左移动Reg操作
#define    CsrDirU            0x4e	  //  光标向上移动Reg操作
#define    CsrDirD            0x4f	  //  光标向下移动Reg操作


#define    CsrW               0x46	  // “光标地址 CSR 设置”的控制命令代码 
/* 
“光标地址 CSR 设置”的命令参数具体定义如下: 
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
┃ 参数1 ┃                             CSRL                             ┃ 
┣━━━━╋━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┫ 
┃ 设置值 ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃ 
┗━━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┛ 
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
┃ 参数2 ┃                             CSRH                             ┃ 
┣━━━━╋━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┫ 
┃ 设置值 ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃ 
┗━━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┛ 
 CSR ----- 设置的光标指针地址 CSR。本指针地址有两个功能:①.作为显示屏幕上光标显示的当前位 
           置;②.作为显示存储器的当前地址指针。 
           CSR 为双字节参数,CSRH 为高8位,CSRL 为低8位。 
           备注:如果光标地址超出显示屏幕有效的地址范围,光标将自动消失,但不影响显示数据的 
                 读写。光标地址在计算机的每次读写显示数据操作后,将根据“SED1335_CSRDIR”命 
                 令设置的光标的移动方向而自动修正。光标指针不受画面滚动操作的影响。 
*/


#define    CsrForm            0x5d
/* 
“光标的显示形状设置”的命令参数表,共有2个字节具体定义如下: 
SED1335_CsrF_Para[2] = {0x07, 0x07} 
┏━━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━━━━━━━━━┓ 
┃ 参数1 ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃         CRX          ┃ 
┣━━━━╋━━━╋━━━╋━━━╋━━━╋━━━╋━━━┳━━━┳━━━┫ 
┃ 设置值 ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  1   ┃  1   ┃  1   ┃ = 0x07 
┗━━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┛ 
 CRX ----- 光标的水平显示宽度(点列数)。 
           CRX 取值在 0x00~0x07 范围内,代表1~8列/字符点阵。 
┏━━━━┳━━━┳━━━┳━━━┳━━━┳━━━━━━━━━━━━━━━┓ 
┃ 参数2 ┃  CM  ┃  0   ┃  0   ┃  0   ┃             CRY              ┃ 
┣━━━━╋━━━╋━━━╋━━━╋━━━╋━━━┳━━━┳━━━┳━━━┫ 
┃ 设置值 ┃  0   ┃  0   ┃  0   ┃  0   ┃  0   ┃  1   ┃  1   ┃  1   ┃ = 0x07 
┗━━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┛ 
 CRY ----- 光标的垂直显示高度(点行数)。 
           FX=0:字高度+字间距;FX=0x00~0x0F。 
           CRY 取值在 0x00~0x0F 范围内,代表1~16行/字符点阵。 
 CM ------ 选择光标的显示形状。 
           CM=0:线状光标显示,由 CRY 确定其宽度; 
           CM=1:块状光标显示,由 CRX×CRY 确定其形状的宽度和高度。 
 备注:光标显示仅在文本方式下有效。 
*/ 


#define    mWrite             0x42	  // “允许计算机连续地把写入显示数据到显示存储 器内”的控制命令代码 
/*-------------------------------------------------------------------------------------- 
13.“允许计算机连续地从显示存储器内读取显示数据”的控制命令代码字符化常数定义: 
本命令代码写入后,将允许计算机连续地从显示存储器内读取显示数据。读取的存储单元地址由光标地 
址 CSR 提供,读操作完成后光标指针将自动根据“SED1335_CSRDIR”命令设置的光标的移动方向进行 
修改。本命令代码操作功能将在计算机写入下一指令代码后终止。 
▲.注意:在使用本命令代码之前,要首先设置好下面两个参数: 
          ①.光标地址 CSR 值; 
          ②.光标的移动方向。 
--------------------------------------------------------------------------------------*/


#define    mRead        0x43          // “允许计算机连续地把显示数据写入显示存储器内”的控制命令代码 
/*-------------------------------------------------------------------------------------- 
13.“允许计算机连续地从显示存储器内读取显示数据”的控制命令代码字符化常数定义: 
本命令代码写入后,将允许计算机连续地从显示存储器内读取显示数据。读取的存储单元地址由光标地 
址 CSR 提供,读操作完成后光标指针将自动根据“SED1335_CSRDIR”命令设置的光标的移动方向进行 
修改。本命令代码操作功能将在计算机写入下一指令代码后终止。 
▲.注意:在使用本命令代码之前,要首先设置好下面两个参数: 
          ①.光标地址 CSR 值; 
          ②.光标的移动方向。 
--------------------------------------------------------------------------------------*/ 

void    LocateXY(U8 x, U8 y);


/***************************************************************************************************
** 函数名称: RS_OP
** 功能描述: RS管脚输出赋值
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
** 函数说明:RS==1时,向LCD模块寄存器写指令;RS==0时,向LCD模块显示内存写数据
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void RS_OP(BOOLEAN op)
{
	if ( op == LOW)  P0Reg.IOCLR.all = 1<<9;
    else             P0Reg.IOSET.all = 1<<9;
}


/***************************************************************************************************
** 函数名称: WR_OP
** 功能描述: 写LCD模块控制引脚
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
** 函数说明:WR为LOW时,势能写模式
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void WR_OP(BOOLEAN op)
{
	if (op == LOW)  P1Reg.IOCLR.all = 1<<17;
    else            P1Reg.IOSET.all = 1<<17;
}	


/***************************************************************************************************
** 函数名称: RD_OP
** 功能描述: 读LCD模块控制引脚
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
** 函数说明:RD为LOW时,势能读模式
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void RD_OP(BOOLEAN op)
{
	if (op == LOW)  P1Reg.IOCLR.all = 1<<16;
    else            P1Reg.IOSET.all = 1<<16;
}


/***************************************************************************************************
** 函数名称: CS_OP
** 功能描述: 片选LCD模块控制引脚
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
** 函数说明:CS为LOW时,LCD使能读写状态
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void CS_OP(BOOLEAN op)
{
	if (op == LOW)  P0Reg.IOCLR.all = 1<<8;
    else            P0Reg.IOSET.all = 1<<8;
}

	
/***************************************************************************************************
** 函数名称: WriteCommand
** 功能描述: 写命令到LCD模块寄存器
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void LCM_WrCommand(U8 command)
{
	RS_OP(HIGH);
	P1Reg.IOCLR.all = 0x03fc0000;
	P1Reg.IOSET.all = (U32) (command<<18);
	CS_OP(LOW);
	WR_OP(LOW);
	;
	;
	;
	;
	;
	;
	;
	WR_OP(HIGH);
	CS_OP(HIGH);
}


/***************************************************************************************************
** 函数名称: WriteData
** 功能描述: 写数据到LCD模块显示内存
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void LCM_WrData(U8 wrdata) 
{
	RS_OP(LOW);
	P1Reg.IOCLR.all = 0x03fc0000;
	P1Reg.IOSET.all = (U32) (wrdata<<18);
	CS_OP(LOW);
	WR_OP(LOW);
	;
	;
	;
	;
	;
	;
	;
	WR_OP(HIGH);
	CS_OP(HIGH);
}


/***************************************************************************************************
** 函数名称: LCM_WriteByte
** 功能描述: 向指定点写数据(一字节)
** 输入参数: x 		x坐标值(0-320)
**			 y      y坐标值(0-240)
**           wrdata	所要写的数据
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void LCM_WriteByte(U8 x, U8 y, U8 wrdata) 
{
    LocateXY(x, y);	              //  光标移动到指定位置
    LCM_WrCommand(mWrite);        //  写数据到显示内存指令
    LCM_WrData(wrdata);           //  写数据	 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -