单片机设计—篮球计分器_第1页
单片机设计—篮球计分器_第2页
单片机设计—篮球计分器_第3页
单片机设计—篮球计分器_第4页
单片机设计—篮球计分器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 中州大学课程设计报告 中州大学工程技术学院单 片 机 课 程 设 计 说 明 书题目: 篮球计分器 姓名: * * * 学院: 工程技术学院 专业: 机械制造与自动化二班 学号: * 指导老师: * * * 完成日期: 2014 · 10 ·22 39摘要单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。本设计是基于AT89C51单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴L

2、ED显示器,2个两位一体7段共阴LED显示器,前者用来记录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。其次,为了配合计时器和计分器校正调整时间和比分,我们特定在本设计中设立了7个按键,用于设置,调整时间,启动,调整分数和暂停等功能。采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。主控芯片采用AT89C51单片机,采用C语言进行编程,编程后利用Keil uVision3来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验

3、功能是否能够正常实现。 关键字:篮球计时器、AT89C51、动态数码管、KELL、PROTEUS 目录1. 概述41.1 背景知识介绍41.2 设计内容41.3计任务和要求51.4 设计意义52.系统总体方案及硬件设计62.1 系统总体方案设计62.2 硬件电路设计72.2.1时钟电路模块82.2.2 复位电路模块82.2.3显示模块92.2.4 报警模块102.2.5总硬件电路设计103 软件设计113.1 软件总体设计方案123.2 软件设计具体过程123.2.1延时模块设计133.2.2 数码管动态刷新显示程序133.2.3 T0中断程序153.2.4 加分子程序163.2.5减分子程序

4、163.2.6 调整时间子程序173.2.7 半场交换比分子程序193.2.8 比赛暂停子程序193.2.9 中场指示灯程序203.2.10 主程序224 . PROTEUS仿真234.1 PROTEUS简介234.2仿真过程236.课程设计体会26参考文献27附1 源程序28附2 系统原理图371. 概述1.1 背景知识介绍 体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类得分类等多种类型。 篮球比赛是根据运动队在规定的比赛时间里得分多少来

5、决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。篮球比赛的计时计分系统由计时器,计分器等多种电子设备组成,同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,

6、智能化的核心部件。篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器和24秒控制器等组成。1.2 设计内容本设计是基于AT89C51单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来记录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。其次,为了配合计时器和计分器校正调整时间和比分,我们特定在本设计中设立了7个按键,用于设置,调整时间,启动

7、,调整分数和暂停等功能。采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。1.3计任务和要求任务: 设计一个用于赛场的篮球计时计分器。基本要求: (1)硬件设计:根据任务要求,完成单片机最小系统及其扩展设计。(2)软件设计:根据硬件设计完成显示功能要求,完成控制软件的编写与调试; (3)功能要求:A、设计一款能够显示篮球比分的记分牌;B、通过加分按钮可以给A队,或B队加分;C、增加比赛时间倒计时功能1.4 设计意义 课程设计使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤,掌握了单片机仿真软件Proteus的使用方法,键盘和显示器在的单

8、片机控制系统中的应用以及撰写课程设计报告的方法。此次设计很好的将书本上的理论知识和实践有机的联系了起来,是我们对理论知识有了更进一步的掌握,为以后的工作和学习提供了宝贵的经验。2.系统总体方案及硬件设计2.1 系统总体方案设计篮球计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警,按键控制键盘模块。通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。这四个模块的相互连接如下图(图1)所示:本设计是基于AT89C51单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来

9、记录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。2.2 硬件电路设计单片机AT89C51简介AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的

10、AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。    AT89C51(如图2)具有如下特点:40个引脚,4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 图 2 AT89C51单

11、片机引脚图此模块电路包括时钟电路模块,复位电路模块及报警显示模块。2.2.1时钟电路模块 时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个33P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接图如图3所示: 图 3 晶振电路2.2.2 复位电路模块复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行

12、程序。除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。RST引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图4 图 4 复位电路2.2.3显示模块本设计采用共阴极数码显示器,通常共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。本次设计在显示模块用到的

13、是一个4位一体和2个两位一体共阴极数码管,共有8个代码输入口和8个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,这就是动态驱动,由于扫描速度极快,显示效果与静态驱动相同,其具体图形如下图5图6所示图5图62.2.4 报警模块蜂鸣器通过一NPN三极管进行驱动,如图触发信号有基极引入。(图7) 图72.2.5总硬件电路设计图8 3 软件设计在设计程序之前,我们首先要对单片机应用系统预完成的任务进行深入的分析,明确系统的设计任务、功能要求和技术指标。其次,要对系统的硬件资源和工作环境进行分析。这是单片机应用系统程序设计的基础和条件

14、。3.1 软件总体设计方案本次单片机课程设计软件设计部分采用模块化程序设计,程序部分由主程序、T0中断程序、扫描显示子程序、计时加(减)1秒的子程序、暂停子程序、快表和回表子程序、延时子程序等组成.其程序流程图如图9图10。图9 主程序流程图图10扫描刷新显示子程序流程图3.2 软件设计具体过程 软件设计部分采用模块化程序设计,用C语言编写。Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面

15、。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。程序部分由主程序、T0中断程序、扫描显示子程序、计时加(减)1秒的子程序、暂停子程序、快表和回表子程序、延时子程序等组成。3.2.1延时模块设计 void delay(int t)调用该子程序能实现延时功能 通过参数t,可以调成延时时间 while(t-) unsigned int i; 设置变量i的变化范围,能调整延时的单位时间 for(i=0;i<200;i+); 长度,i越小,延时的单位时间越短,精度

16、越高 3.2.2 数码管动态刷新显示程序void display(int i,int j,int x,int y) 变量i,j,x,y分别为分,秒,A分数,B分数 if(jie<=2) 当中间变量jie<=2时,为下半场,此时对P1赋值 P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,下半场指示灯对应点亮 P2=0xfe; 数码管动态刷新显示程序 P2=1111 1110, i为分钟 P0=segi%100/10; P2=0xfe,所以刷新显示时间的分钟十位,调用延时程序, delay(1); 延时数码管的点亮 P2=0xff; P0=0; P2=0xfd; 同

17、理,动态刷新时分钟个位并延时点亮 P0=segi%10; delay(1); P2=0xff; P0=0; P2=0xfb; 同理,动态刷新时秒钟十位并延时点亮 P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; 同理,动态刷新时秒钟个位并延时点亮 P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; 同理,动态刷新A分数十位并延时点亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; 同理,动态刷新A分数个位并延时点亮 P0=segx%10; delay(1

18、); P2=0xff; P0=0; P2=0xbf; 同理,动态刷新B分数十位并延时点亮 P0=segy%100/10; delay(1); P0=0; P2=0xff; P2=0x7f; 同理,动态刷新B分数十位并延时点亮 P0=segy%10; delay(1); P0=0; P2=0xff;本设计中各个数码管采用动态驱动,使各位数码管逐个轮流受控显示,由于扫描速度极快(本实验中大约每20毫秒刷新一次),所以显示效果与静态驱动相同。3.2.3 T0中断程序void t0(void) interrupt 1本设计调用定时器T0,计时单位为一秒 TH0=0xb1; 对定时器T0送入计数初值,由

19、于TH0=0xb; TL0=0xe0; TL0=0xe0 故定时器定时为20毫秒,即每 if(n=0) 20毫秒调用一次void t0(void) interrupt 1 n=60;m-; i+; if(i=50) 令i值为50 50*20毫秒=1秒,来实现计时 n-; 单位为一秒 i=0; display(m,n,x,y); 调用动态刷新显示程序,即每20毫秒刷新一 次数码管3.2.4 加分子程序void keyjiafen1() 当检测到RXD按键按下时,调用延时子程序 if(RXD=0) 实现消除按键抖动功能,即,当 delay(1);, 检测到按键按下时候,延时,按键仍按下,说明 if

20、(RXD=0) 按键确实按下,非抖动,A对应加分 while(RXD=0); x+; if(TXD=0) 检测TXD加分按键时候按下,B加分 delay(1); if(TXD=0) while(TXD=0); y+; 3.2.5减分子程序void keyjianfen1()减分按键检测子程序,其基本算法及功能与加分 相同 if(WR=0) delay(1); if(WR=0) while(WR=0); x-; if(RD=0) delay(1); if(RD=0) while(RD=0); y-; 3.2.6 调整时间子程序调整时间子程序,使时间快速倒退或快进,实现回表功能,同时回表之后能自动

21、暂停void key2() if(INT0=0) delay(10);if(INT0=0) 回表子程序,检测到INT0按下时,使时间回倒 zanting=1;为附加变量,当回表按键 zanting=1; 松开时,表暂停,这两个变量用来调用暂停n+;if(n=60) m+; n=1; if(INT1=0) 快表子程序,检测到INT1按下时,使倒计加快, 通常情况下与回表子程序配合使用,即当回表 回过的时候,按此键调整时间 delay(10); zanting=1;作用同上 if(INT1=0) zanting=1; n-; void shijian() 该程序使回表和快表按键松开时候能自动暂停

22、if(zanting=1&&INT0=1&&INT1=1 ) EA=0; zanting=1&&INT0=1&&INT1=1作用为zanting=0; 当按键松开的时候,调用暂停程序条件 初始化,以便下次回表和快表 while(1) 按键松开时候仍能调用暂停程序 display(m,n,x,y); if(P1_0=0) 当检测暂停键按下,开中断,跳出暂停 delay(1); if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.7 半场交换比分子程序void key3() int temp; 定义中

23、间变量temp,检测到有按键按下时候 if(zidong=1&&jie=2) 通过temp交换甲队,乙队两队比赛分数 temp=x; zidong=1&&jie=2是判断半场的条件 y=temp; display(m,n,x,y); 刷新数码管 zidong=0; 3.2.8 比赛暂停子程序void key4() if(P1_0=0) 检测到暂停按键按下时候,令EA=0关闭中断 delay(1); 同通过死循环程序while(1),不断刷新数码管 if(P1_0=0) 当暂停键再次按下时候,开中断,以使比赛时间 继续倒计时,由于在暂停的时候,程序处于死循 whi

24、le(P1_0=0); EA=0; 无法回到主程序,暂停时,除了暂停键 while(1) 其他按键按下均无效 display(m,n,x,y); if(P1_0=0) 当暂停键再次按下时候,EA=1开中断,计时数码管 delay(1); 继续倒计时,同时通过break语句,跳出死循环 if(P1_0=0) while(P1_0=0); EA=1; break; 3.2.9 中场指示灯程序void over() if(m=0)&&(n=0) 当m,n均为0的时候,通过变量jie的值判断比赛 是否结束 if(jie>0) 如果jie>0,说明比赛没有结束, 令m=11,

25、n=60,关中断,再次按下暂停键时候继续倒时 m=11; 同是T1=1;delay(400) ; delay(400);,是蜂鸣器 n=60; 发声报警 EA=0; T1=1; delay(400); T1=0; while(1) display(m,n,x,y); 刷新数码管,等待暂停减再次按下,跳出暂停 if(P1_0=0) delay(1); if(P1_0=0) while(P1_0=0); EA=1; break; jie-; if(jie=0) 如果jie=0,说明比赛结束了,关闭中断,比赛秒表不再走动,同时不短刷新数码管, EA=0; m=0; n=0;T1=1; 全场比赛结束蜂

26、鸣器开始报警 delay(400); T1=0; P1=0x3f; P1=0x3f上下半场指示灯同时点亮,比赛结束 while(1) display(m,n,x,y); 同时应当不断刷新数码管 3.2.10 主程序void main() TMOD=0x01; 首先设置定时器工作方式 EA=1; ET0=1; TH0=0xb1; 定时器送计数初值,EA=1,开中断,P3口电平拉高TL0=0xE0; P1=0x7f, 上半场指示灯点亮TR0=1; TR0=1启动定时器P3=0xff; P1=0x7f; T1=0;while(1) 主程序通过 while(1),反复调用循环体内的子程序 来执行相应的

27、功能 keyjiafen1(); keyjianfen1(); key2(); if(zidong=1) zidong=1为key3()执行条件 key3(); key3()半场交换场地时自动交换双方 shijian(); key4(); over(); 4 . PROTEUS仿真4.1 PROTEUS简介Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS

28、232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机

29、和SPICE分析于一身的仿真软件,功能极其强大。4.2仿真过程接通电源,计时显示即开始倒计时工作,上半场指示灯亮,计时初始设计为12分钟,按下A+1键实现对A的加分,每按下一次加1分,如图11.图11同样可实现A和B的加减分,按下暂停/启动键可实现暂停和启动。 图12 图13上半场结束后,停止计时,蜂鸣器报警,按下暂停启动按键启动下半场计时,同时可实现甲队和乙队交换分数,下半场指示灯亮。 图146.课程设计体会课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实际能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,单片机已经成为当今计算机

30、应用中空前活跃的领域,在生活中可以说是无处不在。因此,作为二十一世纪的大学生来说,掌握单片机的开发技术室十分重要的。本次的单片机课程设计由于我们所处环境的特殊性而持续了较长时间。通过此次的课程设计,使我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,以及在软件方面的编程能力,更让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。 通过实训,让我更熟悉掌握了Keil uVision3, proteus ISIS这些应用程序的运用,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应

31、用程序。但在中间暴露出很多问题:对平时上课讲的理论知识没有完全掌握消化,到了实际设计中还得请教同学,不过,同时也让我学到了更多有用的东西。 这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。严谨求实、踏实务实,是我这次实训的深刻总结。做课程设计的这几天翻阅了很多书,也上了很多网站去寻找自己需要的资料。这种寻找有很强的目的性,只是为了自己选定的课题内容而查阅,所以除了自己课题以外的其他方面几乎还是一无所知。这让我深刻的认识到了自己专业知识的贫乏。为我对自己往后的学习生活的规划敲响了警钟。我对单片机的学习不会因为课程设计的结束而结束,在接触的众

32、多资料里,做设计只是走马观花般的点到。 最后,经过这次的单片机课程设计,虽然已经完成,但是,其中老师的辛勤指导和同学的热心帮助是必不可少的。因此,由衷的对老师的指导和同学的帮助表示感谢。在老师的辛勤指导下,学到了很多有用的经验和实用的知识;在同学的热心帮助下,不仅感受到贴心的温暖,同时,也让自己思维得以拓宽。 参考文献【1】上官同英,单片机原理及应用技术:清华大学出社,2011【2】 中州大学工程技术学院:单片机实验报告指导册,2012【3】廖雷,C语言程序设计:高等教育出版社,2000附一: 源程序#include <reg51.h>sbit P1_0=P10;sbit P1_6

33、=P16;sbit P1_7=P17; code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;int m=1,n=60,x=0,y=0,i=0,jie=4,zidong=1,bujin=1,zanting=0; void delay(int t) while(t-) unsigned int i; for(i=0;i<200;i+); void display(int i,int j,int x,int y) if(jie<=2) P1=0xbf; P2=0xfe; P0=segi%100/10; d

34、elay(1); P2=0xff; P0=0; P2=0xfd; P0=segi%10; delay(1); P2=0xff; P0=0; P2=0xfb; P0=segj%100/10; delay(1); P0=0; P2=0xff; P2=0xf7; P0=segj%10; delay(1); P0=0; P2=0xff; P2=0xef; P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; P0=segx%10; delay(1); P2=0xff; P0=0; P2=0xbf; P0=segy%100/10; delay(1); P0=0; P2=0xff; P2=0x7f; P0=segy%10; delay(1); P0=0; P2=0xff;void t0(void) interrupt 1 TH0=0xb1; TL0=0xe0; if(n=0) n=60;m-; i+; if(i=50) n-; i=0; display(m,n,x,y); void keyjiafen1() if(RXD=0) delay(1); if(RXD

温馨提示

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

评论

0/150

提交评论