查看: 53|回复: 3

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

[复制链接]

54

主题

1

好友

1483

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 20:19
  • 签到天数: 196 天

    [LV.7]常住居民III

    爱板会员勋章 活跃会员勋章

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

               图1 图像显示效果

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

                图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开发板配上图像显示功能能把我们带入一个更丰富多彩的世界。
    图片2.png
               图3 文字显示效果

    回复

    使用道具 举报

    51

    主题

    1

    好友

    2856

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 00:00
  • 签到天数: 496 天

    [LV.9]以坛为家II

    发表于 2016-11-17 10:25:20 |显示全部楼层
    ti的板子不错,顶一下
    回复

    使用道具 举报

    33

    主题

    2

    好友

    5845

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 1293 天

    [LV.10]以坛为家III

    爱板会员勋章 活跃会员勋章 在线达人勋章 在线之王勋章

    发表于 2016-11-17 10:56:52 |显示全部楼层
    板子不错,屏也不错,感谢分享。
    回复

    使用道具 举报

    54

    主题

    1

    好友

    1483

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 20:19
  • 签到天数: 196 天

    [LV.7]常住居民III

    爱板会员勋章 活跃会员勋章

    发表于 2016-11-18 08:09:51 |显示全部楼层
    多谢了!!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /6 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-5 06:20 , Processed in 0.138447 second(s), 14 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部