[原创] 基于LM4F120XL开发板的串口TFT屏图像显示

[复制链接]
794|2
 楼主| jinglixixi 发表于 2016-11-17 09:49 | 显示全部楼层 |阅读模式
LM4F120XL开发板不愧是基于32ARM Cortex-M4内核的开发板,单就程序空间来讲就达256KB FLASH,这就为图像显示提供了基本的条件。因为在程序存储空间比较小的情况下,如不使用SD卡类的大容量存储装置是无法解决图像存储问题的。有了大的程序空间,则可以将这些数据放到程序中,图1就是这样处理的效果。
             图1 图像显示效果

至于硬件的构成也十分简单,就是一块LM4F120XL开发板外加一块串口TFT显示屏,其实物构成如图2所示。此处使用串口屏的好处就在它可以有效地节省GPIO资源,尤其是对于一些引脚资源本身就不很多的MCU
               图2 硬件构成

要实现串口屏的显示,首先要确定串口屏与开发板的连接关系,其连接情况如下:
REST --PD.0    DC --PD.1   CS --PD.2   SDI --PD.3   SCK --PD.6
    为此,相应引脚输出高低电平的定义语句如下:
#define LCD_SCK_High()        GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, GPIO_PIN_6)
#define LCD_SCK_Low()              GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_6, 0)
#define LCD_SDI_High()         GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, GPIO_PIN_3)
#define LCD_SDI_Low()              GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_3, 0)
#define LCD_CS_High()         GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, GPIO_PIN_2)
#define LCD_CS_Low()              GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_2, 0)
#define LCD_DC_High()                 GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, GPIO_PIN_1)
#define LCD_DC_Low()                GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_1, 0)
#define LCD_REST_High()               GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, GPIO_PIN_0)
#define LCD_REST_Low()            GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0, 0)
图像被存放在sh.h的文件中,其存储结构如下:
const unsigned char gImage_sh[80000] =
{ /* 0X10,0X10,0X00,0XC8,0X00,0XC8,0X01,0X1B, */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
.........
}
以显示一幅200*200像素的16位色生肖图像为例,其显示函数为:
  1. void show_image(unsigned int x,unsigned int y) //200*200
  2. {  
  3.         unsigned int i,j,k;
  4.         unsigned int da;
  5.         k=0;
  6.         for(i=0;i<200;i++)
  7.         {       
  8.                 LCD_SetCursor(x,y+i);
  9.                 LCD_WriteRAM_Prepare();                             //????GRAM       
  10.                 for(j=0;j<200;j++)
  11.                 {
  12.                         da=gImage_sh[k*2];
  13.                         da<<=8;
  14.                         da|=gImage_sh[k*2+1];
  15.                         LCD_WR_DATA(da);                                       
  16.                         k++;  
  17.                 }
  18.         }
  19. }
当然从广义上讲,文字也是一种图像,在配置自定义小字库的情况下,就能轻松地产生出图3的界面效果。总之,为LM4F120XL开发板配上图像显示功能能把我们带入一个更丰富多彩的世界。
在此也再次感谢 dirtwillfly所提供的LM4F120XL开发板,使自己能零距离地接触到它,也能从中探索到一些收获与大家分享。当然也要感谢 21IC 所提供的这样好的平台供大家交流。
           图3 文字显示效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
airwill 发表于 2016-11-17 10:58 | 显示全部楼层
效果不错啊, 只是用的 SPI 硬件接口吗?
 楼主| jinglixixi 发表于 2016-11-17 15:25 | 显示全部楼层
airwill 发表于 2016-11-17 10:58
效果不错啊, 只是用的 SPI 硬件接口吗?

的确是!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

523

主题

2954

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部