基于单片机的篮球计时计分器设计C语言编程含proteus仿真图_第1页
基于单片机的篮球计时计分器设计C语言编程含proteus仿真图_第2页
基于单片机的篮球计时计分器设计C语言编程含proteus仿真图_第3页
基于单片机的篮球计时计分器设计C语言编程含proteus仿真图_第4页
基于单片机的篮球计时计分器设计C语言编程含proteus仿真图_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。本设计是基于AT89S52单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来记录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。其次,为了配合计时器和计分器校正调

2、整时间和比分,我们特定在本设计中设立了7个按键,用于设置,调整时间,启动,调整分数和暂停等功能。采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。主控芯片采用AT89S52单片机,采用C语言进行编程,编程后利用Keil uVision3来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能是否能够正常实现。仿真成功后,焊接硬件电路,通过ISP下载器将hex文件烧制到单片机。目录1. 概述31.1 背景知识介绍31.2 设计内容31.3计任务和要求41.4 设计意义42.系统总体方案及硬件设计52.1 系统总体方案设计52.2 硬件电路设计6时钟电路模块7

3、2.2.2 复位电路模块7显示模块82.2.4 报警模块9总硬件电路设计103 软件设计113.1 软件总体设计方案113.2 软件设计具体过程12延时模块设计133.2.2 数码管动态刷新显示程序133.2.3 T0中断程序153.2.4 加分子程序16减分子程序163.2.6 调整时间子程序173.2.7 半场交换比分子程序193.2.8 比赛暂停子程序203.2.9 中场指示灯程序213.2.10 主程序224 . PROTEUS仿真244.1 PROTEUS简介244.2仿真过程245. 硬件焊接与调试276.课程设计体会28参考文献29附1 源程序30附2 系统原理图401. 概述1

4、.1 背景知识介绍 体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类得分类等多种类型。 篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。篮球比赛的计时计分系统由计时器,计分器等多种电子设备组成,同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。由于单片机的集成度高

5、,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。篮球计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器和24秒控制器等组成。1.2 设计内容本设计是基于AT89S52单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来记

6、录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。其次,为了配合计时器和计分器校正调整时间和比分,我们特定在本设计中设立了7个按键,用于设置,调整时间,启动,调整分数和暂停等功能。采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。1.3计任务和要求任务: 设计一个用于赛场的篮球计时计分器。要求: 1、能记录整个赛程的比赛时间,并能随时实现暂停。 2、能随时刷新甲、乙两队在整个过程中的比分。 3、中场交换比赛场地时,能自动交换甲、乙两队比分的位置。

7、4、比赛中场和结束时,能发出报警声。 5、通过指示灯指示上下半场。 6、当比赛时间需要回倒时,能通过按键实现回表。 7、加分有误时可通过按键实现减分调整。1.4 设计意义 课程设计使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤,掌握了单片机仿真软件Proteus的使用方法,键盘和显示器在的单片机控制系统中的应用以及撰写课程设计报告的方法。此次设计很好的将书本上的理论知识和实践有机的联系了起来,是我们对理论知识有了更进一步的掌握,锻炼了我们的动手能力,同时也让我们懂得了理论与实际相结合的意义。为以后的工作和学习提供了宝贵的经验。2.系统总体方案及硬件

8、设计2.1 系统总体方案设计篮球计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警,按键控制键盘模块。通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。这四个模块的相互连接如下图(图1)所示:本设计是基于AT89S52单片机的篮球计时计分器,利用7段共阴LED作为显示器件。在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来记录赛程时间,其中2位用于显示分钟,2位用于显示秒钟,后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到099分。赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。2.2 硬件

9、电路设计单片机AT89S52简介AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。    AT89S52(如图2)具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,2

10、56 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器. 图 2 AT89S52单片机引脚图此模块电路包括时钟电路模块,复位电路模块及报警显示模块。2.2.1时钟电路模块 时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12MHZ的要求,这里要采用12MHZ的晶振,另外有两个22

11、P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。具体连接图如图3所示: 图 3 晶振电路2.2.2 复位电路模块复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。RST引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图4 图 4 复位电路2.2.3显示模块本设计采用共阴极数码显示器,通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出

12、端。当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。本次设计在显示模块用到的是一个4位一体和2个两位一体共阴极数码管,共有8个代码输入口和8个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,这就是动态驱动,由于扫描速度极快,显示效果与静态驱动相同,其具体图形如下图5图6所示图5图62.2.4 报警模块蜂鸣器通过一NPN三极管进行驱动,如图触发信号有基极引入。(图7)图72

13、.2.5总硬件电路设计图83 软件设计在设计程序之前,我们首先要对单片机应用系统预完成的任务进行深入的分析,明确系统的设计任务、功能要求和技术指标。其次,要对系统的硬件资源和工作环境进行分析。这是单片机应用系统程序设计的基础和条件。3.1 软件总体设计方案本次单片机课程设计软件设计部分采用模块化程序设计,程序部分由主程序、T0中断程序、扫描显示子程序、计时加(减)1秒的子程序、暂停子程序、快表和回表子程序、延时子程序等组成.其程序流程图如图9图10。图9 主程序流程图图10扫描刷新显示子程序流程图3.2 软件设计具体过程 软件设计部分采用模块化程序设计,用C语言编写。Keil是美国Keil S

14、oftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。程序部分由主程序、T0中断程序、扫描显示子程序、计时加(减)1秒的子程序、暂停子程序、快表和回表子程序、延时子程序等组成。3.2.1延时模块设计 void delay(int t)调用该

15、子程序能实现延时功能 通过参数t,可以调成延时时间 while(t-) unsigned int i; 设置变量i的变化范围,能调整延时的单位时间 for(i=0;i<200;i+); 长度,i越小,延时的单位时间越短,精度越高 3.2.2 数码管动态刷新显示程序void display(int i,int j,int x,int y) 变量i,j,x,y分别为分,秒,A分数,B分数 if(jie=1&&bujin!=2) 当中间变量jie=1时,为上半场,此时对P1赋值 P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,上半场指示灯对应点亮 P2=0x

16、fe; 数码管动态刷新显示程序 P2=1111 1110, i为分钟 P0=segi%100/10; P2=0xfe,所以刷新显示时间的分钟十位,调用延时程序, delay(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

17、; P2=0xff; P2=0xef; 同理,动态刷新A分数十位并延时点亮 P0=segx%100/10; delay(1); P2=0xff; P0=0; P2=0xdf; 同理,动态刷新A分数个位并延时点亮 P0=segx%10; delay(1); 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;本设计中各个数码管采用动态驱动,使各位数码管逐个轮流

18、受控显示,由于扫描速度极快(本实验中大约每20毫秒刷新一次),所以显示效果与静态驱动相同。3.2.3 T0中断程序void t0(void) interrupt 1本设计调用定时器T0,计时单位为一秒 TH0=0xb1; 对定时器T0送入计数初值,由于TH0=0xb; TL0=0x10; TL0=0x10 故定时器定时为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-1,x,y); 调用动态刷新显示

19、程序,即每20毫秒刷新一 次数码管3.2.4 加分子程序void keyjiafen1() 当检测到RXD按键按下时,调用延时子程序 if(RXD=0) 实现消除按键抖动功能,即,当 delay(1);, 检测到按键按下时候,延时,按键仍按下,说明 if(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) de

20、lay(1); if(WR=0) while(WR=0); x-; if(RD=0) delay(1); if(RD=0) while(RD=0); y-; 3.2.6 调整时间子程序调整时间子程序,使时间快速倒退或快进,实现回表功能,同时回表之后能自动暂停void key2() if(INT0=0) delay(10);if(INT0=0) 回表子程序,检测到INT0按下时,使时间回倒 chuzanting=0; chuzanting=0; zanting=1;为附加变量,当回表按键 zanting=1; 松开时,表暂停,这两个变量用来调用暂停n+;if(n=60) m+; n=1; if(

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

22、amp;&chuzanting=0作用为zanting=0; 当按键松开的时候,调用暂停程序条件huzanting=0; zanting=0;chuzanting=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; 定义中间变量temp,检测到有按键按下时候 if(zidong=1&&am

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

24、,除了暂停键 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>1) 如果jie>1,说明半场到了,比赛没有结束, 令m=2,n=0,关中断,再次按下暂停键时候继续倒计时 m=

25、2; 同是T1=1;delay(400) ; delay(400);,是蜂鸣器 n=0; 发声报警 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=1&&bujin=2) 如果jie=1&&bujin=2,说明比赛结束了, 关闭中断,比赛秒表不再走动,同时不短刷新数码管, 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=0x10; 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()半场交换场地时自动交换双方 if(n=18&&bujin=0) 比赛分数子程序,所以仅当中场时调用 bujin=2; 修改变量bujin的值,目的是设定over() 中第二个if语句的执行条件 shijian(); key4(); over(); 4 . PROTEUS仿真4.1 PROTEUS简介Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Window

28、s操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的

29、当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 4.2仿真过程接通电源,计时显示即开始倒计时工作,上半场指示灯亮,计时初始设计为2分钟,按下A+1键实现对A的加分,每按下一次加1分,如图11.图11同样可实现A和B的加减分,按下暂停/启动键可实现暂停和启动。 图12 图13上半场结束后,停止计时,蜂鸣器报警,按下暂停启动按键启动下半场计时,同时可实现甲队和乙队交换分数,下半场指示灯亮。5. 硬件焊

30、接与调试对照原理图进行焊接工作,把硬件先依次正确插到相应的位置,然后再次检查器件是否都正确,确定无误后进行焊接.在焊接的过程中要注意不要将相临的两个引脚焊接在一起,防止短路影响使用。硬件连接好以后,通过ISP下载线向单片机内烧制HEX程序,观察各部分工作情况。硬件连接如图.6.课程设计体会通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。 通过实训

31、,让我更熟悉掌握了Keil uVision3, proteus ISIS这些应用程序的运用,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,还有焊接和程序下载,。但在中间暴露出很多问题:对平时上课讲的理论知识没有完全掌握消化,到了实际操作中还得请教同学,在焊接中焊接的基本工夫掌握不到家,手上工夫还是很欠缺的,使得电路板不是很美观。 这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。严谨求实、踏实务实,是我这次实训的深刻总结。做课程设计的这几天翻阅了很多书,也上了很多网站去寻找自己需要的资料。这种寻找有很强的目的性,只是为了自

32、己选定的课题内容而查阅,所以除了自己课题以外的其他方面几乎还是一无所知。这让我深刻的认识到了自己专业知识的贫乏。为我对自己大四生活的规划敲响了警钟。我对单片机的学习不会因为课程设计的结束而结束,在接触的众多资料里,做设计只是走马观花般的点到。 通过单片机课程设计,我加深了对单片机理论的理解,学回了怎样将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。 参

33、考文献【1】余发山,单片机原理及应用技术:中国矿业大学出社,2003【2】 河南理工大学电气学院:单片机实验报告指导册,2008【3】刘法治,常用电子器件及典型芯片应用技术:机械工业出版社,2007【4】何立民,MSC-51系列单片机应用系统设计:北京航空航天大学出版社,1993附1 源程序#include <REGX51.H> /#include <REGX51.H>为头文件P1口各位分别用P1_0等表示code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /其中0x3f,0x06,0

34、x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f/分别对应数码管显示的字形0到9int m=1,n=60,x=0,y=0,i=0,jie=2,zidong=1,bujin=1,zanting=0,chuzanting=0; /定义全局变量m,n,x,y,i,jie,zidong,bujin,zanting,chuzanting/并初始化,其中m,n分别表示分钟与秒计时,x,y分别表示甲乙/两队的分数,其余中间变量void delay(int t) / 延时子程序 通过参数t,可以调整暂停时间 while(t-) unsigned int i; for(i=0;i&l

35、t;200;i+); void display(int i,int j,int x,int y) / 数码管动态刷新显示程序 if(jie=1&&bujin!=2) /中间变量jie=1时,为上半场,对P1赋值 P1=0xbf; /P1=0xbf, 即P1=1011 1111B,点亮对应上半场指示灯 P2=0xfe; /数码管动态刷新显示程序 P2=1111 1110,i为分钟 P0=segi%100/10; /刷新显示时间显示分钟十位,调用延时程序, delay(1); /延时数码管的点亮 P2=0xff; P0=0; P2=0xfd; /同理,动态刷新时分钟个位并延时点亮

36、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

37、; 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 /调用定时器T0 基本计时单位秒 TH0=0xb1; /利用定时器T0,送入计数初值TH0=0xb1; TL0=0x10; TL0=0x10; /定时器定时单位为20毫秒 if(n=0) /分钟与秒时间调整 当秒减到0以后分钟减1 n=60;m-; i+;

38、if(i=50) /利用中间变量i 令i值为50 50*20毫秒=1秒 n-; /以实现一秒计时 i=0; display(m,n-1,x,y); /调用动态刷新显示程序 void keyjiafen1() /加分按键子程序,在主程序中不断调用该子程序 /当检测到甲队加分按键按下时,对应加分 if(RXD=0) /调用延时子程序 实现消除按键抖动功能,即,当 delay(1); /检测到按键按下时候,延时,按键仍按下,说明按键 if(RXD=0) /确实按下,非抖动,甲队对应加分 while(RXD=0); x+; if(TXD=0) /同理,检测乙队加分按键时候按下,并加分 delay(1)

39、; if(TXD=0) while(TXD=0); y+; 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-; void key2() /显示时间调整程序,即回表和快表 if(INT0=0) /在比赛中有时经常需要回表,故写此程序delay(10);if(INT0=0) /回表子程序,检测到INT0按下时,使时间回倒 chuzanting=0; / chuzanting=0; zanting=1;为附加变量,当回表按键zanting=1; /松开时,表暂停,这两个变量用来调用暂停n+;if(n=60) m+; n=1; if(INT1=0) /快表子程序,检测到INT1按下时,使倒计加快, /通常情况下

温馨提示

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

评论

0/150

提交评论