《数字竟能抢答器.doc》由会员分享,可在线阅读,更多相关《数字竟能抢答器.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 数字竟能抢答器 系别:电子工程系班级:姓名:学号:指导教师:目 录第 一 节 引 言31.1 数字抢答器的概述31.2 设计任务与要求41、基本要求41.3 系统主要功能5第 二 节 抢答器硬件设计62.1 数字抢答器总体方框图62.2 抢答器的工作流程72.3 单元电路设计7(1)抢答器电路72.4 AT89C51的功能及简介92.4.1 AT89C51单片机92.4.2 AT89C51单片机的内部结构图10第3 节 系统整体设计113.1 硬件电路的设计113.2总体原理图123.3 定时电路123.4报警电路133.5 时序控制电路143.6显示电路的设计153.7 抢答器的发声设计1
2、73.8抢答器原理17第 四 节 系统的软件设计194.1 系统主程序设计194.2 中断服务程序设计20第五节 调试及性能分析22结束语23参考文献24附 录251.程序图252.抢答器功能说明253.源程序26总体原理图38第 一 节 引 言单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢
3、答系统有了更多更完善的功能。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。1.1 数字抢答器的概述 对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,
4、体现了公平公正的原则。 本实验设计的数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。更具有实用性。1.2 设计任务与要求1、基本要求(1)抢答器同时供6名选手或6个代表队比赛,分别用6个按钮S0 S5表示。(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。(3) 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬
5、声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00 优点:与普通抢答器相比,本作品有以下几方面优势: 1、具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前
6、提前抢答违反规则。 2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对本题弃权。 3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。1.3 系统主要功能 其主要功能有:与普通抢答器相比,本作品有以下几方面优势: 1、具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。 2、具有定时功能,在30秒内无人抢答表示所有参赛选手获参赛队对本题弃权。3、30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。4、如果想调节抢答时间或答题时间,按抢答时间调节键或答题时间调节 键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按
7、一下加1s键,如果想减一秒按一下-1s键,时间LED上会显示改变后的时间,调整范围为0s99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。 5、主持人按抢答开始键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。 6、如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会自动进入准备状态,等待主持人按抢答开始进入下次抢答计时。 7、如果主持人未按抢答开始键,而有人按了抢答按键,犯规抢答,LED上不断闪
8、烁FF和犯规号数并响个不停,直到按下停止 键为止。 图0数字抢答器图第 二 节 抢答器硬件设计2.1 数字抢答器总体方框图如图11、1所示为总体方框图。其工作原理为:接通电源后,主持人将开关拨到清除状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置?quot;开始状态,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作清除和开始状态开关。 图1数字抢答器框图 2.2 抢答器的工作流程 抢答器的工
9、作流程分为系统复位、正常流程、违例流程等几部分,如图2-2所示,下面分别予以介绍。2.3 单元电路设计 (1)抢答器电路 电路如图所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。工作过程:开关S置于清除端时,RS触发器的 端均为,个触发器输出置,使74LS148的 ,使之处于工作状态。当开关S置于开始时,抢答器处于等待工作状态,当有选手将键按下时(如按下S5),74LS148的输出 经RS锁存后,1Q=1, =1,74LS48处于工作状态,QQQ=101,经译码显示为。此外,1,使74LS148 ,处于禁止状态
10、,封锁其他按键的输入。当按键松开即按下时,74LS148的 此时由于仍为,使 ,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将开关重新置?quot;清除然后再进行下一轮抢答。74LS148为线线优先编码器,图3为其功能表。 图 数字抢答器电路 图3 74LS148的功能真值表 2.4 AT89C51的功能及简介2.4.1 AT89C51单片机 AT89C51是一种低功耗、高性能的含有4KB闪速可编程电擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memoy)的8位
11、COMS微控制器,使用高密度、非易失存储技术制造,并且与80S51指令系统和引脚完成兼容。芯片上的FPEROM允许在线或采用通用的非易失存储编程器对程序存储器重复编程。 (1)AT89C51的主要性能包括:AT89C51与MCS-51控制器系列产品兼容,片内有4K可在线重复编程闪速电擦除存储器(Flash Memory),存储器可循环写入/擦除1000次;存储器数据保存时间可达10年;工作电压范围宽;Vcc可由2.7V到6V;全静态工作可由0HZ到16MHZ;程序存储器具有3级锁存保护;128*8位内部RAM;32条可编程I/O线;两个16位定时器/计数器;中断结构具有5个中断源和2个中断优先
12、级;可编程全双工串行通信;空闲状态维持低功耗和掉电状态保存存储内容。 (2)FPEROM的编程:AT89C51的I/O口P0、P1、P2和P3除具有与80s51相同的一些性能和用途外,在 FPEROM 编程时,P0口接受代码字节 ,并在程序检验时输出代码字节,但在程序校验时需要外部上拉负载电阻,在FPEROM 编程和程序校验期间,P1口接收低位地址字节,P2口接收高位地址字节和一些控制信号,P3口也接收一些FPEROM编程和校验用的信号,此时ALE/PROG引脚是编程脉冲输入(PROG)端,在FPEROM编程器件,如果选择12V编程电压,那么EA/Vpp引脚也允许接受12V编程电压(Vpp)。
13、2.4.2 AT89C51单片机的内部结构图 AT89C51单片机内部由CPU 、4KB的FPEROM,128的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的部分是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令存储器、指令编码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工
14、作,完成指令所规定的操作。运算器由算式逻辑器部件ALU、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。 为了提高数据处理和位操作功能,片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路的功能。其内部结构如图2-3所示。第3 节 系统整体设计3.1 硬件电路的设计 为使硬件电路设计尽可能合理,在选取设计时应注意以下几方面: (1)尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的价格不断下降,并不一定比若干普通芯片价格的总和高。(2)留有设计余地。再设计硬件电路时,要考虑到将来修改扩展的方便。(3)程序空间,选有片内
15、程序空间足够大的单片机,本设计采用AT89S51单片机。(4)RAM空间,AT89S51内部RAM不多,当要增强软件数据处理功能时,往往觉得不足。如果系统配置了外部RAM,则建议多留一些空间。如选用8155坐I/O接口,就可以增强256字节RAM,如果有大批数据需要处理,则应配置足够的RAM,如6264,6256等,随着软件设计水平的提高,往往只要改变或增加软件中的数据处理算法,就可以使系统功能提高很多,而系统的硬件不必做任何更换就是系统升级换代。 (5)I/O端口;在样机研制出来后进行现场使用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。如果有些新的信号需要采集,就
16、必须增加输入检测端,有些物理量需要控制,就必须增加输出端。3.2总体原理图 P1.0为开始抢答,P1.7为停止,P1.1-P1.7为六路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。P3.2为时间加1调整,P3.3为时间减1调整。3.3 定时电路 由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,计数器的时钟脉冲由秒脉冲电路提供。可预置时间的电路选用十进制同步加减计数器74LS192进行设计,具体电路如图11、3所示。图4 可预置时间的定时电路3.4报警电路由555定时器和三极管构成的报警电路如图11、4所示。其中555构成多谐振荡
17、器,振荡频率fo143(RI2R2)C,其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。图5 报警电路3.5 时序控制电路 时序控制电路是抢答器设计的关键,它要完成以下三项功能: 主持人将控制开关拨到开始位置时,扬声器发声,抢答电路和定时电路进 当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。 当设定的抢答时间到,无人抢答时,扬声器发声, 同时抢答电路和定时电路停止工作。 图6 时序控制电路图6中,门G1 的作用是控制时钟信号CP的放行与禁止,门G2的作用是控制74LS148的输人使能端 。图11、4的工作原理是:主持人控制开关从
18、清除位置拨到开始位置时,来自于图11、2中的74LS279的输出 1Q=0,经G3反相, A1,则时钟信号CP能够加到74LS192的CPD时钟输入端,定时电路进行递减计时。同时,在定时时间未到时,则定时到信号为 1,门G2的输出 =0,使 74LS148处于正常工作状态,从而实现功能的要求。当选手在定时时间内按动抢答键时,1Q1,经 G3反相, A0,封锁 CP信号,定时器处于保持工作状态;同时,门G2的输出 =1,74LS148处于禁止工作状态,从而实现功能的要求。当定时时间到时,则定时到信号为0, =1,74LS148处于禁止工作状态,禁止选手进行抢答。同时, 门G1处于关门状态,封锁
19、CP信号,使定时电路保持00状态不变,从而实现功能的要求。集成单稳触发器74LS121用于控制报警电路及发声的时间,其工作原理请读者自行分析。3.6显示电路的设计显示模块与操作模块有关,即监控程序是需要调用显示模块。不同的操作需要显示不同的内容,这又说明各执行模块对显示模块的驱动方式是不同的。另一方面,在操作者没有进行操作时,显示内容也是变化的,如显示现场各物理量的变化情况。这时显示模块不是由操作者通过命令键来驱动,而是由各类自动执行的功能模块来驱动。自动执行的各类模块在安排在各种中断子程序中,这就是说,各种中断子程序也要调用显示模块。如果监控安排在中断子程序中,两者的要求就统一了,问题比较好
20、解决,如果监控程序安排在主程序中,在监控程序调用显示模块的过程中发生了中断,中断子程序也调用显示模块,这时就容易出问题。一种比较妥善的办法是只让一处调用显示模块,但有权申请显示。这就要设置一个显示申请标志,当某模块需要显示时,将申请标志移位,同时设定有关显示内容。由于一处调用显示模块,故不会发生冲突。为了使显示模块能及时反映系统需要,应将显示模块安排在一个重复执行的循环中。当监控程序安排在时钟子程序中时,处理比较方便,只要在监控程序中的汇合处理调用显示模块就可以了。例如用DISP做显示申请标志,就可以这样安排显示模块的调用,即DISP BIT 2DH.4 显示申请标志SKEYEND: JNB
21、DISP,RETIO 有显示申请否?LCALL DISPLAY 调用显示模块,更新显示内容CLR DIAP 清除申请RETIO;RETI 中断返回KEYEND为键盘程序的最后汇集点,只是如果发现有显示申请,就进行集中操作,更新显示内容,否则就跳过这一步。这里将显示功能集中到一起,作为一个功能模块,就要求它的功能全面,能根据系统软件提供的信息自动完成显示内容的查找,变换和输出驱动。这样设计使得各功能模块都不必考虑显示问题,只要给出一个简单的信息甚至不用再提供额外信息,直接利用当前状态变量和软件标志就可以完成所需要的显示要求。在这里我使用的是七段数码管显示。通常在显示上我们采用的方法一般包括两种:
22、一种静态显示,一种动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示方法。并通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低三位为子选段输入端。在这里我们通过查表将字型码送给7段数码管显示的数字,数码管显示原理如下: MOV A,R5MOVC A,A+DPTR 查字型码MOV P2,#01H 送位选码MOV P0,A 送字型码ACALL DELAY 调延时,去闪烁在七段数码管显示中可分为共阳极和共阴极两种类型极。以共阴为例
23、,想要a段亮,向a段送1就是,反之送0,共阳刚好相反。3.7 抢答器的发声设计 我们知道,声音的频率范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,按上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,是喇叭发出不同的声音。3.8抢答器原理该抢答器供不多于四个的抢答比赛使用。每个选手的座位前安装一只抢答按钮开关和一只信号灯。主持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示灯。每当主持人口头发出允许抢答的号令之后,哪个队先按下座位上的按钮开关,该座位
24、的信号灯就先被点亮,同时封锁其他按钮开关的活动。并且熄灭主持人座位上的状态指示灯和发出 3 声类似于电话振铃的提示声,以“声明”此次抢答动作已经完成。在主持人确认后,按下复原按钮,状态指示灯重新点亮,并且同时发出“笛笛”声,为下一次的抢答作好准备。电路中的蜂鸣器 FM 是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放大器和喇叭。在 FM 发声的同时,灯 D6 也在发光。FM 可以看作是一个电容性负载,本身不能流过直流电流。发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音。FM和 4 只按钮开关 SWaSWd 以及 4 只电阻 RaRd 都
25、是在演示板的基础上额外添加的。由于RB端口内部具有上拉电阻,只要用软件设置其有效,即可省略在4 只端口引脚上外接上拉电阻。按钮开关和指示灯与座位的对应关系如表3所示。按钮开关和指示灯与座位的对应关系座位主持人席座位1座位2座位3座位4座位5座位6座位7座位8按钮开关SW1 SWaSWbSWcSWdSWeSWfSWgSWh指示灯D7 D0D1D2D3D4D5D6D7蜂鸣器 有无无无无无无无无第 四 节 系统的软件设计4.1 系统主程序设计本例的电话振铃的提示声用软件实现。在此设计的提示音是以发声 1秒、停顿1秒的间歇方式,连发3声。我们可以用 3 个不同工作频率的振荡器(频率为 500Hz的低音
26、发生器、频率为 630Hz 的高音发生器和频率为10Hz 的用于高、低音切换的振荡器)产生出悦耳的铃声。500Hz音频对应的周期为2000S。如果利用定时器/计数器TMR0 模块产生该延迟时间,可以找出恰当的分频比和初始值,分别是1:8 和131。同理,产生 630Hz 音频应该采用的分频比和初始值,分别是1:8和157。其中,500Hz 计算式为 T =1/500Hz=0.002s=2000S,L1000S8=125=256-131;630Hz 计算式为 T =1/630Hz=0.s=1587.3S,793.65HS899=256-157。这两个音频信号再以每秒 10 次的频率轮流切换,从单
27、片机的一条口线(RC6)上送出,每个信号持续的时间是 50ms。那么,对于 500Hz 来说,50ms 之内包含信号周期的个数为 500Hz0.05s=25 个,包含(从高到低和从低到高)的电平切换次数为 252=50 次。同理,对于 630Hz 来说,电平切换次数为 31.52=63 次。因此,发声 1 秒需要轮流调用 500Hz 和 630Hz 的产生程序各 10 次。图 11 是其程序流程图,其中,11(a)为主程序流程图如下,11(b)为中断服务子程序流程图, 如下:程序流程图:主程序设置R C端口为输出 设置Rb端口为输入为选项寄存器赋初值 放开INT及总中断控制位将断口RC全部为底
28、电平清除RB中断标志进入睡眠态等待中断中断到来转服务子程序4.2 中断服务程序设计中断程序(如图9所示)完成时间计数,时间调整,误差消除等功能。中断采用AT内部T0中断实现,定时时间为125ms,当时间到达125ms8,即1分钟时,分计数缓冲器MINBUFFER增加1小时,则时计数缓冲器和时计数缓冲器分别到达60min、24h时,则对它们清零,以便重新计数。中断服务程序调查中断源是RB中断则转服务程序是INT中断则转服务程序将端口RC清0调防时延时子程序将RB的变化显示啊RC上置RC端引脚为高是清除RB中断标出调一秒延时子程序检查抢答是否以放否恢复现场中断返回图9 中断服务子程序第五节 调试及
29、性能分析(1) 具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。(2) 具有定时功能,在30秒内无人抢答表示所有参赛选手或参赛队对本题放弃。(3) 30秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。(4) 如果想要调节强大时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定三位抢答时间或回答问题时间值,如果加一秒按一下“加1s”键,如果减一秒按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s99s,0s时再减1s会跳到99,99s时再加1s会变到0s。(5) 主持人按“抢答开始”键,会有提示音,并
30、立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效,倒数时间到小于5s会每秒响一下提示音。(6) 如倒计时期间,主持人想停止倒计时间时可以随时按“停止键”,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答倒计时。结束语基于单片机应用系统设计比较的难,从未接触过任何的应用系统的设计,对老师要求我们做的应用系统的设计根本无从下手,于是从图书馆借了几本有关单片机的应用系统的实例书籍,并且在网上参考了较多本实例的应用知识,了解了系统设计报告的写法和结构。参考了网上较多的
31、实例,实在话,让我自己亲手动手去做实在不能完成,只有通过图书馆借的书和通过网络才可完成。这一定程度上也提高了网上搜索信息的能力。在借鉴了网上的信息,同时添加了自己借的书中的一些内容,整合成了这篇设计。共花了我三天时间,一直是呆在寝室做这个系统设计,除了吃饭出去一下,这三天时间有两天是花在在网上搜索本系统设计有关的知识。在网上发现很多优秀的产品多是基于单片机来制作成。感知单片机的应用范围实在太广了,小到一个小小的电子时钟,就是我们短学期做的作品,大到航天卫星,与我们日常生活是栩栩相关。今,我们却钨声不断,然后余老师说了一句很经典的话:“即使你们现在骂我,我也还是要叫你们去做。”现在想来的确应该如
32、此。只有做过了才知道事情是怎么一回事。同时也对我们以后的毕业设计做好更好的准备。感谢老师叫我们做这个设计报告!参考文献1 谢自美,电子线路设计实验测试。华中理工大学出版社2 历雅萍、易映萍编电子技术课程设计。高等教育出版社3 彭介华 主编电子技术课程设计指导。高等教育出版社4 任致程主编经典集成电路400例。机械工业出版社附 录1.程序图2.抢答器功能说明 1、可以设计声控装置,在主持人说开始时,系统自动完成清零并开始计时的功能。2、在主持人读题的过程中,禁止抢答,可以在主持人控制的开关上另接一个与图2一样的电路,即可实现“违规者可见”的功能,3.源程序P1.0为开始抢答,P1.7为停止,p1
33、.1-p1.6为六路抢答输入 数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。#include#define uchar unsigned char#define uint unsigned intchar s;uchar num=0;char time=20; /抢答时间char datitime=30; /答题限时时间uint tt,t1; /T0、T1定时器定位1s时bit flag,s_flag=1,b_flag,fall_flag; /标志位bit k_startcountflag,k_timecountflag; /时间调整标志位sbit k0=p30;sbit beep=p
34、37; /蜂鸣器sbit rled=p31; /指示灯sbit k1=p10;sbit k2=p11;sbit k3=p12;sbit k4=p13;sbit k5=p14;sbit k6=p15;sbit k_time=p32; /答题计时键sbit k_startcount=p33; /开始抢答时间调整键sbit k_timecount=p34; /答题计时时间调整键void delay(uchar ms) uchar y; for(;ms0;ms-) for(y=120;y0;y-);Uchar code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6b,0x7
35、d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code tablewe=0XFE,0XED,0XFB,0XF7;void T0_Init(void) TMOD=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; TH1=(65536-2000)/256; TL1=(65536-2000)%256; ET0=1; ET1=1; EA=1; P0=0;void key_scan(void) /开始键扫描 if(k0=0) delay(10); if(k0=0) while(!k0); TR0
36、=1; s=time; tt=0; flag=1; s_flag=1; b_flag=1; num=0; beep=1; rled=1; fall_flag=0; /清除违规标志位 K_startcountflag=0; K_timecountflag=0; void scan(void) /8路热键扫描(那个键先按下,那个优先级最高) if(k1=0) delay(10); if(k1=0) while(!k1); num=1; /数码管显示1号“1” TR0=0; /关闭定时器0,时间停止 TR1=1; /打开定时器1,使扬声器响一声 s_flag=0; /关闭开始建标志位,使再按其他7个
37、键不会响应 if(k2=0) /下面7个键的处理同上 delay(10); if(k2=0) while(!k2); num=2; TR0=0; TR1=1; s_flag=0; if(k3=0) delay(10); if(k3=0) while(!k3); num=3; TR0=0; TR1=1; s_flag=0; if(k4=0) delay(10); if(k4=0) while(!k4); num=4; TR0=0; TR1=1; s_flag=0; if(k5=0) delay(10); if(k5=0) while(!k5); num=5; TR0=0; TR1=1; s_flag=0; if(k6=0) delay(10); if(k6=0) while(!k6); num=6; TR0=0; TR1=1; s_flag=0; void display(void)if(flag=1) /开始键按下,开始计时抢答 if(num!=0) /如果有人抢答,则显示相应的几号 P0=tabledunum; /显示几号抢到了 P2=tablewe0; delay(2); P0=0; P2=0XFE;else /否则没人抢答,则前面不显示几号 P0=0; P2=0XEF;P0=tabledus/10; /下面为显示抢答倒计时P2=tablewe2;