江安县规划和建设局网站佛山建设网站制作
2026/1/29 13:14:16 网站建设 项目流程
江安县规划和建设局网站,佛山建设网站制作,塘厦网站建设,企业不开了网站备案吗基于51单片机贪吃蛇游戏设计( proteus仿真程序设计报告讲解视频#xff09; 仿真图proteus8.17(有低版本) 程序编译器#xff1a;keil 4/keil 5 编程语言#xff1a;C语言 设计编号#xff1a;P24 1主要功能#xff1a; 基于51单片机的贪吃蛇游戏设计 1、采用8*8点…基于51单片机贪吃蛇游戏设计( proteus仿真程序设计报告讲解视频仿真图proteus8.17(有低版本)程序编译器keil 4/keil 5编程语言C语言设计编号P241主要功能基于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编译代码有注释可以结合视频理解代码含义。#includereg51.h// 51单片机头文件#includeintrins.h// 包含空操作指令_nop_()#defineucharunsignedchar// 定义无符号字符类型#defineuintunsignedint// 定义无符号整数类型#defineSNAKE10// 蛇的最大长度#defineTIME20// 显示延时时间#defineSPEED71// 游戏速度控制值// 方向按键定义sbit upP3^0;// 上键sbit downP3^1;// 下键sbit rightP3^2;// 右键sbit leftP3^3;// 左键// 74HC595移位寄存器控制引脚sbit SRCLKP3^6;// 移位寄存器时钟sbit RCLKP3^5;// 存储寄存器时钟sbit SERP3^4;// 串行数据输入// 游戏数据结构uchar x[SNAKE1];// 蛇身和食物的x坐标数组0:食物, 1:蛇头, 2~SNAKE:蛇身uchar y[SNAKE1];// 蛇身和食物的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){usn0;while(usn!0){us0xff;while(us!0){us--;};// 内层循环延时usn--;}MS--;}}/******************************************************************************* * 函数名 : Hc595SendByte * 功能 : 向74HC595发送一个字节的数据 * 参数 : dat - 要发送的数据 * 说明 : 通过串行方式将数据发送到74HC595移位寄存器 *******************************************************************************/voidHc595SendByte(chardat){chara;SRCLK0;// 移位时钟置低RCLK0;// 存储时钟置低// 循环8次发送一个字节for(a0;a8;a){SERdat7;// 取最高位发送dat1;// 左移准备下一位// 产生移位时钟上升沿SRCLK1;_nop_();// 空操作延时_nop_();SRCLK0;}// 产生存储时钟上升沿将移位寄存器内容输出到存储寄存器RCLK1;_nop_();_nop_();RCLK0;}/***************** 主函数 功能游戏主循环控制游戏流程 *****************/完整代码见文章下载链接voidmain(void){// 初始化游戏参数eSPEED;// 初始速度state0;// 初始状态游戏未开始// 主游戏循环while(1){// 检测按键更新方向turnkey();// 游戏初始/结束状态if(state0){// 初始化多余的蛇身位置为无效值100不显示for(i3;iSNAKE1;i){x[i]100;y[i]100;}// 设置食物初始位置x[0]4;// 食物x坐标y[0]4;// 食物y坐标// 初始化蛇身n3;// 初始蛇长头2节身体x[1]1;// 蛇头x坐标y[1]0;// 蛇头y坐标x[2]0;// 第一节身体x坐标y[2]0;// 第一节身体y坐标// 初始化移动方向addx0;// x方向无偏移addy0;// y方向无偏移// 显示初始游戏画面timer0(e);}// 游戏运行状态elseif(state1){// 显示当前游戏画面timer0(e);// 碰撞检测if(knock()){// 游戏结束重置参数eSPEED;// 恢复初始速度state0;// 返回初始状态}// 检查是否吃到食物蛇头位置与食物位置重合if((x[0]x[1]addx)(y[0]y[1]addy)){// 增加蛇身长度n;// 当蛇达到最大长度时重置if(nSNAKE1){n3;// 重置蛇长为初始长度ee-10;// 增加游戏速度减少延时// 隐藏多余的蛇身设置为无效坐标for(i3;iSNAKE1;i){x[i]100;y[i]100;}}// 设置新的食物位置暂时放在蛇尾位置x[0]x[n-2];y[0]y[n-2];}// 移动蛇身从尾部向前更新位置for(in-1;i1;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 安装破解KEILproteus 单片机仿真设计教程KEIL安装破解Proteus元器件查找Proteus安装Proteus简易使用教程单片机学习资料相关数据手册答辩技巧设计报告常用描述鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url资料下载链接可点击P24 8X8点阵贪吃蛇游戏链接: https://pan.baidu.com/s/1rahcHhqpAv2tD13qKJziSw?pwdmegb提取码: megb

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询