单片机课程设计玩乒乓球.doc

上传人:土8路 文档编号:9970883 上传时间:2021-04-07 格式:DOC 页数:9 大小:923KB
返回 下载 相关 举报
单片机课程设计玩乒乓球.doc_第1页
第1页 / 共9页
单片机课程设计玩乒乓球.doc_第2页
第2页 / 共9页
单片机课程设计玩乒乓球.doc_第3页
第3页 / 共9页
单片机课程设计玩乒乓球.doc_第4页
第4页 / 共9页
单片机课程设计玩乒乓球.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《单片机课程设计玩乒乓球.doc》由会员分享,可在线阅读,更多相关《单片机课程设计玩乒乓球.doc(9页珍藏版)》请在三一文库上搜索。

1、1 引言单片机作为微型计算机发展的一个重要分支,以其高可靠、高性能价格比、低电压、低功耗等优势,赢得了广泛的应用。单片机是一门实用性很强的应用学科,在目前和今后相当长的一段时间内仍有着广泛的应用前景。作为自动化专业的学生,更应该熟练掌握各种电路编辑软件,作为专业必需的技能更要及时地对这一类软件的更新版本进行学习,其日趋强大的功能是对我们专业技能的补充。之前由于培养过自己的动手能力,在本次课程设计中,本人使用单片机作为这次作业的核心。课程设计通过使用90C51单片机和共阳极二位数码管,综合应用基础电子电路和单片机的知识,来实现该电路的制作。通过实际程序设计和调试,逐步掌握块化程序设计方法和调试技

2、术,通过课程设计,掌握一单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法,通过完成一个包括电路设计和程序设计开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应工作打下基础。2 设计方案及原理 2.1 题目要求8支连续排列的发光二极管,发光二极管的依次点亮代表乒乓球的运动。用两个按键模拟左右两个球拍,键按下代表球拍击球。“左拍”按下可使发光二极管从左向右依次点亮,如同乒乓球从左向右飞来;反之,“右拍”按下则可使发光二极管从右向左依次点亮,代表乒乓球从右向左运动。本游戏供两人玩耍,以一方按键开始,这时“乒乓球”就向对方运动,接球方应在“乒乓球”到达终点时刻击球。如击球时

3、机合适,则把球击回,算得分;否则就算失误,由对方重新发球。在游戏过程中,以LED显示器显示双方比分。2.2 题目分析(1) “乒乓球”移动速度是固定的,假定每秒钟移动1位LED。(2) 在“乒乓球”移位一次的过程中,进行50次测试,查询接球方是否有击球动作。(3) 接球方的击球动作应发生在“乒乓球”到达最后一位LED1秒钟时间之内。如接球方在此1秒钟时间之内按键,则接球成功,接球方得分。“乒乓球”转为相反方向运动。此后,原接球方变为发球方,原发球方变为接球方。游戏继续进行。(4) 如接球方提前或滞后击球,则接球方失误,双方都不得分。这时“乒乓球”熄灭,LED显示器显示出双方比分,然后仍由原发球

4、方发球。2.3 解决方案本设计采用90C51单片机系统,任何软件的设计首先都应该对模型进行抽象画,使用实用化语言对对任务进行描述,对于具体到本实验的设计,最需要描述和处理的事件是击球动作,比赛双方的任何一方按下键都是一个击球动作,需要判断是发球还是击球,是提前击球还是滞后击球还是准确击球,这是本设计把乒乓球游戏抽象为系统模型的关键点。是否准确击球是具体体现为:若有键按下时则先判断A还是B击球,再根据球所在位置就可以判断击球准确还是失球。比如现在A按键击球,而同时LED当前显示值为01H,则判断A正确击球,反之若LED点亮处于其他任何状态都判A失球B得分,同样B的有效击球时间应为LED显示值为8

5、0H额时间段内,其他时间段B有击球动作都判B时分。球移动的动作抽象到系统模型即为LED的逐个点亮,而具体设计程序时,需要设计一个LED显示的子程序,再用不同的亮灯数值通过调用LED显示子程序刷新LED显示即可完成。另外定时中断在本实验中也有相当大的比重,LED逐个点亮的时间间隔,击球是否在规定时间内完成,这些都需要使用定时器来产生所需要的时间标度。3 硬件设计3.1 I/O地址分配 由90C51组成的单片机系统通常情况下,P0口分时复用作为地址、数据总线,P2口提供A15-A8即高8位地址,P3口用作第二功能,只有P1口通常用作I/O口。8051的P1口作为基本I/O口使用,P1口是8位准双向

6、口,它的每一位都可独立地定义为输入或输出,因此,既可作为8位的并行I/O口,也可作为8为的输入输出端。3.2 系统硬件模拟图本设计采用硬件与软件相结合,对所求题目进行仿真,proteus仿真图如图3.1所示,硬件实物图如图3.2所示。图3.1 proteus硬件电路图4 软件设计主程序流程图如图4.1所示。开始设置初始值设置闪烁次数R0=10,R2=8设置中断等待中断执行中断程序调用DELAY程序,延时1SR0-1=R0,R2-1=R2R0=0?R2=0?是否是否是结束图4.1 主程序流程图具体程序见附录。5 总结本课程设计经过了三个阶段的程序设计,第一阶段是了解打乒乓球的工作方式及其原理,确

7、定设计的方向与方法以及确定设计过程中需要的软件及工具。第二阶段是熟悉用keil软件编写C语言的方法,这一阶段侧重于对C语言的基本掌握,第三阶段是学校单片机AT89C51芯片的工作原理,并设计原理图,在Proteus里画好原理图然后加载程序后进行仿真验证。总体上,本设计已经达到了预期目标,在软件上做了相关的功能仿真和时序仿真,最终实现了正常打乒乓球。在本课程设计中,最初遇到了很多的棘手问题,比如如何实现发球的控制。通过查阅大量资料和虚心请教他人慢慢解决掉了设计过程中遇到的这一系列的问题。本设计也存在一些不足,比如记分板显示并不清晰,只能单方发球。因此,这需要改进。参考文献1 李华,王思明.单片机

8、应用及原理M.兰州大学出版社,2001:30-40.2 李广弟.单片机基础M.北京航空航天大学出版社,1994:45-48.3 房小翠.单片机实用系统设计技术M.国防工业出版社,1999:33-45.4 张金敏,董海棠.单片机原理与应用系统设计M.西南交通大学出版社,2010:35-56.附录#include/*宏定义*/#define uint unsigned int#define uchar unsigned charsbit LSB=P10;sbit RSB=P11;uchar d_s=2;bit HLSB=0;bit HRSB=0;uchar code wei_code=0x0e,0

9、x0d,0x0b,0x07;uchar code duan_code=0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F;uchar code dis_led = 0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff;uchar i=0,num=0;uchar Li=0,Ri=0;uchar count=0;uchar LN=0,RN=0;uchar dis=0x3f,0x3f,0x3f,0x3f;void TimeInit(void)TMOD=0X11;TH0=(65536-500

10、00)/256;TL0=(65536-50000)%256;TH1=(65536-6000)/256;TL1=(65536-6000)%256;ET0=1;TR0=1;ET1=1;TR1=1;EA=1;void ReadLK(void)if(HLSB=1&LSB=0)if(i=1)d_s=1;if(i=9)i=1;d_s=1;HLSB=LSB;void ReadRK(void)if(HRSB=1&RSB=0)if(i=8)d_s=0;if(i=0)i=8;d_s=0;HRSB=RSB;void discode(void)dis0=LN/10;dis1=LN%10;dis2=RN/10;dis3

11、=RN%10;main()TimeInit();while(1)ReadRK();ReadLK();P0=dis_ledi;discode();void timer0() interrupt 1 TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; /给T1装初值num+;if(num=10) Li=i;Ri=i; if(d_s=1)i+;else if(d_s=0)i-;else if(d_s=2)i=i;num=0;if(Li=8&i=9)d_s=2;LN+;if(Li=1&i=0)d_s=2;RN+; if(i9)i=9;if(i=4)count=0;

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1