A. 跪求智力竞赛抢答器的设计任务书
智力竞赛抢答器设计
一、设计任务:
设计一个具有锁存与显示功能的8人抢答逻辑电路。抢答开始之前,由主持人按下复位开关清除信号,所有的数码管均熄灭。当主持人宣布“开始抢答”后,计时器开始计时并以数码管显示,在规定的时间内首先做出判断的参赛者立即按下按钮,数码管显示该选手的序号,而其余七个参赛者的按钮将不起作用,信号也不再被输出,直到主持人再次清除信号为止。
二、设计要求:
1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1 ~ S8表示;
2. 设置一个系统清除和抢答控制开关S,该开关由主持人控制;
3. 抢答器具有锁存与显示功能;
4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒);
5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
三、设计报告要求
1. 写明设计题目、设计任务、设计目的;
2. 详细阐述方案论证过程;
3. 详细阐述设计过程,包括系统框图、各部分功能电路图,并给出相关原理说明;
4. 列出所用元器件;
5. 写出设计体会与建议。
提示:
1. 系统设计可分为四个模块:
(1)设计抢答器电路。 (2)设计可预置时间的定时电路。
(3)设计报警电路。 (4)设计时序控制电路。
2. 设计过程中可能需用到的集成电路有74LS148、74LS279、74LS48、74LS192或74LS161、555等,请同学们查询相关集成电路的资料。
B. 八路智能抢答器课程设计,急需!!!高分~~
可以下一个抢答器软件,然后做一个小型局域网就可以实现。想当年我们办竞赛就是这么做的。
C. 八路抢答器课程设计,急用~~~!!!~~~~高分
电子技术课程设计
——————八路智力竞赛抢答器
学院: 华科学院
专业,班级:电气工程及其自动化062203H
姓名 段超
学号: 200622050308
指导老师: 黄庆彩
2008年1月
目录
一 设计任务与要求……………………………………3
二 总体框图……………………………………………3
三 选择器件……………………………………………4
四 功能模块……………………………………………6
五 电路的装配调试……………………………………9
六 心得体会……………………………………………11
八路智力竞赛抢答器
一.设计任务与要求
1.任务和要求
抢大器能容纳8名选手,并且给出相应的编号为1、2、3、4、5、6、7、8,为每名选手设置一个按键。为了简化设计,可以利用试验仪上的逻辑电平开关。(这部分要求由我主要负责)
设置一个给工作人员清零的开关,以便能开始新的一轮的抢答。为了简化设计,可以利用试验仪上的逻辑电平开关。
用LED数码管显示获得优先抢答的选手的编号,一直保持到工作人员清零或1分钟倒记时答题时间结束为止。
用LED数码管显示有效抢答后的1分钟到记时答题时间。
用喇叭发声知识有效抢答及答题时间的结束。(这部分要求由我主要负责)
秒信号不必考虑时间精度,可利用试验仪上所提供的连续脉冲(方波)。
二.总体框图
根据设计任务与要求,我初步将系统分为4大功能模块:主电路、数据采集电路、控制电路和音响电路。可将主电路分为一个十六进制(实现一分钟倒记时答题时间)计数、译码、显示电路;数据采集电路(获得优先抢答选手的编号)分为8路抢答开关、八D数据锁存器、优先编码器、加1电路;控制电路分为锁存控制、倒记时控制、音响控制;音响电路分为单稳态触发器、音振及喇叭电路。以下是我设计的总体框图:如图1所示
图一 总体框图
三.选择器件
整个电路的电子器件有:555定时器,74LS192,74LS148,74LS373,74LS00,74LS04以及若干电容和电阻。我详细介绍一下我所设计的这两个电路中所用到的重要器件(555定时器和 74LS373):
1.555定时器
555 定时器是一种模拟和数字功能相结合的中规模集成器件。555 定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。555 定时器的内部电路框图和外引脚排列图分别如下图2:
图2 555定时器的内部电路框图和外引脚排列图
它内部包括两个电压比较器,三个等值串联电阻,一个 RS 触发器,一个放电管 T 及功率输出级。它提供两个基准电压VCC /3 和 2VCC /3 555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制 RS 触发器和放电管的状态。在电源与地之间加上电压,当 5 脚悬空时,则电压比较器 A1 的反相输入端的电压为 2VCC /3,A2 的同相输入端的电压为VCC /3。若触发输入端 TR 的电压小于VCC /3,则比较器 A2 的输出为 1,可使 RS 触发器置 1,使输出端 OUT=1。如果阈值输入端 TH 的电压大于 2VCC/3,同时 TR 端的电压大于VCC /3,则 A1 的输出为 1,A2 的输出为 0,可将 RS 触发器置 0,使输出为 0 电平。
2.74LS373
74373八D锁存器为三态输出的8 D透明锁存器, 373的输出端O0-O7可直接与总线相连。当三态允许控制端OE为低电平时,O0-O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0-O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
373引出端符号:
D0~D7-----数据输入端OE-----三态允许控制端
LE-----锁存允许端 O0-O7-----输出端
74LS373外部管腿图、真值表、逻辑图,如下图3所示:
图3 74LS373外部管腿图、真值表、逻辑图
真值表中:L——低电平; H——高电平; X——不定态; Q0——建立稳态前Q的电平; G——输入端,与8031ALE连高电平:畅通无阻低电平:关门锁存。图中OE——使能端,接地。当G=“1”时,74LS373输出端1Q—8Q与输入端1D—8D相同;当G为下降沿时,将输入数据锁存。
四.功能模块
根据设计任务与要求,我初步将系统分为4大功能模块:主电路、数据采集电路、控制电路和音响电路。
1.主电路由六十进制计数器和译码、显示电路两部分组成。
2.控制电路由锁存控制和倒计时控制两部分组成。
以上的这两大模块部电路均由我的搭档负责
以下的数据采集电路和音响电路两个模块是由我主要负责,下面我就详细说明我所设计的这两模块:
3.数据采集电路
(1).八路抢答开关
为8位选手提供8个抢答的按钮,这样可以在松开按钮后及时复位,为下次做准备。这部分我利用的是试验仪上的8个逻辑开关,在接电路图的时候,只用一个开关仿真。
(2).八D数据锁存器
采用八D数据锁存器74LS373,抢答前应使锁存允许LE=1,此时允许选手抢答,当有选手抢答有效时,要利用控制电路中的LE=0,使数据被锁存,其它选手就抢答无效了。
(3).优先编码器
采用优先编码器74LS148,因为采用了高速控制电路,因此一旦抢答,立即锁存。
我所设计的控制电路将充分利用74LS148的两个输出信号:选通输出Ys和扩展输出YEX。
以下是我设计的数据采集电路电路图如图4所示:
图4数据采集电路
4.音响电路
(1).单稳态触发器
设音响提示时间为2秒左右,可采用一脉宽为2秒的单稳态触发器实现。
实现单稳态触发器的方法有很多,可以用与非门或者非门电路实现微分型单稳、利用施密特触发器实现单稳、集成单稳等。现采用555定时器实现,注意其脉宽的计算公式为tw=1.1RC.若一个负脉冲触发信号到来,将有效触发单稳态电路产生一个脉宽为2秒的正脉冲。
(2).音频振荡器及喇叭电路
利用555定时器实现频率约1kHz的音频振荡器,因555定时器有较强的功率输出能力,可以直接推动喇叭输出。
当单稳态触发器进入暂稳态产生一个正脉冲时,控制555定时器开始工作,发出响声;当单稳态触发器自动返回稳态后,555定时器清零,不能发声。
以下是我设计的电路图如图5所示:
图5 音响电路
五 电路的装配与调试
1.由图中所示的定时抢答器的总体方框,按时信号的流向分单元装配,逐级级联。
2.我接好电路后,开始检验我的结果,发现当有选手抢答后,没有开始倒计时,经过老师的指正我们找到了原因,并立即改正,实现了要求的结果。
3.我将裁判的开关拨至0再拨回1时,发现是总能在任意时间重新抢答。(与设计要求相符)
4.我检查到,当计数器减到00时,产生了一个负脉冲信号,同时也允许开始新一轮的抢答。(与设计要求相符)
5.最后我检查的是我所设计的音响电路,当我拨动一个选手开关后,音响电路所对应的绿灯开始发光,并开始倒计时。当计数器减到00时,绿灯再次发光提示。(与设计要求相符)
现给出我所设计的总电路图如图6所示:
图6 总电路图
我的仿真结果图如图7所示:
图7 分别是倒计时、数据采集、音响电路的仿真结果
六 心得体会
在设计之前,参考了许多相关的资料。在设计中又参考了以前讲过的四路抢答器的原理图,有了基本的思路。
但着手设计时,又出现了许多未预料到的问题,例如元件的选择:在选择编码器时,是采用普通编码器还是优先编码器。普通编码器中,任何时刻只允许输入一个编码信号,否则输出将发生混乱。所以选择了优先编码器。但是74LS系列中众多不同管脚的类型,选择哪个作编码器。经过查找,选择了74LS192,因为想用数字的形式显示抢答者的编号,所以选择了数码显示管,但数码显示管不能直接,数码显示管需要由TTL或CMOS集成电路驱动,所以在TTL还是CMOS集成电路上又进行了比较和选择。最后选择了数显译码器,用它将输出的二进制代码译成相对应的高、低信号,用其作为数码显示管的驱动信号,数码显示管显示出相对应的选手编号。在音响电路中,根据设计需要选择了555定时器。
在一些设计原理上也遇到了许多新问题。发现当电源接通后,无论有无人按按钮都会使音乐集成电路通电发出声响,经同学以及老师的指证,发现导通的原因,并及时的改正。
通过这次八路抢答器的设计,我发现了以往学习中的许多不足,也让我掌握了以往许多掌握的不太牢的知识,感觉学到了很多东西。三周的课程设计,留给我印象最深的是要设计一个成功的电路,必须要有耐性和坚持下去的毅力。在整个电路的安装调试的过程中,花费时间最多的是各个元件电路的连接,电路的细节设计以及连完线路后的检查工作上,其中在连接电路是出现问题比较多,在555元件和74LS192元件的连接的调试的时候出现了问题在老师的指导和讲解下我门有了更深刻的认识,同时对元件的原理的功能了解的更多更深刻。在这次过程中,我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当的烦琐,有时花很长时间检查电路故障,分析原因,那时心中就有点灰心,有时还特别想放弃,此时更需要静下心来,更仔细的查找原因。
总之,这次实验过程中我受益匪浅,在摸索我和我的搭档实现了课题所要求的结果。培养了我的设计思维,增加了动手操作的能力。更让我体会到实现电路功能喜悦。
D. 本实验设计并实现一个用微机控制的智力竞赛抢答器。
你是需要编程的思路还是需要编程的代码?
请注明。
还有,你需要什么语言编写的?VB?java? C++?
E. 数字电子技术课程设计:八路智力竞赛抢答器的仿真电路图
下面这个图是五路抢答器的,按照同样的道理多加三个就成了八路抢答器
F. 设计一个以单片机为核心的8位竞赛抢答器,要求如下:
8路抢答器,这种题目,在网络上真是泛滥成灾了,随便一搜就能搜到一大堆,有仿真图和程序全部资料的。或者网络文库里也同样可以搜索到,还是毕业论文,更是详细。
下图是一个8路抢答器的仿真图。
G. 八路智力竞赛抢答器的设计
http://278980103.blog.sohu.com/46005043.html
H. 8位竞赛抢答器
你好,8路抢答器我做出来了,选手编号1~8八个按键和清零显示和开始抢答两个功能键共10个按键,开始显示编号0,倒计时30s,然后按键开始抢答键开始倒计时,期间可以随时清零重新倒计时30s抢答,抢答过程只能有1位选手抢答并显示编号,抢答之后,时间停止,显示编号,其他选手抢答无效;等主持人按下清零后重新回到开始抢答之前的界面。
但是我只有程序,没有protel的仿真图,51单片机、数码管、矩阵键盘共同完成。
使用的是郭天祥的TX-1C开发板。
回复我我给你程序。
希望我的回答能帮助到你。
I. 多路智力竞赛抢答器的设计
你可以参看一下PLC方面的书籍。这个是典型的例子。大部分教科书上都有。
J. 设计一个智力竞赛抢答器可同时供8人参加比赛,他们的编号分别是0、1、2、3、4、5、6、7,各用一个抢答按钮
第一章抢答器设计功能分析
1.1 数字抢答器的概述
对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。
1.2 设计任务与要求
基本要求:
1. 给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。
2. 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。
发挥部分:
1. 抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
2. 参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
3. 如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。
4. 选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。
第二章 抢答器方案论证
抢答器的实现方式有种多样,通过纯电子器件搭建电路实现,如优先编码器,锁存器,555定时器译码器等,纯电子器件实现没有软件参与,调试简单,但是它不易于扩展和修改,而且电路结构复杂,调试困难电子,电子器件管脚很多,实际搭建起来费时费力,焊接很容易出错。于是,我想到了用单片机实现。单片机体积小价格低,应用方便,稳定可靠。单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。由于单片机本身不具有软件编译测试的功能,我们需要借助其他软件编译,将编译好的程序“烧”入单片机内。
在实际电路设计中,需要先通过仿真软件测试电路以及编译的程序,检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作,能否准确的实现所设计的功能。如果测试通过,电路仿真没有问题能完全实现功能的话就可以实际的做板子的焊接工作了。在老师的指导下我选择了常用的单片机仿真软件proteus6.9以及keil 进行仿真。
第三章 硬件电路设计
3.1总体设计
根据抢答器的基本功能,可以设计出如下的单片机外围电路:
图3-1 总体设计
如图3-1,P3.0为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器(用绿灯代替)输出为P3.6口。P3.2为时间加1调整,P3.3为时间减1调整。
3.2 外部振荡电路
图3-2 外部振荡电路
一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。
3.3 复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:
图3-3 复位电路
在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
3.1.4 显示电路的设计
显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。
图3-4 阴极七段数码管
4.1.5 按钮输入电路的设计
抢答器的输入按钮使用常开开关,
图3-5 抢答按键
这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
3.1.6 发声
这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。
第四章 系统软件设计
4.1 程序系统结构图
硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。由功能分析得到以下的软件结构图:
图4-1 软件系统结构图
4.2 程序流程图
整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成。
定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.7取反,扬声器发声,改变定时器初值,可改变扬声器频率。定时器程流程图如下:
图4-2 响铃程序流程图
定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。其流程图如下:
图4-3 倒计时中断流程图
外部中断0用于调整倒计时时间,流程图如下:
图4-4 调整抢答时间流程图
主程序协调三个中断一起工作,实现抢答功能,其流程图如下:
图4-5 主程序流程图
附录:
程序代码:
P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2的低三位口,蜂鸣器输出为P3.6口。
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT0SUB
ORG 000BH
AJMP T0INT
ORG 001BH
AJMP T1INT
OK EQU 20H ; 抢答开始标志位
RING EQU 22H ; 响铃标志位
ORG 0040H
MAIN: MOV R1,#0FH; 初设抢答时间为15s
MOV R2,#0AH; 初设答题时间为10s
MOV TMOD,#11H; 设置未定时器/模式1
MOV TH0,#0F0H
MOV TL0,#0FFH; 越高发声频率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H; 50ms为一次溢出中断
SETB EA
SETB ET0
SETB ET1
SETB EX0
SETB EX1; 允许四个中断,T0/T1/INT0/INT1
CLR OK
CLR RING
SETB TR1
SETB TR0; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
查询程序:
START: MOV R5,#0BH
MOV R4,#0BH
MOV R3,#0BH
ACALL DISPLAY; 未开始抢答时候显示FFF
JB P3.0,NEXT
ACALL DELAY
JB P3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
ACALL BARK;按键发声
MOV A,R1
MOV R6,A; 送R1->R6,因为R1中保存了抢答时间
SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答
MOV R3,#0AH; 抢答只显示计时,灭号数
AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT: JNB P1.0,FALSE1
JNB P1.1,FALSE2
JNB P1.2,FALSE3
JNB P1.3,FALSE4
JNB P1.4,FALSE5
JNB P1.5,FALSE6
JNB P1.6,FALSE7
JNB P1.7,FALSE8
AJMP START
非法抢答处理程序:
FALSE1: ACALL BARK; 按键发声
MOV R3,#01H
AJMP ERROR
FALSE2: ACALL BARK
MOV R3,#02H
AJMP ERROR
FALSE3: ACALL BARK
MOV R3,#03H
AJMP ERROR
FALSE4: ACALL BARK
MOV R3,#04H
AJMP ERROR
FALSE5: ACALL BARK
MOV R3,#05H
AJMP ERROR
FALSE6: ACALL BARK
MOV R3,#06H
AJMP ERROR
FALSE7: ACALL BARK
MOV R3,#07H
AJMP ERROR
FALSE8: ACALL BARK
MOV R3,#08H
AJMP ERROR
倒计时程序(包括有效抢答程序):
COUNT: MOV R0,#00H; 重置定时器中断次数
MOV TH1,#3CH
MOV TL1,#0B0H; 重置定时器
RECOUNT: MOV A,R6; R6保存了倒计时的时间
MOV B,#0AH
DIV AB; 除十分出个位/十位
MOV 30H,A; 十位存于(30H)
MOV 31H,B; 个位存于(31H)
MOV R5,30H ; 取十位
MOV R4,31H ; 取个位
MOV A,R6
CLR C
SUBB A,#07H
JNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒
MOV A,R0
CJNE A,#0AH,FULL;1s中0.5s向下运行
CLR RING
AJMP CHECK
FULL: CJNE A,#14H,CHECK ; 1s时,响并显示号数并清R0,重新计时
SETB RING
MOV A,R6
JZ QUIT ; 计时完毕
MOV R0,#00H
DEC R6 ; 一秒标志减1
AJMP CHECK
LARGER: MOV A,R0
CJNE A,#14H,CHECK ; 如果1s向下运行,否者跳到查"停/显示"
DEC R6; 计时一秒R6自动减1
MOV R0,#00H
CHECK: JNB P3.1,QUIT; 如按下停止键退出
ACALL DISPLAY
JNB P1.0,TRUE1
JNB P1.1,TRUE2
JNB P1.2,TRUE3
JNB P1.3,TRUE4
JNB P1.4,TRUE5
JNB P1.5,TRUE6
JNB P1.6,TRUE7
JNB P1.7,TRUE8
AJMP RECOUNT
QUIT: CLR OK ; 如果按下了"停止键"重新回到开始
CLR RING
ACALL BARK
AJMP START
正常抢答处理程序:
TRUE1: ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6
MOV R3,#01H
CLR OK;
AJMP LOOP2
TRUE2:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP LOOP2
TRUE3:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP LOOP2
TRUE4:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP LOOP2
TRUE5: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP LOOP2
TRUE6: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#06H
CLR OK
AJMP LOOP2
TRUE7: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP LOOP2
TRUE8: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
LOOP2: AJMP DISPLAY ;抢答后停止计时,等待返回
SETB RING
JNB P3.1 QUIT
AJMP LOOP2
犯规抢答程序:
ERROR: SETB RING ;犯规响铃
MOV R5,#0BH
MOV R4,#0BH; 显示FF和犯规号数
LOOP3: ACALL DISPLAY
JNB P3.1 QUIT1; 等待“停止”键按下
AJMP LOOP3
QUIT1: CLR RING
CLR OK
AJMP START
显示程序:
DISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
DELAY1: MOV 35H,#08H
LOOP0: ACALL DISPLAY
DJNZ 35H,LOOP0
RET
延时(显示和去抖动用到):
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET
发声程序:
BARK: SETB RING
ACALL DELAY1
ACALL DELAY1
CLR RING; 按键发声
RET
INT0(抢答时间R1调整程序):
INT0SUB:MOV A,R1
MOV B,#0AH
DIV AB
MOV R5,A
MOV R4,B
MOV R3,#0AH
ACALL DISPLAY;先在两个时间LED上显示R1
JNB P3.2,INC0; P3.2为+1s键,如按下跳到INCO
JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECO
JNB P3.4,BACK0; P3.4为确定键,如按下跳到BACKO
AJMP INT0SUB
INC0: MOV A,R1
CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起
MOV R1,#00H
ACALL DELAY1
AJMP INT0SUB
ADD0: INC R1
ACALL DELAY1
AJMP INT0SUB
DEC0: MOV A,R1
JZ SETR1;如果R1为0, R1就置99,
DEC R1
ACALL DELAY1
AJMP INT0SUB
SETR1: MOV R1,#63H
ACALL DELAY1
AJMP INT0SUB
BACK0: RETI
TO溢出中断(响铃程序):
T0INT:MOV TH0,#0ECH
MOV TL0,#0FFH
JNB RING,OUT
CPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT: RETI
T1溢出中断(计时程序):
T1INT: MOV TH1,#3CH
MOV TL1,#0B0H
INC R0
RETI
END