单片机课程八路抢答器设计(含源程序)

合集下载

单片机、微机原理课程设计(八路抢答器)

单片机、微机原理课程设计(八路抢答器)

《微机原理与接口技术》课程设计报告基于STC89C52防违规八路抢答器院系:专业(班级):姓名:学号:指导教师:职称:完成日期: 2013 年 12 月 25 日目录1 引言 (1)2 总体方案论证与设技 (1)2.1 主控模块的选型和论证 (1)2.2 显示模块的选型和论证 (2)2.3 按键模块的选型和论证 (2)2.4 系统整体设计概述 (3)2.5 系统使用说明 (4)3 系统硬件电路设计 (4)3.1 主控模块 (4)3.1.1 单片机芯片介绍 (5)3.1.2 单片机最小系统 (6)3.2 数码管模块设计 (6)3.2.1 数码管原理介绍 (7)3.2.2 数码管电路设计 (7)3.3 键盘模块设计 (8)3.4 蜂鸣器模块设计 (8)4 系统软件设计 (9)4.1 系统软件总体设计 (9)4.2 程序设计原理 (10)5 系统调试 (11)5.1 硬件调试 (11)5.2 调试结果 (12)6 总结 (12)7 致谢 (13)参考文献 (14)附录A 系统整体原理图 (15)附录B 实物图 (16)附录C 系统源程序 (17)基于STC89C52防违规八路抢答器1 引言随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。

本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。

单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。

对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。

抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。

选手们都站在同一个起跑线上,体现了公平公正的原则。

1.1 本系统主要研究内容本系统设计制作一个基于单片机的8路抢答器。

能实现以下几种功能:(1)键盘扫描,显示当前按键。

单片机课程设计(八路抢答器)

单片机课程设计(八路抢答器)

随着社会的不断发展和科学技术的不断提高,各种工业自动化不断升级,电子技术得到了飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。

本设计是以八路抢答为基本理念,考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。

用开关做键盘输出,扬声器发生提示,并且有警告灯显示。

关键词:单片机,抢答器,显示第一章概述1.1课题背景随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。

目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。

因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。

现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。

1.2课题的意义与发展方向随着电子技术的发展,抢答器作为一种电子产品,早已广泛应用于企业单位、学校和电视台,为各种知识竞赛、文娱活动提供公正客观快速的裁决。

它能迅速、客观地分辨出哪位选手最先按下的抢答键,大大增强了比赛的公平性,给人们带来了很大的方便。

而随着科学技术的不断发展,以单片机作为主控制器的抢答器占据了主要的地位。

目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。

例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。

随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。

第二章硬件电路设计2.1 系统的控制要求与总体结构系统的控制要求:1.给主持人设置一个开关,用来控制系统的重启(编号显示数码管重置初始时间)和抢答器的倒计时开始。

八路抢答器设计(附源程序)

八路抢答器设计(附源程序)

烟台大学单片机课程设计说明书课题:八路抢答器学生姓名:学号:院系:机电汽车工程学院专业:机械设计制造及其自动化指导老师:同组成员:组长:20 年06 月07 日目录1 概述 (2)2设计任务 (2)3 系统总体方案 (3)4 硬件设计 (4)4.1 控制系统所需硬件 (4)4.2 硬件原理介绍 (4)5 软件设计 (7)5.1 软件总体设计 (7)5.2 程序流程图 (8)6 Proteus软件仿真 (12)6.1 Keil软件 (12)6.2在Proteus软件 (12)7小结 (14)8心得体会 (15)附1:源程序代码 (16)附2:参考文献 (24)1 .概述8路智能抢答器的设计现如今,各种智力知识竞赛已经成为人们的一种娱乐形式,人们在答题的过程中不仅可以享受到乐趣,还可以学到一些科学知识和生活常识。

然而在抢答过程中,单靠视觉是很难判断出哪组最先完成抢答操作。

为了辨别哪一组或哪一位选手获得答题权,必须要设计一个智能抢答控制系统——智能抢答器。

抢答器作为一种电子产品,已被人们所熟知并广泛应用于各种智力知识竞赛场合。

抢答器在竞赛中有很大用处,通过抢答器的指示灯显示,数码管显示和警示蜂鸣等手段,能准确,公正,直观地判断出第1抢答者并协助比赛的顺利进行。

但是,目前使用的抢答器大多数都采用了逻辑电路进行设计,分立元件较多,造成抢答器的成本较高。

此外一般抢答器由模拟电路,数字电路或二者结合组成,其智能化程度低,故障率高,显示简单。

现代电子技术的发展要求电子电路朝数字化,集成化方向发展,因此设计出全集成电路的多路抢答器是现代电子技术发展的要求。

2 .设计任务本设计要求学生结合现有的实际条件,以单片机为控制核心,设计一个8路智能抢答器。

要求实现的功能如下:1) 抢答器可同时供8名选手或8个代表队比赛,分别用8个按键S1~S8进行抢答。

2) 主持人可以通过智能抢答器的按键设定每道题的抢答时间和回答时间。

3) 具有清零和非法抢答控制功能,并由主持人操纵,避免选手在主持人说“开始”前提前抢答,违反规则。

8位竞赛抢答器的设计

8位竞赛抢答器的设计

单片机课程设计专业电气工程及其自动化指导教师学生颜良堂学号 B16题目8位竞赛抢答器的设计2013年12月25日目录一、设计任务与要求 (3)二、方案设计与论证 (3)方案一: (3)方案二: (3)三、单元电路的设计 (3)芯片的选择及工作原理 (3)系统的硬件构成及功能 (4)四、软件的设计 (5)主程序流程图 (5)主程序 (5)子程序 (6)1、开始、复位程序 (6)2、中断程序 (6)3、选手键盘扫描程序 (7)4、数码管显示程序 (9)5、抢答时间设计程序 (9)6、延时子程序 (9)五、仿真与调试 (10)抢答器调试结果 (10)六、结论与心得 (12)附件1:电路图 (12)附件2:源程序 (13)附、参考文献� (17)一、设计任务与要求以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。

设置一个系统清除和抢答控制开关S,开关由主持人控制。

抢答器具有锁存与显示功能。

即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。

当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为左右。

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

通过键盘改变抢答的时间,原理与闹钟时间的设定相同,将定时时间的变量置为全局变量后,通过键盘扫描程序使每按下一次按键,时间加1(超过30时置0)。

同时单片机不断进行按键扫描,当参赛选手的按键按下时,用于产生时钟信号的定时计数器停止计数,同时将选手编号(按键号)和抢答时间分别显示在LED上。

二、方案设计与论证方案一:使用C语言编程实现基于单片机的八位抢答器的课程设计,用到的元器件有AT89C51 、MAX7219、按键、数码管、上拉电阻、蜂鸣器等。

基于单片机八路抢答器设计

基于单片机八路抢答器设计

第一章系统方案与论证1.1 根本要求〔1〕系统容量:为满足竞赛抢答的要求,系统容量定位8路。

〔2〕系统能完成:倒计时指令发送与接收;抢答对别信息发送与接收;〔3〕抢答倒计时可在0-99秒内根据需要任意调整。

〔4〕所有信息交换都采用无线通信。

〔5〕抢答指令发出和抢答成功要有提示音。

1.2 系统方案选择1.2.1 系统根本构造框图1-1 根本系统构造框图系统工作流程:主持人电路通电后,2位数码管不断加1,以示电路可以正常工作。

主持人按下控制开关后,电路进入倒计时预设状态,设置好后再按一下控制开关,则完成预设,数码管显示预设数。

当主持人按下开场按钮后,选手可以抢答,同时数码管显示倒计时读秒,如有选手按下抢答键,数码管显示该选手的序号,同时封锁其他的抢答信号,蜂鸣器鸣叫10s,以示有人抢答成功。

如读秒归零时还无人抢答,则蜂鸣器鸣叫10s,数码管显示为不断闪亮的“00〞,以示抢答时间到。

当抢答的选手答复完毕或读秒归零后,主持人按一下开场按钮,电路即可恢复到开场抢答,倒计时读秒状态1.2.2 通信方案论证与选择要实现无线通信,可选用频分复用和时分复用两种形式。

频分复用各信道独立,不考虑信号在时间上的重叠。

但是在整个系统最少也需要8个信道,电路复杂,制作本钱高,故不取。

对实际问题进展分析,发现系统通信中,除抢答信号外,其他信号的传送都具有明显的分时性〔即各信号的传送都不可能同时出现〕。

再对抢答信号进展深入研究,发现:〔1〕人对抢答信号的反响在毫秒级是很不灵敏的,人的反响速度是在0.2s-0.8s 内随即出现。

〔2〕在比赛现场,抢答题目一般在几十秒内。

能做出答复决定的人也只在40%左右,坚决做出答复决定的占20%左右。

根据系统满容量算20*20%=4,只有4个左右的人数进入0.2—0.8s反响比赛中。

〔3〕按键反响速度也是有差异的,大概在20ms左右。

根据以上三点分析,可以定性的得出抢答信号在一定的时间区间内具有随机分时的特性。

单片机课程八路抢答器设计(含源程序)

单片机课程八路抢答器设计(含源程序)

武汉工程大学——课程设计报告设计题目:基于单片机八路抢答器设计系(院):电气院专业:测控技术与仪器年级 (班):09级测控02班学号:***********名:******:***2012年 12月 12日目录目录 (2)摘要 (3)一、设计任务与要求......................................... 错误!未定义书签。

二、方案设计与论证......................................... 错误!未定义书签。

三、硬件电路设计 (5)3.1抢答器的电路框图 (5)3.2 单元电路设 ........................................... 错误!未定义书签。

3.3外部震荡电路.......................................... 错误!未定义书签。

3.4报警电路设计.......................................... 错误!未定义书签。

四、软件设计................................................ 错误!未定义书签。

4.1系统主程序设计 (7)4.2主程序清单 (8)五、仿真过程与仿真结果 (11)5.1用到了keil软件仿真 (11)5.2 Proteus仿真 (11)5.3用DXP连接原理 (11)5.4用DXP连接PCB图...................................... 错误!未定义书签。

六、安装与调试.............................................. 错误!未定义书签。

6.1制作PCB电路板流程......................... 错误!未定义书签。

6.2器件选型方案的详细清单 (12)6.3调试.................................................. 错误!未定义书签。

单片机课程设计(八路抢答器)

单片机课程设计(八路抢答器)

单片机课程设计八路抢答器一设计要求:①如果想调节抢答时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下“加1s”键,如果想减一秒按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s~99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。

②主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

③如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。

④如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止”键为止。

⑤P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。

⑥当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始。

二设计思路:系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。

硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。

软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。

在系统设计中设计方法的选用是系统设计能否成功的关键。

硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。

单片机课程八路抢答器设计(含源程序)

单片机课程八路抢答器设计(含源程序)

武汉工程大学——课程设计报告设计题目:基于单片机八路抢答器设计系(院):电气院专业:测控技术与仪器年级 (班):09级测控02班学号:0904010217姓名:吕禹指导教师:郝毫毫2012年 12月 12日目录目录 (2)摘要 (3)一、设计任务与要求......................................... 错误!未定义书签。

二、方案设计与论证......................................... 错误!未定义书签。

三、硬件电路设计 (5)3.1抢答器的电路框图 (5)3.2 单元电路设 ........................................... 错误!未定义书签。

3.3外部震荡电路.......................................... 错误!未定义书签。

3.4报警电路设计.......................................... 错误!未定义书签。

四、软件设计................................................ 错误!未定义书签。

4.1系统主程序设计 (7)4.2主程序清单 (8)五、仿真过程与仿真结果 (11)5.1用到了keil软件仿真 (11)5.2 Proteus仿真 (11)5.3用DXP连接原理 (11)5.4用DXP连接PCB图...................................... 错误!未定义书签。

六、安装与调试.............................................. 错误!未定义书签。

6.1制作PCB电路板流程......................... 错误!未定义书签。

6.2器件选型方案的详细清单 (12)6.3调试.................................................. 错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉工程大学——课程设计报告设计题目:基于单片机八路抢答器设计系(院):电气院专业:测控技术与仪器年级 (班):09级测控02班学号:***********名:******:***2012年 12月 12日目录目录 (2)摘要 (3)一、设计任务与要求 (4)二、方案设计与论证 (4)三、硬件电路设计 (5)3.1抢答器的电路框图 (5)3.2 单元电路设 (6)3.3外部震荡电路 (6)3.4报警电路设计 (7)四、软件设计 (7)4.1系统主程序设计 (7)4.2主程序清单 (8)五、仿真过程与仿真结果 (11)5.1用到了keil软件仿真 (11)5.2 Proteus仿真 (11)5.3用DXP连接原理 (11)5.4用DXP连接PCB图 (12)六、安装与调试 (12)6.1制作PCB电路板流程 (12)6.2器件选型方案的详细清单 (12)6.3调试 (12)七、结论与心得 (14)八、参考文献 (15)摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。

作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。

本设计是以八路抢答为基本理念。

考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,扬声器发生提示。

同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。

一、设计任务与要求1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S5表示。

2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。

即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。

选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如20秒)。

当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00 。

二、方案设计与论证方案一:系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答输入信号的触发。

该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便地完成选手抢答的基本功能,但是由于系统功能要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较烦琐,使用不太方便。

方案二:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。

由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。

整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。

MCS-51单片机特点如下:<1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。

<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。

<3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

方案比较及其选用依据,显然方案二比方案一简单的多,不但从性能上优于方案一,而且在使用上及其功能的实现上都较方案一简洁,并且由于单片机具有优越的高集成电路性,使其工作速度更快、效率更高。

另外80C51单片机采用12MHz的晶振,提高了信号的测量精度,并且使该系统可以通过软件改进来扩张功能。

而方案一采用了中小规模集成电路,有其复杂的电路性能,从而可能会使信号的输入输出产生延时及不必要的误差。

依此依据选择方案二比较适合。

抢答按扭优先编码电路锁存器译码电路译码显示主持人控制开关控制电路报警电路秒脉冲产生电路定时电路译码电路显示电路其原理框图如下:三、硬件电路设计3.1 抢答器的电路框图如图11、1所示为电路框图。

其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。

定时器倒计时,扬声器给出声响提示。

选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。

当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

如果再次抢答必须由主持人再次操作"开始、停止"状态开图1 抢答器电路的接口电路原理图如图1所示为电路图。

其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。

定时器倒计时,扬声器给出声响提示。

选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。

当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

如果再次抢答必须由主持人再次操作“开始、停止”状态开关。

3.2 单元电路设计(1)抢答器电路参考电路如图11.2所示。

该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。

如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。

(2)时序控制电路设计时序控制电路是抢答器设计的关键,它要完成以下功能:a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。

b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。

(3)复位电路的设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。

复位电路如下图示:3.3 外部震荡电路外部震荡电路单片机必须在AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。

3.4报警电路设计报警电路用于报警,当遇到报警信号时,发出警报。

一般喇叭是一种电感性图11.4报警电路图。

8951驱动喇叭的信号为各种频率的脉冲。

因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。

在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。

不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。

选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。

当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

如果再次抢答必须由主持人再次*作"清除"和"开始"状态开关。

图面是数字抢答器的报警电路图。

其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。

PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。

四、软件设计4.1系统主程序设计为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P1.7按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。

当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。

(1)主程序流程图4.2主程序清单#include <reg52.h>/*----------------------------------------------------------- 宏定义------------------------------------------------------------*/ #define uint unsigned int#define uchar unsigned char/*----------------------------------------------------------- 共阴极数码管编码表 0 - f显示------------------------------------------------------------*/ unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*----------------------------------------------------------- 变量定义------------------------------------------------------------*/ sbit start_stop = P3^6;sbit reset = P3^7;sbit key1 = P1^0;sbit key2 = P1^1;sbit key3 = P1^2;sbit key4 = P1^3;sbit key5 = P1^4;sbit key6 = P1^5;sbit key7 = P1^6;sbit key8 = P1^7;sbit state = P3^4;sbit kaishi=P3^1;bit start_stop_flag = 0;bit key1_flag = 0;bit key2_flag = 0;bit key3_flag = 0;bit key4_flag = 0;bit key5_flag = 0;bit key6_flag = 0;bit key7_flag = 0;bit key8_flag = 0;bit reset_flag = 0;bit action = 0;bit kaishi_flag=0;uchar second = 20;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*----------------------------------------------------------- 延时函数------------------------------------------------------------*/ void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*----------------------------------------------------------- 数码管显示驱动函数------------------------------------------------------------*/ void display(uchar number,uchar second){uchar second_first,second_second;second_first = second / 10;second_second = second % 10;P2 = 0xfe;P0 = table[number];delay(2);P2 = 0xfd;P0 = 0x40;delay(2);P2 = 0xfb;P0 = table[second_first];delay(2);P2 = 0xf7;P0 = table[second_second];delay(2);}/*----------------------------------------------------------- 开始键扫描函数------------------------------------------------------------*/ void start_stop_keyscan(){if(start_stop == 0){delay(8);if((start_stop == 0)&&(!start_stop_flag)){start_stop_flag = 1;action = 1;TR0 = 1;state = 0;}}else{start_stop_flag = 0;}}/*----------------------------------------------------------- 八位抢答键扫描函数------------------------------------------------------------*/ uchar key_scan8(){if(key1 == 0){delay(8);if((key1 == 0)&&(!key1_flag)){key1_flag = 1;number = 1;number_display = number;}}else{key1_flag = 0;number = 0;}if(key2 == 0){delay(8);if((key2 == 0)&&(!key2_flag)){key2_flag = 1;number = 2;number_display = number;}}else{key2_flag = 0;number = 0;}if(key3 == 0){delay(8);if((key3 == 0)&&(!key3_flag)){key3_flag = 1;number = 3;number_display = number;}}else{key3_flag = 0;number = 0;}if(key4 == 0){delay(8);if((key4 == 0)&&(!key4_flag)){key4_flag = 1;number = 4;number_display = number;}}else{key4_flag = 0;number = 0;}if(key5 == 0){delay(8);if((key5 == 0)&&(!key5_flag)){key5_flag = 1;number = 5;number_display = number;}}else{key5_flag = 0;number = 0;}if(key6 == 0){delay(8);if((key6 == 0)&&(!key6_flag)){key6_flag = 1;number = 6;number_display = number;}}else{key6_flag = 0;number = 0;}if(key7 == 0){delay(8);if((key7 == 0)&&(!key7_flag)){key7_flag = 1;number = 7;number_display = number;}}else{key7_flag = 0;number = 0;}if(key8 == 0){delay(8);if((key8 == 0)&&(!key8_flag)){key8_flag = 1;number = 8;number_display = number;}}else{key8_flag = 0;number = 0;}if(number_display != 0){return 1;}else{return 0;}}/*-----------------------------------------------------------复位键扫描函数------------------------------------------------------------*/ void reset_keyscan(){if(reset == 0){delay(8);if((reset == 0)&&(!reset_flag)){ second=20;reset_flag = 1;number_display = 0;state = 1;}}else{reset_flag = 0;}}/*开机函数*/void kaishi_keyscan(){if(kaishi == 0){delay(8);if((kaishi == 0)&&(!kaishi_flag)){kaishi_flag = 1;number_display = 0;state = 1;}}else{kaishi_flag = 0;}}/*----------------------------------------------------------- 主函数------------------------------------------------------------*/ void main(){TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=0;while(1){ while((kaishi == 0)&&(!kaishi_flag)){ start_stop_keyscan();reset_keyscan();while(action){while(!key_scan8()){display(number_display,second);if(second == 0){second = 20;break;}}TR0 = 0;second = 0;display(number_display,second);action = 0;break;}display(number_display,second);}}}/*----------------------------------------------------------- 中断服务函数------------------------------------------------------------*/ void timer0() interrupt 1{TH0=0x3c;TL0=0xb0;timer0_count ++;if(timer0_count == 20){timer0_count = 0;second --;if(second == 0){TR0 = 0;number_display = 0;state = 1;action = 0;}}}五、仿真过程与仿真结果5.1 用到了keil软件仿真,界面如下:5.2 Proteus仿真6.3调试:(1) 开机按电源开关,显示屏左边的"抢答"指示灯亮,数码管显示。

相关文档
最新文档