基于单片机的篮球记分器.docx
《基于单片机的篮球记分器.docx》由会员分享,可在线阅读,更多相关《基于单片机的篮球记分器.docx(23页珍藏版)》请在冰豆网上搜索。
![基于单片机的篮球记分器.docx](https://file1.bdocx.com/fileroot1/2022-10/26/6eacf0e4-8543-4838-b9a7-83d18a7869e0/6eacf0e4-8543-4838-b9a7-83d18a7869e01.gif)
基于单片机的篮球记分器
1.设计任务和性能指标
1.1设计任务
利用单片机完成篮球比赛计分器,倒计时器,能更改时间和记分。
1.2性能指标
(1)计分器能实现0-99的分数显示。
(2)倒计时器能实现12分钟倒计时的准确显示,能实现暂停,时间的更改,倒计时完毕实现上下半场的自动更换。
(3)能够实现场次的手动更换。
2设计方案
2.1任务分析
模拟篮球比赛计分器就是用单片机来控制一个矩阵键盘和数码管,模拟真实的篮球计分器,两个LED灯来表示上下半场,利用数码管倒计数表示倒计时和记分,再使用矩阵键盘来更改分数和倒计时。
2.2方案设计
根据设计的要求可知,系统的硬件原理框图如下图所示。
系统硬件框图
单片机选用的是STC89C52RC,它与8052系列单片机全兼容,但其内部带有8KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
倒计时和记分使用三个数码管来显示,同时需要对三个数码管进行显示。
键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展8255或8155满足系统的要求。
软件方案方面,软件可由汇编语言完成,也可由C语言完成。
软件设计可以分为以下几个功能模块:
主程序:
初始化。
键盘监控模块:
实现实时的硬盘监控。
场次模块:
实现场次更换。
时间更改模块:
实现时间更改。
分数更改模块:
记分。
倒计时模块:
定时器的中断服务子程序,完成1ms的时间定时,实现时间的精确倒数。
3系统硬件设计
3.1单片机的最小系统
STC公司生产的STC89C52RC单片机它是硬件电路的核心部分,时钟电路晶振使用11.0592MHz,复位电路采取按键复位方式。
单片机系统的时钟电路
单片机系统的复位电路
3.2电源电路设计
电源用5V直流直接供电。
3.3数码管显示电路
显示电路采用2个2位共阳数码管,P0作为数码管的输出,P1.1,P1.2分别作为数与位的选择。
分数显示电路
倒计时显示电路
锁存器电路
3.4矩阵键盘电路
键盘电路使用12键九宫格模式,使用P2.0-P2.6进行键盘的监控。
4系统软件设计
4.1主程序设计
系统程序流程图
5调试及性能分析
5.1调试分析
5.1.1软件调试
软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。
5.1.2硬件调试
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。
(2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。
(3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
5.1.3系统功能调试
通过软件仿真显示,系统基本能完成要求,由于设计思路出现问题,键盘没有正确的做出来,后作出代码调整,功能成功实现。
6心得体会
这次单片机课程设计历时两个星期的时间,在这次设计过程里我体验了从设计、画电路、编程、焊板到调试的整个过程。
对于计分器这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。
接着就是画电路,这个软件的应用学过了,但是学的时候感觉很简单,但是到了具体设计的时候,问题不断的出来,比如有的器件库里面没有封装,要自己花封装,这时候就很容易出问题,比如焊盘的大小,有的器件上焊盘大小不一样,有个别大的是用来固定的,这个很容易被忽略。
接下来就是程序的设计了,虽然感觉计分器程序没什么难的,就是数码管倒计时显示加分数显示就完事了,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过不断努力不断的解决BUG,还是写出来正确的代码。
通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。
经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我来说,对以后就业有及其重大的影响。
参考文献
[1]李全利,单片机原理及接口技术第2版北京高等教育出版社2009年1月
[2]XX文库,STC89C52RC单片机
[3]WIKI百科
附录1系统仿真图
附录3程序清单
/*
--------------------------------------------------------------
程序实验功能
倒计时显示,记分,键盘更改时间,记分.自动或手动更换场次.
--------------------------------------------------------------
*/
//89c52.h
#ifndef__STC89C5xRC_RDP_H_
#define__STC89C5xRC_RDP_H_
/////////////////////////////////////////////////
/*ThefollowingisSTCadditionalSFR*/
/*sfrAUXR=0x8e;*/
/*sfrAUXR1=0xa2;*/
/*sfrIPH=0xb7;*/
sfrP4=0xe8;
sbitP46=P4^6;
sbitP45=P4^5;//ISP下载需勾选"ALE脚用作P4.5口"
sbitP44=P4^4;
sbitP43=P4^3;
sbitP42=P4^2;
sbitP41=P4^1;
sbitP40=P4^0;
sfrXICON=0xc0;
sfrWDT_CONTR=0xe1;
sfrISP_DATA=0xe2;
sfrISP_ADDRH=0xe3;
sfrISP_ADDRL=0xe4;
sfrISP_CMD=0xe5;
sfrISP_TRIG=0xe6;
sfrISP_CONTR=0xe7;
/*AboveisSTCadditionalSFR*/
/*--------------------------------------------------------------------------
REG51F.H
Headerfilefor8xC31/51,80C51Fx,80C51Rx+
Copyright(c)1988-1999KeilElektronikGmbHandKeilSoftware,Inc.
Allrightsreserved.
ModificationaccordingtoDataSheetfromApril1999
-SFR'sAUXRandAUXR1addedfor80C51Rx+derivatives
--------------------------------------------------------------------------*/
/*BYTERegisters*/
sfrP0=0x80;
sbitP00=P0^0;
sbitP01=P0^1;
sbitP02=P0^2;
sbitP03=P0^3;
sbitP04=P0^4;
sbitP05=P0^5;
sbitP06=P0^6;
sbitP07=P0^7;
sfrP1=0x90;
sbitP10=P1^0;
sbitP11=P1^1;
sbitP12=P1^2;
sbitP13=P1^3;
sbitP14=P1^4;
sbitP15=P1^5;
sbitP16=P1^6;
sbitP17=P1^7;
sfrP2=0xA0;
sbitP20=P2^0;
sbitP21=P2^1;
sbitP22=P2^2;
sbitP23=P2^3;
sbitP24=P2^4;
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
sfrP3=0xB0;
sbitP30=P3^0;
sbitP31=P3^1;
sbitP32=P3^2;
sbitP33=P3^3;
sbitP34=P3^4;
sbitP35=P3^5;
sbitP36=P3^6;
sbitP37=P3^7;
sfrPSW=0xD0;
sfrACC=0xE0;
sfrB=0xF0;
sfrSP=0x81;
sfrDPL=0x82;
sfrDPH=0x83;
sfrPCON=0x87;
sfrTCON=0x88;
sfrTMOD=0x89;
sfrTL0=0x8A;
sfrTL1=0x8B;
sfrTH0=0x8C;
sfrTH1=0x8D;
sfrIE=0xA8;
sfrIP=0xB8;
sfrSCON=0x98;
sfrSBUF=0x99;
/*80C51Fx/RxExtensions*/
sfrAUXR=0x8E;
sfrAUXR1=0xA2;
sfrSADDR=0xA9;
sfrIPH=0xB7;
sfrSADEN=0xB9;
sfrT2CON=0xC8;
sfrT2MOD=0xC9;
sfrRCAP2L=0xCA;
sfrRCAP2H=0xCB;
sfrTL2=0xCC;
sfrTH2=0xCD;
/*PCASFR
sfrCCON=0xD8;
sfrCMOD=0xD9;
sfrCCAPM0=0xDA;
sfrCCAPM1=0xDB;
sfrCCAPM2=0xDC;
sfrCCAPM3=0xDD;
sfrCCAPM4=0xDE;
sfrCL=0xE9;
sfrCCAP0L=0xEA;
sfrCCAP1L=0xEB;
sfrCCAP2L=0xEC;
sfrCCAP3L=0xED;
sfrCCAP4L=0xEE;
sfrCH=0xF9;
sfrCCAP0H=0xFA;
sfrCCAP1H=0xFB;
sfrCCAP2H=0xFC;
sfrCCAP3H=0xFD;
sfrCCAP4H=0xFE;
*/
/*BITRegisters*/
/*PSW*/
sbitCY=PSW^7;
sbitAC=PSW^6;
sbitF0=PSW^5;
sbitRS1=PSW^4;
sbitRS0=PSW^3;
sbitOV=PSW^2;
sbitP=PSW^0;
/*TCON*/
sbitTF1=TCON^7;
sbitTR1=TCON^6;
sbitTF0=TCON^5;
sbitTR0=TCON^4;
sbitIE1=TCON^3;
sbitIT1=TCON^