打印
[原创]

基于LM4F120XL开发板的串口TFT屏图像显示

[复制链接]
585|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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位色生肖图像为例,其显示函数为:
void show_image(unsigned int x,unsigned int y) //200*200
{  
        unsigned int i,j,k;
        unsigned int da;
        k=0;
        for(i=0;i<200;i++)
        {       
                LCD_SetCursor(x,y+i);
                LCD_WriteRAM_Prepare();                             //????GRAM       
                for(j=0;j<200;j++)
                {
                        da=gImage_sh[k*2];
                        da<<=8;
                        da|=gImage_sh[k*2+1];
                        LCD_WR_DATA(da);                                       
                        k++;  
                }
        }
}
当然从广义上讲,文字也是一种图像,在配置自定义小字库的情况下,就能轻松地产生出图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 硬件接口吗?

的确是!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

453

主题

2750

帖子

38

粉丝