/*************************************************************************
版权所有:优特电力科技股份有限公司
版本号: 1.00
文件名: LCD.C
生成日期:2002.10.22
作者: YSH
功能说明:本模块主要是用于LCD液晶驱动显示模块
与所属工程文件的关系:
其它说明:USE LANGUAGE C
修改记录:无
记录1: 无
修改者: 无
修改日期:无
修改内容:无
修改原因:无
*************************************************************************/
#define __LCD_EXT
#include "includes.h"
#define APPEN_NEWFONT_START 0x145710 //追加字库的起始地址
#define Logo1 APPEN_NEWFONT_START
#define Logo2 Logo1 + 2560 //2560为Logo1的字节数
#define Logo3 Logo2 + 640
#define Logo4 Logo3 + 640
#define LQI5 Logo4 + 640
#define LQI4 LQI5 + 32
#define LQI3 LQI4 + 32
#define LQI2 LQI3 + 32
#define LQI1 LQI2 + 32
#define LQI0 LQI1 + 32
#define play LQI0 + 32
#define pause play + 32
#define stop pause + 32
#define play_new stop + 32
#define pause_new play_new + 32
#define stop_new pause_new + 32
#define charge1 stop_new + 32
#define charge2 charge1 + 32
#define EnterKey charge2 + 32
#define BackKey EnterKey + 32
#define jun BackKey + 32
#define ding jun + 32
#define BatteryStatus ding + 32
#define LineChar BatteryStatus + 52
//********追加字库起始地址为 0x145710 ,字库最终flash存储地址为 0x146b0f ***********//
#define BatteryAddress 0x146b50 //增加的电池新图标flash起始地址,最终的字库结束地址为 0x146dbf
#define ArrowAddress 0x146dc0 //增加了左右箭头图标,这为该图标的起始地址
#define Icon_Address 0x146e80 //增加了CDMA、UT-NET、IRDA左上角图标
#define XBYTE ((volatile u8 *)0x0)
#define WR_C15E05 0x66000000 //写控制命令地址 A0=0
#define WR_D15E05 0x66000001 //写显示数据及指令参数地址 A0=1;
#define DISPON 0xaf //开显示命令设置(1)
#define DISPOFF 0xae //关显示命令设置
#define DISPOFFMODEH 0xbf //关显示的电平接VC命令设置(2)
#define DISPOFFMODEL 0xbe //关显示的电平接VSS命令设置
#define DISPNORMAL 0xa6 //正常显示命令设置(3)
#define DISPREVERSE 0xa7 //反向显示命令设置
#define DISPALLNOR 0xa4 //正常显示数据点命令设置(4)
#define DISPALLON 0xa5 //点亮所有点命令设置
#define SETCOMSTATUSNOR 0xc4 //从COM0到COM131命令设置(5)
#define SETCOMSTATUSREV 0xc5 //从COM131到COM0命令设置
#define SETDISPLINE 0x8a //显示起始行命令设置(6)
#define DISPLINEDATA1 0x00 //起始行为0行数据参数,A0 = 1
#define DISPLINEDATA2 0x00 //起始行为0行数据参数,A0 = 1
#define SETDISPPAGE 0xb1 //显示起始页命令设置(7)
#define DISPPAGEDATA 0x00 //起始页为0行数据参数,A0 = 1
#define SETDISPCOL 0x13 //显示起始列命令设置(8)
#define DISPCOLDATA 0x00 //起始列为0行数据参数,A0 = 1
#define DISPDATAWRITE 0x1d //显示数据写入命令设置(9)
#define DISPDATAREAD 0x1c //显示数据读出命令设置(10)
#define SETCOLDIR 0x84 //从列方向自动增加命令设置(11)
#define SETPAGEDIR 0x85 //从页方向自动增加命令设置
#define SETCOLDIRNOR 0xa0 //列方向正向自动增加命令设置(12)
#define SETCOLDIRREV 0xa1 //列方向反向自动增加命令设置
#define SETN_LINEREV 0x36 //n-line 反向驱动命令设置(13)
#define N_LINECOUNT 0x06 //DEMO程序,A0 = 1
#define SETN_LINEON 0xe5 //开启n-line 反向驱动命令设置(14)
#define SETN_LINEOFF 0xe4 //关闭n-line 反向驱动命令设置
#define SETDISPMODE 0x66 //显示模式命令设置(4级灰度或Bin)(15)
#define DISPMODEGRAY 0x00 //4级灰度显示参数,A0 = 1
#define DISPMODEBIN 0x01 //Bin显示参数,A0 = 1
#define SETGRAYLEVEL 0x39 //灰度等级命令设置(16)
#define GRAYLEVELDATA 0x66 //灰度等级数据选择,A0 = 1
#define SETAREASCROLL 0x40 //屏幕局部滚动设置(17)
#define SCROLLMODEDATA 0x01 //向上滚动
#define SCROLLSTARTLINE 0x00 //滚动起始行为0行数据参数,A0 = 1
#define SCROLLENDLINE1 0x00 //滚动结束行为0行数据参数,A0 = 1
#define SCROLLENDLINE2 0x00 //滚动结束行为0行数据参数,A0 = 1
#define SETDUTY 0x6d //duty模式命令设置(18)
#define DUTYDATA 0x20 //1/128 duty模式,A0 = 1
#define DUTYSTART 0x01 //!!从COM1开始,A0 = 1
#define DISPDATARDWR 0xe0 //显示数据的读改写命令设置(21)
#define DISPDATAEND 0xee //显示数据的读改写结束命令设置(22)
#define SETOSCOFF 0xaa //关闭晶振命令设置(23)
#define SETOSCON 0xab //开启晶振命令设置
#define SETOSCFREQ 0x5f //晶振频率命令设置(24)
#define OSCFREQDATA 0x0b //晶振频率=76hz,A0 = 1
#define SETPOWERCTRL 0x25 //电源控制命令设置(25)
#define POWERCTRLVC 0x1e //电源上电关闭LCDV, A0 = 1
#define POWERCTRLLCDV 0x1f //延时100ms后开启LCDV, A0 = 1
#define SETVCVOLT 0x2b //LCD电压Vc选择命令设置(27)
#define VCVOLTDATA 0x03 //LCD电压Vc选择值3.54-7.0v,A0 = 1
#define SETCONTRAST 0x81 //对比度命令设置 (28)
#define CONTRASTSTATE 0x33 //对比度数值在0-127,A0 =1
#define SETDISCHAROFF 0xea //关闭放电命令设置(29)
#define SETDISCHARON 0xeb //开启放电命令设置
#define POWERSAVEOFF 0xa8 //关闭节电模式命令设置(30)
#define POWERSAVEON 0xa9 //开启节电模式命令设置
#define SETNOP 0xe3 //空操作命令设置(34)
#define CSIOP 0xa0000
#define PSD_PORTE_OUT_DATA CSIOP+0x34
//从中间空白区(34624+OFFSETFONT)开始,依次留2560个字节给完整的logo
//然后从(37184+OFFSETFONT)开始存放15幅局部图片,每幅占104个字节大小
#define PICTUREDATA OFFSETFONT+37184L
//系统要求留出的空间,即字库从0x100000开始
#define OFFSETFONT 0x100000
//写LCD数据参数
void S1D15E05_Data(u8 data);
//写LCD命令参数
void S1D15E05_Command(u8 command);
//LCD液晶显示坐标定位
void LcdGotoxy(u8 Regx,u8 Regy);
//存放LCD的160*128点阵数据,共2560字节的SRAM缓冲区
static u8 Temp_LcdBuffer[2560];
//存放LCD的160*128点阵数据,在Gray_Scale状态下,共2560*2字节的SRAM缓冲区
static u8 Temp_LcdBuffer_Gray[5120];
//从0x8a00地址开始,存放从DataFlash中取出的每个字符的点阵数据公共区
static u8 DispDotBuf[50] ;
//从0x8a80地址开始,存放DispBCDBuf中待显示的BCD数字字符串
static char DispBCDBuf[20] ;
//存放动画数据的缓冲区
static u8 PicBuf[2560] ;
//光标闪动的标记
static u8 CursorBit;
//记录显示完字符串后的坐标值
static u8 PositionX,PositionY;
//整型数据的结构
typedef union
{
u8 DataAdd_D[2]; //字节顺序由低到高
u16 DataAdd_I; //整型数据,如为0x5678
}Un_DataAdd_I;
static Un_DataAdd_I GrayVal;
/**************************************************************************
函数名称: void S1D15E05_Data(u8 data)
函数版本: 1.00
作者: ysh
创建日期: 2002.10.25
函数功能说明:写LCD数据参数
输入参数:LCD数据参数,ttt
输出参数:无
返回值: 无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空
更新后的上述资源:空
***************************************************************************/
void S1D15E05_Data(u8 data)
{
XBYTE[WR_D15E05] = data;
}
/**************************************************************************
函数名称: void S1D15E05_Command(u8 command)
函数版本: 1.00
作者: ysh
创建日期: 2002.10.25
函数功能说明:写LCD命令参数
输入参数:LCD命令参数,command
输出参数:无
返回值: 无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空
更新后的上述资源:空
***************************************************************************/
void S1D15E05_Command(u8 command)
{
XBYTE[WR_C15E05] = command;
}
/**************************************************************************
函数名称: void LcdLuminance(u8 LcdLum)
函数版本: 1.00
作者: ysh
创建日期: 2002.10.25
函数功能说明:LCD对比度设置
输入参数:LcdLum为液晶对比度等级,取值范围在0-7,共8个等级
输出参数:无
返回值: 无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空
更新后的上述资源:空
***************************************************************************/
void LcdLuminance(u8 LcdLum)
{
S1D15E05_Command(SETCO