单片机课程设计(贪吃蛇)讲解.doc
文本预览下载声明
单片机课程设计报告
(贪吃蛇)
院 校:
专 业:
班 级:
姓 名:
学 号:
指导老师:
设计日期:
选题的背景与意义二、研究的基本内容与拟解决的主要问题
贪吃蛇初始化子程序流程图
贪吃蛇运行子程序是整个程序设计的核心,首先由系统检测是否有按键按下,确定有按键按下后,外部中断程序自动执行,开始扫描矩阵键盘,得到键值,根据键值判断贪吃蛇要走的方向。在游戏运行的期间,系统不断检测蛇是否死亡,蛇是否已经最长,蛇是否吃到了食物。若蛇已经死亡,则蛇的死亡标记位被置位,跳转到死亡界面,检测是否有按键按下,有就跳转到游戏开始界面,重新开始游戏,无则等到有任意键按下。游戏的速度控制由延时程序决定,若延时程序延时短,则蛇移动得快,若延时比较长,则蛇移动得慢。若蛇已经吃到食物,则在放食物的原来的坐标会消除显示,重新读取计数器的值,通过计算得到要放置食物的坐标,在该坐标上显示食物。
1.准备工作
认真详细的阅读任务书,深刻了解主要的内容和要求。
查阅与贪吃蛇相关的书籍,了解贪吃蛇的工作原理。
了解历年全国大学生电子竞赛有关贪吃蛇的资料。
根据控制要求初步确定所使用的元器件。
2. 实施步骤
明确控制要求,绘制电路连接图。
参考文献,检查电路图的正确性。
根据电路连接图焊接电路板,制作贪吃蛇模型。
分析操作流程,绘制程序流程图。
编写程序代码。
运用电脑软件初步对程序进行调试。
配合贪吃蛇硬件部分,并完善功能,达到设计要求。
3.设计方案
(1)8*8点阵方案
8X8点阵LED比LCD128X64结构更简单,不需要任何的指令集,即对I/O口直接输出可以使用。若选用8X8点阵LED显示屏,8X8的 led 点阵能使用的范围很少,对增强游戏的功能方面加以限制,显然有点大,不美观,但取材容易。
(2)电源单元方案
采用usb供电,通过usb能使51单片机更加稳定在正常的工作范围内使得51更好的工作。
(3)方向单元方案
利用方向按键来引导蛇的移动方向到达用户所指定的地点。
三:设计流程(重要)
1:原理图(摘自互联网)
2:单片机使用(如图)
这次试验用到了P0.P2.P3口。
P0,P2口作为点阵的输入口
P3.4 P3.5 P3.6 P3.7作为上下左右下图为源程序控制定义
3:原件清单
4:关于焊接方面的问题和图解
电源
开关
3源程序
#include reg51.h
#define uchar unsigned char
#define SNAKE 20 //最大长度
#define TIME 50 //显示延时时间
#define SPEED 40 //速度控制
//#define keyenable 1
sbit keyenable=P3^6; //方向使能
/*sbit keyx=P0^1; //左右
sbit keyy=P0^2; //上下 */
//sbit up=P0^0;
sbit up=P3^4; //down
sbit down=P3^5;
sbit right=P3^6;
sbit left=P3^7;
uchar x[SNAKE+1];
uchar y[SNAKE+1];
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;in;i++)if((x[1]==x[i])(y[1]==y[i]))k=1; //撞自己
return k;
}
显示全部