单片机课程设计贪吃蛇说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程实训作品说明书

姓名:李兆基

完成时间:2016年7月3日

一、 作品说明介绍

1. 作品名称:贪吃蛇简易游戏机

2. 作品实现功能:

a) 按上、下、左、右键控制蛇身改变方向;

b) 蛇头与食物碰撞时“吃掉”食物,使蛇身变长; c) 复位键使游戏重新开始;

d) 暂停/继续键可以暂停、继续游戏

3. 选择目的:巩固单片机课程所学知识,真正做到学有所用

二、 作品操作介绍

1. 作品外观图

① ②点阵屏:显示地图、蛇以及食物

③STC12C5A60S2单片机:控制整个作品,可以烧录不同的程序 ④微动开关1:向上的按键,用于改变蛇的方向 ⑤微动开关2:向下的按键,用于改变蛇的方向 ⑥微动开关3:向左的按键,用于改变蛇的方向

⑦ ⑧ ⑨

⑩ ⑪

⑦微动开关4:向右的按键,用于改变蛇的方向

⑧微动开关5:复位按键,按下后游戏复位,重新开始

⑨微动开关6:暂停/继续按键,控制游戏暂停/继续

⑩自锁开关:实现整体的电源总控制(断负)

⑪晶振、电容:用于单片机起振,单片机的最小时钟电路

⑫排针:用于连接电源正负极以及RXD和TXD

⑬电源指示灯:通电时点亮

⑭8个1KΩ电阻:限制电流大小

⑮10个0Ω电阻:做跳线用

2.作品功能介绍及操作说明

a)给游戏机上电

①将电源正极接在排针处标有VCC的位置

②将电源负极接在排针处标有GND的位置

③按下自锁开关完成上电

b)让贪吃蛇改变方向

①按向上键:蛇身向上

②按向下键:蛇身向下

③按向左键:蛇身向左

④按向右键:蛇身向右

c)游戏暂停/继续、复位

①按暂停/继续键:游戏暂停/继续

②按复位键:游戏复位,重新开使

三、作品制作说明

1.电路原理图

2.

元件名称型号数量(个)

单片机STC12C5A60S2 1

单片机底座40引脚 1

点阵屏8*8 2

微动开关5*5 6

晶振12MHz 1

电容30pf 2

电阻1KΩ8

电阻10KΩ 1

电阻0Ω10

自锁开关3*3 1

排针直针4(根)

LED 红色 1

杜邦线1组4(根)

单面挂锡玻纤板

1

洞洞板

10CM*14CM

电池盒 1 3.PCB

a)正面图(见附录1)

b)F5图(见附录2)

c)F6图(见附录3)

四、产品控制顺序

/*******************************************

名称:贪吃蛇简易游戏机

制作人:李兆基

制作时间:2016.6.28

修改时间:2016.7.1 (加入吃食物蛇身变长功能)

2016.7.3 (处理程序兼容细节)

*******************************************/

#include

#include

unsigned char map[16]; //定义一个MAP地图

unsigned char line; //列

unsigned char snake[45][2]; //定义蛇的大小

unsigned char game_reset; //游戏复位

unsigned char foodx,foody; //食物的位置

sbit Key_left=P3^2; //左

sbit Key_up=P3^3; //上

sbit Key_down=P3^4; //下

sbit Key_right=P3^5; //右

sbit Key_start=P3^7; //开始/暂停

sbit Key_reset=P3^6; //复位/****************

按键所对应的位置

***************/

void CreateFood()

{

unsigned char i;

i=0;

RESET:foodx=rand()%6+1;

//rand()函数随即产生食物的横坐标(1~6)

foody=rand()%14+1;

//rand()函数随即产生食物的纵坐标(1~14)

while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44)) //找蛇尾(遍历蛇)

{

if(snake[i][0]==foodx&&snake[i][1]==foody)

goto RESET;

//如果产生的食物在蛇的节点上,则重新生成食物

i++;

}

}

/*********

构造食物

********/

void ClearMap()

{

unsigned char i;

for(i=0;i<16;i++)

map[i]=0x81; //清空地图

map[0]=map[15]=0xff; //构造墙

}

/**********

初始化地图

**********/

void ClearSnake()

{

unsigned char i;

for(i=0;i<45;i++)

snake[i][0]=snake[i][1]=0x00; //清空蛇节点

snake[0][0]=5;

snake[0][1]=10; //构造蛇头

snake[1][0]=5;

snake[1][1]=11;

snake[2][0]=5;

snake[2][1]=12; //构造蛇身

snake[3][0]=44;

snake[3][1]=44; //构造蛇尾

}

/************

相关文档
最新文档