单片机课程设计玩乒乓球_第1页
单片机课程设计玩乒乓球_第2页
单片机课程设计玩乒乓球_第3页
单片机课程设计玩乒乓球_第4页
单片机课程设计玩乒乓球_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

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的有效

5、击球时间应为led显示值为80h额时间段内,其他时间段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/

6、o口使用,p1口是8位准双向口,它的每一位都可独立地定义为输入或输出,因此,既可作为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里画好原理图然后加载程序后进行仿真验证。总体上,本设计已经达到了预期目标,在软件上做了相关的功能仿真和时序仿真,最终实现了正常打乒乓球。在本课程设计中,最初遇到了很多的棘手问题,比如如何实现发球的控制。通过查阅大量资料和虚心请教他人慢慢解决掉了设计过程中遇到的这一系列的问题。本设计也存在一些不足,比如记分板显示并不清晰,只能单方发球。因此,这需要改进。参考

8、文献1 李华,王思明.单片机应用及原理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 w

9、ei_code=0x0e,0x0d,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;

10、th0=(65536-50000)/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=rn%10;main()timeinit();while(1)readrk();readlk();p0=dis_ledi;discode();void timer0() interrupt 1 th0 = (65536 - 50000) / 256; tl0 = (65536 - 50000) % 2

温馨提示

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

评论

0/150

提交评论