- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
打地鼠游戏程序设计书
安徽工业职业技术学院
打地鼠游戏设计报告
——单片机课程设计
打地鼠游戏机
本设计采用STC89S52单片机作为主控芯片,选取数码管,游戏程序应用C语言编译,主要使用函数为随机函数和键盘扫描函数。LED被点亮以代表地鼠的随机出现。通过键盘扫描函数,使每个按键各对应一个LED灯,通过按下该键使相应LED灯熄灭。
关键词:单片机、随机函数。
游戏说明:
本设计由8个LED灯分别代表8只地鼠,地鼠对应的LED灯被点亮,在限定时间内按下相应按键后,对应LED灯熄灭,表示打中该地鼠。
方案设计:
方案一:用STC89C52作主控芯片,灯光表示地鼠,用两个数码管显示时间跟打中地鼠的个数。
电路原理:
本系统包含四个子电路模块,分别为单片机系统电路、流水灯电路、蜂鸣器电路、2*4矩阵键盘。
单片机系统电路
流水灯电路
蜂鸣器电路
2*4矩阵键盘
各模块整合并接上电源后,打开游戏系统。随后,单片机系统驱动游戏系统进入初始化模式,同时蜂鸣器系统被驱动。游戏开始后,单片机系统开始随机驱动8个LED灯点亮,
游戏实现代码:
#includereg52.H
#includestdlib.h
#define uchar unsigned char
#define uint unsigned int
sbit w4=P3^4;
sbit w3=P3^5;
sbit w2=P3^6;
sbit w1=P3^7;
sbit fmq=P3^2;
sbit s0=P1^0;
sbit s1=P1^1;
sbit s2=P1^2;
sbit s3=P1^3;
sbit s4=P1^4;
sbit s5=P1^5;
sbit s6=P1^6;
sbit s7=P1^7;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
sbit led6=P2^6;
sbit led7=P2^7;
uchar num=30;scro=0,wei=1,deng=8;
uint shannum1=0,shannum2=0;//shannum1多长时间亮灯,shannum2亮多长时间
void delay(uint ms);
uchar led_discode1[11]={0x03,0xcf,0x2a,0x4a,0xc6,0x52,0x12,0xcb,0x02,0x42,0x82};
uchar led_discode2[11]={0x03,0x3f,0x4a,0x2a,0x36,0xa2,0x82,0x3b,0x02,0x22,0x12};
void dengliang(uchar shan)
{ deng=shan;
switch(shan)
{
case 0:led0=0;break;
case 1:led1=0;break;
case 2:led2=0;break;
case 3:led3=0;break;
case 4:led4=0;break;
case 5:led5=0;break;
case 6:led6=0;break;
case 7:led7=0;break;
}
}
void main(void)
{
uchar i,a=0x01;
P0=0Xff;
P3=0Xff; //关闭所有数码管
srand(5);
fmq=0;delay(20);fmq=0;delay(5);fmq=1;
for(i=8;i0;i--)
{
P2=~a; fmq=0; delay(5);fmq=1;
delay(i*10);
a=a1;
}
P2=0xff;
TMOD=0x01;
TH0=0xfc; //1mS的定时空间
TL0=0x17;
EA=1;
ET0=1;
TR0=1; //启动定时器
num=30;scro=0;
while(1)
{
if(s0==0){delay(10);
if((s0==0)(deng!=8)){if(deng==0){scro++;deng=8;}fmq=0;delay(5);fmq=1;}
if((s0==0)(shannum1==0)){fmq=0;delay(5);fmq=1;shannum1=1;}
}
if(s1==0){delay(10);if(s1==0) {if(deng==1){scro++;deng=8;}fmq=0;d
文档评论(0)