📄 drv_lcm12232.c
字号:
/*********************************************************************************************************
** Small RTOS(51)
** The Real-Time Kernel(For Keil c51)
**
** (c) Copyright 2002-2002, chenmingji
** All Rights Reserved
**
** V1.12.1
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: lcd12232.c
**创 建 人: 陈明计
**最后修改日期: 2003年4月27日
**描 述: 液晶12232的驱动程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 修改人:
** 版 本: V1.0
** 日 期:
** 描 述:
**------------------------------------------------------------------------------------------------------
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
//sbit RS=P2^4;
//sbit R_W=P2^3;
//sbit E1=P2^1;
//sbit E2=P2^2;
//写命令
void LCD12232_SEND_COMMAND_0(uint8 Data)
{
P2&=0XE7; //RS=0;R_W=0;
P2|=0X02; //E1=1;
P1=Data;
P2&=0XFD; //E1=0;
}
//写数据
void LCD12232_SEND_DATA_0(uint8 Data)
{
P2&=0XE7; //RS=0;R_W=0;
P2|=0X10; //RS=1;
P2|=0X02; //E1=1;
P1=Data;
P2&=0XFD; //E1=0;
}
//写命令
void LCD12232_SEND_COMMAND_1(uint8 Data)
{
P2&=0XE7; //RS=0;R_W=0;
P2|=0X04; //E2=1;
P1=Data;
P2&=0XFB; //E2=0;
}
//写数据
void LCD12232_SEND_DATA_1(uint8 Data)
{
P2&=0XE7; //RS=0;R_W=0;
P2|=0X10; //RS=1
P2|=0X04; //E2=1;
P1=Data;
P2&=0XFB; //E2=0;
}
//返回状态
uint8 LCD12232_GET_FLAG_0(void)
{
uint8 temp;
P2&=0XEF; //RS=0;R_W=1;
P2|=0X02; //E1=1;
temp=P1;
P2&=0XFD; //E1=0;
return(temp);
}
//返回状态
uint8 LCD12232_GET_FLAG_1(void)
{
uint8 temp;
P2&=0XEF; //RS=0;R_W=1;
P2|=0X04; //E2=1;
temp=P1;
P2&=0XFB; //E2=0;
return(temp);
}
/*********************************************************************************************************
** 函数名称: Lcd12232Delay
** 功能描述: 等待lcd操作完毕
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232Delay0(void)
{
uint8 i;
i = 5;
do
{
if ((LCD12232_GET_FLAG_0() & 0x80) == 0)
{
break;
}
} while (--i != 0);
}
void Lcd12232Delay1(void)
{
uint8 i;
i = 5;
do
{
if ((LCD12232_GET_FLAG_1() & 0x80) == 0)
{
break;
}
} while (--i != 0);
}
/*********************************************************************************************************
** 函数名称: Lcd12232SendComm()
** 功能描述: 向lcd模块发送命令
**
** 输 入: Command: 给lcd模块发送的命令
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232Delay()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define Lcd12232SendComm0(Command) \
{ \
Lcd12232Delay0(); \
LCD12232_SEND_COMMAND_0(Command); \
} \
#define Lcd12232SendComm1(Command) \
{ \
Lcd12232Delay1(); \
LCD12232_SEND_COMMAND_1(Command); \
} \
/*********************************************************************************************************
** 函数名称: Lcd12232SendData()
** 功能描述: 向lcd模块发送1字节数据
**
** 输 入: Data: 给lcd模块发送的命令
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232Delay()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define Lcd12232SendData0(Data) \
{ \
Lcd12232Delay0(); \
LCD12232_SEND_DATA_0(Data); \
} \
#define Lcd12232SendData1(Data) \
{ \
Lcd12232Delay1(); \
LCD12232_SEND_DATA_1(Data); \
} \
/*********************************************************************************************************
** 函数名称: SET_X0(),SET_X1()
** 功能描述: 设置x坐标
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者:
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define SET_X0(x) \
{ \
Lcd12232SendComm0(x); \
} \
#define SET_X1(x) \
{ \
Lcd12232SendComm1(x); \
} \
/*********************************************************************************************************
** 函数名称: SET_Y0(),SET_Y1()
** 功能描述: 设置y坐标
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者:
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define SET_Y0(y) \
{ \
Lcd12232SendComm0(y|0XC0); \
} \
#define SET_Y1(y) \
{ \
Lcd12232SendComm1(y|0XC0); \
} \
/*********************************************************************************************************
** 函数名称: SET_P0(),SET_P1()
** 功能描述: 设置页面
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者:
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define SET_P0(p) \
{ \
Lcd12232SendComm0(p|0XB8); \
} \
#define SET_P1(p) \
{ \
Lcd12232SendComm1(p|0XB8); \
} \
/*********************************************************************************************************
** 函数名称: Lcd12232DispChar()
** 功能描述: 在lcd指定位置显示一个字符
**
** 输 入: x,y : 显示的开始坐(作上角为(1,1))
** Data: 将要显示的字符
** len : 数组长度
** 输 出: 无
** 全局变量: 无
** 调用模块: Lcd12232SendComm(),Lcd12232SendData()
**
** 作 者: 陈明计
** 日 期: 2003年4月27日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Lcd12232DispChar(uint8 x, uint8 y, char *Data, char len)
{
uint8 temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -