📄 lcd_extend.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 + -