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

📄 drv_lcm12232.c

📁 uCOS2 for 51系列
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -