单片机简易乒乓球游戏机.docx

上传人:牧羊曲112 文档编号:3346700 上传时间:2023-03-12 格式:DOCX 页数:8 大小:39.52KB
返回 下载 相关 举报
单片机简易乒乓球游戏机.docx_第1页
第1页 / 共8页
单片机简易乒乓球游戏机.docx_第2页
第2页 / 共8页
单片机简易乒乓球游戏机.docx_第3页
第3页 / 共8页
单片机简易乒乓球游戏机.docx_第4页
第4页 / 共8页
单片机简易乒乓球游戏机.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机简易乒乓球游戏机.docx》由会员分享,可在线阅读,更多相关《单片机简易乒乓球游戏机.docx(8页珍藏版)》请在三一办公上搜索。

1、单片机简易乒乓球游戏机重庆大学城市科技学院 单片机课程设计 实验报告 乒 乓 球 游 戏 1设计题目 乒乓球计分器的设计 2设计思路 本设计中,通过8只连续排列的发光二极管的依次点亮代表“乒乓球”的运动。再用两个按键模拟左右两个球拍,键按下代表球拍击球。“左拍”按下可使发光二极管从左向游戏机 右依次点亮,如同“乒乓球”从左向右飞来;“右拍”按下则可使发光二极管从右向左依次点亮,代表“乒乓球”从右向左运动。在游戏过程中,用数码显示管实时显示双方比分。游戏规则如下: “乒乓球”移动速度是固定的,设定0.2秒钟移动一位。 在“乒乓球”移位一次的过程中,进行15次的测试,查询接球方是否有击球动作。 接

2、球方的击球动作应发生在“乒乓球”到达本方最后一位发光二极管2.6秒钟时间之内。如接球方在此一秒钟之内按键,则接球成功,接球方得分。“乒乓球”转为相反方向运动。此后,原接球方变为发球方,原发球方变为接球方。游戏继续进行。 3所做工作 完成系统设计的构思,根据构思开始编写程序,逐步实现系统所需要的一些功能; 程序在keil中编译通过后,将产生的Hex文件下载到单片机实验箱上进行硬件测试。 4硬件组成 具体电路由单片机电路、发光二极管显示电路、按键电路和数码显示电路等部分组成。 R1、C1组成单片机的复位电路,接通电源的瞬间,由于电源电压通过R1对C1的充电过程,单片机复位端1脚获得一个高电平复位脉

3、冲,使得单片机进入初始状态。 (3)发光二极管显示和按键电路 P0.0P0.7口接8只发光二极管,P3.2口接左按键,模拟左拍击球动作;P3.3口接右按键(INT1中断),模拟右拍击球动作。P0.0P0.7 口和P0.0P0.7口接数码显示管显示扣分计数。 发光二极管显示电路 5 主程序 主程序的功能是进行初始化工作,并控制“乒乓球”游戏的开始。模拟左拍的按键接P3.3口,模拟右拍的按键接P3.2口。游戏开始时,显示的比分是零比零,此后,如右拍按下则“乒乓球”左移;如左拍按下则“乒乓球”右移。在主程序中,需要用四个通用寄存器分别作为右方得分寄存器、左方得分寄存器、0.2秒计时常数寄存器及“乒乓

4、球”移位计数器。 “乒乓球”左移子程序 游戏机 左移子程序的主要功能是控制“乒乓球”的向左移动,并在逐位移动过程中判断是否有左拍击球动作。只有当“乒乓球”移动到最左的一秒时间内击球才是有效的,左拍得分,并转乒乓球右移子程序,使“乒乓球”向右移动,即相当于左方发球。除此之外,所有的左拍击球都算失误,重新开始“乒乓球”左移子程序,相当于由右方重新发球。 “乒乓球”右移子程序 “乒乓球”的右移子程序的原理与左移子程序的原理相同,只要把左移子程序流程图中的“右”与“左”互换即可。 6设计流程及描述 按键扫描程序 本设计中用到了3个按键,其中一个作为复位端,另外两个作为击球球拍,球过中线后,按键一次能及

5、时将这球击打回去,按键两次为高抛球返回去;两个球拍是用INTO、INT1外中断实现的。 INT1中断程序流程图如下: 关闭总中断 调用点灯程序 赋延时初值 是 判断在延时期间,INT1是否有请求 是 是 开总中断 调用扣分子程序 显示数码 返回 主程序流程图: 游戏机 开始 R2,R3,P0设初值 P3.2 P3.3 输入 先写1 R2到P1显示 R3到P2显示 写入控制字TCON 写入控制字IE 等待中断 (3)显示流程图: 7源程序代码及注释 游戏机 org 0000h sjmp main ;单片机复位后从0000H org 0003h ;INT0中断入口 sjmp zd1 ;转中断服务程

6、序 org 0013h ;INT1中断入口 sjmp zd2 ;转中断服务程序 org 0030h main: mov r2,#0 mov r3,#0 mov p0,#0 setb p32 ;INT0 setb p33 ;INT0 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 ; mov ie,#85h ; sjmp $ ;zd1: cpl ea ; acall dianliang1 ; mov r4,#0ffh D1: mov

7、r5,#0ffh pd1: jnb p33,fh1 ; djnz r5,pd1 djnz r4,D1 acall koufen1 ;fh1: setb ea ; reti ;zd2: cpl ea ; acall dianliang2 ; mov r4,#0ffh D2: mov r5,#0ffh pd2: jnb p32,fh2 ; djnz r5,pd2 djnz r4,D2 acall koufen2 ;fh2: setb ea ; reti ;游戏机 指向数据表的首地址 查表 数码显示 查表 数码显示 写控制字TCON,INT0和INT1有请求 写控制字IE(EA=1,EX1=1,EX

8、0=1) 等待中断信号 关闭总中断 调用从右向左点亮程序 判断是否有中断请求,没有则顺序执行 则跳转至中断程序结束 延时时间到,调用扣分程序 开总中断有效 中断返回 关闭总中断 调用从左向右点亮程序 判断是否有中断请求,没有则顺序执行,有 则跳转至中断程序结束 延时时间到,调用扣分程序 开总中断有效 中断返回 koufen1: inc r2 ;选手1扣分程序 cjne r2,#10h,song1 ;扣分到F则重新开局 mov r2,#0 mov r3,#0 song1:mov dptr,#tab ;数码显示 mov a,r2 movc a,a+dptr mov p0,a ;P0口输出 ret

9、;子程序返回 koufen2: inc r3 ;选手2扣分程序 cjne r3,#10h,song2 mov r2,#0 mov r3,#0 song2:mov dptr,#tab mov a,r3 movc a,a+dptr mov p2,a ;P2口输出 ret dianliang1:mov a,#01h ;从右向左点亮的子函数 s1:mov p0,a acall DINGSHI ;调用延时 ss1: rl a cjne a,#01h,s1 ret dianliang2:mov a,#80h ;从左向右点亮的子函数 s2: mov p0,a acall DINGSHI ss2: rr a

10、cjne a,#80h,s2 ret DINGSHI: mov tmod,#01h ;产生0.2秒的定时 mov r4,#02h CZ:mov th0,#3ch mov tl0,#0b0h setb tr0 WSHM: jbc tf0,OK sjmp WSHM OK: djnz r4,CZ ret tab:db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h ;显示0F的数据表 end 8实验结果 游戏机 单片机上电后,若不按按键则乒乓球点开始在示波器上两边来回呈抛物线跳动,乒乓球在一边触底线后,另一方得分,数码管分数加1,同时LED灯闪烁一下;乒乓球过中线后,按键一次乒乓球即使反弹回去,数码管分数不变,同时LED灯不亮;连续按键两次,乒乓球呈高抛球轨迹反弹回去;当一方分数达到15分时,数码管归零。 9课程设计体会 通过本次课程设计,真正做到了用单片机开发一件产品,虽然功能不是很多,但是对如何运用单片机开发环境做到了一定的了解,也对单片机的部分功能比较熟悉,做到了将单片机课上学到的知识应用到实践当中。从开始构思-编写程序-仿真-焊接板子-调试,整个过程自己熟悉了一下了,受益匪浅,自己成功做出一件具有一定功能的实物也很有成就感,燃起了对单片机的兴趣。 游戏机

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号