基于51单片机的打地鼠游戏设计(源码齐全)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(一) 基本设计...................................................................................................................3 (二) 扩展设计...................................................................................................................4 三、 显示模块详解...........................................................................................................4 (一) 液晶显示模块概述...................................................................................................4 (二) 游戏中用到的指令...................................................................................................5 (三) 游戏中的显示...........................................................................................................8 四、 主要算法详解...........................................................................................................8 (一) 地鼠消失与出现.......................................................................................................8 (二) 地鼠消失与出现的频率控制.................................................................................11 (三) 游戏的暂停与恢复.................................................................................................12 总结......................................................................................................................................... 13 附录 游戏程序.....................................................................................................................14
case 1 : if(d2==0){d2=1;lcd_pos(1,1);lcd_wdat(0x02);} else goto again;break;
case 2 : if(d3==0){d3=1;lcd_pos(1,2);lcd_wdat(0x02);} else goto again;break;
1
一、 设计构想
独立键盘 打地鼠游戏机按键
供电模块
单片机 主控制
12864 显示模块 游戏界面
掉电数据储存模块 AT24C02
单片机主控制模块选用 STC89C52 单片机。游戏界面选用 12864 液晶显示,界面较 1602 宽,游戏界面更友好。打地鼠按键只有八个,故采用较矩阵键盘简单的独立键盘。 用掉电 分数数据存储采用 I2C 总线 AT24C02 芯片。单片机的供电采用三节 1.5v 电池供电。
基于 STC89C52 单片机的打地鼠游戏机设计
队名:single boy 成员:梁炜锋 陈锦朝
摘要-----本设计为基于 51 单片机的打地鼠游戏机设计,用八个独立键盘代表地鼠位置,利用
12864 液晶显示屏显示游戏界面,用 AT24C02 芯片掉电储存最高得分数据,简单地模拟打地 鼠游戏。游戏机电路设计简单,算法设计稍复杂。
目录
一、 设计构想...................................................................................................................2 二、 游戏设计...................................................................................................................3
3
(二) 扩展设计
4. 游戏计分,用一全局变量 score (初始值为零),每打中一个地鼠 score 的值 加一,游戏结束,显示得分数据,并与 TOP3 最高分数进行对比,判断是否存 储此数据
5. 游戏时间设为 60 秒,用单片机内部定时器即可,游戏时间一到,游戏结束。 6. 游戏等级设计。每 9 分一个等级,分数达到 9 分后进入下一个等级,每进入下
2. 地鼠出现的随机性。此部分采用 C 语言的 stdlib.h 库函数中的 rand();函数生成 随机数,并用单片机定时器控制随机数出现的频率,根据产生的随机数在相对 应的位置在显示屏上显示地鼠。当检测到对应位置的按键按下,地鼠消失。 当地鼠存在到一定时间后,没有被打中,则消失。此部分用单片机的定时器控 制
10
这个是游戏的主循环,gstart 是游戏的开始和结束的标志位。mcu 不断扫描键盘是否被 按下,在松开键盘的时候,由于手指和键盘的抖动,很容易再次检测到键盘被按下,然而该 位置可能是没有地鼠的,就是相当于打空了地鼠,生命值就会减少。只要在键盘释放后加一 个简短延时,就能解决这个问题。
STC89C58 单片机简介 STC89C58RC 单片机采用高性能的静态 80C51 设计,并采用先进工艺制造,还带有非易
失去性 FLASH 程序储器。它是一种高性能、低功耗的 8 位 CMOS 微处理芯片,市场上应用 最多。其主要性能如下:
•64KB Flash ROM,可以擦除 1000 次以上,数据保存 10 年。 •256 字节内部 RAM。
9
/*定时器 1 中断计时,计算地鼠存在的时间*/
解释一下 showtime 和 et ,这两个变量分别作为地鼠出现频率和消失快慢的控制变量。
打地鼠的函数: 这里要强调的就是按键松开时候的抖动问题,最初调试程序的时候总是陷在这里。 while(gstart) { keyscan();/*主循环,不断扫描键盘*/ }
三、 显示模块详解
12864 液晶显示
(一) 液晶显示模块概述
12864 中文 汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192 个中 文汉字(16X16 点阵)、128个字符(8X16 点阵)及64X256 点阵显示RAM (GDRAM)。 主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行 显示颜色:黄绿/蓝屏/灰屏 显示角度:6:00 钟直视 LCD 类型:STN 与MCU 接口:8 位或4 位并行/3 位串行
4ห้องสมุดไป่ตู้
配置LED 背光 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等
(二) 游戏中用到的指令
5
12864 并行时序
6
串行时序图
本设计采用 8 位并行连接的时序图 电路图如下
7
其中 PSB 引脚直接接电源正极,高电位,连接模式为低电平
(三) 游戏中的显示
首先,游戏界面的绘制使用 12864 的绘图功能,用取模软件绘图再保存字模
一个等级,限定游戏时间 aimtime 重新开始计数,用单片机的定时器控制随机 出现的时间减少,地鼠存在的时间减少。当限定时间一到,若游戏未能达到等 级得分数要求,游戏结束。 7. “英雄榜”设计。用 AT24C02 存储记录游戏时玩家最高的三个分数,掉电也能 存储数据,在游戏开始界面和游戏结束界面显示英雄榜,并显示当前玩家的分 数。
case 7 : if(d8==0){d8=1;lcd_pos(2,3);lcd_wdat(0x02);} else goto again;break;
default: break;
}
/* **若该位置已有地鼠,则再回到 again 位置再出现一次随机数,直到不重复为止
*/ }
} Showone 函数用在定时器 0 中,每隔一段时间就出现一只地鼠
四、 主要算法详解
(一) 地鼠消失与出现
/*地鼠出现标志位*/
unsigned char d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0;
/**************************************************/
/*
出现地鼠函数
*/
/**************************************************/
case 3 : if(d4==0){d4=1;lcd_pos(1,3);lcd_wdat(0x02);} else goto again;break;
case 4 : if(d5==0){d5=1;lcd_pos(2,0);lcd_wdat(0x02);} else goto again;break;
3. 游戏基本功能的基本控制。 a) 开始。启动电源,单片机开始运行,一定的初始化后开始等待开始按键 b) 暂停/回复。当暂停/回复按键按下,触发单片机的外部中断,在外部中断 中设置单片机进入掉电模式,外部晶振停振,所有单片机内部定时器, CPU、串行口全部停止工作,只有外部中断继续工作。RAM 程序运行时数 据保持,故实现“暂停”功能。再次按下“暂停/恢复”键,触发外部中 断,设置单片机进入正常工作状态,程序从掉电前运行至的部分恢复, 实现“恢复”功能。 c) 停止。游戏中途退出游戏时,游戏数据不保存,只要按下单片机的复位 按键即可。
void showone()
8
{
if(count==showtime)
/*出现时间到*/
{
again : r=(uchar)rand()%8;
//随机数函数,生成值为 0-8 的函数
switch(r)
{
case 0 : if(d1==0){d1=1;lcd_pos(1,0);lcd_wdat(0x02);} else goto again ;break;
case 5 : if(d6==0){d6=1;lcd_pos(2,1);lcd_wdat(0x02);} else goto again;break;
case 6 : if(d7==0){d7=1;lcd_pos(2,2);lcd_wdat(0x02);} else goto again;break;
•电源控制模式: -时钟可停止和恢复; -空闲模式; -掉电模式。
•6 个中断源。
2
•4 个中断优先级。 •4 个 8 位 I/O 口。 •全双工增强型 UART。 •3 个 16 位定时器/计数器:T0、T1、T2。 •全静态工作方式:0-24MHz
二、 游戏设计
(一) 基本设计
1. 游戏玩家有三次出错的机会,即三生命值,当按键的位置没有地鼠,则生命值 减一,生命值消耗玩,游戏结束。用一全局变量 blood(初始值设为 4),对 blood 的值进行检测,即可实现此功能。
(图为本游戏的
初始界面)
游戏中的“地鼠”

一个笑脸代替,地鼠被
击中或存在时间到失时,在相应的位置上写入空白。
游戏进行时主界面上会显示游戏等级,生命值,分数等信息。数据持续更新。
在游戏结束时,从 AT24C02 中读出历史前三最高分的数据,并与当前游戏所得分数
进行比较,重新排序前三。然后在液晶上显示出当前玩家的分数和 TOP3。
相关文档
最新文档