仿真版本:Proteus8.6及以上版本
程序编译:Keil5 C51
编程语言:C语言
设计编号:【Z05】
1. 简介
本文提出了一种基于51单片机的贪吃蛇设计。本系统由AT89C51单片机为控制核心,制作一个8*8点阵的贪吃蛇游戏,通过LED点阵屏为载体显示数据,并用四个输入端表示四个控制键(上下左右)。系统硬件部分由AT89C51片机,8*8点阵屏,4个按键,软件部分在keil环境下用c51语言编写,包括游戏初始蛇的段数,以及障碍墙壁,游戏结束时自动复位。
2. 主要功能
a.支持8*8点阵显示移动轨迹。
b. 支持按键实现启停、上下左右移动。
c. 支持蜂鸣器显示报警信息。
d. 支持数码管显示分数。
3. 源程序(Keil5)
本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。
//定义方向
sbit left=P3^3; //左
sbit down=P3^4; //下
sbit right=P3^5; //右
sbit up=P3^6; //上
unsigned char x[SNAKE+1]; //蛇身的坐标 行
unsigned char y[SNAKE+1]; //蛇身的坐标 列
unsigned char time,n,i,e; //延时时间,当前蛇长,通用循环变量,当前速度
char addx,addy; // 移动方向,同直角坐标系,addx为横向,addy为纵向
bit again ;//再次产生果实变量,
//延时程序
void delay(char MS)
{
while(MS--)
;
}
void delay_1ms(uint xms)//延时函数,有参函数
{
uint x,y;
for(x=xms;x>0;x--)
for(y=124;y>0;y--);
}
//判断碰撞
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()
{
if(right==0) {addy=0; if(addx!=-1) addx=1; else addx=-1;}
if(left==0) {addy=0; if(addx!=1) addx=-1; else addx=1;}
if(down==0) {addx=0; if(addy!=1) addy=-1; else addy=1;}
if(up==0) {addx=0; if(addy!=-1) addy=1; else addy=-1;}
}
void score(unsigned char j)
{
if(j<40)
{
// P1=tab1[j%10];
// gw=1;
delay(TIME+10) ;
// gw=0;
// P1=tab2[j/10];
// sw=1;
delay(TIME+10);
// sw=0;
}
}
//判断具体的亮点
char mux(unsigned char 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;
}
4. 仿真proteus8.6
本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
仿真界面:
5. 设计报告
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
6. 资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。
7. 资料获取链接
百度网盘下载链接:【Z05】百度网盘下载链接
更多单片机仿真设计合集:单片机仿真设计合集