《本科毕业设计--八路抢答器单片机.doc》由会员分享,可在线阅读,更多相关《本科毕业设计--八路抢答器单片机.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录 摘要 .2第一章 绪论 .3第二章 系统总体方案设计 .42.1 设计任务及要求 .42.2 系统设计方案与选择 .42.3 系统总体结构框图 .52.4 系统的工作原理.6第三章 电路的功能单元设计 .73.1 单片机最小系统电路. .73.2 按键电路 .113.3 报警电路 .123.4 显示电路 .13第四章 程序设计.144.1 程序设计思想 .144.2 程序流程模块介绍 .154.3 设计软件简介 .16第五章 调试及故障分析.17 5.1 程序调试.17 5.2 硬件焊接及故障分析.17.总 结 .18参考文献.19附录1 整机原理图附录2 PCB制版图附录3 程序清单
2、摘 要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用STC89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,蜂鸣器发生提示。同时系统能够实现:在抢答
3、中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。关键字:单片机、数字管、蜂鸣器第一章 绪 论设计研究的背景及意义:我国进行单片机项目开发已经有二十多年历史,在此期间所进行的单片机开发项目已由简单到复杂,由小型系统到大型综合系统。单片机应用也越来越广泛,从开始的工控控制,到现在的航空航天、消防安全、工作数据采集、石油地质勘探、铁路交通运输以及楼宇自动化等,甚至目前的许多家电中
4、都有单片机的应用。随着计算机技术的发展,单片机技术已经成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪表仪器智能化中扮演着举足轻重的角色。在单片机家族的众多成员中,52系列单片机以其优越的性能、成熟的技术、高可靠性和高性价比,成为国内单片机应用领域内的主流。各种知识竞赛、文娱活动的广泛开展,使抢答器成了必不可少的电子设备,它为参赛选手提供了公正、客观、快速的裁决,已逐渐发展成为一种成型的电子产品,但市面上所售抢答器价格一般较贵且多为小规模集成电路构成,其性能单一,工作起来不够理想。本文介绍了一种以STC89C52单片机为核心的智能抢答器,它充分利用了单片机系
5、统的优点,具有结构简单、功能强大、可靠性好、成本较低,实用性强的特点。第二章 系统总体方案设计2.1设计要求 2.1.1 设计任务具有时间,声,光,提示的数字抢答器的设计 2.1.2 基本要求(1)具有声音提示,LED闪烁提示,或者LED及显示时间。(2)最小同时提供8名选手比赛,分别有8个按钮。(3)设置一个抢答开关,该开关由主持人控制。(4)抢答选手在设定时间抢答功能,且一次抢答时间由主持人设定。(5)抢答选手在设定时间抢答,抢答定时器停止工作,显示选手的编号和时间并保持到主持人清楚为止。(6)如设定时间已到无人抢答,本次抢答无效系统报警,禁止抢答。显示器显示“00” 2.1.3 结题形式
6、(1)撰写并上交一份6000字左右的毕业设计报告(纸质);(2)上交毕业设计报告、电路原理图和PCB图、程序等电子文件;(3)制作并上交相应的控制系统作品(硬件);(4)口试答辩。2.2系统设计方案与选择2.2.1 方案一设计思路系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。2.2.2 方案二的设计思路采用52系列单片机STC89C52作为控制核心,该系统可以
7、完成运算控制、信号识别以及显示功能的实现。由于使用单片机作为控制核心,其技术比较成熟,应用起来方便、简单,并且周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩展和更改。2.2.3 方案比较 所以通过比较以上两种方案,方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优 越的高集成电路性,使其工作速度更快、效率更高。另外STC89C52单片机可以采用11.0592MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩展功能。而方案一采用了中小规模集成电路,由于其复杂的电路性
8、能,可能会使信号的输入输出产生延时及不必要的误差。因此选择方案二比较适合。2.3系统总体结构图抢答器电路总体设计方框图如图1所示: 按键电路控制电路显示电路报警电路 图1 抢答器总体设计方框图2.4系统的工作原理 抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.4、P2.5、P2.6、P2.7作为4个数码管的位选,P1口接8个按键,提供选手抢答,P3.0、P3.2、P3.3、P3.4、3.5分别为开始、停止、答题时间调整、抢答时间调整,复位。抢答功能:通过八路按键配合程序来实现抢
9、答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。抢答限时:主持人按下抢答键后,设置30秒为抢答时间(此时间可在1-99秒之间修改)。若30秒内无人抢答,倒计时为5时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。答题限时:当选手按下按钮时,启动倒计时(此倒计时时间可在199秒之间修改),倒计时为5时发出报警,说明答题时间到。第三章 电路的功能单元设计电路的功能单元设计包括:单片机最小系统、按键电路、报警电路、显示电路3.1单片机最小系统3.1.1系统结构总线型单
10、片机非总线应用的最小系统示意图如图2所示,只有单片机和时钟电路、复位电路构成的最简单电路,并行总线不用于外围扩展,可作为应用系统的I/O口使用。图2 总线型单片机非总线应用的最小系统3.1.2系统特点(1)有大量可使用的I/O口;(2)没有并行扩展,应用系统结构简单;(3)外围器件只能通过UART口的串行移位方式或虚拟串行扩展总线进行扩展。3.1.3 STC89C52单片机STC89C52单片机具有片内E2PROM,是真正的单片机,由于不需要外接EPROM,所以应用非常普遍。STC89C52的主要工作特性如下:(1)片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为10000次;(2
11、)片内数据存储器内含256字节的RAM;(3)具有32根可编程I/O口线;(4)具有3个可编程定时器;(5)中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;(6)串行口是具有一个全双工的可编程串行通信口;(7)具有一个数据指针DPTR;(8)低功耗工作模式有空闲模式和掉电模式;(9)具有可编程的3级程序锁定位;(10)单片机STC89C52工作电源电压为5(1+0.2)V,且典型值为5V;(11)单片机STC89C52最高工作频率为24MHz,单片机正常工作时,都需要有一个时钟电路和一个复位电路。STC89C52的内部结构图如图3所示:ROM并行接口RAM串行接口定时器/计数器
12、中断系统内部总线SFR特殊功能寄存器P0TXD RXDINTO INT1CPU微处理器P1P2P3内部总线T0 T1图3 STC89C52内部结构图52单片机有4个8位并行输入/输出接口:P0、P1、P2和P3口这四个口既可以并行输入或输出8位数据,又可按位使用,即每一位均能独立做输入或输出用。图4为各接口的电气结构示意图:图4 P0、P1、P2、P3口的电气结构图I/O端口的结构(1)锁存器加引脚的典型结构5 2的I/O端口都由内部总线实现操作控制。P0-P3四个I/O端口都可以用作普通I/O口,因此,要求有输出锁存功能。内部总线又是分时操作,故每个 I/O端口都有相应的锁存器。然而,I/O
13、端口又是外部的输入/输出通道,必须有相应的引脚,故形成了I/O端口的锁存器加引脚的典型结构。(2)I/O的复用结构I/O端口的总线复用。在使用并行扩展总线时,P0口可做数据总线口和低8位地址总线口,P0口为三态双向口。P0口输出并行总线的地址/数据信号;P2口输出高8位地址信号。I/O端口的功能复用。P3口为复用的I/O端口,口内有复用输出功能的控制端;引脚也有复用输入功能的控制端。P3口的第二功能输入引脚功能表如表1所示:表1 P3口的第二功能输入引脚端口引脚第二功能说 明P3.0RXD串行数据接受P3.1TXD串行数据发送P3.2外部中断0申请P3.3外部中断1申请P3.4T0定时/计数器
14、0输入P3.5T1定时/计数器1输入P3.6外部数据存储器写选通P3.7外部数据存储器读选通(3)准双向口结构P0、P1、P2、P3口作为普通I/O口使用时,都是准双向口结构,准双向口的典型结构如图(5)-b所示,准双向口的输入操作和输出操作本质不同,输入操作是读引脚状态;输出操作是对口锁存器的写入操作。由口锁存器和引脚电路可知:当由内部总线给口锁存器置0或1时,锁存器中的“1”或“0”状态立即反映到引脚上。但是在输入操作(读引脚)时,如果口锁存器状态为“0”,引脚被钳位在“0”状态,导致无法读出引脚的高电平输入。I/O端口的应用特性(1)端口的自动识别。无论是P0、P2口的总线复用,还是P3
15、口的功能复用,内部资源会自动选择,不需要通过指令的状态选择。(2)口锁存器的读、改、写操作。许多涉及到I/O端口的操作,实际上只是设计口锁存器的读出、修改、写入的操作。这些指令都是一些逻辑运算指令、置位/清除指令、条件转移指令以及将I/O口作为目的地址的操作指令。(3)P0口作为普通I/O口使用。当不使用并行扩展总线时,P0、P2口都可以做普通I/O口。但是P0口为开漏结构,作I/O口时必须外加上拉电阻。(5)I/O口的驱动特性。P0口每一个I/O口可输出驱动8个TTL负载。而P1-P3口只能驱动4个。3.1.4 时钟电路时钟电路用于产生单片机工作所需要的时钟信号。设计中采用了比较典型的内部时
16、钟方式,如图5所示:其工作原理是:片内高增益反向放大器XTAL1、XTAL2外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时 钟电路提供振荡时钟。振荡器的频率主要取决于晶体的振荡频率,一般晶体可以在1.2-12MHz之间任选。电容的大小影响振荡器电路的稳定性和快速性,其值有微调作用,通常取30pF左右。在设计电路板时,晶振和电容应尽可能的靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。XTAL2XTAL1晶振C2C1单 片 机图5单片机外接晶体的接法3.1.5 复位电路复位是单片机的初始化操作,其主要功能是将程序计数器PC初始化为0000H,使单片机从000
17、0H单元开始执行程序。复位操作不影响片内RAM的内容,但是对SFR中的一些寄存器有影响。图6各种复位电路单片机的复位是靠外部电路复位的。其复位方式有上电复位和按键手动复位两种。复位电路中的电阻、电容数值的设置,是为了保证在RST管脚处至少保持两个机器周期(24个振荡周期)的高电平而完成复位过程的,也就是在斯密特触发器的输入端维持在最低阀值电压以上足够长时间,使斯密特触发器产生一个正脉冲。电阻值通常为1K,电容值通常为22uF。图6为几种常见的复位电路接法。 3.2 按键电路3.2.1 键盘接口和键输入软件中应解决的几个问题(1)消除抖动按键的合断过程存在一个抖动的暂态过程,这种抖动的暂态过程大
18、约经过5-10ms的时间,人的肉眼是察觉不到的,但对于高速的CPU是有反应的,可能产生误处理。为了保证键动作一次,仅作一次处理,必须采取措施以消除抖动。本设计中采用了软件消抖的方法。软件消抖是用延时来躲过暂态抖动过程,执行一段大于10ms的延时程序后,再读取稳定的键状态。(2)键盘的监测方法对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对于是否有键按下的信息输入方式有中断方式和查询方式两种。3.2.2 电路接法如图7所示: 图7选手按键电路3.3 报警电路考虑到实验室现有的元器件,设计中采用了蜂鸣器报警电路,如果有条件还可以采用更高级的语音报警电路,那样
19、更加直观方便。电路的接法如图8所示:3图8 蜂鸣器报警电路工作工程:蜂鸣器经过PNP三极管接在P3.6口,当P3.6输出为低电平“0”时,PNP三极管端输出为“1”,晶体管导通,蜂鸣器两端获得约+5V的电压而鸣叫;当P3.6输出为高电平“1”时,三极管截止,蜂鸣器停止鸣叫。电路中三极管不仅起到了反向作用,还有增大负载能力的作用。3.4 显示电路显示电路为六位共阳极LED动态显示接口电路如图9所示: 图9数码管显示电路单个共阳极7段数码的段选码如表3所示:表2 7段共阳数码管段选码表显示字符0123456789共阳极段选码c0Hf9HA4HB0H99H92H82HF8H80H90H共阳极LED数
20、码管将发光二极管的阳极(正极)短接后作为公共阴极,当驱动信号为低电平、“+”端接高电平时才能发光。这样的多位显示,将所有位的选线并联在一起,由一个8位I/O口控制,实现各部分的分时选通。由于所有位选皆由一个I/O口控制,在每一瞬间6位LED会显示相同的字符。想要每一位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字型码,而位选则控制I/O口在该显示位送出低电平,以保证该位显示相应字符。如此轮流,使每一位分时显示该位应显示字符。其管脚配置及动态显示接口电路如图10所示: 图10 共阳极数码管管脚配置及动态显示接口电路第四
21、章系统软件的设计众多软件的联合使用对应用系统的设计起到了很重要的作用,在实物制作之前对设计进行仿真,可以检验程序的执行结果是否与设计的功能相同,这样可以对程序进行改进。在这里用到了Keil C和Proteus,同时在电路制板时用到了Protel DXP绘制PCB板。4.1编译软件Keil C(1)Keil C的使用Keil C是众多单片机应用开发软件中优秀的软件之一,它集编辑,编译,仿真等于一体,同时支持汇编和C语言的程序设计,本设计使用它作为C编译器,使用方法如下:首先建立一个工程,然后将C程序文件添加到工程下链接编译,接着设置生成并输出HEX文件,如果程序编译后有错误就进行调试11。(2)
22、程序设计完整的程序参见附录。主流程主流程图如图11所示: 图11 主流程图 图12 按键扫描流程按键扫描流程每一个按键都对应一个处理子程序,通过对按键扫描进行按键识别。按键识别的方法包含了行扫描法和反转法。按键扫描流程图如图12所示,包括了对矩阵键盘和调整时间按键的扫描。中断流程图设计采用了外部中断,中断程序流程图如图13所示:图13 中断流程图4.2仿真软件ProteusProteus是一款常用的仿真软件,和Keil联合使用,对设计的完善起到很大的作用,也对硬件的搭建提供了连线依据。Proteus的使用相对比较简单,在元件库中找到相应电路所要用到的元件后放置在原理图纸上,然后用导线连接起来就
23、可以了。在选用元件后,可以在原理图纸上双击某元件,更改它的属性,如电阻的名称、阻值等。本设计中使用了单片机,需要加载程序文件。之前已经使用Keil C生成了所需要的HEX文件,直接加载进来就可以了。这时就可以运行仿真了。在仿真之前最好再检查一下电路的连接,确认正确之后再运行,以免粗心造成运行结果与设计的不相符合。设计的仿真原理图如图14所示:图14 电路仿真原理图4.3制板软件Protel 99 SE PCB电路板的设计流程:(1)设计原理图 创建一个新项目;创建一张新的原理图图纸;查找元件;在原理图中放置元件;设置元件属性;放置电源和接地符号;绘制原理图。(2)定义元件封装 原理图设计完成后
24、,元件的封装有可能被遗漏或有错误。对于用户自己设计的元件或者是某些特殊元件,必须由用户自己定义或修改元件的封装。 (3)设置PCB图纸可以设定PCB电路板的结构及尺寸,板层数目,通孔的类型,网格的大小等,既可以用系统提供的PCB设计模板进行设计,也可以手动设计PCB板。 (4)生成网表和加载网表 网表是电路原理图和印刷电路板设计的接口,只有将网表引入PCB系统后,才能进行电路板的自动布线。 (5)布线 设置布线规则后,先自动布线,然后手工调整。在元件很少且布线简单的情况下,也可以直接进行手动布线。第五章 调试及故障分析5.1 程序调试程序调试:分步骤进行调试,对每一个子程序进行编译链接后,将整
25、个程序全部编译,生成HEX文件加载到单片机上,进行仿真。出现错误和警告时要进行分析,解决问题。仿真分析:启动(上电)后,显示0000。当主持人按键,显示30秒的抢答时间,如有选手抢答,会显示选手号码以及60秒的回答时间,回答时间剩余5秒时,会响提示音。如果第一位选手不能回答,那么主持人再次按下START键允许其他选手继续抢答,允许其他选手抢答的时间为上一次抢答的剩余时间,答题时间仍是60秒。如果没有人抢答,抢答倒计时还有5秒的时候会响提示音,抢答时间过后抢答器会自动进入复位状态,可以进行下一轮的抢答。 如果主持人未按START键,有选手按了抢答按键,犯规抢答,显示犯规选手号并闪烁FF,直到主持
26、人复位。这与预期的效果是一致的。5.2 硬件焊接及故障分析电子电路是由许多元器件和导线连接而成,每一个元件和导线的好坏,连接的正确可靠与否,都可能产生故障,情况很复杂。有的是一种原因引起的简单故障,也有的是多种原因引起的复杂故障。以下是一些常见的故障:(1)电路组装有错误或连接不牢,致使电路与原理电路不一致。(2)电路元器件本身特性不良或损坏,特别是芯片的损坏最为常见,其次是电容的击穿、短路以及电阻的阻值与标称值不符。因此在组装电路前应进行检查和筛选,以防组装完电路后,再查找原因所带来的种种麻烦。(3)各仪器连线是否正确,是否与电路共地;仪表使用是否得当。(4)以上检查无错误时,应考虑电路设计
27、,这也是实验中尤其是在数字电路中常遇到的。硬件搭建:按照设计的原理图一步一步完成电路的搭建。这过程中一定要耐心、细心,否则很容易跳错线。实物电路搭好以后,仔细对照原理图检查一遍,然后就可以上电检测了。制作硬件过程中,出现了以下问题经过检查得到了解决:(1)接上电源后发觉数码管无显示。经检查后现单片机的29脚悬空未接,应该接在高电平上,这是单片机正常工作的前提。(2)选手键盘的其中一个不正常工作。经检查后发现是虚焊。总 结通过此次的毕业设计,让我更进一步的巩固了单片机的各种知识。但在设计的过程中,遇到了很多的问题,有一些知识已经不太清楚了,但是通过一些资料又重新的翻阅并且认真的复习了相关教科书中
28、的内容。此次的毕业设计树立了对自己工作能力的信心,相信会对今后的学习工作生活都有非常重要的影响,而且大大的提高了动手能力,使我充分的体会到了创造过程中的探索的艰难和成功的喜悦。虽然这次做出的作品还存在很多需要改进的地方,但是在整个设计过程中期间所得到的最大收获,使我终身受益。不过在此设计期间,还是要感谢我的同班许多同学给予我的帮助,还有感谢学院各位教育过我的老师,你们在这三年期间对我的培养上和教育,使我受益匪浅,我对他们报以崇高的敬意红外感谢。在论文结束之际,我要感谢指导老师,他的专业知识丰富,治学严谨,而且认真负责,耐心讲解问题,对喔的毕业设计提供了很大的指导和帮助。在这次毕业设计过程中,在
29、指导老师的严格要求及一些合理性建议。在此向我的指导老师及主任、祝敏老师这三年对我的培养衷心的感谢!参考文献1模拟电子技术 高等教育出版社2数字电子技术 高等教育出版社3基于集成电路的电路设计 西安交通大学出版4谭浩强C语言程序设计 M. 北京:清华大学出版社.5 51单片机C语言教程入门、提高、开发、扩展全攻略 电子工业出版社6 51单片机开发与应用技术详解 电子工业出版社7单片机c语言应用100例 电子工业出版社附录1:整机原理图 附录2:PCB制板图附录3:程序清单19/能够显示抢答、回答时间倒计时,能够调节抢答、回答时间,能够报警犯规抢答,可以计分,可以实现软复位#include#def
30、ine uchar unsigned char#define uint unsigned intsbit fmq=P36;sbit Key_Start=P34;/开始键,时间设置时+sbit Key_Stop=P35;/停止键,时间设置时-sbit Key_Restart=P30;/复位键sbit Key_set_Q=P32;/抢答时间设置键sbit Key_set_H=P33;/回答时间设置键sbit led=P37;/抢答LED提示uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc
31、6,0xf0,0xb6;/段码表uchar code table_char=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc0,0x92,0x86,0xbf,0xb7,0xff,0xb9,0x8f;/0-9 L O S E -uchar table_score9=0,50,50,50,50,50,50,50,50;/记分数组,初设值50分void delay(uint z);/延时函数声明void init();/初始化函数声明void display(uchar XuanShou,uchar time);/显示数字函数声明v
32、oid display_char(uchar char_1,uchar char_2,uchar char_3,uchar char_4 );/显示字符函数声明void display_set(uchar char_1,uchar time,uchar char_2);/时间设置闪动显示函数声明void display_score(uchar xs_num);/分数查询显示函数void beep();/蜂鸣器函数void beep_last();/蜂鸣器特殊报警void LED();/提示灯函数uchar QiangDa_time,HuiDa_time,QiangDa_time_temp=20
33、,HuiDa_time_temp=30;/抢答时间、回答时间变量uchar count_0,count_1;/定时中计数用的uint shan_count=0;/闪动显示计数用void main()uchar AnJian,ShuJu,XuanShou_num;Top:init();/初始化XuanShou_num=1;/为分数查询做好准备while(1)display(10,0);/显示一杠ShuJu=P1;if(ShuJu!=0xff)/犯规抢答!AnJian=ShuJu;switch(AnJian)/取出选手编号case 0xfe :XuanShou_num=1;break;/1111
34、1110case 0xfd :XuanShou_num=2;break;/1111 1101case 0xfb :XuanShou_num=3;break;/1111 1011case 0xf7 :XuanShou_num=4;break;/1111 0111case 0xef :XuanShou_num=5;break;/1110 1111case 0xdf :XuanShou_num=6;break;/1101 1111case 0xbf :XuanShou_num=7;break;/1011 1111case 0x7f :XuanShou_num=8;break;/0111 1111de
35、fault : goto LOSE;/无法显示了,有两个以上的键同时按下了!不过这种概率相当小while(1)display_char(13,14,14,XuanShou_num);/闪动显示犯规选手并且报警if(shan_count=50)beep();if(Key_Stop=0)delay(10);if(Key_Stop=0)beep();table_scoreXuanShou_num-;/扣分while(!Key_Stop)display_char(14,14,1,16);/按键不放开的情况下显示-1shan_count=1;/调用的是闪动显示函数,但是不让其闪动if(Key_Resta
36、rt=0)delay(10);if(Key_Restart=0)beep();goto Top;/热复位if(Key_Start=0)delay(10);if(Key_Start=0)/主持人按下抢答键,抢答正式开始!QiangDa_time=QiangDa_time_temp;HuiDa_time=HuiDa_time_temp;beep();TR1=1;/抢答时间开始倒计时break;/跳出犯规抢答查询循环/一下为查分程序测试 if(Key_Stop=0) delay(10);if(Key_Stop=0)/进入分数查询显示beep();while(!Key_Stop);while(1)di
37、splay_score(XuanShou_num);if(Key_Start=0)delay(10);if(Key_Start=0)XuanShou_num+;if(XuanShou_num=9) XuanShou_num=1;while(!Key_Start);/等待按键释放if(Key_Stop=0)delay(10);if(Key_Stop=0)XuanShou_num-;if(XuanShou_num=0) XuanShou_num=8;while(!Key_Stop);/等待按键释放 if(Key_Restart=0)delay(10);if(Key_Restart=0)beep()
38、;goto Top;/热复位 while(1) /查询是否有按键按下,进入抢答循环display(10,QiangDa_time);/显示抢答倒计时if(QiangDa_time=0)TR1=0;/关闭定时器1LOSE:while(1)display_char(10,11,12,13); /显示lose 字符if(Key_Restart=0)delay(10);if(Key_Restart=0)/热复位键,从头开始下一轮beep();goto Top;ShuJu=P1;/把P1口的数据送给变量if(ShuJu!=0xff)/有按键按下 AnJian=ShuJu;/传递数据扫描值 TR1=0;/
39、关闭定时器1 break;/不再进行查询是否有按键按下了switch(AnJian)/取出选手编号case 0xfe :XuanShou_num=1;beep();LED();break;/1111 1110case 0xfd :XuanShou_num=2;beep();LED();break;/1111 1101case 0xfb :XuanShou_num=3;beep();LED();break;/1111 1011case 0xf7 :XuanShou_num=4;beep();LED();break;/1111 0111case 0xef :XuanShou_num=5;beep();LED();break;/1110 1111case 0xdf :XuanShou_num=6;beep();LED();break;/1101 1111