使用STC89C52单片机设计打地鼠游戏机

版权申诉
5星 · 超过95%的资源 2 下载量 154 浏览量 更新于2024-06-27 收藏 576KB DOC 举报
"这篇文档是关于使用STC89C52单片机进行打地鼠游戏机课程设计的详细报告。文档涵盖了从项目概述、系统设计到具体实现的各个环节,旨在通过单片机实现一个简易但有趣的打地鼠游戏设备。" 在【标题】中提到的"单片机课程设计-打地鼠.doc"是一个关于使用单片机进行打地鼠游戏设计的学习项目。这个项目基于STC89C52单片机,这是一种广泛应用的8位微控制器,具有8KB的在系统可编程Flash存储器,适用于各种嵌入式控制应用。 【描述】中提到了打地鼠游戏的普及以及其简单的操作方式,通过几个按键就能带来娱乐体验。游戏的规则是显示特定位置后,玩家需快速按下相应位置的按键。这种规则在单片机上易于实现,因为它具有强大的控制功能和灵活的编程能力。 文档的关键技术点包括: 1. STC89C52单片机:作为游戏机的核心控制器,负责游戏逻辑的处理和硬件设备的控制。 2. 打地鼠游戏机设计:利用单片机产生随机数来决定地鼠出现的位置,通过4×4矩阵键盘接收玩家的输入,数码管显示分数,蜂鸣器提供声音反馈。 3. 硬件设计:包括4×4矩阵键盘、数码管和蜂鸣器的连接与控制。矩阵键盘用于玩家输入,数码管动态显示分数,蜂鸣器增强游戏体验。 4. 软件设计:涉及程序设计思路、流程图和代码实现。程序通过随机数生成、键盘扫描和得分计算等功能,实现游戏逻辑。 5. 系统调试与分析:对整个系统的功能和性能进行测试,确保其稳定性和可靠性。 在【部分内容】中,文档强调了单片机在电子技术发展中的重要性,以及其在打地鼠游戏机设计中的应用。设计思路包括使用定时器T0生成系统时钟,通过中断处理保持时钟连续,以便产生随机数。此外,还提到了矩阵键盘的扫描方法和数码管的动态显示技术。 这篇文档详细阐述了一个基于STC89C52单片机的打地鼠游戏机的设计过程,覆盖了硬件配置、软件编程和系统调试等多个方面,对于学习单片机应用和电子游戏设计的读者具有很高的参考价值。
2023-02-27 上传
任务三 打地鼠 NO5.2.1 任务要求 游戏开始时,闪烁显示得分0,玩家需要同时按下复合按钮开始,(本例CD键)当松 开复合按钮后,数码管任意的跳出10个数,速度由慢到快,每跳出一个数玩家需按下相 应的按钮,如果命中得1分,且发光二极管发光提示命中,如果没有命中,不得分发光二 极管不发光,当10个结束之后,最后闪烁显示出玩家的积分。打中1个积1分,如果需要 重新开始则需再次按下复合按钮。 NO 5.2.2 任务分析 本任务是一个综合设计题,它把前面两个任务很好的整合在一起,并且用到前面学的很 多细节方面,比如说速度由慢到快怎么编,比如说显示的成绩闪烁显示怎么编,比如说 复合按钮做某件事情怎么编。 上图和前面学到的图不同的地方时多了一个发光二极管LED-BLUE。 软件流程图: NO 5.2.3 相关知识: 1 速度由慢到快的做某件事怎么编? 方法: for(i=0;i<x;i++) {delay(10000);} 我们可以通过改变变量x的值来实现delay延时的时间, x的初值可以定义成30,每跳出一个地鼠让x- =2;当一个周期结束之后即10个地鼠全跳出之后,让x回到初值即x=30; 2 显示的成绩闪烁怎么编? 方法: void T0_PRG() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; scan(); c++; if(c==30) c=0; if(r==0&&c<15) DM=0X00; if(r==0&&c>15) DM=~seg[m]; } 通过中断的形式来实现的,每调用一次中断让变量c++;当10个地鼠打完之后,r=0;r为 结束标志,此时如果c<15;数码管消隐,否则显示即可。 3 复合按钮做某件事情怎么编? 方法: 用到A&&B,同时满足AB两个条件时做某件事 switch(key_val) { case 12: {a=1;break;} case 13: {b=1;break;} } 在键盘扫描中:用到switch选择如果12号和13号按下会相应的标志位为1。 在主程序中: if(a==1&&b==1) {r=1; a=0; b=0;} if(r==1) { random();} 如果a=1并且b==1 则标志位r=1,调用随机函数;并且给ab清零,为下一次做准备。 NO 5.2.4 任务实施: 1 PROTEUS 画图 比较上个任务多了一个发光二极管 2 KEILC软件编程: #include <reg52.h> #include <stdlib.h> #define DM P0 unsigned int tt; unsigned int k; unsigned int x=30; unsigned int c; unsigned char n,m,r ; sbit H0=P1^0;//键盘 sbit H1=P1^1; sbit H2=P1^2; sbit H3=P1^3; sbit L0=P1^4; sbit L1=P1^5; sbit L2=P1^6; sbit L3=P1^7; sbit D=P3^0;//灯 unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x08,0x03,0xc6,0xa1 ,0x86,0x8e}; unsigned char key_val,a,b; void scan(); void delay(unsigned int t); void random(); void scan()//键盘扫描 { H0=0;H1=0;H2=0;H3=0;L0=1;L1=1;L2=1;L3=1; if(L0==0""L1==0""L2==0""L3==0) { delay(500); if(L0==0""L1==0""L2==0""L3==0) { H0=0;H1=1;H2=1;H3=1;L0=1;L1=1;L2=1;L3=1; if(L0==0) key_val=0; if(L1==0) key_val=1; if(L2==0) key_val=2; if(L3==0) key_val=3; while(L0==0""L1==0""L2==0""L3==0); H0=1;H1=0;H2=1;H3=1;L0=1;L1=1;L2=1;L3=1; if(L0==0) key_val=4; if(L1==0) key_val=5; if(L2==0) key_val=6; if(L3==0) key_val=7; while(L0==0""L1==0""L2==0""L3==0); H0=1;H1=1;H2=0;H3=1
2023-02-27 上传
№.1 摘 要 随着社会的发展进步,各式有趣的小电动玩具已经遍布我们得生活。大街上随处可 见拿着只有几个按键的打地鼠游戏机。简单的几个按键,就可以给人们带来娱乐。 打地鼠游戏是电子技术发展的产物。打地鼠有软件版也有硬件版得。而软硬件打地 鼠的游戏规则类似。现在我们来讨论用单片机制作打地鼠游戏机。根据打地鼠的游戏规 则, 先制定特定位置, 在确认按下了该位置的按钮。 这种这种规则很容易用单片机实现。 单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成 为不可替代的一部分。本文的主要内容是用 STC89C52 单片机为核心控制元件,设计一 个打地鼠游戏机。以单片机作为主控核心,与键盘、蜂鸣器、数码管等模块组成核心主 控制模块,在主控模块上设有 4×4 的矩阵键盘、数码管和蜂鸣器。本系统运行稳定, 其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实 用和参考价值。 关键词:STC89C52 单片机 打地鼠游戏机 数码管 蜂鸣器 №.2 目 录 摘 要.....................................................................................................................1 目 录.....................................................................................................................2 1.引 言...................................................................................................................3 2. 总体设计.......................................................................................................... 4 2.1 基本原理................................................................................................... 4 2.2 系统总体框图及设计思路.......................................................................4 3.详细设计.............................................................................................................5 3.1 硬件设计.................................................................................................. 5 3.2 软件设计................................................................................................ 6 3.2.1 程序设计思路.................................................................................6 3.2.2 程序流程图.................................................................................... 7 3.2.3 程序代码........................................................................................ 7 4. 系统调试及分析............................................................................................ 22 5.心得体会.......................................................................................................... 23 参考文献................