实训项目篮球记分牌单片机设计
- 格式:docx
- 大小:163.31 KB
- 文档页数:25
西安文理学院机械与材料工程学院课程设计报告专业班级课程单片机课程设计题目单片机课程设计篮球比赛计分牌的设计学号学生姓名指导教师2016年11月西安文理学院机械与材料工程学院课程设计任务书学生姓名 专业班级 学 号指导教师 职 称 讲师 教研室课 程 单片机课程设计 题目篮球比赛计分牌的设计 任务与要求设计任务:以AT89S51单片机为核心,设计一个篮球比赛计分牌。
裁判控制开始、暂停、清除和两队的加分按键。
比赛每节10分钟,允许暂停,且使用不同LED 表示比赛状态。
比赛开始,按下可开始按键,绿色LED 亮,进入10分钟倒计时。
比赛期间,若暂停键按下,倒计时暂停,黄色LED 亮;当再次按下暂停按键,比赛继续进行。
当倒计时为0,比赛结束,红色LED 亮,蜂鸣器响5秒。
比赛期间,裁判可通过加分按键分别给A 队或B 队加分,每按下一次加2分。
当清除按键按下,时间与分数全部清零。
设计要求:1.完成系统的硬件电路设计与软件设计;2.采用C51语言编程;3.采用Proteus 、Keil C 等软件实现系统的仿真调试;4.设计报告要求思路清晰,结构合理,语言流畅,书写格式符合要求。
开始日期 2016.11.7 完成日期 2016.11.222016年11月3日A 队成绩倒计时开始加分加分暂停暂停B 队成绩摘要单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
本设计是基于AT89S51单片机的篮球计时计分器,利用7段共阴LED 作为显示器件。
在此设计中共接入了3个两位一体7段共阴LED显示器,一个用来记录赛程时间,其中2位用于显示A队成绩,2位用于显示B 队成绩,每队2个LED显示器显示范围可达到0~99分。
赛程计时采用倒计时方式,比赛开始时启动计时,直至计时到零为止。
桂林电子科技大学《基于单片机综合应用设计实训》报告篮球比赛计分器设计学院(系):海洋信息工程学院专业:通信工程专业学号:学生姓名:指导教师:1目录目录 (1)摘要 (2)关键词 (2)1 绪论 (3)2 课题背景 (4)2.1 设计任务与要求 (4)2.2 设计目的 (4)2.3 设计题目的概述 (4)3 总体设计方案 (5)3.1 设计思想 (5)3.2方案论证 (5)4 硬件设计 (5)4.1 硬件结构及原理 (5)4.1.1总体设计思路: (5)4.1.2总体组成框图如图所示: (6)4.2单片机的选型 (6)4.3各模块的设计 (7)4.3.1键盘输入模块的设计 (7)4.3.2 分数显示模块的设计 (8)4.3.3 系统硬件原理总图 (9)4.3.4 元器件清单 (9)5 软件设计 (10)5.1 软件流程图 (10)5.1.1 单片机程序总体流程图 (10)5.1.2 ISIS Professional仿真 (11)5.2 核心程序设计 (11)5.3 PCB设计 (11)6 调试 (12)7 课程设计心得体会 (12)参考文献 (13)附录 (13)1原理图 (13)2 PCB图 (14)3 源程序代码 (14)4 实物图 (20)摘要单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
本设计是采用STC89C52单片机为核心设计的一个用于赛场的篮球计分器。
显示部分为计分显示部分,采用共阴极LED显示。
计分模块分显示为“a”队和“b”队,均有三位LED实现分数显示。
显示模块采用动态扫描方式显示。
在本设计中P0口(P0.0~P0.7)作为段选口,P2(P2.0~P2.7)作为数码管位选口。
《单片机原理及应用》篮球计分牌设计1 系统设计1.1 设计要求1.1.1 设计任务设计一个基于单片机的篮球计分牌,实现两队的计分与24秒计时功能。
1.1.2 性能指标要求(1) 按照题目要求独立设计系统所需电路,并完成硬件电路的制作及调试。
(2)结合硬件能够正常计分(1,2,3)。
(3)能够正常显示分值。
(4)能够正常修改工作模式(计分与24秒)。
(5)能够24秒的误差不小于1秒。
发挥部分能记录两队球员犯规次数计数。
1.2 设计思路及设计框图1.2.1设计思路根据实训的要求,需做出能够正常计分、 能记录两队犯规次数和24秒倒计时的电路板,先根据实训课件画出相应的原理图,然后再编写好程序,再依照原理图连接好元器后将程序拷入到板子上来实现其功能。
其中在程序中设计了延时函数,控制函数,主函数,中断方式。
它们分别起着24秒倒计时,加分,增加犯规次数,改变工作方式,复位等作用。
1.2.2总体设计框图→ ←2 各个模块程序的设计本次实训总共设计了4个模块,分别为数码管显示模块,由按键控制的控制模块,振荡电路模块,复位模块和蜂鸣器模块。
先对数码管进行段码的定义,由于本电路使用16位计时器的计时中断法,所以要循环20次才可到达1秒定时,当24s结束时蜂鸣器响。
并且然使用延时程序来给比赛双方加分和记录双方队员犯规的次数。
3 调试过程(1)先是用万用表将实训给予的元器件进行短路和断路的检查。
(2)然后利用proteus软件将已经设计好的原理图进行电路仿真测试,当仿真所显示出来的功能达到实训要求的功能时,就可以按照原理图把元器件插入到电路板上并进行焊接。
(3)完成焊接后,先是用万用表进行电路测试,检查是否存在短路,断路和虚焊等电路问题。
检查完后,把电源,地线和数据转接口连接好就将程序拷入到电路板中。
然后进行按钮功能的测试,发现数码管无法显示出来。
(4)得知是数码管模块出了问题后便开始进行逐一排查。
经过查阅资料得知A102J排阻要串联一个电阻才能使P0口高电平输出,从而让数码管点亮。
篮球记分牌1、项目名称:单片机篮球记分牌2、项目要求:实现为比赛的两个队计分,计时,中场暂停时蜂鸣器报警功能。
其中,加分可以实现每次加一分,两分和三分。
每个队加分时都有相应的指示灯点亮。
3、设计内容本设计是基于AT89C51单片机的篮球计时计分器,利用7段共阴LED作为显示器件。
在此设计中共接入了1个四位一体7段共阴LED显示器,1个四位一体7段共阴LED显示器,一个用来记录赛程时间,每次计时时间设置为2分钟。
另外一个数码管用于记录甲乙队的分数,每队2个LED显示器显示范围可达到0~99分。
赛程计时采用正计时方式,比赛开始时启动计时,直至计时到到2分钟为止。
其次,为了配合计时器和计分器校正调整时间和比分,我们特定在本设计中设立了四个按键,用于加一分,加两分,加三分和切换甲乙两队的加分等功能。
采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。
本篮球计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警,按键控制键盘模块。
通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。
这四个模块的相互连接如下图(图1)所示:4、芯片简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
可编辑修改精选全文完整版基于单片机的篮球赛计时计分器的设计一系统设计方案1.1 设计题目篮球计时计分器1.2 系统功能要求本系统可实现功能如下:(1)主控部分:选择单片机为核心元件构成系统。
(2)计时部分:能记录整个赛程的比赛时间,并能修改时间、暂停时间。
(3)计分部分:能随时刷新甲、乙两队在整个赛程中的比分。
(4)中场交换比赛场地时,能交换甲、乙两队比分的位置。
(5)比赛时间结束时,能发出报警指令。
1.3 系统总体方案设计本设计由AT89C51编程控制LED七段数码管作球赛计时计分系统具有赛程定时设置、赛程时间暂停、性能稳定、操作方便且易携带等特点。
1.3.1系统设计方案论证本设计是基于89C52单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我拟订了下面两种方案:第一种方案:键盘控制采用矩阵扫描键盘,可以用普通按键构成4×4矩阵键盘,直接接到89C51单片机的P0口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。
显示部分采用动态显示,采用移位寄存器74LS164和译码器74LS138通过显示驱动程序驱动七段数码管显示。
此方案成本低,所用到的两个外围芯片价格都很低廉,而且单片机的I/O口占用较少,可以节约单片机接口资源。
第二种方案:键盘控制采用独立是式键盘,每个按键的"接零端"均接地,每个按键的"测试端"各接一条输入线,通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单。
这种方法比较适合按键较少或操作速度较高的场合。
显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU 的开销小。
单片机课程设计报告书课题名称 篮球赛计时计分电路 姓 名学 号 院 系 通信与电子工程学院 专 业电子信息工程※※※※※※※※※ ※※ ※※ ※※※※※※※※※※※ 2009级学生单片机 课程设计指导教师2012年 6 月14日篮球计时计分电路课程设计(湖南城市学院通电与电子工程学院电子信息工程专业,益阳,413000)1 设计任务设计目的1. 了解计时计分器组成及工作原理。
2. 进一步掌握计时计分器的设计方法3. 进一步掌握芯片的逻辑功能及使用方法。
4. 熟悉集成电路的引脚安排.。
设计指标设计一个单片机系统用于篮球比赛计时计分,满足以下功能要求:(1)能记录整个赛程的比赛时间,并能修改比赛时间、暂停比赛时间。
(2)能随时刷新甲、乙两队在整个比赛过程中的比分。
(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。
(4)比赛结束时,能发出报警声。
设计要求1. 画出总体设计框图,以说明计时计分器独立的功能模块组成,标出各个模块之间互相联系。
2. 设计各个功能模块的电路图,加上原理说明。
3. 选择合适的元器件,在面板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
4. 在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个计时计分电路的接线调试。
2、设计思路与总体框图.本设计是采用AT89C52单片机为核心设计的一个用于赛场的篮球计时计分器。
本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。
单片机P3口(——)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口是计分数据输出口。
计时部分计时范围宽,而且可定时设定与小时、分钟调整;计分部分调整灵活,显示范围宽,足以满足各种规模赛程需要。
两个显示模块均采用动态扫描方式显示。
图1所示为计时计分器的总体框图。
单片机课程设计—篮球计时计分器篮球作为一项广受欢迎的运动,其比赛的公平性和准确性至关重要。
而在篮球比赛中,计时计分器是不可或缺的设备,它能够为比赛提供准确的时间和比分信息,保障比赛的顺利进行。
本次单片机课程设计的任务就是设计一款篮球计时计分器,通过运用单片机的知识和技能,实现篮球比赛计时和计分的功能。
一、设计要求1、能够实现比赛时间的计时功能,包括 24 秒进攻时间、每节 10分钟的比赛时间以及加时赛时间。
2、能够实时显示比分,包括主队和客队的得分。
3、具备暂停、复位等功能,以应对比赛中的各种情况。
4、能够通过按键进行操作,简单易用。
二、系统方案设计1、硬件设计单片机选型:选择一款性能稳定、资源丰富的单片机,如STC89C52 单片机。
显示模块:采用数码管显示时间和比分,数码管具有亮度高、显示清晰、成本低等优点。
按键模块:使用独立按键实现计时、计分、暂停、复位等操作。
时钟模块:采用外部时钟芯片,为系统提供准确的时钟信号。
2、软件设计编程语言:选择 C 语言进行编程,C 语言具有语法简洁、可移植性好等优点。
程序流程:主程序负责系统的初始化、按键扫描、时间和比分的更新以及显示。
中断服务程序负责处理时钟中断,实现计时功能。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供时钟信号,复位电路用于系统的初始化。
2、显示电路采用共阳极数码管,通过三极管驱动数码管的段选和位选信号,实现时间和比分的显示。
3、按键电路独立按键分别连接到单片机的 I/O 口,通过检测按键的状态来执行相应的操作。
4、时钟电路采用 DS1302 时钟芯片,通过单片机的 I/O 口与时钟芯片进行通信,获取准确的时间信息。
四、软件程序设计1、主程序首先进行系统初始化,包括单片机端口设置、数码管显示初始化、时钟芯片初始化等。
然后进入主循环,不断扫描按键状态,根据按键执行相应的操作,同时更新时间和比分,并将其显示在数码管上。
探※※※※※※※※次2009级学生单片机次课程设计单片机课程设计报告书课题名称篮球赛计时计分电路姓名学号院系通信与电子工程学院指导教师2012年6月14日篮球计时计分电路课程设计(湖南城市学院通电与电子工程学院电子信息工程专业,益阳,413000 )1设计任务设计目的1.了解计时计分器组成及工作原理。
2.进一步掌握计时计分器的设计方法3.进一步掌握芯片的逻辑功能及使用方法。
4.熟悉集成电路的引脚安排.。
设计指标设计一个单片机系统用于篮球比赛计时计分,满足以下功能要求:(1)能记录整个赛程的比赛时间,并能修改比赛时间、暂停比赛时间。
(2)能随时刷新甲、乙两队在整个比赛过程中的比分。
(3)中场交换比赛场地时,能交换甲、乙两队比分的位置。
(4)比赛结束时,能发出报警声。
设计要求1.画出总体设计框图,以说明计时计分器独立的功能模块组成,标出各个模块之间互相联系。
2.设计各个功能模块的电路图,加上原理说明。
3.选择合适的元器件,在面板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
4.在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个计时计分电路的接线调试2、设计思路与总体框图本设计是采用AT89C52单片机为核心设计的一个用于赛场的篮球计时计 分器。
本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分, 均采用共阴极LED 显示。
单片机P3 口(一一)是计时计分显示共用的扫描口, P0 口是计时数据输出口, P2 口是计分数据输出口。
计时部分计时范围宽,而 且可定时设定与小时、分钟调整;计分部分调整灵活,显示范围宽,足以满足 各种规模赛程需要。
两个显示模块均采用动态扫描方式显示。
图1所示为计时计分器的总体框图。
▲图1 计时计分器结构框图3、系统硬件电路的设计、时钟电路MCS-51内部有一个用于构成振荡器的高增益反相放大器, 此放大器的 XTAL1 和 XTAL2,在 XTAL1 和 XTAL2 上外接时钟P0.0/AD0P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15输入和输出端分别是引脚 XTAL2C319189XTAL1XTAL2RSTPSEN ALE EAP0.0/A匸P0.1/ADP0.2/AD P0.3/AD P0.4/ADP0.5/ADP0.6/AD P0.7/AD P2.0/A P2.1/AP2.2/A1 P2.3/A1 P2.4/A1 P2.5/A1 P2.6/A1、按键控制电路P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C52P3.0/RX —011P3.1/TX P3.27INT P3.37INT P3.4/T)…P3.5/TP3.6/WR { P3.77R」15 1617源即可构成时钟电路。
有内部和外部两种时钟产生方式。
本设计采用的是外部方式。
C1、复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后, 撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分 -合过程中引起的抖动而影响复位。
上电复位设利用电容充电来实现的,即上电瞬间RST/Vpd端的电位与Vcc 相同,随着充电电流的减少, RST/Vpd 的电位下降,最后被嵌位在0V 。
按钮 电平复位是当按下按钮后,电源Vcc 通过电阻R 施加在单片机复位端 RST/Vpd 上,实现单片 机复位。
本设计采用的是上电 +按钮电平复位电路,是上电自动复位与按钮电平复位电路的组合,当振荡频率选时。
电容C 取10uF, R 取10K , Rs 取1K 。
U1U1191 XTAL1XTAL2RSTP0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7P2.0/A8 P2.1/A9P2.2/A10 ■PSEN P2.3/A11 ALE P2.4/A12 ■EAP2.5/A13 P2.6/A14P2.7/A15 P1.0/T2 P3.0/RXD P1.1/T2EX P3.1/TXD P1.2 P3.23/NT0 P1.3 P3.3/IMT1 P1.4 P3.4/TC P1 5 P3 5/T1 P1.6 P3.6/WR P1.7P3.7/RD18 9AT89C52设计采用的是用查询方式的,也就是把按键接在P1 口,用程序查询方式查询那个按键按U1下,执行相应的操作。
、数码管显示电路数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。
我们分别把他命名为A,B,C,D,E,F,G,H。
假设我们要显示一个数字2,那么A、 B GE、D这5个段的发光管亮就可以了,C、F、H不亮,同时由于接法为共阳接法,那么为低电平是亮,为高电平是灭。
从高往低排列,写成二进制为01111110, 把他转化为16进制则为A2H本设计采用的是数码管动态显示。
、定时报警电路19 ,XTAL1XTAL2RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSEN P2.3/A11ALE P2.4/A12EA P2.5/A13P2.6/A14P2.7/A15P1.0/T2 P3.0/RXDP1.1/T2EX P3.1/TXDP1.2 P3.2/INT0P1.3 P3.3/INTTP1.4 P3.4/T0P1.5 P3.5/T1P1.6 P3.6/WRP1.7 P3.7/RD29~30—471891238AT89C52定式报警电路4、软件设计、程序流程图篮球比赛中,得分可分为1分、2分、3分三种情况,但为了方便我们在 这只设置加1分,得2分、3分的情况可用按2次、3次加1分得到。
还设置 了定是报警键。
根据这样的设计要求,结合数码管的显示以及52单片机中计数器的工作实现方式、接口应用、中断控制等可设计出程序流程图如下:U1913=2930」;XTAL1 P0.0/AD0 P0.1/AD1P0.2/AD2 XTAL2P0.3/AD3P0.4/AD4 P0.5/AD5P0.6/AD6 RSTP0.7/AD7 P2.0/A8 P2.1/A9P2.2/A10 ALE P2.4/A12 ■EAP2.5/A13 P2.6/A14P2.7/A15 P1.0/T2 P3.0/RXD P1.1/T2EX P3.1/TXD P1.2 P3.2/INT0 P1.3 P3.3/INT1P1.4 P3.4/T0 P1.5 P3.5/T1 P1 6 P3 6/W^MP1.7P3.7/RD ---三三二三二三_二三三程序初始化7^7<KEYI -O ?> 甲队加一分I——<<EY5=0?>-比分疇交换 比分设逻定时7/ liL :调塹分钟、程序分析本设计采用AT89S52单片机中的一个16位的定时/计数器T o ,分别由TH 和 TL o 组成,它们均是8位寄存器,在特殊功能寄存器中占地址 8AH-8DH 它们用 于存放定时或计数的初始值。
此外,内部还有一个 8位的方式寄存器TMO [和一 个8位的控制寄存器TCON用于选择和控制定时/计数器的工作。
5程序设计仿真在计算机中打开PROTEU 软件,建立新的项目,在元件库中选择相应的元 件,放在编辑窗口中,依次连线,组成仿真原理图计时工作仿真状态图:I半并产12345甲乙两队计分工作仿真状态图: 67896.总结与体会总结1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。
2.容易出现故障为接触不良。
a)集成块引脚方向预先弯好对准面板的金属孔,再小心插入。
b)导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。
c)导线的裸线部分不要露在板的上面,以防短路。
d)导线要插入金属孔中央。
3.注意芯片的控制引脚必须正确接好4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。
5.要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。
体会这次课程设计历时二个星期左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对C语言程序设计掌握的不够……通过这次课程设计之后,一定把以前所学过的知识重新温故。
7.参考文献:附1/*******************************************************************************程序名:篮球记分牌测试程序编辑时间:2012-06-14编辑者:修改时间:硬件平台:MCU:At89C51 晶振:12MHz硬件连接:功能说明:按下K1键,甲队加1分按下K2键,乙队加1分按下K5交换记分牌按下K3键,开始/停止比赛按下K4:调整比赛时间第1~4位数码管为比赛时间的分和秒,第5~8位数码管分别为两队的分数测试结果:0K注意:*******************************************************************************///头文件#in clude<>#in clude<>#i nclude""#i nclude""#in clude""//变量定义unsigned char disp_buff1[4]={1,2,0,0}; // un sig ned char disp_buff2[4]={0};un sig ned char minu te=12,sec on d=0;un sig ned char score1=0,score2=0;bit volatile fini sh_flag=0;un sig ned char num=0;un sig ned char key=0;比赛时间显示缓冲区//两队得分显示缓冲区//比赛时分秒//两队的比赛得分//比赛完成标志位//定时累加计数//保存键值II定时器T0初始化函数void in itial(){TMOD=0x80;TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;}/******************************************************************************函数名:数码管显示缓冲区数组处理函数入口参数:无出口参数:无*********************************************************************************/void dispose(void){disp_buff1[0]=mi nute/10; //分钟的十位disp_buff1[1]=mi nute%10; //分钟的个位disp_buff1[2]=seco nd/10; //秒钟的十位disp_buff1[3]=seco nd%10; //秒钟的个位disp_buff2[0]=score1/10; //甲队得分的十位disp_buff2[1]=score1%10; disp_buff2[2]=score2/10; disp_buff2[3]=score2%10; //甲队得分的个位//乙队得分的十位//乙队得分的个位//主函数void mai n(void){un sig ned char temp;in itial();while(1){key=key_sca n();switch(key){case 1:score1++;break;case 2:score2++;if(score仁=100)if(score2==100)break; //定时器T0初始化//按键扫描〃K1按下,甲队加1分score 仁99;//K2按下,乙队加1分score2=99;case 5:temp=score1; //K5 按下,交换记分牌score仁score2;score2=temp;break;case 3:TR0=~TR0; //K3按下,停止或开始比赛break;F K4键可以调整比赛时间case 4:if(TR0==0) // 停止比赛时,按{minu te++;if(mi nute==60)minu te=0;}break;default:break;}dispose();diaplay(disp_buff1,disp_buff2);if(fini sh_flag){P1A=0x08;minu te=sec on d=0;}}}//定时器T0中断服务函数void T0_time( )in terrupt 1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;nu m++;if(num==250){num=O;if(sec on d==0){if(minute==0) //比赛时间到,则停止计时{TR0=0;fini sh_flag=1;}else{second=60;minu te--;}}sec on d--;}}[未****************************************************************************程序名:8位共阳七段数码管动态显示程序编辑时间:2012-06-14编辑者: x_z_yQ Q : 6修改时间:硬件平台:MCU At89c51 晶振:12MHz 8 位共阳七段数码管硬件连接:第1~4位数码管段选 ----------- P0 位选---------------- P3A0,P3A1,P3A2,P3A3第5~8位数码管段选P2 位选P3A0,P3A1,P3A2,P3A3 注意:*****************************************************************************///头文件#in clude<>#in clude<>#i nclude""#i nclude""//变量定义unsigned char code disptable[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //定义0~F所对应的十六进制数组disptable/****************************************************************************函数名:一位数码管显示函数入口参数:unsigned char num对应的第几个数码管unsigned char dat1 ,dat2对应要显示的数出口参数:无****************************************************************************/void seg_display (un sig ned char num,un sig ned char dat1, un sig ned char dat2)/****************************************************************************函 数名:八位数码管显示函数入口参数:un sig ned char *disp_buff1,*disp_buff2对应要显示的数缓冲数组指针 出口参数:无****************************************************************************/ void diaplay (un sig ned char *disp_buff1, un sig ned char *disp_buff2) {un sig ned char i;for(i=0;i<4;i++) //循环扫描数码管{seg_display(i,disp_buff1[i],disp_buff2[i]);delay_ms(3);}}/**************************************************************程序名:STC89C52RD+四个独立按键的程序编辑时间:2012-06-14编译环境:keil c硬件平台:STC89C52RD 单片机,晶振四个独立按键 功能描述: sbit K 仁P1A 0; 〃K1 ――甲对加分键P3&=0xf0; P0=~disptable[dat1]; P2=~disptable[dat2]; P3=_cror_(0x08, nu m); }//消影//第1~4位数码管段选//第5~8位数码管段选//位选sbit K2=P1A1; 〃K2 —-一乙队加分键sbit K3=P1A2; 〃K3 —-一开始/停止比赛sbit K4=P1A5; 〃K4 —-一调整比赛时间sbit K5=P1A6; 〃K5 —-一甲乙队交换记分牌注意:**/*************************************************************//头文件#in clude<>#i nclude""#in elude""//硬件定义sbit K仁P1A0;〃K1 —甲对加分键sbit K2=P1A1;〃K2 —-一乙队加分键sbit K3=P1A2; 〃K3 —-一开始/停止比赛sbit K4=P1A5; 〃K4 —-一调整比赛时间sbit K5=P1A6; 〃K5 —-一甲乙队交换记分牌/***************************************************************************************函数名:三个独立键盘扫描函数函数入口:无函数出口:无*************************************************************************************un sig ned char key_sca n( void) { un sig ned char key=0;if(K1==O){delay_ms(2);if(K1==0){while(K1==0);key=1;}}else if(K2==0){delay_ms(2);if(K2==0){while(K2==0);key=2;}}else if(K3==0){delay_ms(2);if(K3==0) //甲对加分键//乙队加分键//开始/停止比赛while(K3==0);key=3;}}else if(K4==0) //调整比赛时间{delay_ms(2);if(K4==0){while(K4==0);key=4;}}else if(K5==0) //甲乙队交换记分牌{delay_ms(2);if(K5==0){while(K5==0);key=5;}}return key;}〃延时函数******************************* ********************//头文件#in elude <>#in elude <>#i nclude ""//延时xus的函数void delay_us( un sig ned int xus){while(xus-)_n op_();}//延时xms的函数void delay_ms( un sig ned int xms){while(xms--)delay_us(1);}#ifndef __DISPLAY_H__#defi ne __DISPLAY_H__ void seg_display (un sig ned char num,un sig ned char dat1, un sig ned char dat2);//数码管显示函数void diaplay (un sig ned char *disp_buff1, un sig ned char *disp_buff2);〃示函数2121一位八位数码管显#en dif#ifndef __DELAY_H__#defi ne __DELAY_H_exter n void delay_us( un sig ned int xus); // 微秒延时exter n void delay_ms( un sig ned int xms); // 毫秒延时#en dif。