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

📄 lcd12232.c

📁 利用SMALL RTOS51做的一个项目
💻 C
📖 第 1 页 / 共 2 页
字号:
/*********************************************************************************************************
**                                             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 + -