📄 lcd_driver_user.c.bak
字号:
//========================================================================
// 文件名: LCD_Driver_User.c
// 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
// www.Mzdesign.com.cn
// 日 期: 2008/06/11
// 描 述: 底层接口驱动扩展程序集
//
// 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
// 层接口驱动程序,以及LCD的初始化代码
// 版 本:
// 2007/02/25 First version Mz Design
// 2008/06/11 V2.0 Mzdesign
// 注 意:
// 该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
// 取消屏障并作一定的修改(如果可能的话)
// 该文件与LCD的特性有关,为MzDesign通用版LCD驱动的V2.0版本,内含的
// 函数是标准的函数,每款LCD对应的通用版LCD驱动程序包都是一样的,只
// 是会针对不同的LCD模块会有一些区别,用户可以参考我们介绍V1.0版本
// 驱动的书<LCD驱动显控原理>.
// 相 关: 本例为针对MzDesign的MzT24 320X240点TFT屏作的移植改去,适用于NXP
// 的LPC21XX以及LPC22XX系列ARM7
//========================================================================
#include "LCD_Config.h"
#include "LCD_PortConfig.h"
unsigned char MzT35_Ctrl_Reg=0x01; //用于在用户程序中保存当前LCD显示图层以及当前操作图层的信息
//========================================================================
// 函数: void LCD_DataWrite(unsigned int Data)
// 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
// 参数: Data 写入的数据
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2007/01/09 First version
//========================================================================
/*
void LCD_DataWrite(LCDBYTE Dat)
{
LCD_A0_SET();
LCD_CS_CLR();
LCD_Data_BUS_Clr();
LCD_Data_BUS_Set((unsigned char)(n>>8));
LCD_RW_CLR();
LCD_RW_SET();
LCD_Data_BUS_Clr();
LCD_Data_BUS_Set((unsigned char)n);
LCD_RW_CLR();
LCD_RW_SET();
LCD_CS_SET();
} */
//========================================================================
// 函数: LCDBYTE LCD_DataRead(void)
// 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
// 参数: 无
// 返回: 读出的数据,
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2007/01/09 First version
// 注意:
//========================================================================
LCDBYTE LCD_DataRead(void)
{
LCDBYTE Read_Data;
LCD_Data_In();
LCD_A0_SET();
LCD_CS_CLR();
LCD_RD_CLR();
LCD_RD_SET();
LCD_RD_CLR();
LCD_RD_SET();
LCD_RD_CLR();
Read_Data = LCD_Data_Read();
Read_Data = Read_Data<<8;
LCD_RD_SET();
LCD_RD_CLR();
Read_Data |= LCD_Data_Read();
LCD_RD_SET();
LCD_CS_SET();
LCD_Data_Out();
return Read_Data;
}
//========================================================================
// 函数: void LCD_RegWrite(LCDBYTE Command)
// 描述: 写一个字节的数据至LCD中的控制寄存器当中
// 参数: Command 写入的数据,低八位有效(byte)
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2007/01/09 First version
//========================================================================
/*
void LCD_RegWrite(LCDBYTE Command)
{
LCD_A0_CLR();
LCD_CS_CLR();
LCD_Data_BUS_Clr();
LCD_Data_BUS_Set(n);
LCD_RW_CLR();
LCD_RW_SET();
LCD_CS_SET();
} */
//========================================================================
// 函数: void Write_Dot_LCD(DOTBYTE x,DOTBYTE y,LCDBYTE i)
// 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
// 参数: x X轴坐标
// y Y轴坐标
// i 要填充的点的颜色
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2006/10/15 First version
// 2007/01/09 V1.2
//========================================================================
void Write_Dot_LCD(DOTBYTE x,DOTBYTE y,LCDBYTE i)
{
y = (y<<8)+y;
LCD_RegWrite(0x00);
LCD_DataWrite(y);
LCD_DataWrite(x);
LCD_DataWrite(i);
}
//========================================================================
// 函数: LCDBYTE Get_Dot_LCD(DOTBYTE x,DOTBYTE y)
// 描述: 获取在LCD的真实坐标系上的X、Y点上的当前填充色数据
// 参数: x X轴坐标
// y Y轴坐标
// 返回: 该点的颜色
// 备注: 暂不使用该函数
// 版本:
// 2006/10/15 First version
//========================================================================
LCDBYTE Get_Dot_LCD(DOTBYTE x,DOTBYTE y)
{
LCDBYTE Read_Data;
//可根据自己的需要填写代码
LCD_RegWrite(0x00);
LCD_DataWrite(y);
LCD_DataWrite(x);
Read_Data = LCD_DataRead(); //
return Read_Data;
}
//========================================================================
// 函数: void Set_Dot_Addr_LCD(int x,int y)
// 描述: 设置在LCD的真实坐标系上的X、Y点对应的RAM地址
// 参数: x X轴坐标
// y Y轴坐标
// 返回: 无
// 备注: 仅设置当前操作地址,为后面的连续操作作好准备
// Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2006/10/15 First version
// 2007/01/09 V1.2
//========================================================================
void Set_Dot_Addr_LCD(DOTBYTE x,DOTBYTE y)
{
LCD_RegWrite(0x00);
LCD_DataWrite(y);
LCD_DataWrite(x);
}
//========================================================================
// 函数: void LCD_Fill_s(WORD Number,LCDBYTE Color)
// 描述: 连续填充以Color色调的Number个点
// 参数: Number 填充的数量 Color 像素点的颜色
// 返回:
// 备注: 该函数可能会使用到
// 版本:
// 2006/10/15 First version
// 2007/01/09 V1.2
//========================================================================
void LCD_Fill_s(WORD Number,LCDBYTE Color)
{
while(Number!=0)
{
LCD_DataWrite(Color);
Number--;
}
}
//========================================================================
// 函数: void LCD_Fill(unsigned int Data)
// 描述: 会屏填充以Data的数据至各点中
// 参数: Data 要填充的颜色数据
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2006/10/15 First version
// 2007/01/09 V1.2
//========================================================================
void LCD_Fill(LCDBYTE Data)
{
DOTBYTE i,j=0;
DOTBYTE uiTemp;
uiTemp = (unsigned int)Dis_Y_MAX;
Set_Dot_Addr_LCD(0,0);
for(i=0;i<=uiTemp;i++) //往LCD中填充初始化的显示数据
{
for(j=0;j<=Dis_X_MAX;j++)
{
LCD_DataWrite(Data);
}
}
}
//========================================================================
// 函数: void LCD_PortInit(void)
// 描述: 与LCD连接的端口初始化代码
// 参数: 无
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2007/01/09 First version
// 注意:
//========================================================================
void LCD_PortInit(void)
{
LCD_Ctrl_GPIO();
LCD_Ctrl_Out();
LCD_Ctrl_Set(LCD_CS+LCD_RE+LCD_A0+LCD_RW+LCD_RD);
LCD_Data_GPIO();
LCD_Data_Out();
}
//========================================================================
// 函数: void LCD_Init(void)
// 描述: LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器,具体如果
// 用户想了解,建议查看DataSheet当中各个寄存器的意义
// 参数: 无
// 返回: 无
// 备注: Mz 通用版LCD驱动程序 标准子函数
// 版本:
// 2006/10/15 First version
// 2007/01/09 V1.2
//========================================================================
//延时程序
void TimeDelay(WORD Time)
{
WORD i;
while(Time > 0)
{
for(i = 0;i < 800;i++)
{
_nop_();
}
Time --;
}
}
unsigned short LCD_IndexAuto=0;
void LCD_Init(void)
{
//LCD驱动所使用到的端口的初始化
LCD_PortInit();
//根据LCD显示的配置,设置LCD的数据地址指针自动增加特性
//end
LCD_RE_CLR();
TimeDelay(20);
LCD_RE_SET();
LCD_RegWrite(0x03);
LCD_DataWrite((1<<7)|// //设置背光控制使能
(0x60<<0)); //设置背光亮度等级为60(0~127)
LCD_RegWrite(0x04); //写系统寄存器
// LCD_DataWrite((0<<7)| //当前显示页
// (0<<6) | //当前读写页设置
// (1<<0)); //显示开关
LCD_DataWrite(MzT35_Ctrl_Reg);
LCD_Fill(LCD_INITIAL_COLOR);
}
void LCD_DisLayerSet(BYTE layer)
{
if(layer==0)
{
MzT35_Ctrl_Reg &= ~0x80;
}
else
{
MzT35_Ctrl_Reg |= 0x80;
}
LCD_RegWrite(0x04); //写系统寄存器
// LCD_DataWrite((0<<7)| //当前显示页
// (0<<6) | //当前读写页设置
// (1<<0)); //显示开关
LCD_DataWrite(MzT35_Ctrl_Reg);
}
FLASH Initial_Tab[]=
{
}
void LCD_OSLayerSet(BYTE layer)
{
if(layer==0)
{
MzT35_Ctrl_Reg &= ~0x40;
}
else
{
MzT35_Ctrl_Reg |= 0x40;
}
LCD_RegWrite(0x04); //写系统寄存器
// LCD_DataWrite((0<<7)| //当前显示页
// (0<<6) | //当前读写页设置
// (1<<0)); //显示开关
LCD_DataWrite(MzT35_Ctrl_Reg);
LCD_RegWrite(0x05);LCD_DataWrite(0x0005);
LCD_RegWrite(0x06);LCD_DataWrite(0xCF90);
LCD_RegWrite(0x05);LCD_DataWrite(0x000A);
LCD_RegWrite(0x06);LCD_DataWrite(0x3A05);
LCD_RegWrite(0x05);LCD_DataWrite(0x0016);
LCD_RegWrite(0x06);LCD_DataWrite(0x9F80);
LCD_RegWrite(0x05);LCD_DataWrite(0x0017);
LCD_RegWrite(0x06);LCD_DataWrite(0x0A0F);
LCD_RegWrite(0x05);LCD_DataWrite(0x0001);
LCD_RegWrite(0x06);LCD_DataWrite(0xe300);
LCD_RegWrite(0x05);LCD_DataWrite(0x0002);
LCD_RegWrite(0x06);LCD_DataWrite(0x0200);
LCD_RegWrite(0x05);LCD_DataWrite(0x0003);
LCD_RegWrite(0x06);LCD_DataWrite(0x7664);
LCD_RegWrite(0x05);LCD_DataWrite(0x0004);
LCD_RegWrite(0x06);LCD_DataWrite(0x0447);
LCD_RegWrite(0x05);LCD_DataWrite(0x0005);
LCD_RegWrite(0x06);LCD_DataWrite(0x4002);
LCD_RegWrite(0x05);LCD_DataWrite(0x000A);
LCD_RegWrite(0x06);LCD_DataWrite(0x4008);
LCD_RegWrite(0x05);LCD_DataWrite(0x000B);
LCD_RegWrite(0x06);LCD_DataWrite(0xD400);
LCD_RegWrite(0x05);LCD_DataWrite(0x000D);
LCD_RegWrite(0x06);LCD_DataWrite(0x123A);
LCD_RegWrite(0x05);LCD_DataWrite(0x000E);
LCD_RegWrite(0x06);LCD_DataWrite(0x2CC0);
LCD_RegWrite(0x05);LCD_DataWrite(0x000F);
LCD_RegWrite(0x06);LCD_DataWrite(0x0000);
LCD_RegWrite(0x05);LCD_DataWrite(0x0016);
LCD_RegWrite(0x06);LCD_DataWrite(0x9F80);
LCD_RegWrite(0x05);LCD_DataWrite(0x0017);
LCD_RegWrite(0x06);LCD_DataWrite(0x2212);
LCD_RegWrite(0x05);LCD_DataWrite(0x001E);
LCD_RegWrite(0x06);LCD_DataWrite(0x00dd);
LCD_RegWrite(0x05);LCD_DataWrite(0x0030);
LCD_RegWrite(0x06);LCD_DataWrite(0x0507);
LCD_RegWrite(0x05);LCD_DataWrite(0x0031);
LCD_RegWrite(0x06);LCD_DataWrite(0x0004);
LCD_RegWrite(0x05);LCD_DataWrite(0x0032);
LCD_RegWrite(0x06);LCD_DataWrite(0x0707);
LCD_RegWrite(0x05);LCD_DataWrite(0x0033);
LCD_RegWrite(0x06);LCD_DataWrite(0x0000);
LCD_RegWrite(0x05);LCD_DataWrite(0x0034);
LCD_RegWrite(0x06);LCD_DataWrite(0x0000);
LCD_RegWrite(0x05);LCD_DataWrite(0x0035);
LCD_RegWrite(0x06);LCD_DataWrite(0x0307);
LCD_RegWrite(0x05);LCD_DataWrite(0x0036);
LCD_RegWrite(0x06);LCD_DataWrite(0x0700);
LCD_RegWrite(0x05);LCD_DataWrite(0x0037);
LCD_RegWrite(0x06);LCD_DataWrite(0x0000);
LCD_RegWrite(0x05);LCD_DataWrite(0x003A);
LCD_RegWrite(0x06);LCD_DataWrite(0x140B);
LCD_RegWrite(0x05);LCD_DataWrite(0x003B);
LCD_RegWrite(0x06);LCD_DataWrite(0x140B);
}
void LCD_BackLightSet(BYTE light)
{
if(light>0x7f) light = 0x7f;
light |= 0x80;
LCD_RegWrite(0x03);
LCD_DataWrite(light);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -