基于51单片机的篮球计时计分器(共24页).doc

上传人:飞****2 文档编号:13890104 上传时间:2022-05-01 格式:DOC 页数:24 大小:429.50KB
返回 下载 相关 举报
基于51单片机的篮球计时计分器(共24页).doc_第1页
第1页 / 共24页
基于51单片机的篮球计时计分器(共24页).doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《基于51单片机的篮球计时计分器(共24页).doc》由会员分享,可在线阅读,更多相关《基于51单片机的篮球计时计分器(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上成绩 计算机系统与接口技术课程设计报告题 目: 篮球记时记分器 姓 名: 学 号: 班 级: 专 业: 电子信息科学与技术 信电学院 2010年12月24日专心-专注-专业徐州工程学院信电学院课程设计任务书2010-2011学年第1学期专业电子信息科学与技术班级08电信课程名称计算机接口技术课程设计课程类别必修设计时间2010年12月10日2010年12月24日一、课程题目: 篮球比赛计分器二、课程设计要求:单片机课程设计的主要内容包括:理论设计、调试与仿真、撰写设计报告等。其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及

2、计算参数等;软件设计包括模块化层次结构图,程序流程图。程序设计是课程设计的关键环节,通过调试进一步完善程序设计,使之达到课题所要求的指标, 三、设计任务概述:(1)能记录整个赛程的比赛时间,并能修改比赛时间。(2)能随时刷新甲、乙两队在整个比赛过程中的比分。(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。(4)可随时接受暂停请求。四、设计计划与时间安排:单片机课程设计的主要内容包括:理论设计、调试与仿真、撰写设计报告等。其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。程序设计是课程设计的关

3、键环节,通过调试进一步完善程序设计,使之达到课题所要求的指标,使理论设计更接近于实际产品。课程设计的最后要求是写出设计总结报告,把理论设计内容,调试的过程及性能指标的测试结果进行全面的总结,把实践内容上升到理论高度。指导老师签字 年 月 日教研室审核意见年 月 日摘 要本设计是采用AT89S51单片机为核心设计的一个用于赛场的篮球计时计分器。本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。计时部分可以调整分钟,足以满足一般赛程需要。两个显示模块均采用动态扫描方式显示。在本设计中P0(P0.1P0.6)口是时间和分数的段码数据输出口,P2口是时间和分数的位

4、选数据输出口,本设计共有九个设置按键,add1、add2是加分键(add1按一次加一分,add2按一次加二分),minus1是减分键(按一下减一分),exchange是分数位置交换键,bstop是关蜂鸣器键,start是开始计时键键(按键按下开始倒计时),stopagain是时间暂停键,turn是切换键(用于加分键的切换),timeadd是时间设定键。按键与P1口相接,低电平输入有效。报警部分由有蜂鸣器及其驱动电路组成。定时时间到,扬声器报警,比赛结束,按bstop键可停止报警(否则一直报警)。本次设计的篮球计时计分器具有以下的功能:(1) 能记录整个赛程的比赛时间,并能修改比赛时间。(2)

5、能随时刷新甲、乙两队在整个比赛过程中的比分。(3) 中场交换比赛场地时,能交换甲、乙两队比分的位置。(4) 比赛结束时,能发出报警声。(5) 可随时接受暂停请求。目录1 概述1.1 单片机简介 单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电

6、子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件,篮球计时计分器就是以单片机为核心的计时计分系统。计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子 宠物等,这些都离不开单片机。以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高

7、,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它。据统计,我国的单片机年容量已达13 亿片,且每年以大约16%的速度增长,特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。但相对于世界市场我国的占有率还不到1%。我国开始使用单片机是在1982 年,短短五年时间里发展极为迅速。1986 年在上海召开了全

8、国首届单片机开发与应用交流会,有的地区还成立了单片微型计算机应用协会,那是全国形成的第一次高潮。截止今日,单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站。所以,学习单片机在我国是有着广阔前景的。1.2 课程设计的意义通过课程设计可以使我们进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;通过利用AT89S52单片机,理解单片机在自动化仪表中的作用以及掌握单片机的C语言编程方法;通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件Proteus的使用方法; 掌握独立键盘和LED显示器在的单片机控制系统中的

9、应用,掌握撰写课程设计报告的方法。 我选择了设计一个用于赛场的篮球计时计分器,可以代替球场上的人工计时计分实现带电子显示,有比赛结束报警等功能的精确计时计分器。在该篮球计时计分器设计中不仅用到了单片机定时器中断系统和外部中断系统,还用到了单片机3个I/O口。其中的按键输入和数码管显示模块都是单片机设计的最常用、最普通的模块。既巩固了以前学的单片机课程又体验了单片机C编程应用的过程。1.3 任务与要求设计一个用于赛场的篮球计时计分器设计要求(1)能记录整个赛程的比赛时间,并能修改比赛时间。(2)能随时刷新甲、乙两队在整个比赛过程中的比分。(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。(4

10、)比赛结束时,能发出报警声。(5)可随时接受暂停请求。2系统总体方案及硬件设计2.1 系统总体方案设计篮球计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警、按键控制键盘模块。通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。系统总体框图如下图(图1)所示:AT89S52单片机单片机报警电路时间显示分数显示按键控制图1:系统总体框图采用AT89S52单片机最小化应用设计,定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。两个显示模块均采用动态扫描显示。在本设计中P0口(P0.0P0.6)是段选输出口,P2口是位选输出口。按键设置输入

11、采用P1口传输数据,报警输出采用P0.7口,时间设定采用外部中断零设定。2.2 软件系统设计2.2.1 单片机选择 AT89S52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能微处理器,俗称单片机。AT89S52的主要特性如下:与MCS-51 兼容8K字节可编程闪烁存储器128*8位内部RAM32可编程I/O线三个16位定时器/计数器6个中断源可编程串行通道片内振荡器和时钟电路 图2:AT89S52单片机引脚功能2.2.2 时钟电路模块时钟电路在单片机系统中起着非常重要的

12、作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个30uF的瓷片电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接电路如图3所示:图3: 时钟电路2.2.3 复位电路模块 单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用470的阻值,电容采用电容值为10F的电解电容。具体连接电路如图4所示:图4:复位电路2.2.4按键控制键盘模块本设计共有九个设置按键,add1、

13、add2是加分键(add1按一次加一分,add2按一次加二分),minus1是减分键(按一下减一分),exchange是分数位置交换键,bstop是关蜂鸣器键,start是开始计时键键(按键按下开始倒计时),stopagain是时间暂停键,turn是切换键(用于加分键的切换),timeadd是时间设定键。图5:按键控制电路2.2.5 显示模块和定时报警模块本次设计在显示模块用到的是一个4位一体和二个2位一体的共阴极数码管,有7个段码输入口和8个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,这就是动态扫描,由于扫描速度极快,显

14、示效果与静态显示相同。其具体图形如下图6所示:图6:显示模块电路报警模块蜂鸣器,如图7所示。图7:报警模块电路3 软件设计3.1 软件总体设计方案本次单片机课程设计软件设计部分采用模块化程序设计,程序部分由定时器T0中断程序、显示延时程序、延时消抖程序(16ms)、显示程序、外部中断零程序、按键按下否程序、报警程序组成。3.2 程序模块设计 为了增加写程序的方便性及可读性,在程序开头将P1口各位定义如下:sbit bizz=P07;sbit add1=P10;sbit add2=P11;sbit minus1=P12;sbit exchange=P13;sbit bstop=P14;sbit

15、start=P15;sbit stopagain=P16;sbit turn=P17;sbit timeadd=P32;主程序流程图如下: 开始初始化显示程序时间为零否 ?NY显示函数开始按键安息否?NY 按键函数报警函数时间为零否 ?N结束Y图8:主程序流程图4 PROTEUS软件仿真用PROTEUS软件进行仿真,各项指标均达到了要求,完美地实现了篮球计时计分器功能,仿真图如下:1、 PROTEUS软件仿真原理图如下图所示:2、 启动篮球计时计分器,运行,计时部分立即开始工作计时,PROTEUS软件仿真计时显示如下计分(甲队23分、乙队13分):3、复位操作:按复位键,复位后即可进行新一轮比

16、赛计时计分工作。5 课程设计体会本次单片机课程设计我选择了“篮球计时计分器”这一题目,通过这次课程设计,自己认真复习单片机,查阅和浏览了很多的相关资料, 并且提高了使用Kile3和Proteus软件的熟练程度。通过这次课程设计的学习与思考,认真总结,我觉得单片机课程设计主要包括四方面的内容:软件部分设计、硬件部分设计、运用Kile3及Proteus软件仿真及写出课程设计报告。这四部分内容看似简单,但实际操作起来却实不轻松。在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。软件部分的设计,我按照模块化的思想,一块一块的叠加。

17、在这次单片机系统的课程设计中,我学到了很多,尤其是在调试程序的过程中,我遇到了很多问题,自己摸索并一个一个的克服,自信心进一步得到了加强,证明我并不是只会学课本而不会用的那种学生。我学会了更多的查错方法和仿真知识。这次课程设计,我又一次的学习了C语言的编程,发现自己的确很喜欢编程,也更清楚的认识到自己所学的不足,我学到了很多新的知识,同时也加深了对以前所学知识的理解,也增强了编程与仿真的操作能力。总之,这次课程设计让我明白:理论必须和实际结合才有威力,知识必须通过应用才能实现其价值!所学的东西最终是要面向应用的,是为了在以后的工作中能够更好的应用,此时的知识积累是为以后的工作做好坚实的基础。这

18、个设计总体上不算完美,但是在这次课程设计的经历的好处是不可估量的。参考文献1 谢维成、杨加国。单片机原理与应用及C51程序设计。北京:清华大学出版社。2006.82 林志琦.基于Proteus的单片机可视化软硬件仿真M.北京:北京航空航天大学出版社,2006.93 周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真M.北京:北京航空航天大学出版社,2006.54 张靖武,周灵彬.单片机系统的PROTEUS设计与仿真M.北京:电子工业出版社,2007.45 周润景,张丽娜.PROTEUS入门实用教程M.北京:机械工业出版社,2007.9电子文献:郭天祥的单片机教学视频附1 源程序代码

19、#include#include #define uint unsigned int#define uchar unsigned charuchar code table1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; uchar code table= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar disbuffer8=0;uchar minute=0,second=0;uchar Ascore=0,Bscore=0,temp=0;uchar flage1=0;uchar

20、 flage=0;uint count,z;sbit bizz=P07;sbit add1=P10;sbit add2=P11;sbit minus1=P12;sbit exchange=P13;sbit bstop=P14;sbit start=P15;sbit stopagain=P16;sbit turn=P17;sbit timeadd=P32;void ininterrupt() interrupt 1 /定时器T0中断函数 TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=20)count=0;if(second

21、=0 & minute=0)ET0=0; else if(second=0 & minute!=0) second=59;minute-; else if(second!=0 ) second-; void delay( ) /显示延时函数uint x,y;for(x=10;x0;x-)for(y=10;y0;y-); void delay1( ) /延时消抖函数16msuint x,y;for(x=10;x0;x-)for(y=360;y0;y-);void display1()uchar i,j;uchar temp;disbuffer3=second%10;disbuffer2=seco

22、nd/10;disbuffer1=minute%10;disbuffer0=minute/10;disbuffer5=Ascore%10;disbuffer4=Ascore/10;disbuffer7=Bscore%10;disbuffer6=Bscore/10;temp=0xfe;P2=temp;for(i=0;i8;i+)j=disbufferi;P0=table1j;delay();temp=_crol_(temp,1);P2=temp;void display() /显示函数uchar i,j;uchar temp;disbuffer3=second%10;disbuffer2=sec

23、ond/10;disbuffer1=minute%10;disbuffer0=minute/10;disbuffer5=Ascore%10;disbuffer4=Ascore/10;disbuffer7=Bscore%10;disbuffer6=Bscore/10;temp=0xfe;P2=temp;for(i=0;i8;i+)j=disbufferi;P0=tablej;delay();temp=_crol_(temp,1);P2=temp;void bizzer()while(minute=0 & second=0)bizz=1;display1();if(!bstop=1)delay1(

24、);if(!bstop=1)while(!bstop=1);while(1)bizz=0;display(); void exinterrupt() interrupt 0delay1();if(!timeadd)while(!timeadd);minute+; void button()/按键按下否函数if(!turn)delay1();if(!turn)while(!turn);flage+=1; if(flage%2=0)if(!add1)delay1();if(!add1)while(!add1);Ascore+=1; if(!add2)delay1();if(!add2)while(

25、!add2);Ascore+=2;if(!minus1)delay1();if(!minus1)while(!minus1);Ascore-=1;elseif(!add1)delay1();if(!add1)while(!add1);Bscore+=1; if(!add2)delay1();if(!add2)while(!add2);Bscore+=2; if(!minus1)delay1();if(!minus1)while(!minus1);Bscore-=1;if(!exchange)delay1();if(!exchange)while(!exchange);temp=Ascore;A

26、score=Bscore;Bscore=temp;if(!stopagain)delay1();if(!stopagain)while(!stopagain);flage1+=1;if(flage1%2=1)TR0=0; else TR0=1; if(!bstop=1) delay1();if(!bstop=1)while(!bstop=1);bizz=0; void main()while(1)display1();TH0=(65536-50000)/256;TL0=(65536-50000)%256;TMOD=0x01;EA=1;ET0=1;EX0=1;IT0=1;if(!start)delay1();if(!start)while(!start);TR0=1;while(minute!=0 | second!=0 )display1();button();bizzer();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁