单片机-简易乒乓球游戏机.doc_第1页
单片机-简易乒乓球游戏机.doc_第2页
单片机-简易乒乓球游戏机.doc_第3页
单片机-简易乒乓球游戏机.doc_第4页
单片机-简易乒乓球游戏机.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆大学城市科技学院单片机课程设计实验报告乒乓球游戏1设计题目乒乓球计分器的设计2设计思路 本设计中,通过8只连续排列的发光二极管的依次点亮代表“乒乓球”的运动。再用两个按键模拟左右两个球拍,键按下代表球拍击球。“左拍”按下可使发光二极管从左向右依次点亮,如同“乒乓球”从左向右飞来;“右拍”按下则可使发光二极管从右向左依次点亮,代表“乒乓球”从右向左运动。在游戏过程中,用数码显示管实时显示双方比分。游戏规则如下:(1)“乒乓球”移动速度是固定的,设定0.2秒钟移动一位(发光二极管)。(2)在“乒乓球”移位一次的过程中,进行15次的测试,查询接球方是否有击球动作。(3)接球方的击球动作应发生在“乒乓球”到达本方最后一位发光二极管(即点亮)2.6秒钟时间之内。如接球方在此一秒钟之内按键,则接球成功,接球方得分。“乒乓球”转为相反方向运动。此后,原接球方变为发球方,原发球方变为接球方。游戏继续进行。3所做工作(1) 完成系统设计的构思,根据构思开始编写程序,逐步实现系统所需要的一些功能(程序中通过调用子函数实现);(2) 程序在keil中编译通过后,将产生的Hex文件下载到单片机实验箱上进行硬件测试。4硬件组成(1)具体电路由单片机电路、发光二极管显示电路、按键电路和数码显示电路等部分组成。(2)R1、C1组成单片机的复位电路,接通电源的瞬间,由于电源电压通过R1对C1的充电过程,单片机复位端1脚获得一个高电平复位脉冲,使得单片机进入初始状态。(3)发光二极管显示和按键电路P0.0P0.7口接8只发光二极管,P3.2口接左按键(INT0中断),模拟左拍击球动作;P3.3口接右按键(INT1中断),模拟右拍击球动作。P0.0P0.7 口和P0.0P0.7口接数码显示管显示扣分计数(0F)。发光二极管显示电路5 主程序主程序的功能是进行初始化工作,并控制“乒乓球”游戏的开始。模拟左拍的按键接P3.3口,模拟右拍的按键接P3.2口。游戏开始时,显示的比分是零比零,此后,如右拍按下则“乒乓球”左移;如左拍按下则“乒乓球”右移。在主程序中,需要用四个通用寄存器分别作为右方得分寄存器、左方得分寄存器、0.2秒计时常数寄存器及“乒乓球”移位计数器。(1)“乒乓球”左移子程序左移子程序的主要功能是控制“乒乓球”的向左移动,并在逐位移动过程中判断是否有左拍击球动作。只有当“乒乓球”移动到最左的一秒时间内击球才是有效的,左拍得分,并转乒乓球右移子程序,使“乒乓球”向右移动,即相当于左方发球。除此之外,所有的左拍击球都算失误,重新开始“乒乓球”左移子程序,相当于由右方重新发球。(2)“乒乓球”右移子程序“乒乓球”的右移子程序的原理与左移子程序的原理相同,只要把左移子程序流程图中的“右”与“左”互换即可。6设计流程及描述(1) 按键扫描程序本设计中用到了3个按键,其中一个作为复位端,另外两个作为击球球拍,球过中线后,按键一次能及时将这球击打回去,按键两次为高抛球返回去;两个球拍是用INTO、INT1外中断实现的。 INT1中断程序流程图如下:关闭总中断是赋延时初值是开总中断是调用点灯程序(从右到左)判断在延时期间,INT1是否有请求 YYOUYOUQQ返回调用扣分子程序显示数码(2)主程序流程图:开始P3.2 (INT0)P3.3 (INT1)输入先写1 写入控制字IER2,R3,P0设初值等待中断R2到P1显示R3到P2显示写入控制字TCON(3)显示流程图:7源程序代码及注释org 0000hsjmp main ;单片机复位后从0000Horg 0003h ;INT0中断入口sjmp zd1 ;转中断服务程序org 0013h ;INT1中断入口sjmp zd2 ;转中断服务程序 org 0030hmain: mov r2,#0 mov r3,#0 mov p0,#0 setb p32 ;INT0(外部中断0输入线) setb p33 ;INT0(外部中断0输入线) mov dptr,#tab ;DPTR指向数据表的首地址 mov a,r2 movc a,a+dptr ;查表 mov p1,a ;数码显示 mov a,r3 movc a,a+dptr ;查表 mov p2,a ;数码显示 mov tcon,#0Ah ;写控制字TCON,INT0和INT1有请求 mov ie,#85h ;写控制字IE(EA=1,EX1=1,EX0=1) sjmp $ ;等待中断信号zd1: cpl ea ;关闭总中断 acall dianliang1 ;调用从右向左点亮程序 mov r4,#0ffhD1: mov r5,#0ffhpd1: jnb p33,fh1 ;判断是否有中断请求,没有则顺序执行 则跳转至中断程序结束 djnz r5,pd1 djnz r4,D1 acall koufen1 ;延时时间到,调用扣分程序fh1: setb ea ;开总中断有效 reti ;中断返回zd2: cpl ea ;关闭总中断 acall dianliang2 ;调用从左向右点亮程序 mov r4,#0ffhD2: mov r5,#0ffhpd2: jnb p32,fh2 ;判断是否有中断请求,没有则顺序执行,有 则跳转至中断程序结束 djnz r5,pd2 djnz r4,D2 acall koufen2 ;延时时间到,调用扣分程序fh2: setb ea ;开总中断有效 reti ;中断返回koufen1: inc r2 ;选手1扣分程序 cjne r2,#10h,song1 ;扣分到F则重新开局 mov r2,#0 mov r3,#0song1:mov dptr,#tab ;数码显示 mov a,r2 movc a,a+dptr mov p0,a ;P0口输出 ret ;子程序返回koufen2: inc r3 ;选手2扣分程序 cjne r3,#10h,song2 mov r2,#0 mov r3,#0song2:mov dptr,#tab mov a,r3 movc a,a+dptr mov p2,a ;P2口输出 retdianliang1:mov a,#01h ;从右向左点亮的子函数s1:mov p0,aacall DINGSHI ;调用延时ss1: rl a cjne a,#01h,s1retdianliang2:mov a,#80h ;从左向右点亮的子函数s2: mov p0,a acall DINGSHI ss2: rr a cjne a,#80h,s2retDINGSHI: mov tmod,#01h ;产生0.2秒的定时 mov r4,#02hCZ:mov th0,#3ch mov tl0,#0b0h setb tr0WSHM: jbc tf0,OK sjmp WSHMOK: djnz r4,CZrettab:db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h ;显示0F的数据表 end 8实验结果单片机上电后,若不按按键则乒乓球点开始在示波器上两边来回呈抛物线跳动,乒乓球在一边触底线后,另一方得分,数码管分数加1,同时LED灯闪烁一下;乒乓球过中线后,按键一次乒乓球即使反弹回去,数码管分数不变,同时LED灯不亮;连续按键两次,乒乓球呈高抛球轨迹反弹回去;当一方分数达到15分时,数码管归零。9课程设计体会通过本次课程设计,真正做到了用单片机开发一件产品,虽然

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论