打地鼠游戏设计毕业论文(设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
打地鼠游戏机
公布论文和全部源码,仅供学习
摘要:本作品采用STC12C5A60S22单片机作为主控芯片,选取1602液晶作为显示屏,通过红外接收器用遥控控制游戏机的开机和关机。游戏程序应用C语言编译,主要使用函数为随机函数和键盘扫描函数。通过随机函数产生一个随机数,该随机数使显示屏对应位置出现“O”,同时对应的LED被点亮以代表地鼠的随机出现。通过键盘扫描函数,使每个按键各对应一个LED灯,通过按下该键使相应LED灯熄灭。本系统配有开场音乐和游戏音效。
关键词:单片机、随机函数、键盘扫描函数、音乐Abstract: this work using STC12C5A60S2 microcontroller as the main control chip select LCD as a display,1602, through the infrared receiver remote control game startup and shutdown. This game program using C language editing, the main function used are the random function and keyboard scan function. Use random functions to generate a random number, at the same time the random number to display the corresponding position"0" and the corresponding LED is illuminated to represent the random hamster. Through the keyboard scan function, make each key corresponds to a LED lamp, by pressing this key to the corresponding LED lights.
The whole process has background music and game sound.
Key words: SCM, random function, keyboard scan function, music
游戏说明:
本游戏由8个LED灯分别代表8只地鼠,当地鼠跳出来时显示屏对应位置出现“O”,同时该地鼠对应的LED灯被点亮,在限定时间内按下相应按键后,对应LED灯熄灭,同时“O”闪烁一下,表示打中该地鼠。游戏规则为,打中1~8号地鼠,每只得一分,在每局限定的时间30秒内得满当前关所需分即可进入一下关。游戏分四关:第一关,地鼠跳出时间长,得10分后,游戏进入第二关;第二关,地鼠跳出时间较短,得15分后,游戏进入第三关;第三关,地鼠跳出时间更快,得20分后,游戏进入第四关。第四关,得25分可过,但超越人类反应极限,不作阐述。
方案比较、设计:
方案一:用STC89C52作主控芯片,灯光表示地鼠,用红外遥
控系统,用两层板完成整个电路。
方案二:用STC12C5A60S2作主控芯片,用灯光和液晶“0”
表示地鼠,加入音乐,用红外遥控系统,用一层板
完成整个电路。
显然,方案二更加适合,因为方案二中采用的主控芯片运算的速度要比方案一所用芯片快得多(达8倍),ram足够,而且
游戏系统使用了定时中断函数,用STC12C5A60S2芯片会得到更快的响应。而且方案二加入了液晶显示和音乐,使游戏不那么单调,使玩家更好体现游戏的过程。最后,用一层板可以减少很多飞线,而且布局美观。
电路原理:
本系统包含六个子电路模块,分别为单片机系统电路、流水灯电路、蜂鸣器电路、2*4矩阵键盘、遥控红外接收电路、1602LCD 显示屏模块。
单片机系统电路
流水灯电路
蜂鸣器电路
2*4矩阵键盘
遥控红外接收电路
1602液晶显示模块电路
各模块整合并接上电源后,通过遥控打开游戏系统。随后,单片机系统驱动游戏系统进入初始化模式,同时蜂鸣器系统被驱动开始播放背景音乐。游戏开始后,背景音乐停止,单片机系统开始随机驱动8个LED灯点亮,同时液晶上对应位置出现O,蜂鸣器系统同时被驱动,发出“嘀”一声。此过程中,系统不断计时,不断刷新分数。
游戏实现代码:
//begin_display//
#ifndef BeginDisplay_H
#define BeginDisplay_H
//#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
//sbit bemp=P2^3;
int runlight[9]={0xff,0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f} ;
uchar run_light_num,kkk; //流水灯亮到哪一盏,kkk为定时0计数
uchar begin_flag,time_counter,mouse_hit;
void delay(uint z) //延时1ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delayus(unsigned char x) //最新12c5a延时1us {
while(x--)
{
_nop_();
_nop_();
_nop_();
}
}
void delayms(unsigned char x) //最新12c5a延时1毫秒
{
unsigned char i,j,k;
for(k = x; k > 0; k--)
for(i = 22; i > 0; i--)
for(j = 250; j > 0; j--);