简单设计篮球积分计时器.docx
《简单设计篮球积分计时器.docx》由会员分享,可在线阅读,更多相关《简单设计篮球积分计时器.docx(13页珍藏版)》请在冰豆网上搜索。
![简单设计篮球积分计时器.docx](https://file1.bdocx.com/fileroot1/2023-1/31/c6c36dcf-e305-42fc-89a8-0b9dae0f2865/c6c36dcf-e305-42fc-89a8-0b9dae0f28651.gif)
简单设计篮球积分计时器
目录
一、前言
二、设计任务与要求
三、总体方案
四、单元模块设计
五、程序
六、操作说明
七、设计总结
八、参考文献
九、附:
(仿真电路图)
一、前言
1、引言
在当今社会随着物质生活的提高,人们对精神文化的需求也越来越高。
篮球竞技就是其中非常重要的一个方面,而计时记分系统在竞赛中更是重中之重。
在篮球比赛中,总的倒计时是必需的,规定为12min。
除此以外,为了加快比赛节奏,还规定了队员的持球时间不能超过24s,否则就犯规。
这里所设计的计时器涵盖了以上要求,可用于篮球比赛中。
用于对总时间和持球时间24s的限制。
2、设计简介
本设计是采用AT89C52单片机设计的一个用于篮球比赛的篮球计时计分器。
本设计采用定时器T0中断进行计时,显示部分分为计时显示和计分显示两部分,均采用LCD液晶显示屏显示,用于显示整个比赛赛程的比赛时间和两队的比分情况。
采用六个键盘和外部中断0实现输入功能,用于调节时间开始与暂停、比赛过程中计分、比赛时间结束以后报警及复位等功能。
本设计采用AT89C52单片机作为核心部件,整个系统结构简单、实用性强、操作简便、具有低功耗,可靠性,安全性以及低成本等特点,该设计方案完全满足篮球计分器的设计要求。
现在篮球比赛计时器的设计大都比较的复杂,所用芯片太多,造成整体的价格提高,而且软件设计比较的复杂。
导致性价比不是很高,很难得到广泛的推广。
我所设计的这个篮球比赛计时器一改他们的缺点,硬件比较的简单,软件也很容易。
因此,实用性比较大。
二、设计任务与要求
1、设计任务:
设计并制作一个用1602LCD作为显示篮球比分的记分牌,记分牌上显示A、B对号,两队的比分,能实现每次加、减分和时间开始暂停等操作,显示时间、时间精确到1S。
2、设计要求:
(一)采用单片机控制,响应迅速,判别精确;主控台面上有按键控制,可同时对比赛时的分数显示进行加分减分,能显示整个赛程的比赛时间,暂停时间和比赛的节数。
(二)在比赛的过程中能够随时刷新各队在整个赛程中的比分,通过按键输入比分,显示在数码管上;按键分别为加1分、减1分键。
(三)具有倒计时功能,能正确显示所用的时间,每节比赛的时间是12分钟,当时间跳到0后,时间到光报警。
(四)具有开始、暂停、复位功能。
三、总体方案
1、方案比较与选择
一、单片机的选型
51单片机
虽然51单片机是8位的,采用总线结构,但具有编程控制简便、接口简单、工作可靠,价格经济,能耗少,容易实现系统小型化。
二、计时方案
软件控制
利用MCS-51内部的定时器/计数器进行中断定时,配合软件延时实现计时。
该方案节省硬件成本,并且可综合运用定时器/计数器、中断以及程序设计的知识。
因此本系统采用软件方法来实现计时。
2、设计思路
根据设计任务与要求,设计思路如下:
系统采用51单片机软件方法来实现。
设计出篮球记分、计时系统,能实现两队比分的加分、减分(防误操作)、倒计时和各种显示效果;其控制系统的模块有:
LCD液晶屏显示记分模块和计时模块、两队加分减分模块、分秒控制系统;计分统采用了指令冗余和按键松手有效消抖等抗干扰措施。
程序由显示函数、主函数、中断函数、按键扫描函数等组成,主函数中调用显示函数显示时间、比分,比分与时间同时显示。
(1)时间显示用梁老师曾给过的LCD液晶显示器的初始化程序,用来动态扫描方式显示。
(2)时间的暂停与开始,分数的累加以及复位功能,通过接入键盘电路实现。
系统共涉及6个按键,分别定义为:
K1键功能:
加分键,A队分数加;
K2键功能:
减分键,A队分数减;
K3键功能:
加分键,B队分数加;
K4键功能:
减分键,B队分数减;
K5键功能:
时间控制键,控制时间的开始和暂停;
K6键功能:
复位键,所有显示复位,从0开始;
3、硬件电路的设计
根据设计要求与设计思路,确定该系统的设计方案,图1为该系统设计方案的硬件电路设计框图。
硬件电路由3部分组成:
即按键输入电路、单片机、LCD显示模块。
图1
四、单元模块设计
1、设计特点:
本设计特点是采用模块化的设计。
其优点是:
每个模块的程序结构简单,任务明确,易于编写,调试和修改。
程序可读性好,对程序的修改可局部进行,其他部分可保持不变。
这里所设计的篮球比赛系统,也可以加以修改,用于其他比赛系统中。
根据模块的划分原则,将模块程序划分成几个模块,如图2所示:
1、按键模块:
按键扫描程序主程序中调用,方便快捷。
2、数据输出模块:
时间模块:
倒计时时间显示,比赛时间到点亮光报警模块。
比分模块:
具有加减分功能,并在LCD液晶显示器显示分数及已经使用的时间。
3、定时中断模块:
最小显示1s,用T0定时中断,写出中断的初始化函数,计算出初值,因为最小显示是1s,而定时器中断最大时间是60ms,所以1s=1000ms,故定时50ms,跳变20次显示1s。
4、LCD液晶显示器模块:
此模块用的是梁老师曾给过的LCD程序,故我调用他的程序。
2、软件设计流程图:
3、设计结果
设计的篮球比赛计时记分系统。
按照设计要求实现了所用时间的累积,以及两队的记分功能,实现了篮球计时计分器的全部功能,符合普通篮球计时计分要求。
五、程序
一、主程序:
#include
#include".\LCD1602\LCD1602.h"//调用LCD1602里的函数
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
charc=0,e=0,i=0,t=12;
unsignedcharss;
sbitL=P1^3;//提示灯
sbitK1=P1^4;//用于给A对加分
sbitK2=P1^5;//给A对减分
sbitK3=P1^6;//给B对加分
sbitK4=P1^7;//给B对减分
sbitK5=P3^0;//比赛开始暂停按键
sbitK6=P3^1;//复位键
/**************按键控制分数*****************/
voidkey()
{
if(TR0==0)
{
K1=1;//中断没开始的时候,K1置1,按键锁定
K2=1;//中断没开始的时候,K2置1,按键锁定
K3=1;//中断没开始的时候,K3置1,按键锁定
K4=1;
if(K6==0)
{
c=0;
e=0;
i=0;
t=0;
ss=0;
}
}//当中断关闭时,K1、K2、K3键锁定,不能使用
if(TR0==1)
{
if(K1==0)
{
c++;
while(K1==0);//消抖,按键放开的时候分数加1
}//按键K1控制A队分数加
if(K2==0)
{
c--;
if(c==-1)
{
c=0;
}
while(K2==0);//消抖,按键放开的时候分数减1
}//按键K2控制A队分数减
if(K3==0)
{
e++;
while(K3==0);//消抖,按键放开的时候分数加1
}//按键K3控制B队分数加
if(K4==0)
{
e--;
if(e==-1)
{
e=0;
}
while(K4==0);//消抖,按键放开的时候分数减1
}
}//按键K4控制B队分数减
if(K5==0)
{
if(K5==0)
{
TR0=~TR0;//定时器的启动与暂停
}
while(K5==0);//消抖,按键放开的时候K5操作有效
}//K5控制定时器的启动,进入倒计时
}
/*****************中断函数初始化**********************/
voidtime()
{
TMOD=0x01;//00000001中断方式设置,T0设置在方式1
TH0=15536/256;//初值设定,(65536-x)*12/(12*10^6)=50*10^3
TL0=15536%256;
ET0=1;//中断允许标志
EA=1;//中断总开关打开
}
/********************主函数***********************/
voidmain(void)
{
LCD_init();//LCD初始函数调用
time();//中断初始函数调用
while
(1)
{
write_LCD_str(0,0,"A:
B");//显示字符串
write_LCD_str(10,0,"Time");
write_LCD_char(0,1,c/10+0x30);//A队分数十位显示
write_LCD_char(1,1,c%10+0x30);//A队分数个位显示
write_LCD_str(2,1,":
");
write_LCD_char(5,1,e/10+0x30);//B队分数十位显示
write_LCD_char(6,1,e%10+0x30);//B队分数个位显示
write_LCD_char(11,1,t/10+0x30);//分钟十位此案时
write_LCD_char(12,1,t%10+0x30);//分钟个位显示
write_LCD_str(13,1,":
");
write_LCD_char(14,1,ss/10+0x30);//秒钟十位显示
write_LCD_char(15,1,ss%10+0x30);//秒钟个位显示
key();//按键函数调用
}
}
/***************中断倒计时**********************/
voidjk()interrupt1
{
TH0=15536/256;//初值
TL0=15536%256;
i++;
if(i>19)//当i加到20的时候,程序往下运行
{
i=0;
ss--;//秒数减运算
if(ss==-1)//当秒数减到小于0的时候
{
ss=59;
t--;//分数减运算
if(t==-1)//当分数减到小于0的时候
{
t=0;//时间分钟后显示为0
ss=0;//时间秒钟后显示为0
L=~L;//点亮提示灯
TR0=0;//当时间减到0的时候,时间显示为00:
00,关闭中断
}
}
}
}
二、调用的LCD液晶显示器程序:
(自己写有关书籍有介绍~!
)
五、操作说明书
1、设计功能说明
本设计以AT89C52单片机为核心器件,组成一个电子计时记分系统;系统显示用LCD液晶显示器,显示各队分数以及比赛所用的时间,随时暂停,随时开始。
2、操作说明
1、接通电源,系统初始化,LCD液晶显示器显示
,以及时间
。
2、当按下开始/暂停按钮K5后,计时的缓冲区初始化开始倒计时,系统通过不断地查询加减分按键(K1,K2,K3,K4)是否按下,若有,经过按键去抖动程序后,若查询到当按下K1键,则A队分数加1;若查询到当按下K2键,则A队分数减1;若查询到当按下K3键,则B队分数加1;若查询到当按下K4键,则B队分数减1。
当开始/暂停键没有按下时,加减分键被锁定,按下无用。
3、任何时候按下K5键都会使比分以及时间复位,显示最初的值。
附:
系统共涉及的6个按键,分别定义资料:
K1键功能:
加分键,A队分数加;
K2键功能:
减分键,A队分数减;
K3键功能:
加分键,B队分数加;
K4键功能:
减分键,B队分数减;
K5键功能:
时间控制键,控制时间的开始和暂停;
K6键功能:
复位键,所有显示复位,从0开始;
七、设计总结(心得)
为期两周的单片机课程设计拉下了帷幕,我深刻体会到了其中的苦与乐,感悟甚是深切.
在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质,并将理论与实际相结合,学以致用,不再是纸上谈兵,。
对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。
我在整个设计过程中懂得了许多东西,当遇到一不了的问题,跟同伴一起商量、合作,或许能收到事半功倍的效果。
不管学什么,一定要打好基础,并将其学好、学精,但空有知识也不一定就能说明什么,还得能为己所用;还有更重要的是培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。
虽然这个设计做的不是很完美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益;最后,也是我感触比较深的一点,这次课程设计时为数不多的独立完成的一次,虽然过程中遇到很多困难,让自己犯愁过,彷徨过,急躁过,可当自己很快调整好心态,从跌倒的地方爬起来继续,最后取得成功,不止是成功后的喜悦,也是一次锻炼!
八、参考文献
[1]王静霞主编.《单片机应用技术(C语言版)》[M].电子工业出版社,2009年.
[2]刘守义主编.《单片机应用技术》[M].西安电子科技大学出版社,2002年.
[3]张大明主编.《单片微机控制应用技术》[M].机械工业出版社,2000年.
[4]李俊婷主编.《计算机辅助电路设计与ProtelDXP》[M].高等教育出版社,2005年.
[5]XX资讯.
九、附:
(仿真电路图)
1、仿真电路图
2、原理图