单片机开发教程5——51单片机驱动TFT彩屏

转载自CSDN

代码例程

TFT.zip

在这里插入图片描述

开发资料中的例程有些瑕疵,上面是整理后的例程,修改了一些参数,也添加了不少函数,函数都有对应的注释,只要花心思去看一应该是能看懂怎么用的。此外,这个例程也可以作为你们工程的模板,往上面添加一些函数、完善一下内容,差不多就能做出一个作品了

TFT模块

介绍

TFT的全称:Thin Film Transistor,中文名字是薄膜晶体管。现在我们所使用的笔记本电脑以及台式电脑都运用了相对先进的TFT显示屏,这类显示屏都由液晶像素点组成,并由集成在像素点后面的薄膜晶体管驱动

不难看出,TFT也是属于LCD液晶屏的一种,它的每一液晶像素点都是由集成在其后的薄膜晶体管来驱动的

使用要点

减少刷新像素

请添加图片描述

我们使用到是一块1.8寸TFT LCD,分辨率是128X160,驱动芯片是ST7735S,支持SPI串口

虽然分辨率不高,但对于一款51单片机来说,这已经是在负重前行了,可以计算一下,128X160=20480个像素,每个像素是16位彩色数据,也就是刷新一个屏幕的数据量是40960Byte=40KB,这对于单片机的运行频率来说,无疑是个大数目了,烧录开发资料中的刷屏例程可以看出,刷新一帧画面需要5s~6s,这是不能接受的,为了提高画面刷新频率,必须要尽量减少刷新的内容,而对于固定的背景和元素,只在初始化时刷新的,因此设计得花里胡哨也没事

上图是链接中的例程运行效果,以一款贪吃蛇游戏为例,贪吃蛇在运动时,本质上只有头和尾需要做出改变,因此只需要把最后一格换成背景色,最前面一格前添加一个小元素,就可以完成一个流动帧,这样刷新的帧率完全足够

坐标系

/*************************************************
函数名:LCD_Set_Region
功能:设置lcd显示区域,在此区域写点数据自动换行
入口参数:xy起点和终点
返回值:无
*************************************************/
void Lcd_SetRegion(unsigned int x_start,unsigned int y_start,unsigned int x_end,unsigned int y_end)
{       
    Lcd_WriteIndex(0x2a);
    Lcd_WriteData(0x02);
    Lcd_WriteData(x_start+2);
    Lcd_WriteData(0x02);
    Lcd_WriteData(x_end+2);

    Lcd_WriteIndex(0x2b);
    Lcd_WriteData(0x01);
    Lcd_WriteData(y_start+1);
    Lcd_WriteData(0x01);
    Lcd_WriteData(y_end+1);

    Lcd_WriteIndex(0x2c);
}

这是开发资料中 TFT 驱动代码的一个函数,用于设置写入数据的范围,如果烧录可以看到,屏幕边缘会出现一些不能刷新的地方,在 TFT.zip 中,对这块内容做了修改,把+1/+2删掉了

使用时需要注意,Lcd_SetRegion函数参数传入的坐标是从0开始的,每个坐标点对应一个像素点,也就是最大坐标点为(127,159)

其他需要传入坐标数据的Lcd函数,都会引用到Lcd_SetRegion,因此使用时,要知道像素与坐标的对应关系

游戏设计

对象

typedef struct  
{   
    u8 life;
    u8 headX;           
    u8 headY;       
    u8 snakeX[300];
    u8 snakeY[300]; 
    u8 length;
    int dir;
    int tpdir;
    u8 foodX;
    u8 foodY;

}Snake; 

游戏设计最重要的就是对象,这方面是面向对象编程语言的长处,而对于C语言,结构体也能体现这一点。上面代码是一个贪吃蛇对象(结构体),可以非常直观地表达贪吃蛇的状态,这在游戏设计中是很重要的,尤其是多对象的情况(现在大概率用不到),学会使用结构体,对变量的管理和内容的设计都会带来很大便利

VS Code

这里就推荐使用vs code作为代码的编辑器,因为它的自动补全真的很香,尤其是在使用结构体变量时

如果你有VS Code,只需安装一个插件Keil Assistant,再配置一下路径就可以用了

在这里插入图片描述

在这里插入图片描述

暂无评论

相关推荐

微信扫一扫,分享到朋友圈

单片机开发教程5——51单片机驱动TFT彩屏