news 2026/4/18 20:27:43

普中开发板基于51单片机贪吃蛇游戏设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
普中开发板基于51单片机贪吃蛇游戏设计

基于51单片机贪吃蛇游戏设计( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus8.17(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P24

1主要功能:

基于51单片机的贪吃蛇游戏设计

1、采用8*8点阵作为贪吃蛇游戏的显示装置;

2、贪吃蛇在吃到食物后会变长;

3、贪吃蛇在撞到墙或者撞到身体后将会重新开始游戏;

4、使用独立按键控制贪吃蛇的运动方向。

5、需要在Proteus软件和普中51开发板实现功能验证。

主要硬件 51单片机 8*8点阵 独立按键

(目前仅完全适配普中51-实验板234,其他普中开发板型号需要接线)

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

以下为本设计资料展示图:

2.实物图:

3.仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后贪吃蛇静止不动,需要任意按键按下启动。

独立按键控制贪吃蛇的运动方向,贪吃蛇在吃到食物后会变长。

贪吃蛇在撞到墙或者撞到身体后将会重新开始游戏。

4.程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

#include<reg51.h>// 51单片机头文件#include<intrins.h>// 包含空操作指令_nop_()#defineucharunsignedchar// 定义无符号字符类型#defineuintunsignedint// 定义无符号整数类型#defineSNAKE10// 蛇的最大长度#defineTIME20// 显示延时时间#defineSPEED71// 游戏速度控制值// 方向按键定义sbit up=P3^0;// 上键sbit down=P3^1;// 下键sbit right=P3^2;// 右键sbit left=P3^3;// 左键// 74HC595移位寄存器控制引脚sbit SRCLK=P3^6;// 移位寄存器时钟sbit RCLK=P3^5;// 存储寄存器时钟sbit SER=P3^4;// 串行数据输入// 游戏数据结构uchar x[SNAKE+1];// 蛇身和食物的x坐标数组(0:食物, 1:蛇头, 2~SNAKE:蛇身)uchar y[SNAKE+1];// 蛇身和食物的y坐标数组uchar time,n,i,e,state;// time:延时计数, n:当前蛇长, i:循环变量, e:速度控制, state:游戏状态(0=初始/结束,1=运行)charaddx,addy;// 蛇头移动方向偏移量(x,y方向)/******************** 延时函数 功能:产生指定毫秒的延时 参数:MS - 延时毫秒数 *********************/voiddelay(charMS){charus,usn;while(MS!=0){usn=0;while(usn!=0){us=0xff;while(us!=0){us--;};// 内层循环延时usn--;}MS--;}}/******************************************************************************* * 函数名 : Hc595SendByte * 功能 : 向74HC595发送一个字节的数据 * 参数 : dat - 要发送的数据 * 说明 : 通过串行方式将数据发送到74HC595移位寄存器 *******************************************************************************/voidHc595SendByte(chardat){chara;SRCLK=0;// 移位时钟置低RCLK=0;// 存储时钟置低// 循环8次发送一个字节for(a=0;a<8;a++){SER=dat>>7;// 取最高位发送dat<<=1;// 左移准备下一位// 产生移位时钟上升沿SRCLK=1;_nop_();// 空操作延时_nop_();SRCLK=0;}// 产生存储时钟上升沿(将移位寄存器内容输出到存储寄存器)RCLK=1;_nop_();_nop_();RCLK=0;}/***************** 主函数 功能:游戏主循环,控制游戏流程 *****************/完整代码见文章下载链接voidmain(void){// 初始化游戏参数e=SPEED;// 初始速度state=0;// 初始状态(游戏未开始)// 主游戏循环while(1){// 检测按键(更新方向)turnkey();// 游戏初始/结束状态if(state==0){// 初始化多余的蛇身位置为无效值(100,不显示)for(i=3;i<SNAKE+1;i++){x[i]=100;y[i]=100;}// 设置食物初始位置x[0]=4;// 食物x坐标y[0]=4;// 食物y坐标// 初始化蛇身n=3;// 初始蛇长(头+2节身体)x[1]=1;// 蛇头x坐标y[1]=0;// 蛇头y坐标x[2]=0;// 第一节身体x坐标y[2]=0;// 第一节身体y坐标// 初始化移动方向addx=0;// x方向无偏移addy=0;// y方向无偏移// 显示初始游戏画面timer0(e);}// 游戏运行状态elseif(state==1){// 显示当前游戏画面timer0(e);// 碰撞检测if(knock()){// 游戏结束,重置参数e=SPEED;// 恢复初始速度state=0;// 返回初始状态}// 检查是否吃到食物(蛇头位置与食物位置重合)if((x[0]==x[1]+addx)&(y[0]==y[1]+addy)){// 增加蛇身长度n++;// 当蛇达到最大长度时重置if(n==SNAKE+1){n=3;// 重置蛇长为初始长度e=e-10;// 增加游戏速度(减少延时)// 隐藏多余的蛇身(设置为无效坐标)for(i=3;i<SNAKE+1;i++){x[i]=100;y[i]=100;}}// 设置新的食物位置(暂时放在蛇尾位置)x[0]=x[n-2];y[0]=y[n-2];}// 移动蛇身(从尾部向前更新位置)for(i=n-1;i>1;i--){x[i]=x[i-1];// 当前位置等于前一个位置y[i]=y[i-1];}// 更新蛇头位置(根据移动方向)x[1]=x[2]+addx;y[1]=y[2]+addy;}}}

5.设计报告

8261字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

6.设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、烧录工具

8、讲解视频

9、实物图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接(可点击):
P24 8X8点阵贪吃蛇游戏
链接: https://pan.baidu.com/s/1rahcHhqpAv2tD13qKJziSw?pwd=megb
提取码: megb

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 14:24:02

WeClone实战:从零搭建电商平台克隆

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个电商平台克隆工具&#xff0c;允许用户输入现有电商网站URL或功能描述&#xff0c;自动生成具有类似功能的完整电商系统。包括商品展示、购物车、支付接口、用户管理等核心…

作者头像 李华
网站建设 2026/4/8 21:09:48

1小时打造定制版Furmark:满足特殊测试需求

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Furmark定制化原型工具&#xff0c;允许用户&#xff1a;1. 选择不同的渲染着色器 2. 自定义测试时长和分辨率 3. 添加硬件传感器数据采集 4. 修改压力测试算法 5. 导出定制…

作者头像 李华
网站建设 2026/4/15 20:19:45

AI教你3种方法快速查询电脑开机时间

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Python脚本&#xff0c;使用psutil库自动检测电脑的开机时间&#xff0c;并将结果格式化为易读的日期和时间。脚本应包含错误处理&#xff0c;确保在不同操作系统&#xff…

作者头像 李华
网站建设 2026/4/18 9:16:40

快速验证UI设计:文字截断原型生成器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个可交互的UI原型生成器&#xff0c;允许用户通过参数配置&#xff1a;1) 容器宽度 2) 字体大小 3) 行数限制 4) 省略号颜色。实时生成预览并输出对应的CSS代码。要求包含预设…

作者头像 李华
网站建设 2026/4/16 15:24:50

零基础入门:用bpmn-js画你的第一个流程图

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式bpmn-js新手教程&#xff0c;包含&#xff1a;1&#xff09;嵌入式代码编辑器显示基础配置 2&#xff09;分步指引构建请假审批流程&#xff08;开始事件→员工申请→…

作者头像 李华
网站建设 2026/4/18 14:20:29

零基础玩转NVIDIA容器工具包:从安装到第一个AI容器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式学习教程&#xff0c;包含&#xff1a;1) 分步检查系统环境&#xff1b;2) 安装NVIDIA Container Toolkit的自动化脚本&#xff1b;3) 运行测试容器的简单UI界面&…

作者头像 李华