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

📄 lcd_extend.c

📁 MzT24-2模块驱动例程(Keil LPC22XX)320*240TFT液晶屏驱动程序
💻 C
字号:
//========================================================================
// 文件名: LCD_Extend.c
// 作  者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
//			www.Mzdesign.com.cn
// 日  期: 2008/06/18
// 描  述: 通用版LCD用户接口层程序集的LCD扩展程序文件
//			本程序集为结合LCD模块的特性而做的通用版LCD驱动程序的扩展功能文件
//			其基于通用版LCD驱动程序之上,供用户选择性的使用,或参考
//
// 参  考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写加速
//			版接口程序;
// 版  本:
//      2008/06/18      First version    Mz Design
//========================================================================
#include "LCD_Config.h"
#include "LCD_Driver_User.h"

//========================================================================
// 函数: void LCD_SetWindowRec(unsigned int x_s,unsigned int y_s,
//							unsigned int x_e,unsigned int y_e)
// 描述: 设置窗口地址指向窗口的首地址
// 参数: x_s	窗口在LCD屏上的物理X轴开始位置
//		 y_s	窗口在LCD屏上的物理Y轴开始位置
//		 x_e	窗口在LCD屏上的物理X轴结束位置
//		 y_e	窗口在LCD屏上的物理Y轴结束位置	  
// 返回:
// 备注: 
// 版本:
//      2008/01/15      First version
//========================================================================
void LCD_SetWindowRec(unsigned int x_s,unsigned int y_s,unsigned int x_e,unsigned int y_e)
{
	if(LCD_XY_Switch==1)
	{
	//	LCD_IndexAuto |= 0x0008;
		if(LCD_X_Rev==0&&LCD_Y_Rev==0)
			Set_Dot_Addr_LCD(x_s,y_s);
		else if(LCD_X_Rev==1&&LCD_Y_Rev==0)
			Set_Dot_Addr_LCD(x_s,y_e);
		else if(LCD_X_Rev==1&&LCD_Y_Rev==1)
			Set_Dot_Addr_LCD(x_e,y_e);
		else
			Set_Dot_Addr_LCD(x_e,y_s);
	}
	else
	{
		if(LCD_X_Rev==0&&LCD_Y_Rev==0)
			Set_Dot_Addr_LCD(x_s,y_s);
		else if(LCD_X_Rev==1&&LCD_Y_Rev==0)
			Set_Dot_Addr_LCD(x_e,y_s);
		else if(LCD_X_Rev==1&&LCD_Y_Rev==1)
			Set_Dot_Addr_LCD(x_e,y_e);
		else
			Set_Dot_Addr_LCD(x_s,y_e);
	}
}
//========================================================================
// 函数: void LCD_FillWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,
//								unsigned int y_e,unsigned int Color)
// 描述: 填充窗口
// 参数: x_s	窗口在LCD屏上的物理X轴开始位置
//		 y_s	窗口在LCD屏上的物理Y轴开始位置
//		 x_e	窗口在LCD屏上的物理X轴结束位置
//		 y_e	窗口在LCD屏上的物理Y轴结束位置
//		 Color	填充色	  
// 返回:
// 备注: 
// 版本:
//      2008/01/15      First version
//========================================================================
void LCD_FillWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,unsigned int y_e,unsigned int Color)
{
	unsigned int Dot_Nums=0;
	if(x_e>LCD_X_MAX) x_e = LCD_X_MAX;
	if(y_e>LCD_Y_MAX) y_e = LCD_Y_MAX;
	LCD_RegWrite(0x50);
	LCD_DataWrite(x_s);				//设置操作窗口的X轴开始列
   	LCD_RegWrite(0x51);
	LCD_DataWrite(x_e);				//设置操作窗口的X轴结束列
   	LCD_RegWrite(0x52);
	LCD_DataWrite(y_s);				//设置操作窗口的Y轴开始行
   	LCD_RegWrite(0x53);
	LCD_DataWrite(y_e);				//设置操作窗口的Y轴结束行
   	LCD_RegWrite(0x03);
//	LCD_DataWrite(LCD_IndexAuto|0x0080);//0x10b0);				//Driver Output Control	
	Dot_Nums = (x_e-x_s+1)*(y_e-y_s+1);
	//Set_Dot_Addr_LCD(x_s,y_s);
	LCD_SetWindowRec(x_s,y_s,x_e,y_e);
	LCD_Fill_s(Dot_Nums,Color);

	LCD_RegWrite(0x50);
	LCD_DataWrite(0x0000);				//设置操作窗口的X轴开始列
   	LCD_RegWrite(0x51);
	LCD_DataWrite(0x00EF);				//设置操作窗口的X轴结束列
   	LCD_RegWrite(0x52);
	LCD_DataWrite(0x0000);				//设置操作窗口的Y轴开始行
   	LCD_RegWrite(0x53);
	LCD_DataWrite(0x013F);				//设置操作窗口的Y轴结束行
   	LCD_RegWrite(0x03);
	LCD_DataWrite(LCD_IndexAuto);//0x1030);				//Driver Output Control
}
//========================================================================
// 函数: void LCD_SetWindow(unsigned int x_s,unsigned int y_s,
//							unsigned int x_e,unsigned int y_e)
// 描述: 设置窗口模式,并将地址指向窗口的首地址
// 参数: x_s	窗口在LCD屏上的物理X轴开始位置
//		 y_s	窗口在LCD屏上的物理Y轴开始位置
//		 x_e	窗口在LCD屏上的物理X轴结束位置
//		 y_e	窗口在LCD屏上的物理Y轴结束位置	  
// 返回:
// 备注: 
// 版本:
//      2008/01/15      First version
//========================================================================
void LCD_SetWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,unsigned int y_e)
{
	if(x_e>LCD_X_MAX) x_e = LCD_X_MAX;
	if(y_e>LCD_Y_MAX) y_e = LCD_Y_MAX;
	LCD_RegWrite(0x50);
	LCD_DataWrite(x_s);				//设置操作窗口的X轴开始列
   	LCD_RegWrite(0x51);
	LCD_DataWrite(x_e);				//设置操作窗口的X轴结束列
   	LCD_RegWrite(0x52);
	LCD_DataWrite(y_s);				//设置操作窗口的Y轴开始行
   	LCD_RegWrite(0x53);
	LCD_DataWrite(y_e);				//设置操作窗口的Y轴结束行
   	LCD_RegWrite(0x03);
//	LCD_DataWrite(LCD_IndexAuto|0x0080);//0x10b0);				//Driver Output Control	
//	Dot_Nums = (x_e-x_s+1)*(y_e-y_s+1);
	LCD_SetWindowRec(x_s,y_s,x_e,y_e);
}
//========================================================================
// 函数: void LCD_EndWindow(void)
// 描述: 结束窗口模式
// 参数: 无	  
// 返回:
// 备注: 
// 版本:
//      2008/01/15      First version
//========================================================================
void LCD_EndWindow(void)
{
	LCD_RegWrite(0x50);
	LCD_DataWrite(0x0000);				//设置操作窗口的X轴开始列
   	LCD_RegWrite(0x51);
	LCD_DataWrite(0x00EF);				//设置操作窗口的X轴结束列
   	LCD_RegWrite(0x52);
	LCD_DataWrite(0x0000);				//设置操作窗口的Y轴开始行
   	LCD_RegWrite(0x53);
	LCD_DataWrite(0x013F);				//设置操作窗口的Y轴结束行
   	LCD_RegWrite(0x03);
//	LCD_DataWrite(LCD_IndexAuto);//0x1030);				//Driver Output Control
}

//========================================================================
// 函数: void FillWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,
//							unsigned int y_e,unsigned int Color)
// 描述: 填充窗口
// 参数: 无      
// 返回: 无 
// 备注: 完成填充窗口反恢复整屏的设置
//			坐标关系与LCD_Dis.c当中一样,针对于显示区的坐标,与LCD_Config.h中定义
//			的坐标变换相关
// 版本:
//      2008/06/16      First version
//========================================================================
void FillWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,unsigned int y_e,unsigned int Color)
{  
	Pos_Switch(x_s,y_s);
	Pos_Switch(x_e,y_e);
	Match_xy(x_s,x_e);
	Match_xy(y_s,y_e);
	LCD_FillWindow(x_s,y_s,x_e,y_e,Color);
}

//========================================================================
// 函数: void SetWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,
//						unsigned int y_e)
// 描述: 设置LCD进入窗口模式
// 参数: 无      
// 返回: 无 
// 备注: 坐标关系与LCD_Dis.c当中一样,针对于显示区的坐标,与LCD_Config.h中定义
//			的坐标变换相关
// 版本:
//      2008/06/16      First version
//========================================================================
void SetWindow(unsigned int x_s,unsigned int y_s,unsigned int x_e,unsigned int y_e)
{  
	Pos_Switch(x_s,y_s);
	Pos_Switch(x_e,y_e);
	Match_xy(x_s,x_e);
	Match_xy(y_s,y_e);
	LCD_SetWindow(x_s,y_s,x_e,y_e);
}
//========================================================================
// 函数: void EndWindow(void)
// 描述: 设置LCD结束窗口模式
// 参数: 无      
// 返回: 无 
// 备注: 坐标关系与LCD_Dis.c当中一样,针对于显示区的坐标,与LCD_Config.h中定义
//			的坐标变换相关
// 版本:
//      2008/06/16      First version
//========================================================================
void EndWindow(void)
{  
	LCD_EndWindow();
}







⌨️ 快捷键说明

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