【基于单片机的篮球赛计时计分器设计7200字(论文)】_第1页
【基于单片机的篮球赛计时计分器设计7200字(论文)】_第2页
【基于单片机的篮球赛计时计分器设计7200字(论文)】_第3页
【基于单片机的篮球赛计时计分器设计7200字(论文)】_第4页
【基于单片机的篮球赛计时计分器设计7200字(论文)】_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ⅠPAGE基于单片机的篮球赛计时计分器设计TOC\o"1-3"\u引言 21.系统方案说明 31.1方案选择 31.1.1篮球计时计分器设计的现状 31.1.2系统总体设计方案 31.2系统基本功能介绍 32.系统硬件电路设计 42.1篮球计时计分器电路原理图 42.2篮球计时计分器电路工作过程 42.3系统硬件电路组成 52.3.1计时电路 52.3.2计分电路 72.4器件选择及介绍 82.4.1AT89C51 83.软件的编程与调试 113.1系统设计流程图 113.2C语言程序设计 12结论 16参考文献 17附录1原理图 19PAGE1PAGE19摘要:自从70年代单片机出现以来,由于其优秀的性价比受到了人们的广泛关注,促使其应用非常广泛,发展极快。其集成度高,功能强大,通用性好,尤其是拥有能耗低、价格低廉、可靠性强、抗干扰能力低、使用方便等优点,使单片机得到了迅速的推广。目前已经其成为测量系统和新型电子产品关键部件的首选,导致许多球赛的记时计分系统也使用单片机来做控制,如:液晶显示(LCD)用单片机控制计时计分器,采用单片机控制LED七段显示的计时码表等。篮球计时计分器由计时器,计分器和集成控制器组成,以单片机为核心。系统采用时间显示模块、成绩显示模块、定时报警、按键控制键盘模块来做主体的模块设计。程序结构模块简单、清晰,易于编写、调试和维修。程序可读性好,可以对单个地方进行修改,使其他地方不会发生变动。使用KeilC51软件进行编译,然后生成HEX文件到芯片,使用Proteus软件模拟测试功能否正常化,然后使用Protel99绘图硬件电路图。系统硬件电路设计包括以下组件:单片AT89C51,计时时电路,评分电路,报警电路和按键开关。本文由AT89C51设计的编程控制LED七号数码管显示球赛计时计分系统。系统具有赛程定时设置、调度时间暂停、及时刷新成绩性能等功能。本实用具有成本低、性能稳定、使用方便、便于携带等优点,广泛适用于各种学校或小组作为赛程计时计分。关键词:单片机,计时,计分,显示器,接口前言随着单片机应用的逐渐推广,许多使用单片机控制的赛事计时得分系统也由此产生,如单片机控制LCD液晶显示[1]的计时得分系统,采用单芯片控制的LED七段计时得分装置。根据本课题要求,介绍了篮球赛事计时得分器的设计方法,就是用单片机来工作的电路。这种设计方法可以提高学生使用单片机接口电路的能力。该电路使用单片机作为核心组件,使用两个三位一体数码管显示两队成绩,使用四位一体数码管显示时间。得分范围为0至999分之间,满足了赛事的需要。在比赛开始之前,设置好比赛的时间,直到倒计时为零。为了满足实际赛程计时的需要,将时间范围设置为0到99分钟。为了匹配计时器的时间和校准分数,设计了六个按钮,另一个按钮用于输入和修改两队的成绩,其余两个设置为启动和暂停。另外,为了在比赛时间到达时,显示比赛结束,还设计了定时报警系统。该设计还有赛程定时设置、暂停比赛时间、刷新两队成绩等功能。设计由软件设计和硬件设计组成。主芯片采用AT89C51单片机,采用C语言编写软件程序,主体分为时间显示模块,分数显示模块,定时报警,键控模块。使用KeilC51[3]软件进行编程编译,然后将生成的十六进制文件插入芯片,以查看该功能是否可用。通过这种基于单芯片篮球计时码表的设计,可以了解并熟悉单片机开发流程设计,深化单片机及其外设接口技术的应用,了解一些方法和技巧。1.系统方案说明1.1方案选择1.1.1篮球计时计分器设计的现状计时计分系统是一个对比赛信息进行收集、记录、处理、传输的系统,主要是利用时间、分数等数据来进行的。体育赛事的系统由测量类、评价类、命中类和得分类等多种类型组成的,主要是由于体育赛事的不同,导致其要求也不同。篮球比赛是得分类型的系统,主要原因是因为篮球比赛是由球员在比赛中的得分来确定比赛胜负的结果的。篮球比赛的计时计分系统的组成包括了计时器、计分器等多种设备,同时,目前的高水平的篮球比赛要求计时计分系统与电视转播车、大屏幕等其他设备连接,实现现场气氛和表演的功能。现在,根据设计要求,对设计方案进行介绍。1.1.2系统总体设计方案1、能修改时间和暂停时间,并对整个赛程的比赛时间进行记录。2、能随时对甲、乙两队在整个赛程中的成绩进行刷新。3、场中交换比赛场地时,使比分位置与队伍对应。4、在比赛时间结束时,能发出报警指令。图1系统构成图1.2系统基本功能介绍1、使用四位一体数码管对比赛时间进行显示,其格式如:15:00,两个三位一体数码管显示两队的成绩,评分格式如:008。2、采用倒计时模式,以每秒的频率减少,最初默认为15:00时,在比赛之前,可以对时间进行,赛事进行时不能修改。3、两队得分用三位数来记录,初始值为000,满值为999,符合比赛的要求,不能在比赛开始前和比赛后修改得分。4、游戏开始前,进调分钟用ADD1、DEC1键,进调秒钟用ADD2、DEC2键。5、可随时暂停/启动比赛时间。6、比赛中,对甲队得分加、减通过ADD1,DEC1键进行,对乙队的得分加减用ADD2,DEC2键调试。每按一次键,加/减1分。7、游戏结束时,换场可以通过(Exchange)键来进行,在更换之后,开始下一场比赛时,比分加减键也由其进行交换。8、当比赛结束时,发出报警。图2按键定义图如图示:键盘对应名称如下:ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP其中,ADD1为甲队比分加1键,(比赛开始前为调整时间加1)DEC1为甲队比分减1键,(比赛开始前为调整时间减1)EXCHANGE为换场键,一节比赛结束后才可换场。ADD2为乙队比分加1键,(比赛开始前为调整时间加1)DEC2为乙队比分减1键,(比赛开始前为调整时间减1)RUN/STOP为启动暂停键,比赛开始前按下启动计时,比赛开始,比赛开始后,按下为暂停计时,比赛暂停。2.系统硬件电路设计2.1系统电路原理图用Protel99SE设计的电路原理图见附录1。2.2系统电路工作过程1.调整比赛时间:插上电源后,系列默认比赛时间为15:00,两队得分默认为000,然后按ADD1键比赛时间加1分钟,按DEC1键,可以使比赛时间减少了1分钟,要使比赛时间加1秒可以按ADD2键,使比赛时间减1秒按ADD2键。启动比赛:按下RUN/STOP键,计时开始,比赛时间以1秒的频率倒计时。暂停比赛:要在比赛进行中,使比赛暂停,计时暂停,按RUN/STOP按钮。比分加减:在比赛进行中可以通过按ADD1,DEC1键,对甲队比分进行加、减1,通过按ADD2、DEC2键,对乙队比分进行加、减1.交换场地:在比赛结束后,按交换键,对比赛时间进行重新设置,设置为15:00,并将左侧和右侧的比分进行交换。最后按下RUN/STOP键重新开始比赛。报警提示:在一节比赛时间倒计时到00:00时,蜂鸣器发出报警提示。2.3系统硬件电路组成2.3.1计时电路1.显示器及其接口在目前的输出设备中显示器是最常用的,其种类多不胜数,但最多应用在单片机系统中的只有发光二极管(LED)和液晶(LCD)两种显示器。这两种显示器得到广泛应用,主要是因为结构简单、价格低廉、界面容易使用。下面对LED显示屏(LED)的结构、工作原理和接口电路进行介绍。(1)LED结构与原理图3为典型的数码管。图37段LED数码管如图3所示,LED显示屏由8个发光二极管组成,又称为数码管。其特征在于:将7条长条形发光管显示成“日”形,其它点形发光管作为显示器右下角的显示小数点。LED显示屏由共阴极和共阳极LED显示器两种组成的,共阴极是将8个阴极发光二极管连接在一起;共阳极是将8个阳极发光二极管连接在一起。(2)LED显示器显示方式 点亮LED显示器有两种方式:一是静态显示;二是动态显示。在本次设计中,采用的是静态显示。静态显示,即每个显视器的笔划字形代码都要使用单独的具有锁存功能的I/O接口。其只要将显示的字体代码发送到接口电路,就可以忽略它了,需要显示新的数据时发送新代码给接口电路,由此,使用此方法的单片机CPU成本低。这种电路的优点在于:在同一时间可以显示不同的字符;但缺点就是占用端口资源较多。由图3所示,每位LED显示器都使用了8根端口线,因此,一般采用静态显示来应对数据较多的时候。本设计采用的便是此种显示方式。图4静态显示图同一时间段只能显示同一种字符,这是因为所有的段选码连接在了一起。同时由位选码来控制不同的字符。(如果LED为共阴极则P2.0~~P2.3输出为高电平,如果LED为共阳极则P2.0~~P2.3输出为低电平。)2.报警器(1)报警器的工作原理报警器的种类很多,比如:扬声器、蜂鸣器等,本设计采用电磁蜂鸣器报警。电磁蜂鸣器的制作材料主要是振荡器、电磁线圈、磁铁、振动膜片和外壳等。当电源接通时,振荡器产生的信号通过电磁线圈,电磁线圈由此产生磁场。由于电磁线圈和磁铁的相互作用,振动膜片就会产生周期性的振动发声。3.计时电路的工作原理图图5计时电路原理图4.计时电路的工作原理开关K6、K7,AT89C51单片机和LED显示器是计时电路的主要组成部分。以下是它的工作流程:赛事开始时,按K6,采用倒计时开始计时,设置15分钟的时间,在LED上以“1500”四位数来显示。定时T0计数60秒后,继续计数60秒,而在LED显示屏上显示“4459”时,说明时间已经过去了1秒,即还剩下14分59秒。当它变成“0000”时,说明比赛结束。如果比赛暂停,点击K7键,可以暂停计时器。5.振荡电路本设计应用了时钟振荡功能。AT89C51使用了一个内部振荡的高增益反相放大器,分别用引脚XTAL1和XTAL2对放大器的输入和输出。该放大器以石英晶体或陶瓷谐振器作为反馈元件形成自激振荡器。振荡电路如图6所示,将外部石英晶体或陶瓷谐振器和电容C1,C2一同连接到放大器的反馈电路,形成并联谐振。谐振器虽然没有十分严格的要求,但其本身对外接电容C1、C2的,而且振荡频率的高低、振荡器工作的稳定性、起振的难易程度以及温度的稳定性会受到电容的大小所影响,如果使用石英晶体,使用30pF。图6时钟振荡电路2.3.2计分电路由于本次设计使用的是石英晶体谐振器,因此频率大小采用12MHZ晶振,使用30pF的电容。计分电路8051系列单片机由2种通信口,一种是4个8位并行口,还有一种是串行发送和接收的通信端口。它可以作为同步移位寄存器使用,还能同时对数据进行发送和接收。比赛计分电路是利用8051单片机的串口,可以连接到串口输入的并行输出移位寄存器作为输出实现比赛成绩刷新显示。2.计分电路原理图计分电路原理图如图7所示。图7计分电路原理图3.计分电路的工作原理计分电路的主要组成部件是单片机AT89C51,LED显示器以及按键开关。以下是它的工作流程:通过按键开关来对甲、乙两队加减分控制,按键开关由K2、K3、K5、K6组成。将按键一端接地,另一端输入与单片机AT89C51的P3.5,P3.4,P0.2,P0.1。例如:现在以甲队的加分为例,来对整个过程进行说明。如果在游戏开始时,比分是000:000,过了一段时间,当球队得分,然后按下K2键,这时K2=0(低),k3k5k6=111(高电平)k2k3k5k6相与后结果为低,这时将低电平输出到AT89C51单片机的P3.2引脚,中断外部INT0,调用中断服务程序,将要显示的数据从程序中定义的LED显示常数表TAB中取出数据06H(因为LED显示常数表TAB的偏移地址为36H,36h是LED显示器的第一个常数表标签第一数据3fh,按下K5就等于将3H加1,然后第二数据06H,即表的字母代码加1)。2.4器件选择及介绍本系统在设计的过程中主要选取了以下一些器件:单片机:AT89C51显示器件:7段共阴极LED显示器2.4.1AT89C51AT89C51是一个低电压,高性能CMOS8位单片机,数据随机存取存储器Flash[17]只读程序存储器片内含4K字节和128字节的(RAM),采用ATMEL公司的高密度非易失性存储器技术的装置,与标准的MCS-51指令系统兼容的微型计算机,内置强大AT89C51提供具有成本效益的解决方案。AT89C51由PDIP、PQFP/TQFP、PLCC三种包装形式组成[18],以满足不同产品的需求。这是一个低功耗高性能的单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2中断口,2个全双工串行通信,2个16位的可编程定时计数器,单片机可以按照常规方法进行编程,也可以在线编程。通用微处理器和闪存结合在一起,特别是闪存可以有效降低开发成本。如图所示,图8为AT89C51单片机基本构造,其基本性能介绍如下:图8AT89C51引脚图AT89C51的主要特性如下表8所示。下面介绍各个管脚:P0口:P0口是一个8位漏极开路双向I/O口,每个引脚可吸收8TTL门电流。当P1端口引脚为第一次写入1,由高电阻的定义[19]。P0能够用于外部程序数据存储器,它可以被定义为第八位数据/地址。在FIASH编程时,P0口作为输入的原代码,当FIASH进行检查,P0输出原码,P0必须外部拉高。P1口:P1口是一个8位双向I/O端口内部上拉电阻,P1口缓冲器能接收输出4TTL门电流。P1口写的引脚1,内部拉高,可作为输入,P1口为外部下拉为低,输出电流,这是由于内部拉动的原因。在Flash编程和验证中,P1口为第八位地址。P2口:P2端口是一个内部上拉电阻8位双向I/O端口,P2端口缓冲区可以接收到,输出的TTL门电流,当P2端口写“1”,该引脚是由内部拉上电阻,并作为输入。作为输入的结果,P2端口引脚被外部拉低,输出电流。这是由于内部拉力。P2口为外部程序存储器或16位地址外部数据存储器访问,P2端口地址输出值为八。地址是“1”,它使用强大的内部上拉时,外部八位地址数据存储器的读和写,P2口输出其特殊功能登记内容,P2口在flash编程和校验接收高八位地址信号和控制信号。表1AT89C51主要功能描述兼容MCS—51指令系统4k可反复擦写(>1000次)FlashROM32个双向I/O口可编程UARL通道两个16位可编程定时/计数器全静态操作0-24MHz1个串行中断128x8bit内部RAM两个外部中断源共6个中断源可直接驱动LED3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能P3口:P3端口引脚是8个I/O端口上拉式电阻,它可以接收和输出4TTL门电流。当P3口被写入“1”时,它们被内部拉得很高,用作输入。作为输入,外部下拉是低电平。P3口也可作为AT89C51的一些特殊功能口,如表6所示。P3口同时为闪烁编程[20]和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存器允许输出电平用于锁存地址的状态字节。此引脚用于在Flash编程时输入程序脉冲。在平时,ALE方以恒定频率周期输出正脉冲信号,振荡器频率为1/6。因此,它可以用于外部输出脉冲或用于计时目的。表2AT89C51特殊功能表端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)/PSEN:用于外部程序存储器的选通信号。在读取外部程序存储器,每个机器周期两/PSEN倍。然而,访问外部数据存储器时,这两个有效的/PSEN信号将不出现。/EA/VPP:当/EA电平低时,外部程序存储器(0000h-ffffh)在这段时期内,不管是否有内部程序存储器。请注意,加密方法1,/EA将被锁定内部重置;当/EA仍然高,内部程序存储器。该引脚还用于12V编程电源(VPP)在Flash编程。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。

3.软件的编程与调试3.1系统设计流程图系统程序设计流程图如图所示。定时中断初始化按下调试开关,产生低电平开放定时中断定时中断初始化按下调试开关,产生低电平开放定时中断立即数OOH取出,LE输出高电平经过P1.0发送代码,然后将LE清零启动定时器,T0开始定时调用中断定时程序按下计分键输出低电平,外部中断产生调用中断程序串行数据输出,移位脉冲输出显示数据,两队相应比分变化串行口发送完毕,标志清零图9计分部分程序流程图图10计时部分程序流程图3.2C语言程序设计程序源代码#include<reg51.h>#defineLEDDataP0unsignedcharcodeLEDCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharminit,second,count,count1; sbitadd1=P1^0; sbitdec1=P1^1; sbitexchange=P1^2; sbitadd2=P1^3; sbitdec2=P1^4; sbitsecondpoint=P0^7;sbitled1=P2^7;sbitled2=P2^6;sbitled3=P2^5;sbitled4=P2^4;sbitled5=P2^3;sbitled6=P2^2;sbitled7=P2^1;sbitled8=P2^0;sbitled9=P3^7;sbitled10=P3^6;sbitled11=P3^5;sbitalam=P1^7;bitplayon=0;bittimeover=0; bitAorB=0; bithalfsecond=0; unsignedintscoreA; unsignedintscoreB; voidDelay5ms(void){ unsignedinti; for(i=100;i>0;i--);}//**************************主函数*************************************************voidmain(void){TMOD=0x11;TL0=0xb0;TH0=0x3c;TL1=0xb0; TH1=0x3c;minit=15; second=0;EA=1;ET0=1;ET1=1;TR0=0;TR1=0;EX0=1;IT0=1;IT1=1;EX1=1;PX0=1;PX1=1;PT0=0;P1=0xFF;P3=0xFF;while(1){keyscan();display();}}//============外部中断0中断程序=================voidPxInt0(void)interrupt0{ Delay5ms(); EX0=0; alam=1; TR1=0; if(timeover==1) { timeover=0} if(playon==0) { playon=1; TR0=1; } else { playon=0; TR0=0; } EX0=1;}//===================定时器0中断服务函数======================voidtime0_int(void)interrupt1{ TL0=0xb0; TH0=0x3c; TR0=1; count++; if(count==10) { halfsecond=0; } if(count==20) { count=0; halfsecond=1; if(second==0) { if(minit>0) { second=59; minit--; } else { timeover=1; playon=0; TR0=0; TR1=1; } } else second--; }}//==============定时器1中断服务函数==========================voidtime1_int(void)interrupt3{ TL1=0xb0; TH1=0x3c; TR1=1; count1++; if(count1==10) {alam=0; } if(count1==20) {count1=0; alam=1; }}

结论在本次设计中,我通过基于典型单片机AT89C51的设计和应用,对于单片机工作原理,功能有了宏观的了解,并对单片机C程序的应用有了新的、进一步的认识。在设计过程中,我发现了很多问题,给我的感觉是很难启动的,很方便,看似很简单的电路,要想得到它的设计,是一件很困难的事情,主要的原因是我们不经常开始设计电路。另外单片机系统和很多知识、知识都想通了,不记得现在什么时候使用,导致我花了很多时间检查所有的数据和程序命令,所以整个时间安排的过程都是不合理的。由于程序的设计没有安排,设计的时间非常仓促,特别是在硬件调试过程中出现了很多问题。在信息搜索是一个重要的问题,这就要求我们在以后的学习中,我们应该注意这一点,我们从中学习到的知识和实际电路连接学习更重要的是,不论是对我们未来的工作或学习,将起到促进作用和很大的帮助。本次设计测试结果以及不足之处:计时电路可完成倒计时、暂停、继续等

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论