1.1八路扫描式抢答器的概述

本文介绍的八路数显抢答器具有电路简单、成本较低、操作方便、灵敏可靠等优点,经使用效果良好, 具有较高的推广价值。无线遥控抢答器,它由8个发射器和1个接收器组成,可用于8组或8组以下的智力竞赛中。比赛前,将参赛组从0至7编号,每组发给对应的一个发射器。将接收器放于各组中央或前方。主持人按一下启动键后,抢答开始。此后,哪一组最先按下发射器上的抢答键,接收器就立即显示该组的组号并锁定,同时发出3次清脆的“叮咚”声。以后,按下任何一路抢答键均不起反映。只有主持人再次按动启动键后,才能进行下一次抢答该电路由直流稳压电源、抢答器、超时报警与电子计分四部分组成

1.2本设计任务及要求

任务:设计一个供8名选手参加八路扫描式抢答器。

1.3系统主要功能

每名选手有一个抢答按钮,按钮的编号与选手的编号相对应,抢答器具有第一个抢答信号的鉴别和数据锁存、显示的功能。抢答开始后,若有选手按抢答按钮,刚该选手指示灯亮,并在数码管上显示相应编号,扬声器发出音响提示。同时,电路应具备自锁功能,禁止其他选手再抢答,优先抢答选手的编号一直保持到主持人将系统清0 为止。抢答器具有计分、显示功能。预置分数可由主持人设定,并显示在每名选手的计分牌上,选手答对加10分,答错扣10分。抢答器具有定时抢答的功能。一次抢答的时间由主持人设定,在主持人发出抢答指令后,定时器立即进行减计时,并在显示器上显示,同时扬声器发出短暂声响,声响时间持续0.5s左右。选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器显示选手编号和抢答时刻的时间,并保持到主持人将系统清0为止。

2.1工作原理

基于这个设计的上述要求,根据功能要求,须设计有抢答电路、译码显示电路、主持人控制电路、定时电路、报警电路,各个电路都有其自己的功能。通过复位按键FW,电路进入就绪状态,等待抢答。首先由主持人根据题目的难易程度,可以用“JIA SHI”和“JIAN SHA”两个按键,设定时间在(0S-99S)之间,然后再由主持人发布抢答命令(按下KS按键)同时发光二极管随即变亮,当看到二极管亮,进入倒计时状态和抢答状态。在电路中“S1-S8”为8路抢答器的8个按键,如果有人按下按键,程序就会判断是谁先按下的,然后从P2口输出抢答者号码的七段码值,经GAL16V8驱动,送到码管显示,并封锁键盘,保持刚才按键按下时刻的时间,禁止其他人按键的输入,从而实现了抢答的功能。如果在设定的时间中没有一个人按下按键,一到时间,则产生报警信号已经超时,不可以抢答。当要进行下一次的抢答时,由主持人先按一下复位按键FW,电路复位,进入下一次抢答的就绪状态。

2.2.1 抢答器的电路框图 如图11、1所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。


代码:

P1.0-P1.7为八路抢答输入 数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。P3.0为开始抢答,P3.7为停止。
K EQU 20H;抢答开始标志位;将P1口与P2口互换,P3.0-P1.0,P3.1-P1.7RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040H
MAIN:  MOV R1,#0FH;初设抢答时间为15sMOV R2,#0AH;初设答题时间为10sMOV TMOD,#11H;设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH;越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1;允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置           TH1/TL1就可以了
;***查询程序***
START:MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY;未开始抢答时候显示FFFJB P3.0,NEXT ACALL DELAYJB P3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询ACALL BARK;按键发声MOV A,R1MOV R6,A;送R1->R6,因为R1中保存了抢答时间SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R3,0AH;抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT: JNB P1.0,FALSE0
JNB P1.1,FALSE1JNB P1.2,FALSE2JNB P1.3,FALSE3JNB P1.4,FALSE4JNB P1.5,FALSE5JNB P1.6,FALSE6
JNB P1.7,FALSE7AJMP START;***非法抢答处理程序***
FALSE0:   ACALL BARK;按键发声MOV R3,#00HAJMP ERROR
FALSE1:   ACALL BARK;按键发声MOV R3,#01HAJMP ERROR
FALSE2:   ACALL BARKMOV R3,#02HAJMP ERROR
FALSE3:   ACALL BARKMOV R3,#03HAJMP ERROR
FALSE4:   ACALL BARKMOV R3,#04HAJMP ERROR
FALSE5:   ACALL BARKMOV R3,#05HAJMP ERROR
FALSE6:   ACALL BARKMOV R3,#06HAJMP ERROR;***INT0(抢答时间R1调整程序) ***
INT0SUB:  MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在两个时间LED上显示R1JNB P3.4,INC0;P3.4为+1s键,如按下跳到INCOJNB P3.5,DEC0;P3.5为-1s键,如按下跳到DECOJNB P3.7,BACK0;P3.7为确定键,如按下跳到BACKOAJMP INT0SUBINC0:   MOV A,R1CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新
加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0:   INC R1ACALL DELAY1AJMP INT0SUBDEC0:   MOV A,R1JZ SETR1;如果R1为0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUB
SETR1:    MOV R1,#63HACALL DELAY1AJMP INT0SUB
BACK0:    RETI
;***INT1(回答时间R2调整程序)*** INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC1JNB P1.7,BACK1AJMP INT1SUBINC1:   MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1:  INC R2ACALL DELAY1AJMP INT1SUBDEC1:  MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1SUBSETR2:  MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1:  RETI
;***倒计时程序(抢答倒计时和回答倒计时都跳到改程序)*** COUNT:  MOV R0,#00H;重置定时器中断次数MOV TH1,#3CHMOV TL1,#0B0H;重置定时器
RECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6MOV B,#0AHDIV AB;除十分出个位/十位MOV 30H,A;十位存于(30H)MOV 31H,B;个位存于(31H)MOV R5,30H;取十位MOV R4,31H;取个位MOV A,R6SUBB A,#07HJNC LARGER;大于5s跳到LARGER,小于等于5s会提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下运行CLR RING AJMP CHECK
FULL:   CJNE A,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计SETB RINGMOV A,R6JZ QUIT;计时完毕MOV R0,#00HDEC R6;一秒标志减1AJMP CHECK
LARGER: MOV A,R0CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"DEC R6;计时一秒R6自动减1MOV R0,#00H
CHECK:  JNB P1.7,QUIT;如按下停止键退出ACALL DISPLAYJB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNT
ACCOUT: JNB P1.0,TRUE0
JNB P1.1,TRUE1JNB P1.2,TRUE2JNB P1.3,TRUE3JNB P1.4,TRUE4JNB P1.5,TRUE5JNB P1.6,TRUE6
JNB P1.7,TRUE7AJMP RECOUNT
QUIT:  CLR OK;如果按下了"停止键"执行的程序CLR RINGAJMP START
;***正常抢答处理程序***
TRUE0: ACALL BARK; 按键发声MOV A,R2;抢答时间R2送R6MOV R6,AMOV R3,#00HCLR OK;因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNT
TRUE1: ACALL BARK;按键发声MOV A,R2MOV R6,A;抢答时间R2送R6MOV R3,#01HCLR OK;因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNT
TRUE2: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNT
TRUE3: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNT
TRUE4: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNT
TRUE5:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNT
TRUE6:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNT
TRUE7:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNT;***犯规抢答程序***
ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯规号数暂存与(34H)
HERE:  MOV A,R0CJNE A,#0AH,FLASH;0.5s向下运行->灭并停响CLR RING MOV R3,#0AHMOV R4,#0AHMOV R5,#0AH;三灯全灭AJMP CHECK1
FLASH: CJNE A,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计SETB RINGMOV R0,#00HMOV R3,34H;取回号数MOV R5,#0BHMOV R4,#0BH;显示FF和号数AJMP CHECK1
CHECK1: JNB P3.7,QUIT1ACALL DISPLAYAJMP HERE
QUIT1:  CLR RINGCLR OKAJMP START
;***显示程序***
DISPLAY:MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,MOV A,R5MOVC A,@A+DPTRMOV P2,#01HMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R4MOVC A,@A+DPTRMOV P2,#02HMOV P0,AACALL DELAYMOV A,R3MOVC A,@A+DPTRMOV P2,#04HMOV P0,AACALL DELAYRET
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
;第一个为零,其他与上相同,因为十位如果为零显示熄灭
;***加减时间延时(起到不会按下就加N个数)***
DELAY1: MOV 35H,#08H
LOOP0:  ACALL DISPLAYDJNZ 35H,LOOP0RET
;延时(显示和去抖动用到)
DELAY:  MOV 32H,#12H
LOOP:   MOV 33H,#0AFH
LOOP1:  DJNZ 33H,LOOP1DJNZ 32H,LOOPRET
;***发声程序***
BARK:   SETB RINGACALL DELAY1ACALL DELAY1CLR RING;按键发声RET
;***TO溢出中断(响铃程序)***
T0INT:  MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUT;CPL P3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT:    RETI
;***T1溢出中断(计时程序) ***
T1INT:  MOV TH1,#3CH MOV TL1,#0B0HINC R0RETIEND

八路扫描式抢答器(汇编)相关推荐

  1. 八路扫描式抢答器设计

    目 录 第1节 引 言 --------------------------1 1.1 抢答器的概述 -----------------------1 1.2 本设计主要任务 ------------ ...

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

    文末下载完整资料 1.1八路扫描式抢答器的概述     本文介绍的八路数显抢答器具有电路简单.成本较低.操作方便.灵敏可靠等优点,经使用效果良好, 具有较高的推广价值.无线遥控抢答器,它由8个发射器和 ...

  3. 单片机8位抢答器实训机电报告_CD4511八路抢答器实验报告-

    CD4511八路抢答器实验报告- 本文关键词:八路,实验,报告,抢答器,CD4511 CD4511八路抢答器实验报告- 本文简介:小学期实验设计任务目录摘要I第1章绪论11.1课题研究的相关背景11. ...

  4. 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...

    哥,你还有AT89C51单片机8路抢答器的资料吗 哥,你还有AT89C51单片机8路抢答器的资料吗 AT89C51单片机8路抢答器的资料 源程序如下 #include #define uchar un ...

  5. 八人抢答器讲解_八人智力竞赛抢答器

    1 摘 要 本报告设计的八路智力竞赛抢答器电路主要采由 74 系列常用集成电路组成,涉及到触 发器.编码器.加法器.译码器和 RC 电路组成的多谐振荡电路.该抢答器具有基本的抢答 功能, 通过共阴极数 ...

  6. 带有显示的8路抢答器课程设计

    一:课程设计目的 抢答器是竞赛问答中一种常用的必备装置智力竞赛时一般分为若干组各组对主持人提出的问题进行抢答.抢答时要判定哪组优先并予以指示和鸣叫.其设计包含了组合逻辑电路和时序逻辑电路的部分原理.. ...

  7. 八路电子抢答器电路设计

    2010-01-14 科信学院 课程设计说明书 (2008/2009学年第二学期) 课程名称 :    单片机课程设计 题    目 :  八路电子抢答器电路设计 专业班级 : 学生姓名 : 学    ...

  8. c语言写51单片机八路抢答器,基于AT89C51单片机的八路抢答器设计方案.doc

    基于AT89C51单片机的八路抢答器设计方案 毕业设计(论文)-基于AT89C51单片机的八路抢答器设计 图书分类号:密 级: 毕业论文 基于AT89C51的八路抢答器设计OCTAL ANSWER D ...

  9. 基于单片机节日彩灯控制器系统设计、基于单片机脉搏检测和体温检测设计、基于单片机可燃气体检测及报警系统、基于单片机可调八路抢答器仿真设计-全套设计资料

    1425基于单片机节日彩灯控制器系统设计-protues仿真资料 以单片机为核心,设计一个节日彩灯控制器: l  K1-开始,按此键则灯开始流动(由上而下). l  K2-停止,按此键则停止流动,所有 ...

最新文章

  1. There is insufficient system memory to run this query 错误
  2. qq互动视频页面加载失败_互动案例技术分析(2)
  3. PHP5与MySQL数据库操作
  4. CentOS 6与7对比【转】
  5. 付费圈子来了,去还是不去?
  6. Win10问题篇:一次性永久关闭win10系统自动更新
  7. vue2项目封装百度地图3.0拾取坐标控件
  8. Word排版插件,VSTO公文排版,Word论文排版
  9. 写在今年(2022)清明节前
  10. python调用WinRAR暴力获取压缩密码 用网址做解压密码
  11. 面试 11、知识拓展
  12. 维修计算机小能人,电脑小能人作文「精选」
  13. Vue 豆瓣电影项目
  14. 设计模式(一):工厂模式
  15. 3月4日 与柳传志面对面(谁是这个时代的思想家)
  16. c语言函数视频编程,史上最高效编程学习方法,十分钟学会使用C语言函数
  17. python内存泄露memory leak排查记录
  18. rsync大批量删除文件
  19. ora-01172 ora-01151的处理
  20. MATLAB trapz梯形数值积分函数

热门文章

  1. 调色进阶的一些工具认识——可选颜色
  2. 如何使用Tomcat自带的日志实现tomcat-juli.jar
  3. Python---读取Excel的方法(方法一)
  4. [Gym101194G][CHINA-Final2016]Pandaria
  5. 19. 最小乘车费用
  6. 多目标蚂蚁狮子优化算法(Matlab代码实现)
  7. Springboot毕设项目学科竞赛推荐平台z7z28java+VUE+Mybatis+Maven+Mysql+sprnig)
  8. 深度学习笔记(MNIST手写识别)
  9. 基础网络概念:网络是什么?
  10. java variant类型_使用 Sql_variant 数据类型