基于单片机的篮球计分器.docx

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

基于单片机的篮球计分器.docx

《基于单片机的篮球计分器.docx》由会员分享,可在线阅读,更多相关《基于单片机的篮球计分器.docx(20页珍藏版)》请在冰点文库上搜索。

基于单片机的篮球计分器.docx

基于单片机的篮球计分器

摘要

 随着电子科技、信息通信技术的快速发展,嵌入式单片机应用越来越广泛。

在HMOS技术大发展的背景下,Intel公司在MCS-48系列的基础上,于1980年推出了8位MCS-51系列单片机。

它与以前的机型相比,功能增强了许多,就其指令和运行速度而言,超过了INTEL8085的CPU和Z80的CPU,成为工业控制系统中较为理想的机种。

较早的MCS-51典型时钟为12MHz,而目前与MCS-51单片机兼容的一些单片机的时钟频率达到40MHz甚至更高,现在已有400MHz的单片机问世。

 篮球记分器是一种得分记录工具,由多种电子设备组成。

以单片机为核心的篮球记分器造价便宜,使用简单,体积小等特点。

 

第1章绪论

 1.1单片机简述

 

 单片机就是在一块半导体硅片上集成了微处理器(cpu),存储器(RAM,ROM,EPROM)和各种输入、输出接口(定时器/计数器,并行I/O接口,串行口,A/D转换器以及脉宽调制器PWM等),这样一块集成电路芯片具有一台计算机的属性,因此被称为单片微型计算机,简称单片机。

 单片机主要应用于测控领域,用以实现各种测试和控制功能。

为了强调其控制属性,在国际上,多把单片机称为微控制器MCU(MicroControllerUnit)。

单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。

单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

例如,80C51系列单片机已有十多年的生命期,如今仍保持着上升的趋势,就充分证明了这一点。

单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。

并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。

而美国ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。

他不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51就是其中典型的代表。

 1.2设计意义

 

 单片机的应用是具有高度现实意义的。

单片机极高的可靠性,微型性和智能性(我们只要编写不同的程序后就能够完成不同的控制工作),单片机已成为工业控制领域中普遍采用的智能化控制工具,已经深深地渗入到我们的日常生活当中。

通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对MCS-51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,并且可以在将来的工作和学习中加以应用。

 

第二章系统原理的设计

 

 2.1系统设计方案

 

 篮球计分系统主要由:

复位电路、晶振电路、数码管显示电路、LED灯指示输赢电路、甲乙加分电路等部分电路组成。

 

 2.2系统的组成框图

 

 为了实现原理图的设计目标,同时结合自己获取的各种资料以及要达到的具体功能,所确定的组成框图见图3.1.1。

一、组成框图的组成说明

图2.1.1:

系统原理框图

二、组成框图的组成及其功能说明

1、LED能够显示比赛成绩和比赛时间,并且能够显示调整后的比赛成绩和时间

2、控制按钮由两队的加分按钮组成、以中场中止按钮组成。

3、暂停比赛时间

 

第三章硬件部分的设计

3.1单片机接口电路

图3.1.1

单片机接口电路见图3.1.1,其电路分析如下:

1)复位电路

复位是指单片机的CPU或系统中其它的部件处于某一确定的初试状态,并从这一状态开始工作。

除了进入系统的正常初始化之外,当由于程序运行出错或是操作错误使系统处于锁死状态,为摆脱困境,需要进行按键复位。

通常单片机的复位操作有上电复位、信号复位、运行监视复位,运行监视复位有程序运行监视和电源监视。

上电复位:

上电复位是指单片机上电是的复位操作,保证单片机上电后立即进入规定的复位状态。

信号复位:

信号复位是指单片机在正常供电的情况下,在复位引脚端加以复位信号。

根据不同情况有按键操作复位、唤醒复位、控制复位等。

系统运行监视复位:

系统运行监视复位是指系统出现非正常情况下时的复位操作,通常有电源监视复位和程序监视复位。

电源监视复位是指在电源下降到一定电平状态或未达到额定电平要求时的系统复位;程序运行监视复位是指程序运行时常时的系统复位。

在本设计中,则是采用上电复位,复位电路见图2,原理是当电源接通后,上电瞬间RESET引脚获取高电平,该高电平需要电容充电来维持,当高电平维持在两个机械周期以上则单片机能被复位。

一般为了能够可靠复位,复位时间一般在10ms以上,对于振荡频率为12MHZ的复位电路,典型RC系数为:

C3=10uF,R29=8.2千欧。

2)晶体振荡电路

晶体振荡电路用于产生单片机工作时所需的时钟信号,从而保证各部分工作的同步。

单片机内部有一个高增益反相反大器,只要在输入端XTAL1与输出XTAL2之间挂一个晶体振荡器和微调电容就可以构成一个稳定的自激震荡器并在单片机内部产生的时钟脉冲信号。

振荡电路见图3,电容器C1与C2用于稳定频率和快速起振,电容一般在5PF—30PF,本设计电容为30PF。

3)键盘接口电路

与通用单片机相比,单片机应用系统中的键盘种类很多,键盘中按键数量设置依系统操作要求而定。

单片机应用系统中的键盘有独立式和行列式两种。

(1)独立式键盘

  独立式键盘中,每个按键占用一个I/O口线,每个按键相对独立。

I/O口通过按键与地相连,无按键按下时,引脚端为高电平,有按键按下时,引脚为低电平,I/O口内部有上拉电阻外部不可接上拉电阻。

(2)行列式键盘

  用I/O口线组成行列结构,按键设置在交叉点上,在按键数目较多时运用这种连接方式,可节省I/O口连线。

行列式键盘的标识最常用的两种方法:

行扫描法和线反转法。

  本次设计中由于按键较少,采用三按键独立式键盘即可满足需要

  见图(3.1.2)。

图3.1.2

 

3.2数码显示电路

 LED显示器:

通常所说的LED显示器由七个发光二极管组成,因此也称作七段LED显示器,通过七段发光二极管的不同组合,可以显示多种数字、字母或其它符号。

图3.1.3

1)LED的接法

  共阴极接法是指把发光二极管的阴极连接在一起构成公共阴极,使用时公共阴极接地,阳极输入高电平段的二极管则会导通发光,而输入低电平的则不会亮。

2)显示方式

动态显示是指依次轮流点亮显示器的各个位,每隔一段时间则点亮一次,设置足够短的时间,利用人的视觉暂停效应和发光二极管的熄灭时的余辉,达到多个字符同时显示的效果。

运行这种显示方式可以降低成本与功耗,但需要较大的驱动电流。

  本设计中采用的共阴极连接方式,由于没有有足够的I/O口可以使用采用动态示方式,显示电路见图3.1.3。

此外P0需外加上拉电阻(图3.1.4)。

图3.1.4

 

第四章软件部分设计

4.1按键模块

N

Y

N

Y

 

 

 

图4.1.1

 

4.1.2源代码

voidkey_sc()//键盘扫描模块

{

ucharkey_bt,i;

while

(1)

{

P1=0xff;

delay_t(80);

key_bt=P1;

switch(key_bt)

{

case0xfe:

//初始化,显示0;

for(i=0;i<9;i++)

{

//display_buf[i]=0;

display_rt(display_buf);

}

break;

case0xfd:

//A队

modify_sc();

break;

case0xfb:

//B队

modify_sc();

break;

case0xf7:

//时间

modify_st();

break;

}

}

}

 

4.2显示模块

延时

延时

显示

显示

P2、P3初始化

P0=show[dis_code[i]]

 

N

Y

 

4.21源代码

voiddisplay_rt(uchardis_code[])//显示任务

{

charbit_disp2,bit_disp3,i;

bit_disp3=0x20;

bit_disp2=0x08;

for(i=0;i<=9;i++)

{

P2=0xff;

P3=0xff;

P0=show_t[dis_code[i]];

if(i<6)

{

bit_disp2=0x08;

P3=~bit_disp3;

P2=0xff;

bit_disp3=bit_disp3>>1;

}

else

{

bit_disp3=0x20;

P2=~bit_disp2;

P3=0xff;

bit_disp2=bit_disp2>>1;

}

delay_t

(1);

}

}

 

附录一原理图

附录二仿真图

 

附录三源程序设计

#include

#defineucharunsignedchar

#defineuint8unsignedint

ucharcodeshow_t[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//0123456789

staticuchardisplay_buf[10];

//定义显示缓冲

charxSc[3],ySc[3];//保存两队的比赛结果

chartSc[4];//保存比赛时间

ucharuS_a=0,dS_a=0,hS_a=0,uS_b=0,dS_b,hS_b=0;//分别定义A和B队比赛成绩的个位、十位、百位

ucharsuT=0,sdT=0,muT=0,mdT=0;//分别定义比赛时间的秒、分个位及其十位

sbitfm_bt=P2^7;//蜂鸣状态位

voiddelay_t(intt)//延时

{

inttt;

while(t--)

{

tt=300;

while(tt--);

}

}

voiddisplay_rt(uchardis_code[])//显示任务

{

charbit_disp2,bit_disp3,i;

bit_disp3=0x20;

bit_disp2=0x08;

for(i=0;i<=9;i++)

{

P2=0xff;

P3=0xff;

P0=show_t[dis_code[i]];

if(i<6)

{

bit_disp2=0x08;

P3=~bit_disp3;

P2=0xff;

bit_disp3=bit_disp3>>1;

}

else

{

bit_disp3=0x20;

P2=~bit_disp2;

P3=0xff;

bit_disp2=bit_disp2>>1;

}

delay_t

(1);

}

}

 

voidalarm_spk()//攻击时间倒计时,喇叭在最后5秒钟发出滴答滴答的警报声

{

uint8vTmp;

for(vTmp=0;vTmp<5000;vTmp++)

{

fm_bt=~fm_bt;

delay_t(150);

}

}

 

voidmodify_sc()//调整比赛结果

{

while

(1)

{

display_rt(display_buf);

while(P1==0xfd)//A队

{

uS_a++;

if(uS_a>9)

{

dS_a++;

uS_a=0;

}

if(dS_a>9)

{

dS_a=0;

hS_a++;

}

if(hS_a>9)

{

uS_a=0;

dS_a=0;

hS_a=0;

}

display_buf[3]=uS_a;

display_buf[4]=dS_a;

display_buf[5]=hS_a;

display_rt(display_buf);

delay_t(60);

}

while(P1==0xfb)//B队

{

uS_b++;

if(uS_b>9)

{

uS_b=0;

dS_b++;

}

if(dS_b>9)

{

dS_b=0;

hS_b++;

}

if(hS_b>9)

{

uS_b=0;

dS_b=0;

hS_b=0;

}

 

display_buf[0]=uS_b;

display_buf[1]=dS_b;

display_buf[2]=hS_b;

display_rt(display_buf);

delay_t(60);

}

}

}

voidmodify_st()//调整比赛时间

{

uchari=0;

while(i<3600)

{

suT++;

delay_t

(1);

if(suT>9)

{

suT=0;

sdT++;

}

if(sdT>5)

{

sdT=0;

muT++;

}

if(muT>9)

{

muT=0;

mdT++;

}

if(mdT>9)

{

suT=0;

sdT=0;

muT=0;

mdT=0;

}

display_buf[6]=suT;

display_buf[7]=sdT;

display_buf[8]=muT;

display_buf[9]=mdT;

display_rt(display_buf);

i++;

delay_t(5);

}

}

voidkey_sc()//键盘扫描模块

{

ucharkey_bt,i;

while

(1)

{

P1=0xff;

delay_t(80);

key_bt=P1;

switch(key_bt)

{

case0xfe:

//初始化,显示0;

for(i=0;i<9;i++)

{

//display_buf[i]=0;

display_rt(display_buf);

}

break;

case0xfd:

//A队

modify_sc();

break;

case0xfb:

//B队

modify_sc();

break;

//时间

case0xf7:

modify_st();

break;

}

}

}

 

voidmain(void)

{

key_sc();

//display_rt(d);

//alarm_pk();

}

 

参考文献

[1]汪德彪主编MCS-51单片机原理及接口技术北京:

电子工业出版社

[2]张大明主编单片机控制实训指导及综合应用实例北京:

机械工业出版

[3]吴金戌,沈庆阳.8051单片机实践与应用[M].北京:

清华大学出版社,2003:

35-52

[4]李广弟.单片机基础[M].北京:

北京航空航天大学出版社,1994:

20-28

[5]孙涵芳,徐爱卿.MCS-51/96系列单片机原理及应用(修订版).北京:

北京航空航天大学出版社,1996:

76-83

[6]李勋,林广艳.单片微型计算机大学读本[M].北京:

北京航空航天大学出版社,1998:

86-90

[7]陈建铎,宋彩利,康磊,冷冬梅《单片机原理与应用》科学出版社出版

[8]陈明计,周立功等编著嵌入式实时操作系统SmallRTOS51原理及其应用北京:

北京航空航天大学出版社,2004.1

 

总结

经过历时四个星期的单片机课程设计,收获颇丰,掌握了单片机的基本设计原理,较大的提高了自己的动手能力,以及求知的积极性。

设计中遇到了很多困难,也遇到了很多自己难以解决的问题,是老师的指导以及同学的帮助让我完成了这次的设计,做完这次设计,我喜欢上了单片机,对这门课程产生了很大的兴趣,在今后的学习中,单片机肯定会是我热衷的课程之一。

希望自己能够学好它。

最后再一次衷心感谢我的指导老师文娟老师,已经各位帮助过我的同学。

谢谢你们。

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

当前位置:首页 > 小学教育 > 语文

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

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