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

这篇具有很好参考价值的文章主要介绍了单片机开发教程5——51单片机驱动TFT彩屏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码例程

TFT.zip

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

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

TFT模块

介绍

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

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

使用要点

减少刷新像素

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

我们使用到是一块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彩屏
单片机开发教程5——51单片机驱动TFT彩屏文章来源地址https://www.toymoban.com/news/detail-422266.html

到了这里,关于单片机开发教程5——51单片机驱动TFT彩屏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【单片机】51单片机,TLC2543,驱动程序,读取adc

    【单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(12)
  • 单片机】51单片机,TLC2543,驱动程序,读取adc

    单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(11)
  • 【51单片机】直流电机驱动(PWM)(江科大)

    【51单片机】直流电机驱动(PWM)(江科大)

    · 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 · 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 · 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 电机的驱动无法

    2024年02月20日
    浏览(10)
  • 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)

    【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)

            本章节实验到此已经完毕,考虑到大家的基础差异较大,刚接触51单片机的小伙伴可能对烧录过程有些困惑,作者便在篇末给大家提供保姆级烧录教程,帮助大家快速掌握单片机程序烧录技巧,希望对大家有所帮助! 本教程所需软件下载(win系统)         

    2023年04月08日
    浏览(7)
  • 51单片机驱动TCS3200颜色识别传感器

    51单片机驱动TCS3200颜色识别传感器

    TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清除4种滤光器。每种颜色滤光器均匀地按数组分布来清除颜色中偏移位置的颜色分

    2023年04月14日
    浏览(8)
  • 【51单片机】直流电机的驱动和PWM调速

    【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(8)
  • 基于51单片机的步进电机驱动,亲测无误

    基于51单片机的步进电机驱动,亲测无误

    这一次要分享的项目是最近接单做的一个小玩意儿,基于51单片机的步进电机驱动。最近积压了两个月的小项目会在后面陆续发出,好了回归正题。本次步进电机驱动的话主要实现的功能就是实现: 步进电机的加速和减速,正转反转和开启或者停止工作。用LCD1602显示当前工作

    2023年04月09日
    浏览(14)
  • 51单片机驱动8位数码管(74HC595驱动)滚动显示

    51单片机驱动8位数码管(74HC595驱动)滚动显示

    原文链接:https://www.yourcee.com/newsinfo/2929591.html 点击图片购买 主要关注下供电电压是3.0-5.0v(建议5V),请在规定范围内供电。 模块上芯片引出5个引脚,芯片引脚与模块引脚对应关系是:VCC-VCC SCK-SCLK, RCK-RCLK,SER-DIO,GND-GND 可以对比程序学习时序图,便于理解。 1.显示异常可排除

    2024年02月15日
    浏览(17)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(12)
  • 【Proteus仿真】| 51单片机——MAX7219 驱动数码管

    【Proteus仿真】| 51单片机——MAX7219 驱动数码管

    系列文章 todo: 该文章目的:让大家快速上手——知道如何使用MAX7219。故MAX7219就不做详细介绍了(需要了解的话可以看其他博文及数据手册)。 max7219是一个串行输入/输出 共阴极 数码管(点阵)驱动芯片。1个MAX7219最多可以驱动8位数码管。它具有自动扫描(切换位),BCD译码器(即

    2024年02月15日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包