打印

基于LPC824 lite开发板的串口TFT屏显示

[复制链接]
1712|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
对于LPC824 lite这款以取代单片机为目标的产品,不为它配上个TFT彩色显示屏也难展其英雄本色。可面对32KB的程序存储空间,要不借助辅助的存储空间的帮助,要想实现图像显示也实在是个难题。那首先就上TFT显示屏亮起来吧,面对LPC824的小身子板,可不能盲目地选TFT显示屏,为了节省GPIO资源这里选的是TFT串口显示屏,其显示效果如图1所示。
             图1  TFT串口屏显示效果
选好显示屏,下面的问题是如何来进行连接,因为板上GPIO资源基本上已被瓜分殆尽了。这里采用如下的连接方式,即:
REST --P0.20    DC --P0.21   CS --P0.22   SDI --P0.25   SCK --P0.24
    为此,相应相关引脚输出高低电平的定义语句如下:
#define LCD_SCK_High()     GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 24, 1 ); 
#define LCD_SCK_Low()           GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 24, 0 );  
#define LCD_SDI_High()      GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 25, 1 );
#define LCD_SDI_Low()      GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 25, 0 );  
#define LCD_CS_High()      GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 22, 1 );
#define LCD_CS_Low()           GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 22, 0 );
#define LCD_DC_High()      GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 21, 1 );
#define LCD_DC_Low()             GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 21, 0 );
#define LCD_REST_High()            GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 20, 1 );
#define LCD_REST_Low()     GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 20, 0 );
在自定义小字库的情况下,实现32*32点阵汉字显示的函数为:
void showhanzi32(unsigned int x,unsigned int y,unsigned char index)        
{  
        unsigned char i,j,k;
        const unsigned char *temp=hanzi32;   
        temp+=index*128;       
        for(j=0;j<32;j++)
        {
                LCD_SetCursor(x,y+j);
                LCD_WriteRAM_Prepare();       
                for(k=0;k<4;k++)
                {
                        for(i=0;i<8;i++)
                        {                      
                                 if((*temp&(1<<i))!=0)
                                {
                                        LCD_WR_DATA(POINT_COLOR);
                                }
                                else
                                {
                                        LCD_WR_DATA(BACK_COLOR);
                                }   
                        }
                        temp++;
                }
         }
}
而对应的字库结构则为:
unsigned char hanzi32[]=
{
//心
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x1c, 0x02, 0x00,
0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x40, 0x0c, 0x00, 0x02, 0x40, 0x0c, 0x00, 0x06,
0x60, 0x0c, 0x00, 0x0c, 0x60, 0x0c, 0x00, 0x1c, 0x60, 0x0c, 0x00, 0x18, 0x70, 0x0c, 0x00, 0x38,
0x38, 0x0c, 0x80, 0x38, 0x3c, 0x0c, 0x80, 0x10, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x0c, 0x80, 0x00,
0x00, 0x0c, 0x80, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x0c, 0xc0, 0x01, 0x00, 0xf8, 0xff, 0x01,
0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//率
......
}
那在LPC824 lite开发板上能否实现图片显示呢?
答案是可以的,但图片不能过大,其效果如图2所示。
如果图片较大又如何处理呢?目标是板上的4MBSPI FLASH!但要将大图片查分成小若干片,再分批倒到SPI FLASH中,以供读取使用。
以显示40*40像素的16位色图片为例,其显示程序为:
void showimage(unsigned int x,unsigned int y) 
{   // 显示40*40像素图片
        unsigned int i,j,k;
        unsigned int da;
        k=0;
        for(i=0;i<40;i++)         
        {       
                LCD_SetCursor(x,y+i);
                LCD_WriteRAM_Prepare();       
                for(j=0;j<40;j++)               
                {
                        da=qqimage[k*2+1];
                        da<<=8;
                        da|=qqimage[k*2];
                        LCD_WR_DATA(da);                                       
                        k++;  
                }
        }
}
             图2 图片显示效果

相关帖子

沙发
songchenping| | 2016-11-29 09:53 | 只看该作者

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2016-11-29 10:27 | 只看该作者

使用特权

评论回复
地板
zhanzr21| | 2016-12-1 16:56 | 只看该作者
赞! 不错, 只是好像发错版块了.

使用特权

评论回复
5
jinglixixi|  楼主 | 2016-12-2 09:01 | 只看该作者
zhanzr21 发表于 2016-12-1 16:56
赞! 不错, 只是好像发错版块了.

哈哈,sorry!

使用特权

评论回复
6
jazzyfox| | 2016-12-9 09:21 | 只看该作者
昨天还和一个兄弟一起聊MCU,他是用nxp1778,我用的多些的是LPC1114,现在是不是要改到飞思卡尔的了,现在飞思卡尔的ARM好便宜,NXP的arm过几年要停产的好多,我是深深的记得,当年87LPC76X,我本来用的很顺手的,突然停产了,我了个去,坑死我了

使用特权

评论回复
7
jinglixixi|  楼主 | 2016-12-9 09:26 | 只看该作者
jazzyfox 发表于 2016-12-9 09:21
昨天还和一个兄弟一起聊MCU,他是用nxp1778,我用的多些的是LPC1114,现在是不是要改到飞思卡尔的了,现在 ...

但据说,它要取代单片机。

使用特权

评论回复
8
jazzyfox| | 2016-12-9 09:33 | 只看该作者
jinglixixi 发表于 2016-12-9 09:26
但据说,它要取代单片机。

说实话,单片机这东西,流行趋势,51,--pic---avr---msp430---ARM,至少我经历的是如此,现在的东西变化太快,当年用51发财的那帮人,用了20年,现在这些东西几年就不流行了,有更好的骗子替代了,做电工好苦逼啊,做个机械设计,三维的UG,proe,CATIA什么会了就OK了,就是个升级换代,我们是换系统,真是坑啊

使用特权

评论回复
9
jinglixixi|  楼主 | 2016-12-9 11:25 | 只看该作者
jazzyfox 发表于 2016-12-9 09:33
说实话,单片机这东西,流行趋势,51,--pic---avr---msp430---ARM,至少我经历的是如此,现在的东西变化 ...

同感!!!我只走了2步,51-ARM稍省了点气力,现在又在补ARDUINO、派、FPGA等。

使用特权

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

本版积分规则

455

主题

2756

帖子

38

粉丝