原创)基于单片机的篮球计时计分器的设计内容摘要:
60。 如果一个中断请求已被响应,则同级的其它中断服务将被禁止。 即同级不能嵌套。 如果同级的多个中断同时出现,则按CPU查询次序确定哪个中断请求被响应。 其查询次序为:外部中断0→定时中断→外部中断→定时中断→串行中断。 中断优先级控制,除了中断优先级控制寄存器之外,还有两个不可寻址的优先级状态触发器。 其中一个用于指示某一高优先级中断正在进行服务,从而屏蔽其它高优先级中断;另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级的中断。 此外,对于同级的多个中断请求查询的次序安排,也是通过专门的内部逻辑实现的。 上述四个专用寄存器的用途可以用图10说明。 图10 MCS51中断系统二、本篮球计时计分器功能及实现过程(一) 系统总体设计 1. 系统总体设计思路作为一个基于单片机的篮球计时计分器,本设计所采用的美国ATMEL公司的AT89C52单片机是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 由于AT89C52单片机的上述优点,所以在本系统中采用此单片机可以尽可能地降低成本。 本设计是一个基于美国ATMEL公司的AT89系列的单片机的篮球计时计分器,整个系统可分为中央处理器及美国ATMEL公司的AT89C52单片机,关于AT89C52单片机的一些参数及简单原理已经在前面有介绍。 人及交互界面,其中人及交互界面又包括显示部件,本系统的显示界面是采用七段式共阴数码管作为输出。 七段是共阴数码管,由于发光二极管的单向导电性,将一定数量的发光二极管按照一定的排列方式排列,在通过编程实现部分或者全部二极管的亮灭即可以显示0到9的所以数字从而实现单片机的输出。 在数码管中的发光二极管具有两种电气连接方式,一种是共阳一种是共阴,在这两种连接方式中,七段式共阴数码管内部的八个发光二极管的负极全部接地,每个发光二极管的正极作为输入只要在数码管的正极给一个高电平,数码管的负极接地就可以点亮数码管从而实现显示。 共阳数码管的原理同共阴数码管一样的只是在数码管内部采用的是与共阴数码管相反的接法即将所有的数码管正极相连,工作的时候只要公共正极接高,而每个二极管的负极只要接低电平就可以实现数字的显示。 其中有六位数码管输出甲乙队的比分,由于在有限的比赛时间内比分不可能会超过三位数,所以只每一个比赛方提供三位数的计分。 其余的4位数码管用于计时,预设48分钟的总比赛时间。 五个按键作为系统的输入,其中四个分别为甲对加分、甲队减分、乙队加分、乙队减分,第五个按键作为继续/暂停键使用。 其中还有一个蜂鸣器用于提醒球员在预设的时间点注意时间。 2. 计时部分设计分析 由于本设备为基于单片机的篮球计时计分器,所以设备的计分就不可避免。 由于AT89C52单片机内部自带有计时计数器,在AT89C52单片机内部可以通过对关于计时计数器寄存器的设置来规定单片机内部计时计数器的工作方式,其中有工作方式0,工作方式1,工作方式2,工作方式3,关于每种工作方式的详情在前面有关单片机的计时计数器已经有所介绍,由于AT89C52自带的计时计数器的功能能够完全满足本系统的设计需求,而在尽量降低成本的前提下我们采用单片机自带的计时器来计时。 当然也可以采用外部计时计数器作为单片机的计时计数器,并且也有这样的现成模块供使用。 根据美国篮球协会的规定:一场篮球比赛的总的比赛时间为48分钟,一共分为四节,每一节平均12分钟,中场和小节有一定的休息时间。 所以在本系统中的计时部分在系统开机时自动将时间赋给总的比赛时间及48分钟并在比赛开始时自动倒计时计时单位为1秒。 由于比赛具有随机性,可以在系统运行的任何时候只要按下暂停键即可以实现计时器的暂停功能,当需要比赛继续时只要再一次按下暂停键就可以实现比赛的继续,即计时器继续计时。 还由于在比赛过程中每完成一个小节的计时任务有小节结束的暂停时间,并且此过程不需要人为的干涉,所以在系统每小节计时结束时应该有一个暂停的功能。 当小节结束的暂停时将结束时可以在人为的按一下暂停键即可以实现计时的继续,在后面的小节结束并且需要暂停的时候能够在小节结束时自动暂停。 并且需要继续计时时只要在人为的按一下暂停键即可实现继续计时。 整个篮球计时过程结束时即48分钟计时完毕,计时器上显示时间结束,此时如果需要加时赛只要在按一下暂停键就可以在有5分钟的加时赛时间,依次类推,如果加时赛结束还没有分出胜负待计时结束后只需要在一次按下暂停键即可再一次得到5分钟的加时赛时间。 所以本设计中的计时部分在开机时设为初值48分钟并在比赛开始时自动倒计时,计时单位为1秒。 并且考虑到在每一节比赛结束时有一定的暂停时间,所以系统在每计时12分钟时会有一个自动暂停,当需要比赛继续时直接按一下暂停键即可。 这样依次倒计时当48分钟倒计完时计时结束。 当每节及终场快结束的时候,在结束的最后3分钟蜂鸣器响10秒来提醒球员和裁判注意合理利用时间。 3. 计分部分设计分析 分部分的设计,根据设计要求。 由于本计时计分器时用于对篮球比赛的计时计分,所以计分的对象有两个,及比赛的主队与客队。 所以本计时计分器也实现对两队的计分功能。 由于在有限的48分钟比赛时间内主客两队的分数必定在一定的范围内,根据以往的比赛经验篮球比赛分数一般不会超过3位数。 所以本计时计分器的计分部分位数为3位计分,及本系统的最大计分值为999分,够满足要求。 计分部分分为两部分:显示部分,以及分数输入部分。 由于计分部分采用三位数码管,所以两队的计分器一共有6位数码管。 所以在本系统的程序中,由于计时和计分部分是本系统的两大主要程序设计模块,所以在程序设计中先通过初始化子函数的调用来对程序进行初始化,为了使得程序看起来更简洁,所以将计时和计分部分以及其他的程序都采用子函数的方式,当在主函数中需要实现相应的模块功能是只要在主函数中对相应的子函数调用即可。 而对于在程序中的计时部分子函数的设计,所以在计分部分的分数显示部分函数设计中同样采用计时部分程序设计的思路,即采用动态显示的方式对6位数码管进行扫描显示。 计分部分的显示部分分为甲队和乙队分数显示,在程序设计中将甲队分数的百位送到6位数码管的第一位显示,并延时一定时间,然后将甲队的分数的十分位送到6位数码管的第二位显示并延时一定的时间,在再将甲队的分数的个位送到6位数码管中的第三位显示并延时一定的时间。 同样的在显示乙队的分数时也采用的方法来显示,这样在数码管的动态显示过程中即可实现甲乙队的分数刷新显示。 由于篮球比赛过程中的加分时间具有随机性,所以本计时计分器的分数输入部分采用4个按键输入。 其中两个用于主队的加分和减分,并且每按一次加分键主队加一分,同样每按一次减分键分数减一分。 另外两个按键用于客队的分数加减。 当需要加减不止一分时可以通过连续按下几次加减分键来实现。 4. 加时赛部分设计分析由于篮球比赛在规定的时间内分数具有随机性,所以在48分钟的有限时间内有可能主客队的分数一样。 这样就区分不出来主客队的输赢,由于有这样的可能性存在,此时就必须要求加时赛。 在本计时计分器中加入计时赛计时部分,具体的实现方法是在比赛结束的时候及48分钟计时结束后如果需要进行加时赛,只需要在按一下暂停键即可得到5分钟的加时赛时间。 如果加时赛时间已经结束还是没有分出胜负,可以在按一下暂停键有可以得到5分钟的加时赛时间。 5. 程序设计的步骤根据程序的设计步骤,首先是程序的头文件申明,然后初始化程序然后分别调用计时部分和计分部分。 由于本单片机计时计分器的设计采用的是美国ATMEL公司的AT89C52单片机,该单片机是基于Intel 公司的MCS51系列的单片机。 故本设计的程序设计部分采用C++语言来设计。 首先在程序开头处申明头文件,即include。 ,使用此文件的目的是在程序开始处即对本设计所要采用的单片机的寄存器进行申明。 由于在对单片机的控制时,不外乎就是采用软件的方法对其寄存器不断地进行置位和清零的操作。 ,及define uint unsigned int 和define uchar unsigned char即是什么了uint和uchar两个宏定义,这两个宏定义分别表示了无符号的int型数据及无符号的整型数据变量和无符号的char型数据即为无符号的字符变量。 在两个宏定义的定义结束后就是对本程序所要使用到得变量进行申明,其中uchar型变量有aa,minute,second,minuteshi,minutege,secondshi,secondge,score1,score2,score1bai,score1shi,score1ge,score2bai,score2shi,score2ge分别为aa 表示在计时过程中要用到的中间变量,还有就是在计时过程中的分钟minute 和计时过程中的秒变量second,由于需要把比赛时间显示出来,有因为在本系统中的硬件采用的动态扫描显示技术,所以在软件设计的时候也需要根据硬件做出相应的调整,又由于在比赛的时间是由四位数分别表示的时间分钟的时位,时间分钟的个位,时间秒钟的十位以及时间秒钟的个位。 所以在此处的程序开始的申明时就需要将以上时间的四个位数依次申明以便于在程序设计时能进行相应功能的实现。 由于此系统实现的功能是计时计分的功能,所以就涉及到有对分数的记录由于篮球的双方比分一般都不会超过三位数,所以在以上的uchar型变量的申明中对比赛双方的分数进行了申明,并且同样采用与时间显示的方式对分数进行显示,即将score1 和score2 的百位和十位以及个位分别申明便于程序使用变量。 当对程序中要使用的变量申明结束后,由于在系统中还要用到分数的加减,即是人为的操作,所以本系统中用到了按键。 所以就不可置疑的就要使用位定义将所使用的每个按键都定义到其对应的寄存器中。 所以在对程序中间变量的申明结束后就需要进行位定义,此处的位定义采用sbit 命令。 ,为段选和位选的定义。 还有将甲乙队的加分键和减分键都定义到单片机的P3口。 位定义结束后在定义一个中间变量temp,采用uint型的数据变量来定义。 当所有的数据变量定义结束后,在来定义三组无符号的字符型变量的代码段。 即为table[],table1[],fenwei[]。 此三组代码段分别为显示的代码区和位选择代码区。 由于单片机的RAM非常紧张,所以在定义此三组数据时采用uchar code table[]={}的形式目的是将此段数据放在ROM中以缓解单片机紧张的RAM。 至此此程序的变量定义部分完成。 由于在此程序中采用了模块化的程序设计思想,所以只需要设计好相应的子程序,并且在main函数中来不断地调用子函数即可实现相应的函数功能。 下面分别对各个子函数进行解释。 子函数void init()子函数,此函数是初始化函数,顾名思义就是对程序的参数以及单片机的寄存器进行初始化的函数。 在init函数中首先对锁存器74HC573的选通进行初始化,及将选通多设为0,即是说将锁存器在程。原创)基于单片机的篮球计时计分器的设计
相关推荐
法和大量结点的实际数据。 实践证明 ,该算法可以节约大量的内存 ,对于结点数比较大的网络 ,或带有大量拐向限制设置的网络 ,具有较好的适用性。 A*算法作为一种改进的 Dijkstra 算法 , 实际上是一种启发式搜索,所谓启发式搜索,就是利用一个估价函数评估每次的决策的价值,决定先尝试那一种方案。 这样可以极大地优化普通的广度优先搜索。 一般来说,从起始点 A到终点 B的最短路径是固定的
(如数据表 )的类型。 这两种类型之间联系密切,在数据库开发中两种类型都会用到。 然而,如果使用数据访问类型来填充数据表示类型将节省大量工作。 目前的主流版本是 ,比之前的版本提供了更先进的功能,主要包括以下高级特性: 支持批量复制,在其 .NET 类库中提供了批量复制类。 新的主要数据控件,包括 DataGridView、 DataConnector 和 DataNavigator。
al Basic, 但缺点是程序运行效率较低。 课题内容及论文的结构 课题研究的蓄电池化成监控系统。 硬件部分, 采用 STM32F103 ARM 控制芯片 作为CPU; 基于 TJA1040 和 ADUM1201 芯片设计完成 ARM 与外挂 CAN 适配器的隔离接口电路 ;设计电源电路,为 ARM、运放等器件提供驱动电源、基准电源等;设计存储器电路,存储数据;设计电流、电压信号采集模块
= = 0004 216594 0866376ms == 0004 545546 02182184ms == 0004 1563208mm= 06252832ms == 0004 113624mm= 0454496ms ∴== 012928040314425 04112rads 逆时针 ω== 060599440140 43285rads 顺时针 ω== 0218218400525
进度,明确对工程服务,对工程进度负责的工作目的。 ⑵ 工程定位 A、根据工 程特点,平面布置和定位原则,设置一横一纵两条主控线即 27楼:( A)轴线和( 1)轴线; 30楼:( A)轴线和( 1)轴线。 根据主轴线设置两条次轴线即 27楼:( H)轴 6 线和( 27)轴线; 30楼:( H)轴线和( 27)轴线。 B、主、次控轴线定位时均布置引桩,引桩采用木桩,后砌一水泥砂浆砖墩
总部的卫星控制中心( SCC)控制,以保证每颗卫星的正常运行。 每颗卫星可覆盖地球表面约 1/ 3 面积,覆盖区内地球上的卫星终端的天线与所覆盖的卫星处于视距范围内。 岸站( CES)是指设在海岸附近的地球站, 分属 INMARSAT 签字国主管部门所有,它既是与地面公用网的接口,也是卫星系统的控制和接入中心。 船站( SES)是设在船上的地球站。 因此, SES 的天线在跟踪卫星时