利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇“自动运行函数”
利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇“自动运行函数”
完整的项目链接:
https://github.com/linxinloningg/51_chip_core.git
贪吃蛇是自己不断朝着前运动的,所以需要封装一个令贪吃蛇自己朝前运动的函数
自动运行函数满足条件:
- 1.控制贪吃蛇不断运动
- 2.运动方向发生改变时,蛇头运动方向立马发生改变,蛇身其他led灯运动方向仍保持,待运动到蛇头未改变时的位置,方可改变运动方向
- 3.改变运动方向后,贪吃蛇朝此方向向前
虽然看上去十分混乱,一头雾水。
1.但我们先拆分出蛇头的坐标方位进行分析,起初我们自定义的蛇身长度为length(初始化点亮了三盏灯,length为3),贪吃蛇中led灯坐标都在x[32],y[32]数组里,那么蛇头的坐标对应着就是x[length-1],y[length-1].
2.我们假设蛇头要向左移动一位,起初蛇头位置为(2,3),移动后就是(1,3),x-1,y-0;
以此类推,向右就是x+1,y;向上就是x,y+1;向下就是x,y-1;
3.将改变的数值用flag_x,flag_y表示,那么例如蛇头向左一位则就是
flag_x=1, flag_y=0,
x[[length-1]+flag_x], y[[length-1]+flag_y]
通过改变flag_x和flag_y的值,就可实现上下左右的移动。
4.蛇头的运动有了,蛇身的运动怎么解决,其实十分简单,将蛇身的坐标点都换成它上一个点的坐标即可
例如蛇头改变方向了,蛇头的下一led此时坐标改为蛇头为发生改变时的坐标,以此类推,往返操作,即可达到运动的目的
封装自动运动的函数
void auto_move(void)
{
unsigned char i;
for(i=0;i<(length-1);i++)
{
x[i]=x[i+1];
y[i]=y[i+1];
}
x[length-1]+=flag_x;
y[length-1]+=flag_y;
if(x[length-1]>8)
x[length-1] = 1;
else if(x[length-1]<1)
x[length-1] = 8;
if(y[length-1]>8)
y[length-1] = 1;
else if(y[length-1]<1)
y[length-1] = 8;
delay(500);
}(短暂延时,避免改变过快)
利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇“自动运行函数”相关推荐
- 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇“显示贪吃蛇”
利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇"显示贪吃蛇" 完整的项目链接: https://github.com/linxinloningg/51_chip_ ...
- 【51单片机实验笔记】3. LED点阵的基本控制
目录 前言 硬件介绍 驱动芯片 74HC595芯片 MAX7219芯片 原理分析 软件实现 爱心图片 旋转大风车 滚动日期 螺旋线动画 LED点阵功能函数封装 总结 前言 本章接触的硬件依然与LED息 ...
- 51单片机红外通信及控制LED灯(LCD1602显示)
51单片机红外通信及控制LED灯(LCD1602显示) 大家好,又和大家见面了,离上一次DS18B20传感器的文章已经过去了一个星期了,这期我将给大家带来,基于STC89C52芯片和HS0038红外接 ...
- 利用51单片机+0.96寸iic接口oled显示图片或动图
利用51单片机+0.96寸iic接口oled显示图片或动图 前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片, 这篇将在之前的基础上加以封装一些函数用来显示图片 硬件 ...
- 51单片机入门(2)LED点亮的背后
上一节提到了51单片机开发环境的搭建,这节我们开始正式进入51单片机的学习--点亮LED. 所有的控制类芯片学习的第一个实践就是点亮LED,这是最简单.最基本的操作,但这个实现过程却可能攘括了单片机的 ...
- 利用51单片机统计脉冲个数,即时输出显示
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数. ;最好用汇编语言,加注释,尽量别太复杂.尽量快些哈! ;悬赏分:30 | 解决时间:2011-7-20 19:15 | ; ...
- 利用51单片机制作从左至右再从右制作的的流水灯
利用51单片机制作从左至右再从右制作的的流水灯 简述: 1.打开keil 4,新建工程 2.选择Atmel ,选择AT89C51芯片 3.新建文件另存为,将文件名末尾加上".c" ...
- 用c语言编写振铃检测程序,利用51单片机2进8出的程控交换机C语言源码
这个是利用51单片机加上超长的语音芯片合为一体的2进8出的程控交换机C语言源码 /************************** 6-23日 修改总台来显 ******************* ...
- 利用51单片机演奏《猪猪侠》
今天的目标很明确,那就是我们如何使用51单片机演奏一首音乐. 先听一下演奏效果: 51单片机播放<猪猪侠>音乐(音频) 1.有一个很重要的问题,那就是如何将乐谱转换51单片机的16进制或十 ...
最新文章
- 阿里达摩院实习生立功!何恺明Mask R-CNN精度提升,一半输入数据量就行 | CVPR2020...
- 让我感动的经典台词(zz)
- php数组验证用户名密码,求个php数组验证问题,在线等
- 网页空间 - 概念篇
- asteroids模板 游戏 java_在高级Java游戏中存储全局/静态变量的最佳方法是什么?...
- 生产者消费者_【Java面试】实现生产者消费者模式
- adb如何使用javac编译java程序并且运行
- html基礎之渐变属性(斑马线)
- 适配器模式之备忘录模式
- 记录一次项目中代码大致优化方向
- 解压war包并重新编译成war包
- 使得在虚拟机能复制粘贴 -- Linux安装增强
- php代码写一串新年祝福,新年祝福QQ留言代码_把幸福装的满满的
- win7从服务器拷文件提示错误,windows7无法复制文件提示“一个意外错误使您无法复制该文件”如何解决...
- 2022-2028全球智能户外电视行业调研及趋势分析报告
- 多功能频谱分析仪TFN RMT系列,满足您对频谱分析仪的多种幻想。
- 图片上传被旋转,golang Exif 判断.jepg图片原始信息Orientation方向,并旋转,
- 聊聊我在第三方支付公司的经历
- 以下python注释代码中_以下Python注释代码,不正确的是()_学小易找答案
- 怎么屏蔽还有照片_“朋友,别逼我屏蔽你”:乱象丛生的朋友圈,到此为止吧...