ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:131.46KB ,
资源ID:8035401      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8035401.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(乒乓球游戏机C程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

乒乓球游戏机C程序.docx

1、乒乓球游戏机C程序乒乓球游戏机C程序基于51单片机的乒乓球游戏机设计 前一段时间田老师给我们班一些选题,让我们每个人都选一个,我选的是基于51单片机乒乓游戏设计。我设计乒乓球游戏已有一段时间,在一个星期之前,我就已经设计好了一个能正常游戏的功能,但是我认为有些方面还是没设计好,所以就没发上来。今天想想还是发上来吧,不好的地方以后再该。乒乓球游戏机的设计主要偏重于软件部分,我主要也是在程序上下工夫。 我设计的乒乓球游戏机足要是在精简mini51版的平台上实现的。乒乓球游戏的设计主要功能如下: 1、能够对乒乓球的游戏轨迹移动速度进行调节。 2、能过通过数码管显示等级难度和比赛分数。 3、比赛中若是

2、没及时按下按键会有有报警声发出。 给出几张图如下:(注:这里有根跳线是因为乒乓球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 /定

3、义时钟晶振,单位Hz /按键和595的引脚定义 sbit SH_CP = P24; sbit ST_CP = P15; sbit DS = P25; sbit CP_key= P32; sbit C_key= P33; sbit A_key= P34; sbit B_key= P35; /流水灯表 unsigned char disp=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe; /数码管字表 unsigned char code led_bit8=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/0x7f,0xbf,0xdf

4、,0xef,0xf7,0xfb,0xfd,0xfe; unsigned char code led_seg17=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 buffer8; /key按键标志 bit flag; bit flag1; /蜂鸣器定义 sbit Buzze

5、r=P20 ; /*- 初始化 -*/ void initial595() SH_CP = 0; ST_CP = 0; DS = 0; /*- 发送数据 -*/ void send_data(unsigned char d) unsigned char i; for(i=0;i1; /数据移位 /延时程序 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

6、; 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)

7、 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);

8、 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=disp0; Bscore+; for(j=0;j100;j+) Buzzer = 0x0; delay(50); Buzzer = 0x1; delay(50); w

9、hile(A_key); if(count1=8) if(B_key) delay(200); if(B_key) P1=disp7; Ascore+; for(j=0;j100;j+) Buzzer = 0x0; delay(50); Buzzer = 0x1; delay(50); while(B_key); P1=dispmov; if(count18)mov+; else mov-; void timer0_int(void) interrupt 1 static unsigned char i=0; TR0=0; TH0 = (65536-CLOCK/TIME_PER_SEC/12)

10、 / 256; TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256; TR0=1; send_data(led_segbufferi); send_data(led_biti); ST_CP=1; ST_CP=0; i = +i&0x07; buffer7 = L; buffer6 = 16; buffer5 = 16; buffer4 = Ascore/10; buffer3 = Ascore%10; buffer2 = 16; buffer1 = Bscore/10; buffer0 = 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;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1