2.2 初始化函数,包括电源电压的设置,显示模式的设置等等。
// 定义TFT4267初始化数据信息
STCOM_INI TFT4267_INI[] =
{ // 电源设置
{0x0000, 0x0001, 10}, // Start Oscillation
{0x000B, 0x0000, 0}, // Frame cycle setting;lcd工作时钟设置
{0x000C, 0x0000, 15}, // External display interface setting;lcd工作模式设置
{0x0011, 0x2E00, 0}, // Power control2 setting;灰度电压,3级电源电路设置
{0x0014, 0x1119, 0}, // Power control4 setting;设置lcd屏的供电电压
{0x0010, 0x1040, 15}, // Power control1 setting;设置lcd屏的电流及其它参数
{0x0013, 0x0040, 15}, // Power control3 setting;1级电源电路设置
{0x0013, 0x0060, 15}, // Power control3
{0x0013, 0x0070, 60}, // Power control3
// {0x0011, 0x3100, 0}, // Power control2
// {0x0010, 0x1600, 20}, // Power control1
// 显示设置
{0x0001, 0x0927, 0}, // Driver output setting (240x320 mode, GS="0", SS="1")
{0x0002, 0x0700, 0}, // LCD driving waveform setting
{0x0003, 0x1030, 0}, // Entry mode setting (TRI=0, DFM="0", BGR="1", ID1:ID0 =11)
{0x0007, 0x0004, 0}, // Display control1 (VLE2:VLE1=00, REV="1")
{0x0008, 0x0505, 0}, // Display control2
{0x0009, 0x0000, 0}, // ***
{0x0040, 0x0000, 0}, // Gate scan position (start G1 scan)
{0x0041, 0x0000, 0}, // Vertical scroll setting
{0x0042, 319, 0}, // Screen end position (320-1)
{0x0043, 0, 0}, // Screen start position (0)
{0x0044, 0, 0}, // 2th Screen end position
{0x0045, 0, 0}, // 2th Screen start position
{0x0046, 0xEF00, 0}, // window addr set for x0,x1 (0, 239)
{0x0047, 0x013F, 0}, // window addr set for y0 (319)
{0x0048, 0x0000, 20}, // window addr set for y1 (0)
{0x0030, 0x0404, 0}, // Gamma control1
{0x0031, 0x0006, 0}, // Gamma control2
{0x0032, 0x0000, 0}, // Gamma control3
{0x0033, 0x0202, 0}, // Gamma control4
{0x0034, 0x0707, 0}, // Gamma control5
{0x0035, 0x0107, 0}, // Gamma control6
{0x0036, 0x0303, 0}, // Gamma control7
{0x0037, 0x0202, 0}, // Gamma control8
{0x0038, 0x1100, 0}, // Gamma control9
{0x0039, 0x1100, 0}, // Gamma control10
// 打开显示
{0x0007, 0x0015, 40}, // Display control (GON=1, open disp)
{0x0007, 0x0017, 40},
{0x0020, 0x0000, 0}, // set GRAM addr(AD7--0)
{0x0021, 0x0000, 20}, // set GRAM addr(AD16--8)
{DATA_END, 0, 0}
};
/*******************************************************
* 名称: TftInit
* 功能: 初始化TFT液晶模块。
* 入口参数: 无
* 出口参数: 无
*******************************************************/
void TftInit(void)
{ STCOM_INI init_dat;
int i;
TftReset(); //初始化的时候要先拉低电压
for(i=0; i<100; i++) // 设定最多100条初始化命令
{ init_dat = TFT4267_INI[i];
if(init_dat.com==DATA_END) break;
TftSendCom(init_dat.com);
TftSendDat(init_dat.dat);
DelaymS(init_dat.dly);
}
}
2.3 还要提供几个基本的函数供上层调用,比如取点,画线函数。有了这几个函数就可以实现复杂的图。比如圆,椭圆等。
/****************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* color 显示颜色
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
****************************************************************************/
uint8 GUI_Point(uint16 x, uint16 y, TCOLOR color)
{ /* 参数过滤 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 刷新显示 */
TftSetWrite(x, y);
TftSendDat(color);
return(1);
}
/****************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定位置点的颜色数据。
* 入口参数:x 指定点所在列的位置
* y 指定点所在行的位置
* 出口参数:返回值即是读出值(RRRRRGGGGGGBBBBB)。
****************************************************************************/
uint8 GUI_ReadPoint(uint16 x, uint16 y, TCOLOR *ret)
{ uint16 bak;
/* 参数过滤 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 读取数据 */
TftSetAddr(x, y); // 设置地址
TftSendCom(WR_RD_DATA);
bak = TftRcvDat();
// bak = TftRcvDat();
*ret = bak;
return(1);
}
/****************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线。
* 入口参数:x0 水平线起点所在列的位置
* y0 水平线起点所在行的位置
* x1 水平线终点所在列的位置
* color 显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void GUI_HLine(uint16 x0, uint16 y0, uint16 x1, TCOLOR color)
{ uint16 bak;
if(x0>x1) // 对x0、x1大小进行排列,以便画图
{ bak = x1;
x1 = x0;
x0 = bak;
}
GUI_Point(x0, y0, color); // 显示第一点
x0++;
while(x1>=x0)
{ TftSendDat(color); // 不断填充并显示
x0++;
}
}
/****************************************************************************
* 名称:GUI_RLine()
* 功能:画垂直线。
* 入口参数: x0 垂直线起点所在列的位置
* y0 垂直线起点所在行的位置
* y1 垂直线终点所在行的位置
* color 显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void GUI_RLine(uint16 x0, uint16 y0, uint16 y1, TCOLOR color)
{ uint16 bak;
if(y0>y1) // 对y0、y1大小进行排列,以便画图
{ bak = y1;
y1 = y0;
y0 = bak;
}
while(y1>=y0)
{ GUI_Point(x0, y0, color); // 逐点显示,描出垂直线
y0++;
}
}
相关推荐
可编程控制器EDA教程 11
4位单片机 w541e20xc
红色飓风FPGA普及行动 第一讲:FPGA系统设计基础
求助--如何掌握电容的封装形式
可编程控制器EDA教程 13
555可控硅快速充电机电路
卡尔曼滤波—机器人无人机离不开的神器
红色飓风FPGA普及行动 第二讲:FPGA设计入门
555镍镉电池自动快充器电路
电流互感器中“S”代表什么?带你读懂带S与不带S的本质区别
[求助]auto - mount on s3c2410 ?
基于 TIDEP-01037 的 60GHz 低功耗车内雷达参考设计解析
FIREFLY IRED 升级提升 AR/VR 眼动追踪性能
英飞凌全新PSOC 4实现先进的电动车电池管理
4位单片机 w541c20x
可编程控制器EDA教程 12
[9月新稿]用可编程的扭斜控制来解决时钟网络问题的方法
4位单片机 w541c250
[转帖]十大人性被摧残的职业!
关于etherOutput下载出错的问题
555简易开关稳压器电路
555高精度无级调压稳压器电路
4通道冷阴极荧光灯控制器 DS3984
随着电动汽车比例增长,欧洲汽车注册数在十月保持稳定
555锌锰干电池还原充电器电路
4位单片机 w541c240
加拿大芯片雄心:数十亿美元流向IBM和Marvell,打造北美半导体强国
适用于 Jacinto™ 7 的 100Base-T1 汽车以太网扩展参考设计
1毫米间距中心锁定线对板连接器
GSMA警告称,6G将需要高达当前中频段频谱的三倍