ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:93.38KB ,
资源ID:22043213      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22043213.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计贪吃蛇说明书Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计贪吃蛇说明书Word格式.docx

1、微动开关4:向右的按键,用于改变蛇的方向微动开关5:复位按键,按下后游戏复位,重新开始微动开关6:暂停/继续按键,控制游戏暂停/继续自锁开关:实现整体的电源总控制(断负)晶振、电容:用于单片机起振,单片机的最小时钟电路排针:用于连接电源正负极以及RXD和TXD电源指示灯:通电时点亮8个1K电阻:限制电流大小10个0电阻:做跳线用2. 作品功能介绍及操作说明a) 给游戏机上电1 将电源正极接在排针处标有VCC的位置2 将电源负极接在排针处标有GND的位置3 按下自锁开关完成上电b) 让贪吃蛇改变方向1 按向上键:蛇身向上2 按向下键:蛇身向下3 按向左键:蛇身向左4 按向右键:蛇身向右c) 游戏

2、暂停/继续、复位1 按暂停/继续键:游戏暂停/继续2 按复位键:游戏复位,重新开使三、 作品制作说明1. 电路原理图2. 作品原件清单元件名称型号数量(个)单片机STC12C5A60S21单片机底座40引脚 点阵屏8*82微动开关5*56晶振12MHz电容30pf电阻1K810K010自锁开关3*3排针直针4(根)LED红色杜邦线1组洞洞板单面挂锡玻纤板10CM*14CM电池盒3. PCB图a) 正面图(见附录1)b) F5图(见附录2)c) F6图(见附录3)四、 产品控制顺序/*名 称:制作人:李兆基制作时间:2016.6.28修改时间:2016.7.1 (加入吃食物蛇身变长功能) 201

3、6.7.3 (处理程序兼容细节)*/#includestdlib.hunsigned char map16; /定义一个MAP地图unsigned char line; /列unsigned char snake452; /定义蛇的大小 unsigned char game_reset; /游戏复位 unsigned char foodx,foody; /食物的位置 sbit Key_left=P32; /左sbit Key_up=P33; /上sbit Key_down=P34; /下sbit Key_right=P35; /右sbit Key_start=P37; /开始/暂停sbit K

4、ey_reset=P36; /复位/*按键所对应的位置*/void CreateFood() unsigned char i; i=0; RESET:foodx=rand()%6+1; /rand()函数随即产生食物的横坐标(16) foody=rand()%14+1; /rand()函数随即产生食物的纵坐标(114) while(!(snakei0=snakei1&snakei0=44) /找蛇尾(遍历蛇) if(snakei0=foodx&snakei1=foody) goto RESET; /如果产生的食物在蛇的节点上,则重新生成食物 i+; /*构造食物*/ void ClearMap

5、() for(i=0;ifoodx; /获取食物的横坐标 mapfoody|=i; /将其横坐标和纵坐标对应的点显示在地图上snakei0=44) mapsnakei1|=0x80snakei0; /将蛇节点全部显示在地图上/*将蛇以及食物显示在地图上*/void Move(unsigned char fx) /fx参数(0为上,1为下,2为左,3右) unsigned char i,snakewx,snakewy; snakewx=snakewy=i=0;snakei0=44)i+; snakewx=snakei-10; snakewy=snakei-11; /扫描蛇节点并且得到尾巴的位置(

6、横纵坐标) switch(fx) case 0: while(! /扫描蛇节点 得到节点数 for(i-;i0;i-) snakei0=snakei-10; snakei1=snakei-11; /后节点朝着前节点方向移动 snake00-; /移动蛇头 break; case 1: /扫描蛇节点 得到节点数 /后节点朝着前节点方向移动 snake00+; case 2: snake01-; case 3: snake01+; if(snake00=foodx&snake01=foody) /蛇吃食物(蛇头的坐标与食物坐标重合) while(! snakei0=snakewx; snakei1

7、=snakewy; snakei+10=snakei+11=44; /重新添加(定义)蛇尾 CreateFood(); /创建食物/*蛇的移动(按键的方向改变)*/void delay(unsigned int i) unsigned int j; while(i-) for(j=600;jj-);/*延时函数(接近与1毫秒) */void donghua(void)unsigned int i; if(ii); else P1=0xff; /第一块点阵屏亮 P2=(0x80(i-8); P0=0xff; delay(20); P1=P2=P0=0x00; for(i=0; P2=(0x01

8、else P1=(0x01 /第二块点阵屏亮/*开机动画*/bit IsOver() game_reset=0; for(i-; if(snake00=snakei0&snake01=snakei1) game_reset=1; /遍历蛇节点是否蛇头和蛇身重合 if(snake00=0|snake00=7|snake01=0|snake01=15) /判断蛇头是否撞墙 game_reset=1; return game_reset;判断蛇的状态(死亡条件)*/void init(void) P0M0=0xff; P0M1=0x00; /PO为强推模式 TMOD=0X01; /设定时/计数器方式

9、 EA=1; /开启中断 ET0=1; /开启定时计数器0 TH0=(65536-1000)/256; TL0=(65536-1000)%256; /设置计数初值为1毫秒 TR0=1; /开启定时/计数软开关 /初始化地图 ClearSnake(); /初始化蛇初始化函数void main(void) unsigned char fx,i,newfx; /定义方向,新方向,以及变量i unsigned char isStart; /开始/暂停变量 newfx=fx=2; /初始化方向 donghua(); delay(100); i=0; isStart=1; init(); while(1)

10、 for(i=0;20; delay(10); if(fx!=1&!Key_up&isStart) /蛇向下移动则向上按键无效 newfx=0; =0&Key_down&isStart) /蛇向上移动则向下按键无效 newfx=1;=3&Key_left&isStart) /蛇向左移动则向右按键无效 newfx=2; =2&Key_right&isStart) /蛇向右移动则向左按键无效 newfx=3; /按键改变newfx,默认向fx移动 if(!Key_start) delay(20); if(! if(isStart=1)isStart=0; else if(isStart=0)isS

11、tart=1; /暂停/继续改变isStart状态 while(!Key_start); Key_reset) game_reset=1;Key_reset); if(game_reset)return; /复位 isStart)i-; /暂停状态时所执行的死循环 if(fx=0&newfx=1|fx=2&newfx=3) newfx=fx; fx=newfx; /方向冲突时按新方向移动,避免按的太快 Move(fx); /移动 while(IsOver() /当蛇死亡只能激活复位按钮 SnakeToMap(); /将蛇显示在地图 /*主函数*/void display(void) interrupt 1 TR0=0; /关闭软开关 /计数赋值 if(lineline); /选列 else P1=0xff; P2=(0x80(line-8); /选列 /两块点阵屏的对接 P0=mapline; /送行 line+; if(line=16)line=0; /开启软开关显示函数

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1