51单片机课程设计篮球积分器.docx
- 文档编号:23463250
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:26
- 大小:181.36KB
51单片机课程设计篮球积分器.docx
《51单片机课程设计篮球积分器.docx》由会员分享,可在线阅读,更多相关《51单片机课程设计篮球积分器.docx(26页珍藏版)》请在冰豆网上搜索。
51单片机课程设计篮球积分器
广东海洋大学寸金学院
《51单片机》课程设计
论文题目:
篮球计分器
系别:
信息技术系
专业:
电气工程及其自动化
班级:
1班
姓名:
李勇鹏
学号:
2010103120124
指导老师:
叶伟慧
日期:
2012年11月28日
广东海洋大学寸金学院教务处
目录
摘要I
第一章引言3
第二章单元模块4
2.1共阴极数码管静态显示4
2.2按键控制键盘部分5
2.3晶振模块和复位模块6
2.4LED显示模块7
第三章主要芯片介绍8
3.1AT89C528
3.274HC14511
3.374LS24511
第四章软件设计及软件介绍13
4.1系统软件设计13
4.2软件设计环境介绍13
4.3软件设计方案13
4.4系统调试15
4.5软件调试及仿真15
第五章源程序代码17
摘要
篮球比赛积分器的设计是为了解决篮球比赛时计分与计时准确方便和灵活使用的问题而提出的,我组设计的篮球比赛计分器硬件部分主要利用AT89C52单片机完成了计分与计时的功能,并通过十六个四位七段数码管分别用来显示比赛时间和A,B比赛双方的分数,更有进行进攻24秒的计时,总局数的比分和节数的显示,软件部分利用KeilC51软件来进行编译,通过Proteus软件进行仿真,最后将生成的HEX文件烧写到单片机芯片中,采用该系统可根据实际情况进行时间的准确显示和比分修改,具有低功耗,可靠性强,安全性高以及低成本等特点,主要不足之处在于计时显示有时会出现显示不稳定情况,基本满足了本次设计要求.
关键词:
单片机,篮球赛计分,篮球赛计时,数码管
第一章引言
体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递数据的信息系统.根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类得分类等多种类型.
篮球比赛是根据参赛队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种的分类型的系统是一个负责篮球比赛的数据采集和分配的专用的技术接口分别送给裁判,教练员,计算机信息系统和现场观众等.篮球比赛的计时计分系统由计时器,计分器等多种电子设备组成,由于比赛的不可重复性,决定了篮球计分计时系统是一个实时性很强,可靠性要求极高的电子服务系统,所以计时计分设备是篮球比赛中不可缺少的电子设备,计时计分系统设计合理,关系到比赛系统运行的稳定和可靠,并直接影响到比赛的顺利进行.同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标.随着比赛规则的进一步完善,相应的计时计分系统也必须随之改进.
单片机,亦称单片微电脑或单片微型计算机.它是把中央处理器,随即存取储器,只读存储器,输入输出等主要计算机功能部件都集成在一块集成电路芯片上的微计算机.计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大.微计算机在这种情况下诞生了,它为我们改变了什么?
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种的智能IC卡,电子宠物等,这些都离不开单片机.
由于单片机的集成度高,功能强,同用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等优点,使单片机迅速得到了广泛应用.目前已经成为测量控制应用系统中的优则机种和新电子产品的关机部位.世界各大电气厂家,测控技术企业,电机行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部分.本篇设计的篮球计分器就是以单片机为核心的系统.
第二章单元模块
2.1共阴极数码管静态显示
共阴数码管是指将所有发光二极管的阳极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地,当某一字段发光二极管的阴极为高电平时,相应字段就点亮。
当某一字段的阳极为高电平时,相应字段就不亮。
静态显示就是显示驱动电路具有输出锁存功能,即各个LED的显示字符一经确定,相应的段码将维持输出不变,直到送入另一个字符的段码为止。
正因为如此,静态显示器的亮度都比较高。
静态显示的程序设计,是将一个两位数的个位与十位分开,并且用查表指令,输出对应位的表格代码。
2.2按键控制键盘部分
本系统设计除复位按键外共配置了16个独立键盘来实现系统功能的控制16个矩阵键盘分别为1,2.3,4,5,6,7,8,9,10,11,12,13,14,15,16,分别连接到单片机的P1口的低四位和高四位1。
配合程序设计,在系统初始化时等待配置比赛时间,通过按下1键暂停或开始,按下2键时间清零,按下3键比分清零,按下4键为进球队比分对调,按下5,6,,7,8则为的A队+1,+2,+3,-1分,按下9,10,11,12则为B队+1,+2,+3,-1分,按下13,14则是显示A队进攻或B对进攻.这种设计使系统能应用于不同比赛时间规格的各种场合当中,使系统产品的用途更加广泛。
设置时间结束后进入正常计时计分模式。
其中用来调节闪烁光标的位置,以标识当前球队处于分数刷新模式状态下,光标不闪烁表明退出刷新
2.3晶振模块和复位模块
晶振电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。
根据不同需要可以采用不同频率的晶振,这里采用12MHZ的晶振,另外有两个30pF的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入输出引脚.
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。
RST引脚是复位信号的输入端。
复位电路在这里采用的是上电加按键复位电路形式,
2.4LED显示模块
本设计采用CD4511数码管显示。
通过74LS245实现串入并出,通过74HC154实现对16个数码管位选控制.第一行数码管用来显示总局数部分,第二行中间四位显示分钟和秒数,设置好比赛时间后开始显示。
本程序中设置为4节比赛,在第三行最后一个数码管显示.程序初始化后通过键盘来设置单节比赛时间。
第二行第一个和第三个4位数码管用A和B比赛双方比分,并可在中场后交换比分。
第三行第一个两位数码管用来显示进攻24秒.每次加分都会使它调回24秒.
第三章主要芯片介绍
3.1AT89C52
AT89S52是一个低功耗、高性能8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的单片机AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
本设计所采用的AT89S52为DIP40封装形式,引脚结构如图3-2。
除8kBytesFlash片内程序存储器外,还有256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,8个中断源,3个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
AT89S52单片机引脚说明如下:
VCC:
电源端,接+5V。
GND:
接地端。
XTAL1:
接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟时,该引脚为外部时钟的输入端。
XTAL2:
接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TTL时钟时,该引脚必须悬空。
地址锁存允许信号ALE:
系统扩展时,ALE用于控制地址锁存器锁存P0口输出的低8位地址,从而实现数据与低位地址的复用。
此外,ALE是以六分之一晶振频率的固定频率输出的正脉冲,可作为外部时钟或外部定时脉冲使用。
PSEN:
PSEN是读外部程序存储器的选通信号,低电平有效。
访问程序存储器控制信号EA:
当为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令。
当为低电平时,CPU只执行片外程序存储器指令。
复位信号RST:
该信号高电平有效,在输入端保持两个机器周期的高电平后,就可以完成复位操作。
P0口(P0.0~P0.7):
该端口为漏极开路的8位准双向I/O口,它为8位地址线和8位数据线的复用端口,使用时需接外部上拉电阻。
在访问外部程序存储器时,它作存储器的低8位地址线。
P1口(P1.0~P1.7):
它是一个内部带上拉电阻的8位准双向I/O口,作为输入口使用时,应先向其内部锁存器写1。
P2口(P2.0~P2.7):
它为一个内部带上拉电阻的8位准双向I/O口,作为输入口时同样需先向其内部锁存器写1。
在访问外部程序存储器时,它作存储器的高8位地址线。
P3口(P3.0~P3.7):
P3口同样是内部带上拉电阻的8位准双向I/O口,P3口除了作为一般的I/O口使用之外,其还具有第二引脚功能
口线
特殊功能
信号名称
P3.0
RXD
串行输入口
P3.1
TXD
串行输出口
P3.2
INT0
外部中断0输入口
P3.3
INT1
外部中断1输入口
P3.4
T0
定时器/计数器0外部输入口
P3.5
T1
定时器/计数器1外部输入口
P3.6
WR
写选通输出口
P3.7
RD
读选通输出口
3.274HC145
74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。
74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。
该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。
任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。
当其余的使能输入端置低时,地址输出将会跟随应用的状态。
1-1113-17:
输出端。
(outputs(activeLOW))
12:
Gnd电源地(ground(0V))
18-19:
使能输入端、低电平有效(enableinputs(activeLOW))
20-23地址输入端(addressinputs)
24:
VCC电源正(positivesupplyvoltage)
编辑本段地址/全能输入对应输出表
功能真值表
注意:
H=高电平(HIGHvoltagelevel)
L=低电平(LOWvoltagelevel)
X=任意电平(don’tcare)
只要控制端G1、G2任意一个为高电平,A、B、C、D任意电平输入都无效。
G1、G2必须都为低电平才能操作芯片。
3.374LS245
74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1).
第四章软件设计及软件介绍
4.1系统软件设计
软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。
单片机编程常用的语言是C语言和汇编语言,最终都要转为IntelHEX格式或二进制格式(Binary)文件写入单片机芯片内。
此次我组使用的是汇编语言进行编程设计。
4.2软件设计环境介绍
Keil是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能、结构、可读性、可维护性上有明显的优势,因而易学易用。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具,也是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
Proteus软件拥有丰富的资源,支持智能原理图设计,具有完善的电路仿真和独特的单片机协同仿真功能,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计。
MicrosoftVisio2007是微软公司出品的一款的软件,MicrosoftVisio是Windows操作系统下运行的流程图软件,它现在是MicrosoftOffice软件的一个部分。
它有助于IT和商务专业人员轻松地可视化、分析和交流复杂信息。
它能够将难以理解的复杂文本和表格转换为一目了然的Visio图表。
该软件通过创建与数据相关的Visio图表(而不使用静态图片)来显示数据,这些图表易于刷新,并能够显著提高生产率。
使用OfficeVisio2007中的各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。
本实验正是通过Visio实现了程序流程图的绘制。
4.3软件设计方案
篮球比赛计时计分器软件设计部分采用模块化程序设计,程序部分由主程序、T0中断程序、计时计分刷新显示子程序、键盘扫描控制子程序、延时子程序等组成。
图1为主程序流程,图2为计时刷新子程序流程,图3为分数刷新子程序流程,图为4中断程序流程。
图表1
4.4系统调试
系统调试分为软件调试和硬件调试,硬件调试和软件调试是分不开的,许多硬件错误是在软件调试中被发现和纠正的,通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。
4.5软件调试及仿真
软件调试主要是运用Keil和Proteus完成。
在写好源程序,画出原理图之后,在电脑上进行软件仿真。
建新工程,选择AT89S52处理器;接着新建文档编辑程序,编辑完存为.asm,把保存的.asm文件加入到工程里。
点击Project下的OptionsforTarget‘Target1’。
在弹出对话框的Target项里输入晶振为12M,然后勾上UseOn-chipROM。
在Output项里勾上CreateHEXFile。
最后编译程序,keil会自动生成.hex文件。
接着将系统原理图在Proteus环境下画好,然后运用Proteus进行仿真,仿真效果如下图:
第五章源程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelayms(uint);
voiddisplay(uchar,uchar,uchar,uchar);
ucharfen,fen1,miao,miao1,A_score,B_score,W0,W1,W2,W3,W4,W5,W6,W7,W12,W13,W14,change,change1;
intnum,num1=0,num2=1,num3=1,num4,num5=24,tt;
voidmatrixKeyscan()
{
uchartemp;
P1=0xfe;
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delayms
(1);
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P1;
switch(temp)
{
case0xee:
TR0=~TR0;
break;
case0xde:
num1=0;
num2=12;
break;
case0xbe:
A_score=0;
B_score=0;
break;
case0x7e:
change=A_score;
A_score=B_score;
B_score=change;
change1=W3;
W3=W4;
W4=change1;
break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
if(temp!
=0x0f)
{
delayms
(1);
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P1;
switch(temp)
{
case0xed:
A_score=A_score+1;
tt=11;
break;
case0xdd:
A_score=A_score+2;
tt=11;
num5=24;
break;
case0xbd:
A_score=A_score+3;
num5=24;
tt=11;
break;
case0x7d:
A_score=A_score-1;
break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf0;
if(temp!
=0x0f)
{
delayms
(1);
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P1;
switch(temp)
{
case0xeb:
B_score=B_score+1;
tt=10;
break;
case0xdb:
B_score=B_score+2;
tt=10;
num5=24;
break;
case0xbb:
B_score=B_score+3;
tt=10;
num5=24;
break;
case0x7b:
B_score=B_score-1;
break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
P1=0xf7;
temp=P1;
temp=temp&0xf0;
if(temp!
=0x0f)
{
delayms
(1);
temp=P1;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P1;
switch(temp)
{
case0xe7:
tt=11;
break;
case0xd7:
tt=10;
break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}}
voidmain()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)/256;
EA=1;
ET0=1;
while
(1)
{
matrixKeyscan();
display(fen,fen1,miao,miao1);
}
}
voiddisplay(ucharfen,ucharfen1,ucharmiao,ucharmiao1)
{
fen=num2/10;
fen1=num2%10;
miao=num1/10;
miao1=num1%10;
W0=A_score/100;
W1=A_score%100/10;
W2=A_score%100%10;
W5=B_score/100;
W6=B_score%100/10;
W7=B_score%100%10;
W12=num5/10;
W13=num5%10;
P2=0x00;
P0=table[W0];
delayms
(1);
P2=0x01;
P0=table[W1];
delayms
(1);
P2=0x02;
P0=table[W2];
delayms
(1);
P2=0x03;
P0=table[W3];
delayms
(1);
P2=0x04;
P0=table[W4];
delayms
(1);
P2=0x05;
P0=table[W5];
delayms
(1);
P2=0x06;
P0=table[W6];
delayms
(1);
P2=0x07;
P0=table[W7];
delayms
(1);
P2=0x08;
P0=table[fen];
delayms
(1);
P2=0x09;
P0=table[fen1];
delayms
(1);
P2=0x0a;
P0=table[miao];
delayms
(1);
P2=0x0b;
P0=table[miao1];
delayms
(1);
P2=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 课程设计 篮球 积分器