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

📄 lcd_driver.c

📁 RA8835控制320240液晶驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
}


/***************************************************************************************************
** 函数名称: LCD_Init
** 功能描述: LCD模块初始化
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void LCD_Init(void)
{
    U8 i;
    P0Reg.IOCLR.all = 1<<23;
	os_dly_wait(5);
    P0Reg.IOSET.all = 1<<23; 
    os_dly_wait(5);
    LCM_WrCommand(SystemSet);            
    for (i = 0; i  <8; i++) 
	{
        LCM_WrData(ParaSysTable8[i]);      
    }
    LCM_WrCommand(Scroll);            
    for (i = 0; i < 10; i++) 
	{
        LCM_WrData(ParaScrTableA[i]);
    }
	LCM_WrCommand(HdotScr);            
    LCM_WrData(0);                        
    LCM_WrCommand(Ovlay);                  
    LCM_WrData(0);	                       
}   


/***************************************************************************************************
** 函数名称: GUI_FillSCR
** 功能描述: 全屏填充。直接使用数据填充显示缓冲区
** 输入参数: dat		填充的数据
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void  GUI_FillSCR(U8 dat)
{ 
	U16 i;

    LCM_WrCommand(CsrDirR);         //设定光标向右移动        
    LCM_WrCommand(CsrW);            //设定光标位置                        
    LCM_WrData(0);                  //显示内存高8位地址值           
    LCM_WrData(0);                  //显示内存低8位地址值          
    LCM_WrCommand(mWrite);          //写数据到显示内存 
    for (i = 0; i < 32768; i++)     
	{
        LCM_WrData(dat);      	//写显示数据
    }
} 


/***************************************************************************************************
** 函数名称: LocateXY
** 功能描述: 移动光标到指定值
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/ 
void LocateXY(U8 x, U8 y)           // x <= 40; y <= 240
{
    U16 temp;
	temp = 40 * (y - 1) + x;
	if (temp == 0)
	{
	    temp = 0x3fff;
	}
	else
	{
	    temp -= 1;
	}
    LCM_WrCommand(CsrW);
    LCM_WrData(temp & 0xff);        //显示内存高8位数值
	LCM_WrData(temp>>8);	        //显示内存低8位数值
}


/***************************************************************************************************
** 函数名称: GUI_Initialize
** 功能描述: 初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/ 
void  GUI_Initialize(void)
{  
    U8  i, j;
	U8  load_buffer[1];
	U16 num = 0;
    LCD_Init();
    GUI_FillSCR(0x00);
    LCM_WrCommand(DispOn); 
    LCM_WrData(0x54); 
    LCM_WrCommand(Ovlay);                  
    LCM_WrData(0x04); 
/*
	for (i = 15; i < 212; i++)
	{
	    for (j = 0; j < 40; j++)
		{
            Delay(1000);
            WriteByte(LABEL_ADDR + num, gImage_aa[num]);
			num++;
		}
	}
	num = 0;
*/    	
	for (i = 15; i < 212; i++)
	{
	    for (j = 0; j < 40; j++)
		{
            Delay(1000);
            LCM_WriteByte(j, i, ReadByte(LABEL_ADDR + num));
			num++;
		}
	} 
    EEPROM_Read(SAVE_STYLE_ADDR, load_buffer, 1);
	if (load_buffer[0] == SAVE_STYLE)
	{
	    WPA_Load();	
	}
	else
	{
	    load_buffer[0] = SAVE_STYLE;
        EEPROM_Write(SAVE_STYLE_ADDR, load_buffer, 1);
		WPA_Save(WPA_MAX);
	}
	for (i = 15; i < 212; i++)
	{
	    for (j = 0; j < 40; j++)
		{
            Delay(2000);
            LCM_WriteByte(j, i, 0x00);
			num++;
		}
	}  
	GUI_RLine(2, 3, 238, LEFT); 
	GUI_RLine(39, 3, 238, RIGHT); 
	GUI_HLine(2, 3, 39);  
	GUI_HLine(2, 238, 39); 
	GUI_HLine(2, 47, 39);   
	GUI_PutString16_24(10, 15, "NB350", TRUE);
	GUI_PutCN24_24(20, 15, shu4, TRUE);
	GUI_PutCN24_24(23, 15, zi4, TRUE);
	GUI_PutCN24_24(26, 15, han4, TRUE);
	GUI_PutCN24_24(29, 15, ji1, TRUE);
    Row_Disp(Y3_ASCII812, FIRSTPAGE_1, FALSE);  
    Row_Disp(Y7_ASCII812, FIRSTPAGE_2, TRUE); 
    Row_Disp(Y11_ASCII812,FIRSTPAGE_3, TRUE);  	    
}
 

/***************************************************************************************************
** 函数名称: GUI_HLine
** 功能描述: 画水平线,根据硬件特点,实现加速
** 输入参数: x0		水平线起点所在列的位置
**			 y0		水平线起点所在行的位置
**           x1     水平线终点所在列的位置
**           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/
void  GUI_HLine(U8 x0, U8 y0, U8 x1) 
{  
    U8  bak;
  
    if(x0 > x1) 		// 对y0、y1大小进行排列,以便画图
    {  
	    bak = x1;
        x1 = x0;
        x0 = bak;
    }
   
    do
    {  
        LCM_WriteByte(x0, y0, 0xff);
		x0++; 
    }while(x1 >= x0);
}


/***************************************************************************************************
** 函数名称: GUI_RLine
** 功能描述: 画竖直线
** 输入参数: x0		水平线起点所在列的位置
**			 y0		水平线起点所在行的位置
**           y1     垂直线终点所在行的位置
**           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**--------------------------------------------------------------------------------------------------
** 作  者:	Happy Xu
** 日  期:	2007/11/27
***************************************************************************************************/ 
void  GUI_RLine(U8 x0, U8 y0, U8 y1, BOOLEAN dir) 
{  
    U8  bak;

    if(y0 > y1) 						// 对x0、x1大小进行排列,以便画图
    {  
	    bak = y1;
        y1 = y0;
        y0 = bak;
    }
    LCM_WriteByte(x0, y0, 0xff); 
	y0++;  
    do
    {  
	    if (y1 == y0)
		{
	        LCM_WriteByte(x0, y0, 0xff);
		}		    
	    else
		{
		    LCM_WriteByte(x0, y0, 0x7f * dir + 1);
		}
        y0++;
    }while(y1 >= y0);
}															
/****** End of File (Lcd_driver.c) ******/


⌨️ 快捷键说明

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