单片机打地鼠游戏设计论文

上传人:cl****1 文档编号:476195148 上传时间:2024-01-13 格式:DOC 页数:14 大小:1.32MB
返回 下载 相关 举报
单片机打地鼠游戏设计论文_第1页
第1页 / 共14页
单片机打地鼠游戏设计论文_第2页
第2页 / 共14页
单片机打地鼠游戏设计论文_第3页
第3页 / 共14页
单片机打地鼠游戏设计论文_第4页
第4页 / 共14页
单片机打地鼠游戏设计论文_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机打地鼠游戏设计论文》由会员分享,可在线阅读,更多相关《单片机打地鼠游戏设计论文(14页珍藏版)》请在金锄头文库上搜索。

1、单片机与嵌入式系统作品设计报告专业: 电子信息科学与技术学生姓名: xxxxxxxxxxxxxxxxxxxxxxx 学号: 201108051010,21,24 指导教师: 杨宝亮完成日期:2013 年 12 月 28 日目录1 设计任务和性能指标.3 1.1 设计任务.错误!未定义书签。2 设计方案.32.1 任务分析. 32.2 方案设计. 33 系统软件设计.53.1 LED 的随机闪亮系统.53.2 按键比较系统. 53.3 数码管显示系统.53.4 LED 灯与按键比较设图.53.5 定时器 0 及中断响应.64 仿真及性能分析.64.1 仿真结果图. 64.2 仿真结果与分析. 6

2、 5 心得体会.7 参考文献.9 附录 1 程序清单.91 设计任务1.1 设计任务利用单片机完成打地鼠的程序设计1. 基本要求(1) 将LED灯的随机状态表示出来(2) 将按键赋予对应的数值(3) 做出LED灯亮后的延时(4) 能够自己输入生命值和随机次数并在数码管上显示(5) 当随机LED灯亮后,按键赋予的值与之比对正确后加一分错误建生减值(6) 当生命值为零时程序停止并显示分数2 设计方案2.1 任务分析模拟打地鼠就是使用单片机来控制一些 LED 、按键和数码管,模拟真实打地鼠场景,分数和生命值显示时间等。2.2 方案设计1.硬件方案根据设计的要求可知,系统的硬件原理框图如图 5.2 所

3、示。图 5.2 系统的硬件原理框图单片机可选用 AT89C51,它与 8051 系列单片机全兼容,但其内部带有 4KB 的 FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用 2 个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的 IO 口不够用时,可以考虑扩展 8255 或 8155 满足系统的要求。2. 软件方案根据设计要求,程序框图如图 5.3 所示。软件可由汇编语言完成,也可由 C 语言完成。软件设计可以分为以下几个功能模块:主程序:初始设置 LE

4、D 显示及键盘判断和数码管显示。计时程序模块:延时程序显示程序模块:完成 16 个发光二极管和 4 个 LED 数码管的显示驱动。键盘扫描程序模块:根据随机 LED 灯的显示判断按键的按下。主程序流程图3 系统软件设计3.1:LED 的随机闪亮系统,通过 LED 随机亮灭来模拟地鼠的随机状态。通过随机函数选取随机数,导入单片机让 LED 灯能够随机闪亮。3.2:按键比较系统,通过先给按键赋予初值,然后通过 LED 的亮灯的序号与之比对是否是对应的 LED 得分按键3.3:数码管显示系统,比较过后通过数码管来显示的分值与生命值。通过先打开位数开关,然后倒入显示的数来表示生命值与分值3.4:LED

5、 灯与按键比较设计流程图3.5:定时器0 及中断响应4.仿真与性能分析4.1 仿真结果图5.2 仿真结果当通过数码管赋予生命值与随机次数后(第一个数码管为生命值,后三位为次数),LED灯开始随机闪亮。当按下开始对应的键后,数码管后三位开始显示分数。当生命值(英译:Health Point )为零时或者随机次数为零时结束并显示最后得分。开始赋予生命初值 3 与随机次数 10过程结果5 心得体会这次单片机课程设计历时三个星期的时间,在这三个星期里我们体验了从设计、画板、编程到调试的整个过程,让我们小小的体验了一次工程师的感觉。计划好设计方案后就开始画电路图,画好就开始进一步的确认。确认电路图无误后

6、就开始依照设计流程图设计学出对应的程序,其中最大的问题就是随机函数的调用不知道如何去写,于是我们开始上网查找资料,几次试验后终于写出了随机函数成功的让了 LED 灯随机的亮了起来,接下来的按键对比与数码管的显示就比较好了,几次调试后也能后很好的工作。然后将几个板块最合在一起,修修改改后让他完美的结合在一起。这三周的时间说轻松也不轻松,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。更重要的是通过这一次切身实践,才使我们真正将理论与实际

7、结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。而这些才是我们作为一名工科学生最宝贵的财富。参考文献百度随机函数的调用附录 1 程序清单#include#include #include #define uchar unsigned char uchar code led=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0x0f,0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,0x7f,0xff; uchar code table=0x3

8、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; uchar code num= 0xe0,0xd0,0xb0,0x70; int n=0,m=20,a,b,c,d,k,score,j; int button=16;void DelayTime_10ms(unsigned int DelayValue) unsigned int a,b; for(a=0;aDelayValue;a+) for(b=0;b1827;b+); voidlightseg()int i,j; for(i=0;i25;i+) for(j=0;j1;j+)P2=num3;P0

9、=tablea;DelayTime_10ms(1);P2=0xff;P2=num2;P0=tableb;DelayTime_10ms(1);P2=0xff; P2=num1;P0=tablec;DelayTime_10ms(1);P2=0xff;P2=num0;P0=tabled;DelayTime_10ms(1);P2=0xff; voidlightseg_0()P2=num3;P0=tablea;DelayTime_10ms(1);P2=0xff;P2=num2;P0=tableb;DelayTime_10ms(1);P2=0xff; P2=num1;P0=tablec;DelayTime_10ms(1);P2=0xff;P2=num0;P0=tabled;DelayTime_10ms(1);P2=0xff; void butt() int i=1; unsigned char Temp=0; while(i)lightseg_0(); P3=0xfe;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0)DelayTime_10ms(1);P3=0xfe;Temp=P3; Temp=Temp&0xf0; if(Temp!=0xf0) switch(Temp) case 0xe0:button

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号