文章目录

  • 代码例程
  • TFT模块
    • 介绍
    • 使用要点
      • 减少刷新像素
      • 坐标系
  • 游戏设计
    • 对象
    • VS Code

代码例程

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彩屏相关推荐

  1. 51单片机开发系列一-51单片机开发环境搭建以及入门汇编代码

    51单片机开发系列一 51单片机开发环境搭建以及入门汇编代码 象棋小子    1048272975 1. 51单片机概述 51单片机是对所有兼容Intel 8031指令系统的单片机的统称.目前教科书基 ...

  2. 51单片机开发实例 基于51单片机的光控灯

    一.系统设计 通过光敏电阻模块检测环境中的光强,系统会根据程序设定的阈值完成小灯的控制,环境较暗且低于控制阈值小灯就会亮起.光敏电阻模块可以根据不同的光照强度输出相应的模拟电压信号,模拟信号会通过AD ...

  3. 51单片机开发实例 基于51单片机的万年历

    一.系统设计 通过DS1302时钟模块进行时间数据采集,通过LCD1602显示模块进行显示,通过按键可以修改实时时间.STC89C52单片机作为万年历系统的主控,将DS1302时钟模块得到的时间数据后 ...

  4. 51单片机开发实例 基于51单片机的矩阵键盘+显示

    一.系统设计 通过在矩阵键盘内输入数字并在LCD1602上进行显示,可以输入的数字有16个,分别是0-15.按下矩阵键盘就会上LCD1602上显示对应的数字,整个系统使用STC89C52单片机进行主控 ...

  5. 单片机开发教程1——开发环境的搭建

    文章目录 开发环境介绍 Keil安装教程 下载安装包 安装keil 运行注册机 STC-ISP 单片机型号 串口驱动 串口助手 开发环境介绍 51单片机的开发只需要用到两个软件--keil和stc-i ...

  6. 想学单片机怎么入手?51单片机入门自学最佳指南

    曾经我是自学单片机然后跨行成功,今天来分享下自己的经验. 在网上看了很多文章,很多人说现在51单片机已经过时了,建议从STM32开始学习. 或者单片机没有钱途,直接搞ARM+Linux. 我的建议是从 ...

  7. 51单片机五层电梯控制器 基于51单片机的五层电梯控制系统

    51单片机五层电梯控制器 基于51单片机的五层电梯控制系统 包括源代码和proteus仿真 系统硬件由51单片机最小系统.蜂鸣器电路.指示灯电路.内部按键电路.外部按键电路.直流电机.内部显示电路.外 ...

  8. 51单片机自动浇水系统/51单片机自动浇花系统/智能浇水系统

    51单片机自动浇水系统/51单片机自动浇花系统 整个设计由51单片机模块.湿度传感器模块(土壤湿度传感器或者温度传感器或者温湿度传感器,都可以).lcd1602液晶显示模块等组成,实现智能浇花和智能浇 ...

  9. ​stm32单片机真的可以取代51单片机吗?​

    stm32单片机真的可以取代51单片机吗? 计算机类的小伙伴们应该都学过单片机,那么单片机在我们日常生活里其实非常常见,只是普通人并不是特别懂得什么叫做单片机. 我们先来解释一下单片机的含义.单片机, ...

最新文章

  1. P3239 [HNOI2015]亚瑟王(期望)
  2. 如何使用postman做接口测试
  3. OS2ATC 2021:开源协作,和而不同
  4. HMC支持管理服务器数量及适合POWER6服务器的HMC型号
  5. 2017.9.25 随机数生成器 失败总结
  6. (进阶)LeetCode(9)——回文数(JavaScript)
  7. R与Python或协同助力机器学习:听Azure ML Studio讲座有感
  8. linux获取主板温度电压_主板供电
  9. 点评一下阿提亚和黎曼猜想
  10. Python开发【第十八篇】Web框架之Django【基础篇】
  11. xlsxwriter去掉网格线_学习-xlsxwriter模块
  12. ROS2的launch文件如何编写?快来学习一下使用Python编写launch文件~
  13. C语言练习,指针变量作函数参数,从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10
  14. 车主因眼睛小被自动驾驶误判?——智能座舱CV体验的经典corner case剖析 by 资深AI产品经理@方舟...
  15. 第一课 语言的发展史
  16. C#使用消息队列(MSMQ)
  17. codeblocks出现Encoding Changed The saved doucument contained characters which were illeal
  18. 程序员转行做自媒体,抖音,快手原创作者,必备的免费视频素材网站
  19. 将优狐智能插座接入 Domoticz
  20. iOS和Android的差别

热门文章

  1. 翻译-软件工程师的通用技巧
  2. WebRecon v1.0 旁注终结者
  3. 用C#进行北斗串口编程之二:北斗2.1协议基础
  4. 基于角蜂鸟的智能监控
  5. leetcode刷题之python矩阵相关题目
  6. BUUCTF 秘密文件
  7. Elasticsearch 搜索引擎, 检索分词,组词(二)
  8. linux以16进制打开文件,linux下查看十六进制文件方法
  9. have been in 和have been to
  10. 优盘数据恢复软件——失易得数据恢复