毕设项目分享 单片机贪吃蛇游戏(AT89C51)

51单片机游戏(贪吃蛇)

一、电路设计

此电路由AT89C51最小系统、74HC595位移缓存器、8*8点阵LED屏和按键组成。
74HC595位移缓存器
74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK
的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。
在这里插入图片描述

符号引脚描述
Q0~Q7第15脚,第1-7脚8位并行数据输出
GND第8脚
Q7’第9脚串行数据输出
/MR第10脚主复位(低电平有效)
SH_CP第11脚数据输入时钟线
ST_CP第12脚输出存储器锁存时钟线
/OE第13脚输出有效(低电平有效)
DS第14脚串行数据输入
VCC第16脚电源

二、运行结果

在这里插入图片描述
在这里插入图片描述

三、部分代码


#include "config.h"

static struct Food
{
	unsigned char x;	// 食物的横坐标
	unsigned char y;	// 食物的纵坐标
//	unsigned char yes;
}food;	// 食物结构体

struct Snake
{
	char x[SNAKE_Max_Long];
	char y[SNAKE_Max_Long];
	unsigned char Long;		// 蛇的长度
	unsigned char Life;		// 蛇的生命
//	unsigned char Score;	// 蛇的分数,本例中没使用
	unsigned char Level;	// 蛇的等级
	unsigned char Dir;		// 蛇移动方向
}snake;	// 蛇结构体

void startSnake()
{
	uchar i=0;
	initSnake();
	while(snake.Life)
	{
		changeDir(keyValue);
		
		// 蛇运行的速度,由speedLevel决定
		if(tCount >= speedLevel)
		{
			tCount=0;
			runSnake();
		}
			
		// 限定蛇活动范围,超范围就dead
		if((snake.x[0]>(WIDTH-1)) || (snake.x[0]<0) || (snake.y[0]>(LENGTH-1)) || (snake.y[0]<0))
		{
			snake.Life=0;	
			snake.Level=1;
			speedLevel=25;
			keyVal=right;	
		}
		// 蛇自杀检测
		for(i=4; i<=snake.Long; i++)
		{
			if(snake.x[i-1]==snake.x[0] && snake.y[i-1]==snake.y[0])
			{
				snake.Life=0;
				snake.Level=1;
				speedLevel=25;
				keyVal=right;	
			}
		}
		
		// 等级越高速度越快
		if(snake.Long >= SNAKE_Max_Long)
		{
			delayMs(500); // 延一下时
			initSnake();
			speedLevel-=5;
			keyVal=right;			
			if(++snake.Level > 5)
			{
				snake.Level=1;
				speedLevel=25;						
			}
			tCount=0;
		}
		drawSnake();
	}
}

项目获取:

https://gitee.com/feifei1122/simulation-project

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值