篮球比赛计时计分.docx
- 文档编号:15066522
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:22
- 大小:27.14KB
篮球比赛计时计分.docx
《篮球比赛计时计分.docx》由会员分享,可在线阅读,更多相关《篮球比赛计时计分.docx(22页珍藏版)》请在冰点文库上搜索。
篮球比赛计时计分
摘要
本设计是采用AT89C51单片机为核心设计的一个用于赛场的篮球计时计分器。
本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。
计时部分计时范围宽,而且可定时设定与小时、分钟调整;计分部分调节灵活,显示范围宽,足以满足各种规模赛程需要。
两个显示模块均采用动态扫描方式显示。
在本设计中P3口(P3.0—P3.5)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口计分数据输出口,计时计分均设有显示缓冲区(40H—45H计分显示缓冲区,30H—35H计时显示缓冲区)。
本设计共有K1—K6六个设置按键,K1是甲加分键(按一次加一分),K2是乙加分键(按一次加一分),K3是定时切换键(定时设置与计时调时切换),K4是小时调整键(计时与定时小时调整),K5是分钟调整键(计时与定时分钟调整),K6分数位置交换键(交换甲、乙两队比分的位置)。
按键与P1口相接,低电平输入有效,另外还有一个复位按键K7。
报警部分由555与扬声器组成,当计时时间到时,输出低电平,由555构成的电路工作输出脉冲信号驱动扬声器发出声音。
计时定时的原理与定时闹钟相同,为定时设置定时小时和定时分钟计数单元,通过比较定时与计时的时分计数单元判断比赛是否结束是否报警,定时与计时共用一个显示缓冲区,通过K3(定时切换键)进行显示切换,本设计可通过定时显示的秒位判断定时是否有效,如果秒位显示00说明无效(上次用过的定时),显示11说明有效(本次定时)。
定时时间到,扬声器报警,比赛结束,按K3键可停止报警(否则一直报警)。
本次设计的篮球计时计分器具有以下的功能:
[I] 能记录整个赛程的比赛时间,并能修改比赛时间。
[II] 能随时刷新甲、乙两队在整个比赛过程中的比分。
[III] 中场交换比赛场地时,能交换甲、乙两队比分的位置。
[IV] 比赛结束时,能发出报警声。
目录
1概述-3-
1.1单片机简介-3-
1.2单片机发展前景-4-
1.3课程设计的意义-5-
1.4任务与要求-5-
2系统总体方案及硬件设计-6-
2.1系统总体方案设计-6-
2.2硬件系统设计-6-
2.2.1单片机选择-6-
2.2.2时钟电路模块-7-
2.2.3复位电路模块-8-
2.2.4按键控制键盘模块-8-
2.2.5显示模块和定时报警模块-9-
3软件设计-11-
3.1软件总体设计方案-11-
3.2程序模块设计-11-
3.2.1中断入口程序-12-
3.2.2主程序模块与定时设置子程序-13-
3.2.3定时器T0中断服务程序和计时加1秒的子程序-15-
3.2.4计时定时值与计分转换到显示缓冲区子程序-15-
3.2.5报警服务子程序与延时子程序-16-
4PROTEUS软件仿真-17-
5课程设计体会-20-
参考文献-21-
附1源程序代码-22-
附2系统原理图-30-
1概述
1.1单片机简介
单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。
世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。
篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器等组成。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。
所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它。
据统计,我国的单片机年容量已达1—3亿片,且每年以大约16%的速度增长,特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。
但相对于世界市场我国的占有率还不到1%。
我国开始使用单片机是在1982年,短短五年时间里发展极为迅速。
1986年在上海召开了全国首届单片机开发与应用交流会,有的地区还成立了单片微型计算机应用协会,那是全国形成的第一次高潮。
截止今日,单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站。
所以,学习单片机在我国是有着广阔前景的。
1.2单片机发展前景
现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
1.低功耗CMOS化
MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
2.微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
3.主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以C8051为核心的单片机占据了半壁江山。
而Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
1.3课程设计的意义
通过课程设计可以使我们进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;通过利用MCS-51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件Proteus的使用方法;掌握键盘和显示器在的单片机控制系统中的应用和掌握撰写课程设计报告的方法。
我选择了设计一个用于赛场的篮球计时计分器,可以代替球场上的人工计时计分,实现带电子显示、有比赛结束报警等功能的精确计时计分器。
在该篮球计时计分器设计中不仅用到了单片机定时器中断系统,还用到了单片机4个I/O口。
其中的按键输入和数码管显示模块都是单片机设计的最常用、最普通的模块。
既巩固了以前学的单片机课程又体验了单片机编程应用的过程。
1.4任务与要求
设计一个用于赛场的篮球计时计分器
设计要求
[I] 能记录整个赛程的比赛时间,并能修改比赛时间。
[II] 能随时刷新甲、乙两队在整个比赛过程中的比分。
[III]中场交换比赛场地时,能交换甲、乙两队比分的位置。
[IV] 比赛结束时,能发出报警声。
2系统总体方案及硬件设计
2.1系统总体方案设计
篮球计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警、按键控制键盘模块。
通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。
系统总体框图如下图(图1)所示:
单
片
机
控
制
系
统
定时报警
按
键
控
制
模
块
计
时
显
示
模
块
计
分
显
示
模
块
图1:
系统总体框图
采用AT89C51单片机最小化应用设计,定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。
两个显示模块均采用动态扫描显示。
在本设计中P3口(P3.0—P3.5)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口计分数据输出口。
按键设置输入与报警输出采用P1口传输数据。
2.2硬件系统设计
2.2.1单片机选择
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL
高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51的主要特性如下:
·与MCS-51兼容
·4K字节可编程闪烁存储器寿命:
1000写/擦循环,数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
图2:
AT89C51单片机引脚功能
2.2.2时钟电路模块
时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。
为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个22P的独石电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。
具体连接电路如图3所示:
89C51
C1
振荡器
CYS
C2
图3:
时钟电路
2.2.3复位电路模块
单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用220Ω的阻值,电容采用电容值为10μ的电解电容。
具体连接电路如图4所示:
图4:
复位电路
2.2.4按键控制键盘模块
本设计共有K1—K6六个设置按键,K1是甲加分键(按一次加一分),K2是乙加分键(按一次加一分),K3是定时切换键(定时设置与计时调时切换),K4是小时调整键(计时与定时小时调整),K5是分钟调整键(计时与定时分钟调整),K6分数位置交换键(交换甲、乙两队比分的位置)。
按健与P1口相接,低电平输入有效。
另外还有一个复位按键K7。
图5:
按键控制电路
2.2.5显示模块和定时报警模块
共阴极数码管中8个发光二极管的阴极连接在一起,即为共阴极接法,简称共阴数码管。
通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
本次设计在显示模块用到的是一个6位一体的共阴极数码管,有8个代码输入口和6个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,这就是动态驱动,由于扫描速度极快,显示效果与静态驱动相同。
其具体图形如下图6所示:
图6:
显示模块电路
报警模块由555与扬声器组成,如图7所示。
也可以在程序中设计一定频率的脉冲信号,从而省去由555构成的脉冲发生器。
图7:
报警模块电路
3软件设计
3.1软件总体设计方案
本次单片机课程设计软件设计部分采用模块化程序设计,程序部分由中断入口程序、主程序、T0中断服务程序、扫描显示子程序、计时加1秒的子程序、计时(定时)值与计分转换到显示缓冲区子程序、定时设置子程序、报警服务子程序、延时子程序。
3.2程序模块设计
为了增加程序的可读性,在程序开头用伪指令进行了如下预定义
scoreDisplayBufferequ40h设置计分显示缓冲区的地址为40h-45h
ascoreequ47h设置甲队的计分地址
bscoreequ49h设置乙队的计分地址
akeybitp1.0设置甲加分键(按一次加一分)
bkeybitp1.1设置乙加分键(按一次加一分)
abkeybitp1.6设置分数位置交换键(交换比分位置)
DisplayBufferequ30h设置计、定时显示缓冲区地址30h-35h
OneSecondCounterequ39h设置1秒计数地址
Hourequ3ah设置小时计数地址
Minuteequ3bh设置分钟计数地址
Secondequ3ch设置秒计数地址
ClockModeequ20h.0设置模式(计时/定时)寄存器地址
AlarmOnOffequ20h.1设置报警开启/关闭标志
AlarmTimeOnequ20h.2设置计时时间到标志
DispHourequ21h设置小时显示寄存器的地址
DispMinuteequ22h设置分钟显示寄存器的地址
DispSecondequ23h设置秒显示寄存器的地址
AlarmHourequ2eh设置定时小时计数地址
AlarmMinuteequ2fh设置定时分钟计数地址
AlarmSetKeybitp1.2定义设置定时设置切换键
MinuteKeybitp1.5定义分设置键
HourKeybitp1.4定义小时设置键
RelayOutequp1.3定义报警发声输出引脚
程序流程图如下:
程序流程图如下:
计时开始
启动
工作状态及计数单元等初始化
1秒到了吗?
否
是
甲或乙加分键按了吗?
分数交换按下了吗?
定时到了吗?
是
否
调报警程序
缓冲更新
显示刷新
执行相应的语句(甲加分或乙加分或交换分数计数单元)
是
否
是
否
有计时或定时调整吗
调计(定)时时间
图8:
程序流程图
3.2.1中断入口程序
org00h复位入口
ajmpReset
org0bhT0中断服务程序入口
ajmpTimeInt
org0020h
3.2.2主程序模块与定时设置子程序
程序开始先初始化,包括状态初始化、计数和缓冲等单元的初始化。
然后是程序的主循环部分。
通过语句
jnbakey,bbb1(如甲加分键按下,执行bbb1后的语句,完成甲分数加一)
jnbbkey,bbb2(如乙加分键按下,执行bbb2后的语句,完成乙分数加一)
jnbabkey,bbb3(如显示交换键按下,执行bbb3后的语句,交换显示)
ajmpxxx(如果没有分数设置键按下,跳到xxx语句)
进行有关分数的设置程序的调用。
而xxx后的用类似的语句jbAlarmSetKey,CheckMinuteKey;jbMinuteKey,CheckHourKey;jbHourKey,CheckAlarm来进行有关计时和定时的设置。
通过语句jbAlarmSetKey,CheckMinuteKey;callDelay;jbAlarmSetKey,CheckMinuteKey;setbClockMode;callAlarmSet决定是设置计时还是调用定时设置程序。
计时与定时调整通过几个与cjnea,#3ch,NotOver1;
movMinute,#0类似的语句完成小时的24循环、分钟和秒的60循环。
主程序流程图如下图(图9)所示:
是
是
否
是
否
否
是
否
是
是
否
状态等初始化启动主程序
甲加分键按下了吗
乙加分键按下了吗
分数位置交换键按下了吗
甲加分
乙加分
交换
定时设计键按了吗
计时调整了吗
调用定时调整程序
计时调整
调用程序ConvertoBuffer
AlarmTimeOn是否为1(定时到没)
调用报警子程序
3.2.3定时器T0中断服务程序和计时加1秒的子程序
通过OneSecondCounter判断是否到一秒。
如果到了,就调用计时加1秒的子程序。
在计时加1秒的子程序中通过
mova,Second
jnzNotAlarm判断秒是否为00
mova,Minute
cjnea,AlarmMinute,NotAlarm判断计时与定时分钟是否相同
mova,Hour
cjnea,AlarmHour,NotAlarm判断计时与定时小时是否相同
setbAlarmTimeOn
判断定时时间到否。
如果定时时间到就调用报警服务程序。
3.2.4计时定时值与计分转换到显示缓冲区子程序
在该子程序中通过与以下语句类似的语句完成将显示寄存器中的内容转换到显示缓冲区。
mova,DispSecond将显示寄存器中的内容赋值给a
movb,#10令b=10
divaba/b商(十位)放a中,余数(个位)放b中
mov@r1,b将b中的个位赋值给((r1))
incr1r1自加1
mov@r1,a将a中的十位赋值给((r1))
incr1r1自加1
分钟和小时的相关语句与之类似。
如果设置了定时时间则赋予(定时)秒显示寄存器11,否则赋予00.因为报警服务程序中有clrAlarmOnOff语句,所以秒位显示00说明无效(上次用过的定时),显示11说明有效(本次定时)。
将定时内容转换到显示缓冲区时,通过以下语句可标示当前的定时是否有效。
如果秒位显示00说明无效(上次用过的定时),显示11说明有效(本次定时)。
jbAlarmOnOff,AlarmOn
movDispSecond,#00h
ajmpNext
AlarmOn:
movDispSecond,#11
3.2.5报警服务子程序与延时子程序
报警服务子程序通过语句clrRelayOut输出报警(低电平有效),语句jbAlarmSetKey,$决定按K3(定时设置键)键可停止报警(否则一直报警),clrAlarmOnOff的作用是标示当前的定时是否有效。
延时子程序就是分别给r6、r7赋值,然后自减循环延时。
4PROTEUS软件仿真
用PROTEUS软件进行仿真,各项指标均达到了要求,完美地实现了篮球计时计分器功能,仿真图如下:
1、PROTEUS软件仿真原理图如下图所示:
2、启动篮球计时计分器,开始工作,PROTEUS软件仿真电路启动界面如下:
(按下“START/PAUSE”开始比赛或者暂停)
5、计时调整:
K3定时切换、K4小时调整、K5分钟调整;
计分调整:
按下K6,甲乙队比分交换显示位置,即按下“CHANGFIELD”交换场地,重新计时。
6、复位操作:
按K7复位,复位后即可进行新一轮比赛计时计分工作。
以上即为本单片机系统设计-篮球计时计分器功能原理,进行PROTEUS软件仿真,性能稳定,功能齐全,调节灵活,显示范围宽,可满足各种规模篮球及其它相关比赛赛程需要。
5课程设计体会
本次单片机课程设计我选择了“篮球计时计分器”这一题目,通过这次课程设计,自己再次学习了微机原理,并认真复习单片机,查阅和浏览了很多的相关资料,并且对Wave6000和Proteus软件的使用有了很大提高。
通过这次课程设计的学习与思考,认真总结,我觉得单片机课程设计主要包括四方面的内容:
软件部分设计、硬件部分设计、运用Wave6000及Proteus软件仿真及写出课程设计报告。
这四部分内容看似简单,但实际操作起来却并不轻松。
在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。
软件部分的设计,我按照模块化的思想,一块一块的叠加,常常是各个模块单独调试时没有错误,但是叠加后却有错误,大都是一些细节问题,比如标号重复定义、内存冲突使用等等。
在这次单片机系统的课程设计中,我学到了很多,尤其是在调试程序的过程中,我遇到了很多问题,自己摸索着改正了一些,还有一些错误我没有发现。
我及时和老师联系。
在她们的指导下,我学会了更多的查错方法和仿真知识。
这次课程设计,我查阅了大量的文献的资料,也更清楚的认识到自己所学的不足,我学到了很多新的知识,同时也加深了对以前所学知识的理解,也增强了编程与仿真的操作能力。
总之,这次课程设计让我明白:
理论必须和实际结合才有威力,知识必须通过应用才能实现其价值!
所学的东西最终是要面向应用的,是为了在以后的工作中能够更好的应用,此时的知识积累是为以后的工作做好坚实的基础。
这个设计总体上不算完美,但是在这次课程设计的经历的好处是不可估量的。
参考文献
期刊论文:
[1]金素华,张尉.单片机调试方法的讨论.电子世界,2004,25(4):
34-65
[2]宋凤娟,廉文利,付云强.单片机89C51在调速系统中的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 篮球比赛 计时 计分