为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

乒乓球游戏机C程序

2017-12-06 11页 doc 141KB 22阅读

用户头像

is_496339

暂无简介

举报
乒乓球游戏机C程序乒乓球游戏机C程序 基于51单片机的乒乓球游戏机设计 前一段时间田老师给我们班一些选题,让我们每个人都选一个,我选的是基于51单片机乒乓游戏设计。我设计乒乓球游戏已有一段时间,在一个星期之前,我就已经设计好了一个能正常游戏的功能,但是我认为有些方面还是没设计好,所以就没发上来。今天想想还是发上来吧,不好的地方以后再该。乒乓球游戏机的设计主要偏重于软件部分,我主要也是在程序上下工夫。 我设计的乒乓球游戏机足要是在精简mini51版的平台上实现的。乒乓球游戏的设计主要功能如下: 1、能够对乒乓球的游戏轨迹移动速度进行调节。...
乒乓球游戏机C程序
乒乓球游戏机C程序 基于51单片机的乒乓球游戏机 前一段时间田老师给我们班一些选题,让我们每个人都选一个,我选的是基于51单片机乒乓游戏设计。我设计乒乓球游戏已有一段时间,在一个星期之前,我就已经设计好了一个能正常游戏的功能,但是我认为有些方面还是没设计好,所以就没发上来。今天想想还是发上来吧,不好的地方以后再该。乒乓球游戏机的设计主要偏重于软件部分,我主要也是在程序上下工夫。 我设计的乒乓球游戏机足要是在精简mini51版的平台上实现的。乒乓球游戏的设计主要功能如下: 1、能够对乒乓球的游戏轨迹移动速度进行调节。 2、能过通过数码管显示等级难度和比赛分数。 3、比赛中若是没及时按下按键会有有报警声发出。 给出几张图如下:(注:这里有根跳线是因为乒乓球led轨迹用的是P1口,蜂鸣器是P1.7,我为了使两者减少干扰故用跳线将蜂鸣器接到P2.0口上。还有就是led中的一个led总亮着是因为数码管的扫描用到这一引脚故这一引脚常亮。) 图一:按键说明 图二:难度等级8,开始时0:0 图三:难度等级8,比赛结果2:1 图四:难度等级10,比赛结果6:6,当然比赛是不会出现这种结果喽,因为比赛还没 结束。 程序源代码如下: #include #define TIME_PER_SEC 640 //定义数码管扫描频率,8*40Hz #define CLOCK 22118400 //定义时钟晶振,单位Hz //按键和595的引脚定义 sbit SH_CP = P2^4; sbit ST_CP = P1^5; sbit DS = P2^5; sbit CP_key= P3^2; sbit C_key= P3^3; sbit A_key= P3^4; sbit B_key= P3^5; //流水灯 unsigned char disp[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //数码管字表 unsigned char code led_bit[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd, 0xfe}; unsigned char code led_seg[17]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61, 0x71,0xff};//0xfd //全局变量 unsigned char Ascore,Bscore,mov,level,L; unsigned char count0,count1,count2; unsigned char buffer[8]; //key按键 bit flag; bit flag1; //蜂鸣器定义 sbit Buzzer=P2^0 ; /*--------------- 初始化 --------------*/ void initial595() { SH_CP = 0; ST_CP = 0; DS = 0; } /*--------------- 发送数据 ---------------*/ void send_data(unsigned char d) { unsigned char i; for(i=0;i<8;i++) { DS = d&0x01; //发送最低位 SH_CP = 1; SH_CP = 0; //移位寄存器移位 d = d>>1; //数据移位 } } //延时程序 void delay(unsigned int t) { while(--t); } //定时器0初始化 void timer_init(void) { TMOD = 0x11; //定时器0工作在模式1,16Bit定时器模式 TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256; TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256; TR0 =1; ET0 =1;//开启定时器和中断 TH1 = (65536-5000) / 256; TL1 = (65536-5000) % 256; TR1 =1; ET1 =1; } void main() { unsigned char j=0; initial595(); timer_init(); count0=0; count1=0; count2=0; mov=0; Ascore=0; Bscore=0; flag=0; flag1=0; L=1; level=20; EA=1; while(1) { if(CP_key==0) //设置等级 { delay(200); if(CP_key==0) { level=level-2; while(CP_key==0); //等级 if(level==18)L=2; if(level==16)L=3; if(level==14)L=4; if(level==12)L=5; if(level==10)L=6; if(level==8)L=7; if(level==6)L=8; if(level==4)L=9; if(level==2)L=10; if(level==0||level==20) { level=20; L=1; } } } if(C_key==0) //判断比赛是否开始 { delay(200); if(C_key==0) { flag=~flag; //使下面的中断的Bscore的多的一分减去 Bscore=-1; while(C_key==0); } } if(flag1==1) { flag1=0; if(flag==1) { count0++; if(count0==level) { count0=0; if(count1++ > 13) count1 = 1; if(count1==1) { if(A_key) { delay(200); if(A_key) { P1=disp[0]; Bscore++; for(j=0;j<100;j++) { Buzzer = 0x0; delay(50); Buzzer = 0x1; delay(50); } } while(A_key); } } if(count1==8) { if(B_key) { delay(200); if(B_key) { P1=disp[7]; Ascore++; for(j=0;j<100;j++) { Buzzer = 0x0; delay(50); Buzzer = 0x1; delay(50); } } while(B_key); } } P1=disp[mov]; if(count1<8)mov++; else mov--; } } } } } void timer0_int(void) interrupt 1 { static unsigned char i=0; TR0=0; TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256; TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256; TR0=1; send_data(led_seg[buffer[i]]); send_data(led_bit[i]); ST_CP=1; ST_CP=0; i = ++i&0x07; buffer[7] = L; buffer[6] = 16; buffer[5] = 16; buffer[4] = Ascore/10; buffer[3] = Ascore%10; buffer[2] = 16; buffer[1] = Bscore/10; buffer[0] = Bscore%10; } void timer1_int(void) interrupt 3 { unsigned char j=0; TR1=0; TH1 = (65536-50000) / 256; TL1 = (65536-50000) % 256; TR1=1; flag1=1; }
/
本文档为【乒乓球游戏机C程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索