单片机课程设计——带时间限制及声光提示的8位抢答器
基于单片机8路抢答器的设计与实现

基于单片机8路抢答器的设计与实现引言:抢答器是一种用于比赛或考试中进行抢答的设备,它可以实现多个参与者同时抢答,实时显示最先抢答者的编号。
本文将介绍一种基于单片机的8路抢答器的设计与实现。
一、设计方案:1.硬件设计:本设计采用单片机作为主控制器,使用LED显示器显示抢答编号。
按键用于选择参与抢答的编号。
____________________+------------------,P1.0,,P1.1,,P1.2,,P1.3Infrared sensor ----- ------- ----- -----+------------------,P1.4,,P1.5,,P1.6,,P1.7LED display ----- ------- ----- -----+---------------+---------+---------+---------+---------+AVRMicrocontroller+---------------+---------+---------+2.软件设计:本设计的软件部分主要涉及中断、定时器、按键扫描和显示控制几个方面的内容。
(1)中断:使用外部中断响应红外传感器的触发信号,并处理中断程序。
(2)定时器:使用定时器来实现LED显示的时序控制,以达到流畅的显示效果。
(3)按键扫描:定时扫描按键,当一些按键按下时,触发相应的抢答编号。
(4)显示控制:根据抢答编号,通过对LED显示器的控制,实现编号的显示。
二、实现步骤:1.硬件部分的实现:(1)按照上述连接图的方式,将红外传感器和LED显示器与单片机进行连接。
(2)编写硬件程序,对红外传感器和LED显示器进行初始化配置。
2.软件部分的实现:(1)编写中断服务函数,用于响应红外传感器的触发信号,并完成相应的中断处理。
(2)编写定时器中断服务函数,用于控制LED显示的时序。
(3)编写按键扫描函数,用于检测按键是否按下,并触发相应的抢答编号。
单片机八路抢答器课程设计

单片机八路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解并运用I/O口进行输入输出控制。
2. 使学生了解抢答器的功能和工作原理,掌握其设计与实现方法。
3. 帮助学生掌握定时器/计数器的使用,以及在中断处理中的应用。
技能目标:1. 培养学生运用所学知识设计并实现单片机八路抢答器的实际操作能力。
2. 培养学生分析问题和解决问题的能力,提高编程和调试单片机系统的技能。
3. 培养学生的团队协作能力,提高沟通与表达技巧。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新意识。
2. 培养学生具有实践操作中的安全意识,养成良好的实验习惯。
3. 培养学生面对挑战,勇于尝试,不断调整和优化设计方案的态度。
课程性质:本课程为实践性较强的课程,结合理论知识,以实际操作为核心。
学生特点:学生已具备一定的单片机基础知识和编程能力,具有较强的求知欲和动手能力。
教学要求:教师需引导学生主动探索,鼓励学生提出问题、解决问题,关注学生在实践中的个性化发展。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 理论知识:- 单片机基础原理回顾:I/O口控制原理,中断系统原理。
- 定时器/计数器原理及其在抢答器中的应用。
- 抢答器工作原理及设计要求。
2. 实践操作:- 单片机硬件连接及电路设计。
- 编写抢答器程序,实现基本功能。
- 调试与优化:程序调试,硬件测试,故障排查。
3. 教学大纲:- 第一周:回顾单片机基础知识,讲解抢答器工作原理。
- 第二周:学习定时器/计数器应用,设计单片机I/O口控制电路。
- 第三周:分组讨论设计方案,编写程序,搭建硬件电路。
- 第四周:调试与优化,展示成果,总结经验。
4. 教材关联:- 理论知识:教材第3章单片机原理,第4章中断与定时器。
- 实践操作:教材第5章单片机接口技术,第6章单片机应用实例。
教学内容安排和进度根据课程目标和学生的学习情况调整,确保学生能够逐步掌握单片机八路抢答器的设计与实现。
单片机课程设计八位竞赛抢答器的设计

摘要随着单子技术的飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。
本设计是以八路抢答为基本理念。
考虑到需设定限时回答的功能呢个,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。
用开关做键盘输出,扬声器发生提示,并且有警告灯显示,正常工作时为绿灯,报警或抢答等违规信号时则出现红灯。
关键词:AT89C51;抢答器;计数器目录1概述 (1)2 抢答器的硬件系统设计 (3)2.1 系统整体方案设计 (3)2.2 系统硬件组成 (3)3 最小系统与主控模块的设计与实现 (5)3.1 单片机最小硬件系统的组成简述 (5)3.1.1 电源电路 (5)3.1.2 时钟电路 (6)3.1.3 复位电路 (7)3.2 主流程图 (8)4 模块的设计与实现 (9)4.1 抢答电路的设计 (9)4.2 锁存器74HC573 (9)4.3 主持人控制电路与扬声器的设计...................... 错误!未定义书签。
4.4 显示电路的设计.................................... 错误!未定义书签。
5 软件的设计 (12)5.1语言选择 (12)5.2软件总体设计 (12)总结 (13)参考文献 (15)致谢 (16)附录 (17)1概述数字技术是当前发展最快的学科之一,数字逻辑器件已从20世纪60年代的小规模集成电路(SSI)发展到目前的中、大规模集成电路(MSI,LSI)及超大规模集成电(VLSI)。
相应地,数字逻辑电路的设计方法在不断的演变和发展,由原来单一的硬件逻辑设计发展成三个分支,即硬件逻辑设计(中、小规模集成器件)、软件逻辑设计(软件组装的LSI和VSI,如微处理器、单片机等)及兼有二者优点的专用集成电路(ASIC)设计。
8位竞赛抢答器课程设计

目录1. 原理分析(by 张潇) (2)1.1 设计任务 (2)1.2 性能指标 (2)1.3 工作原理 (2)2. 方案选择(by 张潇) (3)2.1 方案设定 (3)2.2 方案比较 (3)2.3 方案选择 (3)3. 电路原理图绘制及仿真(by 王倩) (3)3.1 所需元器件型号及数量 (3)3.2 电路原理图 (4)3.3 电路仿真结果 (5)4. Pcb图绘制(by 朱文广) (5)4.1 pcb绘制步骤 (5)4.2 pcb绘制原则 (5)4.3 8路抢答器pcb图 (7)5. 综合调试(by 朱文广) (7)5.1 软件调试 (7)5.2 硬件调试 (9)6. 总结(by 王倩) (10)附录1:电路仿真图 (11)附录2: 8路抢答器完整程序 (12)1.1 设计任务以单片机为核心,设计一个8位竞赛抢答器,同时供8名选手或8个代表队比赛。
设置一个系统清除和抢答控制开关S,开关由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答器具有定时抢答功能,且一次抢答的时间可由主持人设定。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
1.2 性能指标电源电压:直流5V±10%选手组数:2-8组初始抢答倒计时:20s初始回答倒计时:30s倒计时范围:1-99s可设倒计时提示时间:最后5s1.3 工作原理八路数字抢答器原理框图如图1所示,其工作原理为:接通电源后,主持人未按下开始抢答,抢答器处于禁止状态,数码管显示“----”;主持人宣布“开始”同时按下开始抢答按键,抢答倒计时开始计时,扬声器给出声响提示。
选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。
单片机课程设计:八位竞赛抢答器

课程设计任务书学生班级:学生姓名:学号:设计名称:八位竞赛抢答器起止日期:指导教师:八位竞赛抢答器摘要本设计是以八路抢答为基本理念。
考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
先进行系统硬件设计,该电路由显示电路,抢答电路,晶振电路等部分组成,然后进行系统软件设计,进行软件的仿真,这次课程设计不仅能锻炼我们的动手能力,而且能够培养我们对问题的思考能力以及对知识的进一步了解。
关键词:AT89C51;抢答器;计时;报警目录第1章系统总体设计 (5)1.1 八位竞赛抢答器的工作原理 (5)1.2 八位竞赛抢答器的总体框图 (5)第2章系统硬件的设计 (6)2.1 工作原理 (6)2.2 晶振电路 (6)2.3 抢答电路 (7)2.4 显示电路 (8)2.5 控制电路的设计 (9)第3章系统软件设计 (10)第4章系统软件仿真 (13)4.1 KeiluVision2软件 (13)4.2 Proteus软件仿真 (14)4.3 仿真结果分析 (15)总结 (16)参考文献 (17)附录 (18)第1章系统总体设计1.1八位竞赛抢答器的工作原理抢答器的工作原理是采用单片机最小系统,用程序查询方式使动态显示倒计时时间并且同时使LED灯亮。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按(P3.0),有人抢答则抢答违规,报警并该组LED灯亮,主持人按下开始抢答开关重新抢答。
主持人按下开始抢答按纽(P3.0),扬声器响声提示,数码管30秒倒计时抢答,扬声器响声提示并该组LED灯亮,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。
从而完成一次抢答或者一次知识竞赛的任务。
1.2 竞赛抢答器总体框图图1 总体设计框图第2章系统硬件设计2.1 工作原理通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。
单片机课程设计8路竞赛抢答器

课程设计任务书1 设计内容⒈设计一个智力竞赛抢答器,可同时供8名选手或8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7、8,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0、S1、S2、S3、S4、S5、S6、S7。
⒉给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。
⒊抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时蜂鸣器给出音响提示。
此外,要封锁输入电路,禁止其他选手抢答。
优先抢答选手的编号一直保持到主持人将系统清零为止。
4.用中小规模集成电路组成智力竞赛抢答器电路,画出各单元电路图和总体逻辑框图,正确描述各单元功能,合理选用电路器件,画出完整的电路设计图以及写出设计总结报告2 设计要求⒈抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30s)。
当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时蜂鸣器发出声响。
⒉参赛选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
⒊如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。
摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
工厂、学校和电视台等单位常举办各种智力竞赛, 抢答记分器是必要设备。
在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,为解决这个问题,我们小组准备就本次大赛的机会制作一个低成本但又能满足学校需要的八路数显抢答器。
单片机8路抢答器课程设计
单片机8路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解8路抢答器的电路构成及其工作原理;2. 使学生掌握8路抢答器程序设计的基本方法,包括程序流程图绘制、程序代码编写等;3. 帮助学生理解数字电路基础知识,以及与单片机接口的原理。
技能目标:1. 培养学生运用单片机进行电子电路设计和程序开发的能力;2. 培养学生动手实践、团队协作的能力,能独立完成8路抢答器的搭建和调试;3. 提高学生分析问题和解决问题的能力。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其创新精神和实践能力;2. 培养学生严谨的科学态度和良好的学习习惯,使其在课程学习过程中体验团队合作的重要性;3. 引导学生关注科技发展,认识到单片机技术在实际应用中的价值,提高学生的社会责任感和使命感。
课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的电子技术基础和编程能力,具有较强的学习兴趣和探索精神。
教学要求:教师应注重理论与实践相结合,以学生为主体,引导学生主动参与、积极思考、合作交流,提高学生的实践能力和创新能力。
在教学过程中,关注学生的个体差异,因材施教,确保课程目标的实现。
通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。
二、教学内容1. 理论知识:a. 单片机原理与功能:引导学生复习并巩固单片机的基本原理,介绍51单片机结构、工作原理及特性;b. 8路抢答器电路设计:讲解8路抢答器的电路构成、工作原理及各部分功能;c. 程序设计方法:介绍程序流程图的绘制方法,讲解C语言编程基础及其在单片机编程中的应用。
2. 实践操作:a. 8路抢答器硬件搭建:指导学生按照电路图完成8路抢答器的硬件搭建;b. 程序编写与调试:教授学生编写8路抢答器程序,并进行调试;c. 系统测试与优化:引导学生对搭建好的8路抢答器进行测试,发现问题并进行优化。
单片机八路抢答器课程设计
单片机八路抢答器课程设计一、引言随着科技的发展和应用越来越广泛,单片机在各个领域的应用日益普遍。
其中,抢答器是一种常见且有趣的单片机应用。
本课程设计将介绍如何使用单片机设计一个八路抢答器,帮助学生更好地理解和掌握单片机的原理和应用。
二、系统框图八路抢答器系统主要由以下几个部分组成: 1. 单片机主控模块:负责系统的整体控制和数据处理。
2. 八个抢答器按键模块:提供用户按键输入功能。
3. 抢答器显示模块:展示抢答器的按键状态和抢答结果。
4. 蜂鸣器模块:用于发出抢答成功或失败的音频提示。
三、系统功能设计八路抢答器的主要功能如下: 1. 抢答器按键功能:每个抢答器都具有独立的按键,当按下按键时,抢答器将发送信号给主控模块。
2. 抢答器显示功能:通过显示模块,实时显示每个抢答器的抢答状态,如按下、未按下等。
3. 抢答器抢答功能:在系统开始抢答后,只有首先按下按键的抢答器才能获得抢答资格。
4. 抢答结果显示功能:在抢答结束后,显示抢答结果,并通过蜂鸣器模块发出音频提示。
四、硬件设计4.1 单片机主控模块主控模块是整个系统的核心,它接收抢答器按键模块发送的信号,并对抢答结果进行处理。
可以选择常用的单片机,如STC89C51等。
### 4.2 抢答器按键模块抢答器按键模块包括八个独立的按键,用于用户进行抢答操作。
按下按键时,将通过IO口发送信号给主控模块。
### 4.3 抢答器显示模块抢答器显示模块采用LED或LCD等显示器件,用于显示八个抢答器的状态,如按下、未按下等。
### 4.4蜂鸣器模块蜂鸣器模块用于发出抢答成功或失败的音频提示。
可以选择适合的蜂鸣器模块并通过IO口控制。
五、软件设计5.1 系统初始化在系统初始化过程中,需要对硬件进行初始化,包括IO口设置、定时器设置等。
### 5.2 抢答逻辑处理通过编程实现抢答逻辑处理,包括按键检测、抢答结果判断等。
当检测到抢答按键按下时,判断该抢答器是否首次按下,并显示相应的抢答结果。
基于单片机的8路抢答器课程设计报告
基于单片机的8路抢答器课程设计报告单片机原理及接口技术课程设计报告设计题目:基于单片机的8路抢答器学号:××××××姓名:××指导教师:×××信息与电气工程学院二零一五年七月基于单片机的8路抢答器单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。
若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。
而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。
本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。
单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
1. 设计任务结合实际情况,基于AT89C51单片机设计一个8路抢答器。
该系统应满足的功能要求为:(1) 设计一个可供8人进行的抢答器;(2) 系统设置复位按钮,按动后,重新开始抢答;(3) 抢答器开始时数码管显示序号0,选手抢答实行优先显示,优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答后显示优先抢答者序号,同时发出音响。
,并且不出现其他抢答者的序号;(4) 抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间可设定在1~99秒(本例中设置为20s),当主持人启动“开始”开关后,定时器开始减计时,数码管显示倒计时的时间,同时蜂鸣器有短暂的声响;(5) 设定的抢答时间内,选手可以抢答,这时定时器停止工作,显示器上显示选手的号码和抢答时间。
单片机课程设计《八路抢答器》
1 任务要求(1)实现多路抢答器功能。
(2)用LED 显示屏显示抢答提示、哪组抢答、哪组犯规、加减分情况以及每组的得分。
(3)数码显示抢答和答题时间,时间到调用LED 模块显示“时间到!”。
(4)主持人通过按钮控制抢答功能:抢答、复位、加分和减分。
2硬件设计2.1硬件分析(1)LED 显示屏模块设计LED 显示屏是用了16块8×8点阵模块,把每一行的行线连起来,每一列的列线连起来级联成64×16点阵显示屏。
通过8个74HC273锁存器把每一行的64列数据锁存起来,通过4线-16线译码器74159控制每一行打开。
4块8×8点阵模块级联成16×16点阵模块示意图如图3.1所示:图3.1 4块8×8点阵级联示意图64×16点阵模块由16块8×8点阵模块以及8块74HC273锁存器组成,锁存器负责把每一行的数据锁存起来,电路图如图3.2所示:8条行线连在一起组成16行8条列线连在一起组成16列图3.2 64×16点阵电路图(2)按键模块设计八路抢答器顾名思义有8个抢答按钮,故八路抢答器应由8个抢答键及4个功能键组成。
每一组的按键判断有相应的LED指示灯,用来指示抢答与犯规操作。
按键模块电路如图3.3及图3.4所示:图3.3 抢答按钮图3.4 主持人控制按钮(3)数码显示模块设计数码显示模块由两位数码管组成,可以显示00~99,通过位扫描显示两位数字。
数码管用来显示抢答时间以及答题时间。
数码显示模块电路如图3.5所示:图3.5 数码显示模块2.2硬件电路原理图八路抢答器由LED显示模块、数码显示模块、按键模块以及译码电路,锁存电路组成。
电路原理图如图3.6所示:图3.6 硬件电路原理图3 软件设计3.1主要模块流程图(1)开始程序流程图如图4.1所示图4.1 开始程序流程图(2)开始抢答程序流程图如图4.2所示图4.2 开始抢答程序流程图(3)判断犯规程序流程图如图4.3所示图4.3 判断犯规程序流程图(4)答题程序流程图如图4.4所示图4.4 答题程序流程图(5)加减分流程图如图4.5所示图4.5 加减分流程图3.2主要模块的程序分析本程序主要分为四部分:(1)主程序模块、(2)显示模块、(3)计时模块、(4)按键中断模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计初始状态:抢答倒计时:抢答显示:4号选手在3秒时抢到Protuse仿真元器件:下载程序,保证运行!!!下载程序,保证运行!!!程序清单:#include<at89x51.h>#define uchar unsigned char#define uint unsigned intchar s;uchar num=0;char time=20; //抢答时间char datitime=30; //答题限时时间uint tt,t1; //T0,T1定时器定一秒时bit flag,s_flag=1,b_flag,fall_flag; //标志位bit K_startcountflag,K_timecountflag; //时间调整标志位sbit K0=P3^0;sbit beep=P3^7; //蜂鸣器sbit rled=P3^1; //指示灯sbit K1=P1^0;sbit K2=P1^1;sbit K3=P1^2;sbit K4=P1^3;sbit K5=P1^4;sbit K6=P1^5;sbit K7=P1^6;sbit K8=P1^7;sbit K_Time=P3^2; //答题计时键sbit K_startcount=P3^3; //开始抢答时间调整键sbit K_timecount=P3^4; //答题计时时间调整键void delay(uchar ms){uchar y;for(;ms>0;ms--)for(y=120;y>0;y--);}uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code tablewe[]={0XFE,0XFD,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=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) //八路热键扫描(哪个键先按下,哪个优先级最高) {if(K1==0){delay(10);if(K1==0){while(!K1);num=1; //数码管显示1号"1"TR0=0; //关闭定时器0,时间停止TR1=1; //打开定时器1,使扬声器响一声s_flag=0; //关闭开始键标志位,使再按其他七个键不会响应}}if(K2==0) //下面七个键的处理同上{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;}}if(K7==0){delay(10);if(K7==0){while(!K7);num=7;TR0=0;TR1=1;s_flag=0;}}if(K8==0){delay(10);if(K8==0){while(!K8);num=8;TR0=0;TR1=1;s_flag=0;}}}void display(void){if(flag==1) //开始键按下,开始计时抢答{if(num!=0) //如果有人抢答,则显示相应的几号{P0=tabledu[num]; //显示几号抢到了P2=tablewe[0];delay(2);P0=0;P2=0XFF;}else //否则没人抢答,则前面不显示几号{P0=0;P2=0XFF;}P0=tabledu[s/10]; //下面为显示抢答倒计时P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[s%10];P2=tablewe[3];delay(2);P2=0XFF;P0=0;}else //如果开始键没有按下,则显示F FF(若有违规者,则显示违规号码及FF)或时间调整{if(fall_flag==1) //违规显示{if(num!=0){P0=tabledu[num]; //显示几号违规了P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=tabledu[15]; //下面显示FF,表示违规了P2=tablewe[2];delay(2);P0=0; //消隐P2=0XFF;P0=tabledu[15];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else{P0=0;P2=0XFF;}}else //没有人违规才显示调整时间{if(K_startcountflag==1){P0=0X6D; //第一位数码管显示"5(S)"(表示抢答时间调整)P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=tabledu[time/10]; //下面显示调整的抢答时间P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[time%10];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else if(K_timecountflag==1){P0=0X07; //第一位与第二位数码管合起来显示"T",表示答题时间调整P2=tablewe[0];delay(2);P0=0;P2=0XFF;P0=0X31;P2=tablewe[1];delay(2);P0=0;P2=0XFF;P0=tabledu[datitime/10];P2=tablewe[2];delay(2);P0=0;P2=0XFF;P0=tabledu[datitime%10];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}else //否则显示F FF{P0=tabledu[15];P2=tablewe[0];delay(2);P0=0;P0=tabledu[15];P2=tablewe[2];delay(2);P0=0; //消隐P2=0XFF;P0=tabledu[15];P2=tablewe[3];delay(2);P0=0;P2=0XFF;}}}}void Time_Scan(void) //调整时间键扫描{if(K_startcount==0) //抢答时间调整{delay(10);if(K_startcount==0){while(!K_startcount);time++;if(time==50){time=20;}K_startcountflag=1; //将抢答时间标志位置1K_timecountflag=0; //同时关闭答题时间标志位}}if(K_timecount==0) //答题时间调整{delay(10);if(K_timecount==0){while(!K_timecount);datitime++;if(datitime==60){datitime=30;}K_timecountflag=1;K_startcountflag=0;}}}void main(void){T0_Init();while(1){Key_Scan(); //开始键扫描if((flag==0)&(s_flag==1)) //当开始键没按下及没有人违规时才可进行时间调整{Time_Scan();}if((flag==1)&(s_flag==0)) //当开始键按下及有人抢答才进行开始回答计时倒计时{if(K_Time==0){delay(10);if(K_Time==0){while(!K_Time);s=datitime;TR0=1;tt=0;TR1=1;}}}if((flag==0)&(s_flag==1)) //违规{Scan();if(num!=0) //开始键没有按下时,有人按下了抢答器,则置违规标志位{fall_flag=1;rled=0;}}if((flag==1)&(s_flag==1)) //如果开始键按下且抢答键没有人按下,则进行八路抢答键扫描{Scan();}display(); //显示到数码管上}}void timer0(void) interrupt 1{TH0=(65536-2000)/256; //2msTL0=(65536-2000)%256;if(b_flag) //开始(START)键按下,嘟一声(长1秒),表示开始抢答{beep=~beep;}elsebeep=1;if(s<5) //抢答时间快到报警,隔1秒响一声且红灯闪烁,响三声{if(s%2==0){b_flag=1;rled=0;}else{b_flag=0;rled=1;}}tt++;if(tt==500) //1秒{tt=0;s--;b_flag=0; //关闭开始键按下响一秒的嘟声if(s==-1){s=20;TR0=0;flag=0; //显示F FFs_flag=1;num=0;rled=1;}}}void timer1(void) interrupt 3 //定时器1处理有人按下抢答器嘟一声(长1秒) {TH1=(65536-2000)/256;TL1=(65536-2000)%256;beep=~beep;t1++;if(t1==500){t1=0;TR1=0;}}。