实训项目篮球记分牌单片机设计Word文档下载推荐.docx

上传人:b****1 文档编号:3618862 上传时间:2023-05-02 格式:DOCX 页数:20 大小:99.41KB
下载 相关 举报
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第1页
第1页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第2页
第2页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第3页
第3页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第4页
第4页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第5页
第5页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第6页
第6页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第7页
第7页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第8页
第8页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第9页
第9页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第10页
第10页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第11页
第11页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第12页
第12页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第13页
第13页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第14页
第14页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第15页
第15页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第16页
第16页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第17页
第17页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第18页
第18页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第19页
第19页 / 共20页
实训项目篮球记分牌单片机设计Word文档下载推荐.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实训项目篮球记分牌单片机设计Word文档下载推荐.docx

《实训项目篮球记分牌单片机设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实训项目篮球记分牌单片机设计Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。

实训项目篮球记分牌单片机设计Word文档下载推荐.docx

篮球计时计分电路课程设计

(湖南城市学院通电与电子工程学院电子信息工程专业,益阳,413000)

1设计任务

1.1设计目的

1.了解计时计分器组成及工作原理。

2.进一步掌握计时计分器的设计方法

3.进一步掌握芯片的逻辑功能及使用方法。

4.熟悉集成电路的引脚安排.。

1.2设计指标

(1)能记录整个赛程的比赛时间,并能修改比赛时间、暂停比赛时间。

(2)能随时刷新甲、乙两队在整个比赛过程中的比分。

(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。

(4)比赛结束时,能发出报警声。

1.3设计要求

2、设计思路与总体框图.

本设计是采用AT89C52单片机为核心设计的一个用于赛场的篮球计时计分器。

本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。

单片机P3口(P3.0——P3.5)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口是计分数据输出口。

计时部分计时范围宽,而且可定时设定与小时、分钟调整;

计分部分调整灵活,显示范围宽,足以满足各种规模赛程需要。

两个显示模块均采用动态扫描方式显示。

图1所示为计时计分器的总体框图。

▲图1计时计分器结构框图

3、系统硬件电路的设计

3.1、时钟电路

MCS-51内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路。

有内部和外部两种时钟产生方式。

本设计采用的是外部方式。

3.2、复位电路  

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

上电复位设利用电容充电来实现的,即上电瞬间RST/Vpd端的电位与Vcc相同,随着充电电流的减少,RST/Vpd的电位下降,最后被嵌位在0V。

按钮电平复位是当按下按钮后,电源Vcc通过电阻R施加在单片机复位端RST/Vpd上,实现单片机复位。

本设计采用的是上电+按钮电平复位电路,是上电自动复位与按钮电平复位电路的组合,当振荡频率选11.0592MH时。

电容C取10uF,R取10K,Rs取1K。

3.3、按键控制电路 

设计采用的是用查询方式的,也就是把按键接在P1口,用程序查询方式查询那个按键按下,执行相应的操作。

3.4、数码管显示电路

数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。

我们分别把他命名为A,B,C,D,E,F,G,H。

假设我们要显示一个数字2,那么A、B、G、E、D这5个段的发光管亮就可以了,C、F、H不亮,同时由于接法为共阳接法,那么为低电平是亮,为高电平是灭。

从高往低排列,P1.7-P1.0写成二进制为01111110,把他转化为16进制则为A2H。

本设计采用的是数码管动态显示。

3.5、定时报警电路

定式报警电路

4、软件设计

4.1、程序流程图

篮球比赛中,得分可分为1分、2分、3分三种情况,但为了方便我们在这只设置加1分,得2分、3分的情况可用按2次、3次加1分得到。

还设置了定是报警键。

根据这样的设计要求,结合数码管的显示以及52单片机中计数器的工作实现方式、接口应用、中断控制等可设计出程序流程图如下:

4.2、程序分析

本设计采用AT89S52单片机中的一个16位的定时/计数器T0,分别由TH0和TL0组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。

它们用于存放定时或计数的初始值。

此外,内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON。

用于选择和控制定时/计数器的工作。

5程序设计仿真

在计算机中打开PROTEUS软件,建立新的项目,在元件库中选择相应的元件,放在编辑窗口中,依次连线,组成仿真原理图。

计时工作仿真状态图:

甲乙两队计分工作仿真状态图:

6.总结与体会

6.1总结

1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。

2.容易出现故障为接触不良。

a) 

集成块引脚方向预先弯好对准面板的金属孔,再小心插入。

b) 

导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。

c)导线的裸线部分不要露在板的上面,以防短路。

d) 

导线要插入金属孔中央。

3.注意芯片的控制引脚必须正确接好

4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。

5.要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。

6.2体会

这次课程设计历时二个星期左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对C语言程序设计掌握的不够……通过这次课程设计之后,一定把以前所学过的知识重新温故。

7.参考文献:

附1

/*******************************************************************************

程序名:

篮球记分牌测试程序

编辑时间:

2012-06-14

编辑者:

修改时间:

硬件平台:

MCU:

At89C51晶振:

12MHz

硬件连接:

功能说明:

按下K1键,甲队加1分按下K2键,乙队加1分按下K5交换记分牌

按下K3键,开始/停止比赛按下K4:

调整比赛时间

第1~4位数码管为比赛时间的分和秒,第5~8位数码管分别为两队的分数

测试结果:

OK

注意:

*******************************************************************************/

//头文件

#include<

reg51.h>

intrins.h>

#include"

display.h"

delay.h"

key.h"

//变量定义

unsignedchardisp_buff1[4]={1,2,0,0};

//比赛时间显示缓冲区

unsignedchardisp_buff2[4]={0};

//两队得分显示缓冲区

unsignedcharminute=12,second=0;

//比赛时分秒

unsignedcharscore1=0,score2=0;

//两队的比赛得分

bitvolatilefinish_flag=0;

//比赛完成标志位

unsignedcharnum=0;

//定时累加计数

unsignedcharkey=0;

//保存键值

//定时器T0初始化函数

voidinitial()

{

TMOD=0x80;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=1;

}

/*********************************************************************************

函数名:

数码管显示缓冲区数组处理函数

入口参数:

出口参数:

*********************************************************************************/

voiddispose(void)

disp_buff1[0]=minute/10;

//分钟的十位

disp_buff1[1]=minute%10;

//分钟的个位

disp_buff1[2]=second/10;

//秒钟的十位

disp_buff1[3]=second%10;

//秒钟的个位

disp_buff2[0]=score1/10;

//甲队得分的十位

disp_buff2[1]=score1%10;

//甲队得分的个位

disp_buff2[2]=score2/10;

//乙队得分的十位

disp_buff2[3]=score2%10;

//乙队得分的个位

//主函数

voidmain(void)

unsignedchartemp;

initial();

//定时器T0初始化

while

(1)

{

key=key_scan();

//按键扫描

switch(key)

{

case1:

score1++;

//K1按下,甲队加1分

if(score1==100)score1=99;

break;

case2:

score2++;

//K2按下,乙队加1分

if(score2==100)score2=99;

case5:

temp=score1;

//K5按下,交换记分牌

score1=score2;

score2=temp;

case3:

TR0=~TR0;

//K3按下,停止或开始比赛

case4:

if(TR0==0)//停止比赛时,按下K4键可以调整比赛时间

{

minute++;

if(minute==60)

minute=0;

}

default:

break;

}

dispose();

diaplay(disp_buff1,disp_buff2);

if(finish_flag)

P1^=0x08;

minute=second=0;

}

//定时器T0中断服务函数

voidT0_time()interrupt1

TH0=(65536-20000)/256;

TL0=(65536-20000)%256;

num++;

if(num==250)

num=0;

if(second==0)

if(minute==0)//比赛时间到,则停止计时

{

TR0=0;

finish_flag=1;

}

else

{

second=60;

minute--;

second--;

/*****************************************************************************

8位共阳七段数码管动态显示程序

编辑者:

x_z_y

QQ:

812550826

MCU:

At89c51晶振:

12MHz8位共阳七段数码管

第1~4位数码管段选————P0位选————P3^0,P3^1,P3^2,P3^3

第5~8位数码管段选————P2位选————P3^0,P3^1,P3^2,P3^3

注意:

*****************************************************************************/

unsignedcharcodedisptable[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

//定义0~F所对应的十六进制数组disptable

/****************************************************************************

函数名:

一位数码管显示函数

unsignedcharnum对应的第几个数码管

unsignedchardat1,dat2对应要显示的数

****************************************************************************/

voidseg_display(unsignedcharnum,unsignedchardat1,unsignedchardat2)

P3&

=0xf0;

//消影

P0=~disptable[dat1];

//第1~4位数码管段选

P2=~disptable[dat2];

//第5~8位数码管段选

P3=_cror_(0x08,num);

//位选

八位数码管显示函数

unsignedchar*disp_buff1,*disp_buff2对应要显示的数缓冲数组指针

voiddiaplay(unsignedchar*disp_buff1,unsignedchar*disp_buff2)

unsignedchari;

for(i=0;

i<

4;

i++)//循环扫描数码管

seg_display(i,disp_buff1[i],disp_buff2[i]);

delay_ms(3);

/**************************************************************

STC89C52RD+四个独立按键的程序

编辑时间:

2012-06-14

编译环境:

keilc

STC89C52RD+单片机,11.0592MHZ晶振四个独立按键

功能描述:

sbitK1=P1^0;

//K1——甲对加分键

sbitK2=P1^1;

//K2——乙队加分键

sbitK3=P1^2;

//K3——开始/停止比赛

sbitK4=P1^5;

//K4——调整比赛时间

sbitK5=P1^6;

//K5——甲乙队交换记分牌

***************************************************************/

reg52.h>

//硬件定义

sbitK1=P1^0;

sbitK2=P1^1;

sbitK3=P1^2;

sbitK4=P1^5;

sbitK5=P1^6;

//K5——甲乙队交换记分牌

/***************************************************************************************

三个独立键盘扫描函数

函数入口:

函数出口:

***************************************************************************************/

unsignedcharkey_scan(void)

unsignedcharkey=0;

if(K1==0)//甲对加分键

delay_ms

(2);

if(K1==0)

while(K1==0);

key=1;

elseif(K2==0)//乙队加分键

if(K2==0)

while(K2==0);

key=2;

elseif(K3==0)//开始/停止比赛

if(K3==0)

while(K3==0);

key=3;

elseif(K4==0)//调整比赛时间

if(K4==0)

while(K4==0);

key=4;

elseif(K5==0)//甲乙队交换记分牌

if(K5==0)

while(K5==0);

key=5;

returnkey;

//********************延时函数*******************************

#include<

#include"

//延时xus的函数

voiddelay_us(unsignedintxus)

while(xus--)

_nop_();

//延时xms的函数

voiddelay_ms(unsignedintxms)

while(xms--)

delay_us

(1);

#ifndef__DISPLAY_H__

#define__DISPLAY_H__

voidseg_display(unsignedcharnum,unsignedchardat1,unsignedchardat2);

//一位数码管显示函数

voiddiaplay(unsignedchar*disp_buff1,unsignedchar*disp_buff2);

//八位数码管显示函数

#endif

#ifndef__DELAY_H__

#define__DELAY_H__

externvoiddelay_us(unsignedintxus);

//微秒延时

externvoiddelay_ms(unsignedintxms);

//毫秒延时

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2