请教在 2.4 寸 TFT 上显示内部 FLASH 图片的方法

2019-03-23 19:04发布



TFT-LCD 规格:2.4寸
驱动IC:ILI9341
硬体接线:TFT 模组的 D15~D0 接到一个 16bit 的 I/O PORT 的 D15~D0

各位好:

ILI9341 的初始化以及画点画线等相关函数都已经完成了,现在想在屏幕上显示如上图的一张图片,
大小是 85 × 113,16 位彩 {MOD},其余选项如图面上的设定。
转出来的点阵数据为:85 × 113 × 2(16BPP) = 19120 + 8个Byte的影像头数据 = 19218 个元素如下所示:

const unsigned char gImage_flower16bit_H[19218] = {
0X00,0X10,0X55,0X00,0X71,0X00,0X01,0X1B,        //8个Byte的影像头数据
         ..............................
};

我的问题是,当有包含 8 个Byte的影像头数据时,这段循环查表的程式要怎么写?

假设我已经对 ILI9341 设置好一个 85 × 113 的显示范围,
我该怎么顺序抓取资料才能让点阵数据在屏幕上正确显示?
因为我的资料输出是 16 位元,而点阵数据是 8 位元一组,
这意味着我必须抓两次 8 位元合成一个 16 位元来显示一个点的颜 {MOD}值,
能否给我指导我一下具体的程式写法,谢谢。

[ 本帖最后由 PSIR 于 2013-12-9 13:39 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
PSIR
2019-03-24 01:42
/ unsigned short send_H;
unsigned short send_L;
unsigned long size;
unsigned long temp=19120;  //85 × 113 × 2(16BPP)

for(size=0;size<temp;size++){
  send_H=gImage_flower16bit_H[size]; send_H<<=8;        //移到Hi Byte
  send_L=gImage_flower16bit_H[++size];
  LCD_WR_DATA( send_H | send_L );
}
----------------------------------------------------
我将8个Byte的影像头数据去掉并写了一小段程式测试,
这样写就行了,不过 Image2lcd 的设定要改成「高位在前」,
我也不知道什麼原因,欢迎大神指导。

一周热门 更多>