篮球比赛电子记分牌设计报告.docx

上传人:b****6 文档编号:3019749 上传时间:2022-11-17 格式:DOCX 页数:29 大小:7.76MB
下载 相关 举报
篮球比赛电子记分牌设计报告.docx_第1页
第1页 / 共29页
篮球比赛电子记分牌设计报告.docx_第2页
第2页 / 共29页
篮球比赛电子记分牌设计报告.docx_第3页
第3页 / 共29页
篮球比赛电子记分牌设计报告.docx_第4页
第4页 / 共29页
篮球比赛电子记分牌设计报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

篮球比赛电子记分牌设计报告.docx

《篮球比赛电子记分牌设计报告.docx》由会员分享,可在线阅读,更多相关《篮球比赛电子记分牌设计报告.docx(29页珍藏版)》请在冰豆网上搜索。

篮球比赛电子记分牌设计报告.docx

篮球比赛电子记分牌设计报告

等级:

湖南工程学院

课程设计

课程名称专业设计

课题名称篮球比赛电子记分牌设计

专业电子科学与技术

班级1102班

学号************

姓名

指导教师李延平

 

2014年5月15日

湖南工程学院

课程设计任务书

 

课程名称专业设计

课题篮球比赛电子记分牌设计

专业班级电子科学与技术1102班

学生姓名

学号11

指导老师李延平

审批

 

任务书下达日期2014年5月5日

任务完成日期2014年5月16日

设计内容与设计要求

设计内容及要求:

设​计​一​个​篮​球​比​赛​记​分​牌​,​使​用​6​位​数​码​管​显​示​倒​计​时​的​分​钟​、​秒​钟​值​;​3位​数​码​管​显​示​A​方​得​分​;​3​位​数​码​管​显​示​B​方​得​分​;​使​用​L​E​D​灯​作​为​上​、​下​半​场​的​标​志​;​按键实现单​次​加​分​值​包​括​1​分​、​2​分​和​3​分​;​半​场​时​间​到​输​出​3​秒​的​声​光​提​示​;​可​进​行​比​赛​暂​停​、​比​赛​加​时​等​操​作​;​终​场​时​间​到​输​出​5​秒​的​声​光​提​示​

一系统总体方案设计

1总体设计思路

本设计以STC89C52RC单片机为核心设计的篮球比赛电子记分牌。

本设计采用定时器T0中断计时,定时器T1中断分时显示比赛比分与比赛时间,并由6位八段共阴数码管显示(比赛时间显示只用四位)。

控制模块由4*4矩阵键盘输入控制,具有:

开始暂停功能,对比赛分数加1、加2、加3、减1,中场切换显示比赛得分功能;对时间(加时赛)加1、减1功能。

提示模块由8个LED灯和蜂鸣器完成。

L0~L3亮表示上半场,L4~L7亮表示下半场,L0、L1、L6、L7亮表示加时赛,全亮表示半场(上半场、下半场或加时赛)结束;上半场时间到8个LED灯全亮3秒,蜂鸣器蜂鸣3秒;终场时间到8个LED灯全亮5秒,蜂鸣器蜂鸣5秒。

2总体设计框图

 

图1.2总体设计框图

 

二软件仿真设计

在本设计中,系统的软件设计采用了模块化的设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。

2.1主程序设计

2.1.1设计思路

本设计中单片机的主要功能就是利用内部的定时器计时,并随时接受矩阵键盘控制模块的信息,将比赛的得分(分别以3个数码管)和剩余时间显示在6位八段共阴数码管上。

利用定时器T0实现比赛时间的倒计时,并以分、秒显示在4个数码管上。

定时器T1实现比赛的比分与比赛剩余时间分时(相隔3秒)显示在数码管上。

上半场结束时,A、B对比赛得分自动切换显示在数码管上。

上半场比赛时,以D1~D4点亮作为标志;下半场比赛时,以D5~D8点亮作为标志;加时赛时,以D1、D2、D7、D8点亮作为标志。

上半场结束时,D1~D8全亮3秒,蜂鸣器蜂鸣3秒;下半场或终场结束时,D1~D8全亮5秒,蜂鸣器蜂鸣5秒。

2.1.2流程图

 

图2.1.2主程序流程图

 

2.1.3仿真总图

图2.1.3仿真总图

 

2.2键盘输入模块设计

2.2.1设计思路

本设计中采用4*4矩阵键盘,矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4*4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

编程算法采用线反转法。

线反转法原理是先将行线作为输出线,行线作为输入线,列线输出全“0”信号,读入行线的值,那么在闭合键所在的列行线上的值必为0;然后从列行线输出全“0”信号,再读取列线的输入值,闭合键所在的列线值必为0。

这样,当一个键被按下时,必定可读到一对唯一的行列值。

再由这一对行列值可以求出闭合键所在的位置,之后对系统进行相应的控制。

矩阵键盘的行线分别与P3.0~P3.3相连,P3.4~P3.7相连。

其中,按键“A+1”、“A+2”、“A+3”、“A-1”、“B+1”、“B+2”、“B+3”、“B-1”分别对A、B队加减相应的分数,“开始/暂停”键控制计分计时的开始与暂停,“T+1”、“T-1”对加时赛的比赛得分加减,“中场切换”用于在半场结束后交换双方记分牌上的分数,按键12~15未被使用。

 

2.2.2流程图

 

图2.2.2键盘输入模块流程图

2.2.3仿真电路

图2.2.3键盘输入模块仿真图

2.3数码管显示模块设计

2.3.1设计思路

本设计用到的是六位一体的八段共阴数码管。

由于数码管内部发光二极管点亮时也需要5mA以上的电流,而单片机的I/O口送不出如此的的电流,所以使用74HC573锁存器驱动数码管。

数码管的A、B、C、D、E、F、G、DP的引脚全部连在一起与U1元件74HC573锁存器的数据输出端相连,锁存器的数据输入端连接单片机的P0口,P0口同时加了上拉电阻。

数码管中1、2、3、4、5、6是它们的位选端,每一个数码管对应一个位选端,与U2元件74HC573的数据输出端的低六位相连,U2的数据输入端也接到单片机的P0口。

两个锁存器的锁存端分别与单片机的P2.6和P2.7相连,因为用单片机可以锁存器的锁存端,进而控制锁存器的数据输出,这种分时控制的方法便可以方便的控制任意数码管显示任意数字。

为了实时显示数据需要数码管动态扫描显示,所谓动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光二极管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示,实际上多位数码管是一位一位轮流显示的,只是轮流的速度非常快,人眼已经无法分辨出来。

需要注意的是:

每次送段选数据前,需要加上“消影”,即“P0=0xff”。

解释如下:

送段选数据前,P0口仍然保持上次的位选数据,若不“消影”,接下来的打开段选锁存器命令后,原来保持在P0口的位选数据将立即通过段选锁存器直接加在数码管上,接下来才是再次通过P0口给段选锁存器送入段选数据,使得数码管出现混乱现象。

 

2.3.2流程图

 

图2.3.2数码管显示模块流程图

2.3.3仿真电路

图2.3.3数码管显示模块仿真图

 

三系统调试

在系统完成之际,调试过程中发现了一些问题。

首先是数码管显示部分,在单片机执行其他任务如等待按键释放或蜂鸣器发声的时候,数码管就会灭掉,我尝试了很多解决办法,但最后还是没有拿出一个比较满意的方案。

究其原因,8051系列单片机是单任务系统,在执行“等待按键释放”这一任务时,就会停止对数码管的驱动,导致数码管熄灭。

使用锁存器可以保持数码管的显示,但是数字是“死”的,即在另一任务结束之前无法刷新,因此最终设计方案是每次按键时使数码管全灭。

另一个问题是实物演示过程中出现的,当将程序下载到开发板上运行时,有一行按键始终无法响应,但是在Proteus里仿真却是正常的。

最终证明是按键消抖延时的问题,这让我意识到仿真和实物是有差距的,只有亲自接触实物,才能真正学好单片机。

 

部分仿真与硬件显示效果图:

上半场时间显示:

上半场比赛比分显示:

下半场比赛比分显示:

半场时间到,显示:

加时赛比赛比分显示:

比赛结束显示:

四总结与心得体会

为期两周的专业设计拉下了帷幕,我深刻体会到了其中的苦与乐,感悟甚是深切。

所谓的专业设计对我来说也就是个单片机课程设计,只不过这次的课程设计与以往的课程设计不同,这次是课程还没结束前做的课程设计。

由于自己在去年的时候就开始在自学51单片机,因此对单片机有一定的了解,有一定的实践操作,所以这次课程设计对我来说相对轻松一点点。

这一次的课程设计,我的课题是《篮球比赛电子记分牌》。

由于这一系统包含单片机基础、数码管动态显示、矩阵键盘扫描、定时器和中断等知识体系,涉及面较广,通过这一课程设计,可以更好地检测和巩固学到的知识,系统的组织的知识,加深对单片机认识。

从程序设计到仿真再到硬件调试,我除了得到了正确的结果之外,更多的是面对错误和失败,而这些错误大多数是由于自己对该部分电路原理掌握的不够透彻导致的算法错误,及编程实践经验太少导致的语法错误。

比如在比赛得分与比赛剩余时间的分时显示设计中,由于没有把分时显示的标志变量放到while死循环中,导致无法实现分时显示的功能。

另外,按键时数码管熄灭多个函数调用按键扫描程序导致的部分按键失效,这都是我对单片机认识不够深入,

因为8051系列单片机是单任务系统。

不过面对误与失败我从未放弃过,曾经为了解决按键失效的问题,我整整搞了一天半,终于在第二天晚上一点钟的时候把它给解决了。

当然,遇到问题时,更多的是查阅资料及与同学讨论。

通过与同学的讨论,在同学帮助下,我一一解决了在设计过程中所遇到的问题与错误。

虽然整个设计在四五天内就设计完成,并通过仿真及硬件实现预期结果,但我并没有放弃对设计的改进工作,比如把原来的源程序由一个文件改写成多个文件,即模块化编写。

这样有利于对源程序的管理,增强了系统软件的可读性和可移植性。

另外通过查阅资料对矩阵键盘的扫描模块的算法也进行了改进工作,由原来的逐行扫描法改线反转法扫描,这样降低了整个程序一定的冗长度。

不过由于没有多方的论证与检测,设计的系统中还存在着一些问题,比如稳定度不够高,灵敏性不够好。

还有,如果有时间的话,我觉得可以用12864液晶来做这个系统的显示,效果可能会更好一些,更贴近实际应用。

在这次专业设计中,我在整个设计过程中懂得了许多东西,也加强了一定的独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。

对明年的毕业设计有一定的认识,打下一定的基础。

 

五参考文献

郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展全攻略.电子工业出版社,北京:

2009.12

六附录(源程序)

主程序:

#include

#include"commn.h"

#include"anjian.h"

#include"display.h"

sbitfm=P2^3;//蜂鸣器

//*****a表示A队得分,b表示B队得分,t1时间分,t2时间秒*****//

uinta=0,b=0,t1=0,t2=15;//为方便观看结果,初值设为0分15秒

//*****flag时间与比分分时显示标志,s开始/暂停标志,cnt上下场计数器,p中场切换标志*****//

//*****flag=0显示比分,flag=1显示时间,s=1开始,s=0暂停,cnt=2上半场,cnt=1下半场*****//

ucharflag=0,s,p=1;

intcnt=2;

voidinit()//函数初始化

{

P1=0xff;;

TMOD=0x11;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

EA=1;

ET0=1;

TR0=1;

ET1=1;

TR1=1;

}

voidmain()

{

init();

whi

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1