基于51单片机贪吃蛇小游戏

news2024/11/23 22:59:47

基于51单片机贪吃蛇小游戏

(仿真+程序)

功能介绍

具体功能:

1.用74HC573驱动点阵显示游戏画面;

2.上电后贪吃蛇会自动寻食;

3.按下四个按键中的任何一个就手动寻食了;

​演示视频:

基于51单片机贪吃蛇小游戏 

添加图片注释,不超过 140 字(可选)

程序

#include <reg51.h>
/***公众号:木子单片机****
************************************/
#define uchar unsigned char
#define SNAKE 20                 //最大长度
#define TIME 50                 //显示延时时间
#define SPEED 71               //速度控制


sbit keyenable=P3^6;			//方向使能
sbit up=P3^3;       //down
sbit down=P3^1;
sbit right=P3^2;
sbit left=P3^4;
uchar x[SNAKE+1]; // 声明20个
uchar y[SNAKE+1];   

uchar guozix[20]={4,5,7,4,3,6,1,0,3,6,2,1,0,4,5,7,0,6,1,7};
uchar guoziy[20]={4,7,1,0,2,1,1,6,3,2,4,3,5,1,5,3,1,2,7,0};
       
uchar time,n,i,e;              //延时时间,当前蛇长,通用循环变量,当前速度		
char addx,addy;                //位移偏移量


/********************
延时程序
*********************/
void delay(char MS)
{
	char us,usn;
	while(MS!=0)
	{
		    usn = 0;
			while(usn!=0)
			{
				us=0xff;
				while (us!=0){us--;};
				usn--;
			}
		    MS--;
	}
}
/*******************************************
判断碰撞
*******************************************/
bit knock()
{      
        bit k;
		k=0;
		if(x[1]>7||y[1]>7)
		{
		  k=1;                             //撞墙
		}
		for(i=2;i<n;i++)
	  	{
		   if((x[1]==x[i])&(y[1]==y[i]))
		   {
		      k=1;  //撞自己
		   }
		}
		return k;
}
/*****************
上下左右键位处理
*****************/
void turnkey()// interrupt 0 using 2  
{//up=1;
   if(keyenable)
   {
		if(left) // 控制左移动
		{
		   addy=0;
	   	  if(addx!=1)
		    addx=-1; 
		  else 
		    addx=1;
		}
		if(right)  // 控制右移动
		{
		   addy=0;
	 	   if(addx!=-1)
		    addx=1; 
		   else 
		    addx=-1;
		
		}
		if(up)		// 控制上移动
		{
		   addx=0;
		   if(addy!=-1)
	   	     addy=1;
		   else 
		     addy=-1;
		 }
		if(down)	  // 控制下移动
		{  
		   addx=0;
		   if(addy!=1)
		     addy=-1; 
		   else 
		    addy=1;
		}

    }
}
/*****************
乘方程序
*****************/
uchar mux(uchar temp) 
{
		if(temp==7)return 128;
		if(temp==6)return 64;
		if(temp==5)return 32;
		if(temp==4)return 16;
		if(temp==3)return 8;
		if(temp==2)return 4;
		if(temp==1)return 2;
		if(temp==0)return 1; // 在这个的范围之内
		return 0;
}
/*****************
显示时钟 显示程序
*****************/
void timer0(uchar k)
{
      while(k--)
     {  
	      for(i=0;i<SNAKE+1;i++)
		 {

		   // 显示具体的点了
		   P2=mux(x[i]);	// 每个都在变化的
		   P0=255-mux(y[i]);



		   turnkey();                     //上下左右键位处理
		   // 按键处理
		   delay(TIME);                   //显示延迟
		   P2=0x00;
		   P0=0xff;
		 }
     }
} 

硬件设计

使用元器件:

单片机:STC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用proteus7.8和proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

        资料获取请关注同名公众号,全部资料包括仿真源文件 、程序(含注释)等。具体内容如下,全网最全! !

 

可以关注下方公众号!

点赞分享一起学习成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1829728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】(基础篇十三) —— 联结

联结 本文介绍什么是联结&#xff0c;为什么要使用联结&#xff0c;如何编写使用联结的SELECT语句。介绍如何对被联结的表使用表别名和聚集函数。 SQL最强大的功能之一就是能在数据检索查询的执行中联结&#xff08;join&#xff09;表。联结是利用SQL的SELECT能执行的最重要…

CloudFlare 里如何设置参数传递的 301 重定向

自从接到【哈哈,笑死我了都,黔驴技穷了都!】一文里提到的代维客户订单,这两天明月就一直在加班加点的重新部署着客户的四个服务器,因为有三个都是 WordPress+WooCommerce 式的电商平台,很是有些费时费力,好在现在基本都搞定了,剩下的就是些细节方面的优化、调整了。期间…

Java - IDEA在debug时怎么复制JSONObject或JSONArray的值

问题 调试代码时&#xff0c;想复制一个接口的请求参数&#xff0c;因为是JSONObject类型&#xff0c;不能像其他基本类型一样&#xff0c;直接复制出所有结果。 复制只能复制size 0出来。 要是一个个key value可太麻烦了... 方法 右键参数 弹出的框中&#xff0c;可以执行…

创建comfyui自定义节点

参考 https://github.com/liubai-liubai/ComfyUI-ImgSeg-LB/tree/main https://blog.styxhelix.life/?p33 安装 不需要安装任何其他依赖文件&#xff0c;只需要把0x_erthor_node文件夹复制到custom_nodes文件夹下&#xff0c;就能安装成功。 a1&#xff1a;展示了代码结构&…

rclone 上传资料到 onedrive 遇到限速问题解决

原因分析 可能和脚本参数设置有关系,我的参数是: rclone copy "F:\阿里云盘\6666\局域网" "od:影视" --ignore-existing -u -v -P --transfers20 --ignore-errors --buffer-size128M --check-first --checkers10 --drive-acknowledge-abuse差不多8G大小的…

基于STM32和人工智能的智能气象站系统

目录 引言环境准备智能气象站系统基础代码实现&#xff1a;实现智能气象站系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能气象管理与优化问题解决方案与优化收尾与总结 1. 引言 随着气象科技的进步&#xff0c;智能…

tokenization(二)子词切分方法

文章目录 概述BPE构建词表词元化代码实现 WordPieceUnigram估算概率&#xff08;E&#xff09;删除词元&#xff08;M&#xff09; 参考资料 概述 接上回&#xff0c;子词词元化&#xff08;Subwords tokenization&#xff09;是平衡字符级别和词级别的一种方法&#xff0c;也…

【Java】已解决java.lang.NoClassDefFoundError异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.NoClassDefFoundError异常 一、问题背景 java.lang.NoClassDefFoundError 是 Java 运行时环境&#xff08;JRE&#xff09;在尝试加载某个类时&#xff0c;但没有找到…

【Java】已解决:Java.lang.OutOfMemoryError: GC overhead limit exceeded

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 问题背景 java.lang.OutOfMemoryError: GC overhead limit exceeded 是Java虚拟机&#xff08;JVM&#xff09;在运行时遇到的一种内存溢出错误。这种错误通常发生在应用程序的堆内存&#xff08;Heap Memor…

异或运算的原理以及应用

异或&#xff08;XOR&#xff09;是计算机科学和数字电路中常用的运算之一。异或运算符通常用符号“⊕”或“^”表示&#xff0c;它有着简单而独特的性质&#xff0c;使其在数据加密、错误检测与纠正等多个领域得到了广泛的应用。在网络上我们传输的每一比特数据都经过了异或运…

【深度学习量化交易1】一个金融小白尝试量化交易的设想、畅享和遐想

关注我的朋友们可能知道&#xff0c;我经常在信号处理的领域出没&#xff0c;时不时会发一些信号处理、深度学习科普向的文章。 不过算法研究久了&#xff0c;总想做一些更有趣的事情。 比如用深度学习算法赚大钱。。毕竟有什么事情能比暴富更有意思呢。 一、神经网络与彩票…

嵌入式复古游戏项目开发与实现

大家好,今天看到一个火柴盒项目,非常的小巧,分享给大家,感兴趣的话,可以复刻一个玩一玩。 MicroByte 是一款微型主机,能够运行 NES、GameBoy、GameBoy Color、Game Gear 和 Sega Master 系统的游戏,所有元器件都设计在这 78 x 17 x 40 mm 的封装中。尽管成品尺寸很小,但…

探索AI创新的前沿——从零开始学习和运用SpringAI

1.SpringAI介绍 SpringAI是AI工程师的一个应用框架&#xff0c;它提供了一个友好的API和开发AI应用的抽象&#xff0c;旨在简化AI应用的开发工序。 目标是将可移植性和模块化设计等设计原则应用于AI领域的Spring生态系统&#xff0c;并将POJO作为应用程序的构建块推广到AI领域…

Java语法和基本结构介绍

Java语法和基本结构是Java编程的基础&#xff0c;它决定了Java代码的书写方式和程序的结构。以下是Java语法和基本结构的一些关键点&#xff1a; 1.标识符和关键字&#xff1a;Java中的标识符是用来标识变量、函数、类或其他用户自定义元素的名称。关键字是预留的标识符&#x…

文章解读与仿真程序复现思路——电工技术学报EI\CSCD\北大核心《计及台风时空特性和灵活性资源协同优化的配电网弹性提升策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

树的基本概念

树(Tree) "树"这种数据很像现实生活中的“树”&#xff0c; 这里的每个元素我们叫做“节点” 用来连线相邻节点之间的关系&#xff0c;我们叫做“父子关系” A节点就是B节点的父节点&#xff0c;B节点是A节点的‘子节点’B&#xff0c;C&#xff0c;D这三个节点的…

Dockerfile 自定义镜像

大家好 , 今天我要和大家分享一个现代软件开发中不可或缺的工具 - Docker . 在这个快速发展的技术时代 , 我们经常面临着应用部署的复杂性、环境差异以及不同操作系统之间的兼容性问题 . 这些问题不仅消耗大量时间 , 还可能导致项目延期和成本增加 . Docker 的出现解决了我们在…

利用stream软件工具免费下载视频号视频,亲测可长期使用!

今天来说说stream软件工具下载视频号视频的工具&#xff0c;也是全网唯一利用手机下载视频号的视频方法&#xff01;经过自己的研究发现,互联网上80%都不知道的下载方法&#xff01; stream 网络数据流 stream是通过数据流可查看平台给服务器发送了什么请求&#xff0c;要服务…

BetterZip 5软件详细安装步骤(最新版软件下载)

​BetterZip是一款功能强大的Mac解/压缩软件&#xff0c;可以满足用户对文件压缩、解压、加密和保护等方面的需求。以下是关于BetterZip软件的主要功能、特点和使用方法的详细介绍&#xff0c;以及对其用户友好度、稳定性和安全性的评价。 安 装 包 获 取 地 址: BetterZip 5-…

混淆矩阵-召回率、精确率、准确率

混淆矩阵 1 混淆矩阵2 混淆矩阵指标2.1 准确率2.2 精确率2.3 召回率2.4 特异度2.4 假正率2.5 假负率2.6 F1 分数 3 总结 1 混淆矩阵 混淆矩阵是一种用于评估分类模型性能的重要工具。它通过矩阵形式清晰地展示了模型对样本进行分类的结果&#xff0c;帮助我们理解模型在不同类…