2022年抢答器单片机课程方案设计书.docx
精选学习资料 - - - - - - - - - 1 绪论1.1 课题讨论背景及意义本次课程设计制作的是智能抢答器;对于抢答器我们大家都很熟识:是用 于选手做抢答题目时用的,选手进行抢答,最先抢到题的选手回答疑题;本实 验设计的智能抢答器由主体电路与扩展电路组成;优先编码电路、锁存器、译 码电路将参赛队的输入信号在显示器上输出;用掌握电路和主持人开关启动报 警电路,以上两部分组成主体电路;通过定时电路和译码电路将秒脉冲产生的 信号在显示器上输出实现计时功能,构成扩展电路;经过布线、焊接、调试等 工作后智能抢答器成形;1.2 相关背景介绍抢答器具有锁存与显示功能;即选手按动按钮,锁存相应的编号,并在数 码管上显示,同时扬声器发出报警声响提示;选手抢答实行优先锁存,优先抢 答选手的编号始终保持到主持人将系统清除为止;用单片机来实现,他的制作比较简洁,与我们学的单片机原理联系紧 密,能将我们所学学问用于实际,对巩固所学学问有重要意义,使总体方案易 于实现;所以本方案用单片机来实现;在有些实际竞赛的场合,只要满意显示抢答有效和有效组别即可,所以我 们准备用一片 74HC373 (8 位数据锁存器)来实现本课程设计的简易抢答器的 功能,这是一个显示方式简洁,价格低廉,经济有用的抢答器设计方案;在要 求不高的场合,能完全符合要求;2 总体设计方案2.1 智能抢答器主要功能抢答器原理:每个选手的座位前安装一只抢答按钮开关和一只信号灯;主 持人的座位前安装一只复原按钮开关、一只蜂鸣器和一只抢答器工作状态指示 灯;每当主持人口头发出答应抢答的号令之后,哪个队先按下座位上的按钮开 关,该座位的信号灯就先被点亮,同时封锁其他按钮开关的活动;并且熄灭主名师归纳总结 - - - - - - -第 1 页,共 25 页精选学习资料 - - - - - - - - - 持人座位上的状态指示灯和发出 3 声类似于电话振铃的提示声,以“ 声明” 此次抢答动作已经完成;在主持人确认后,按下复原按钮,状态指示灯重新点 亮,并且同时发出“ 笛笛” 声,为下一次的抢答作好预备;电路中的 蜂鸣器 FM是一只带有助音腔的压电陶瓷蜂鸣器,用于模拟发出报警声的功率放 大器和喇叭;发声的原理是,作用在两个电极极板的电位在发生变化时,陶瓷材料就发生弯曲,从而振动空气发出声音;FM和 4 只按钮开关 SWaSWd都是在演示板的基础上额外添加的;由于 RB端口内部具有上拉电阻,只要用软件设置其有效,即可省略在4 只端口引脚上外接上拉电阻;参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止;假如定时 时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显 示 0;利用单片机可以用很少元件实现功能;单片机性能稳固,可操作性强;可以只用 P0口连接排阻(用作上拉电阻),完成驱动LED的功能,串接按键可以由选手自己掌握抢答机会;利用单片机程序判定选手按键是否有效,但当选手 违规抢答时,利用简洁程序显示选手序号,启动蜂鸣器并不间断,告知主持人 有人违规操作,抢答无效;给出相应的延时,选手按正常的操作抢答,软件倒 记时;假如有选手在规定的时间以前完成问题,主持人通过按键开头按钮来复 位,开头新的问题作答,由于程序不是很大不需要扩展储备空间,选手按键跳 入相应的子程序,回答倒记时 : 与一般抢答器相比,我们仍加入了一些不一样的想法 1、具有清零装置和抢答掌握,可由主持人操纵防止有人在主持人说“ 开 始” 前提前抢答违反规章;2、具有定时功能,在 弃权;10 秒内无人抢答表示全部参赛选手获参赛队对此题 3 、10 秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答;2.2 电路设计本抢答器的电路主要有四部分组成:数字抢答电路、时序掌握电路、报警 电路以及可预置时间的定时电路;其中数字抢答部分有一个 74HC373 锁存器和 数码管显示器组成,可以将八位抢答者的按钮通过数码管显示器显示出他们最 先抢答者的序号;而时序掌握电路的功能是当参赛选手按动抢答器时,使扬声 器发声,这时抢答电路和定时电路停止工作;而且设定的时间(本课题设置为名师归纳总结 - - - - - - -第 2 页,共 25 页精选学习资料 - - - - - - - - - 10 秒)到达后如无人抢答,就报警电路工作;报警电路工作的条件是当设定时间到达后或者有人抢答时,报警电路被输入一个高电平,这时此电路工作;2.3 八位抢答器设计要求本次设计的智能抢答器(八位抢答器)将具有以下功能:(1)抢答器同时供 8 名选手竞赛抢答用,有8 个按钮 S0 S7表示;(2)设置一个系统清除和抢答掌握开关“ 开头” ,“ 终止” ,该开关由主持 人掌握;(3)抢答器具有锁存与显示功能;即选手按动按钮,锁存相应的编号,扬声 器发出声响提示,并在数码管上显示选手号码;选手抢答实行优先锁存,优先抢答选手的编号始终保持到主持人将系统清除为止;此外仍有一些扩展功能:(1)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如 10 秒);当主持人启动“ 开头” 键后,定时器进行减计时;(2)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示 器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止;(3)假如定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示 0;2.4 硬件介绍2.4.1 AT89C52单片机简介AT89C52是 8 位通用微处理器;采纳标准的 上C51 内核,在内部功能及管脚排布名师归纳总结 - - - - - - -第 3 页,共 25 页精选学习资料 - - - - - - - - - PDIP 封装的 AT89C52 引脚图与通用的 8xc52 相同,其主要用于会聚调整时的功能掌握;功能包括对会聚主IC 内部寄存器、数据 RAM 及外部接口等功能部件的初始化,会聚调整掌握,会聚测试图掌握,红外遥控信号 IR的接收解码及与主板 CPU通信等;主要管脚有: XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外接 12MHz 晶振; RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路;VCC(40 脚)和 VSS(20 脚)为供电端口,分别接+5V电源的正负端; P0P3 为可编程通用 I/O 脚,其功能用途由软件定义,在本设计中,P0 端口( 3239 脚)被定义为 N1 功能掌握端口,分别与N1 的相应功能管脚相连接, 13 脚定义为 IR输入端, 10 脚和 11 脚定义为 I2C总线掌握端口,分别连接 N1 的 SDAS(18脚)和 SCLS(19 脚)端口, 12 脚、 27 脚及 28 脚定义为握手信号功能端口,连接主板 CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的掌握功能;P0 口: P0 口是一组 8 位漏极开路型双向I/O 口, 也即地址 /数据总线复用口;作为输出口用时,每位能吸取电流的方式驱动8 个 TTL规律门电路,对端口P0 写“ 1”时,可作为高阻抗输入端用;在拜访外部数据储备器或程序储备器时,这组口线分时转换地址(低 8 位)和数据总线复用,在拜访期间激活内部上拉电阻;P1 口: P1 是一个带内部上拉电阻的8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸取或输出电流) 4 个 TTL 规律门电路;对端口写 “ 1”,通过内部的上拉电阻 把端口拉到高电平,此时可作输入口;作输入口使用时,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流IIL;引脚功能号 特性T2,P1.0 时钟 输出T2EX P1.1 (定 时/ 计名师归纳总结 - - - - - - -第 4 页,共 25 页精选学习资料 - - - - - - - - - 与 AT89C51 不同之处是, P1.0 和 P1.1 仍可分别作为定 数器 时/计数器 2 的外部计数输入( P1.0/T2)和输入 2)(P1.1/T2EX),参见表 1;Flash 编程和程序校验期间, P1 接收低 8 位地址;P2 口: P2 是一个带有内部上拉电阻的8 位双向 I/O 口, P2 的输出缓冲级可驱动(吸取或输出电流) 4 个 TTL 规律 门电路;对端口 P2 写“ 1”,通过内部的上拉 电阻把端口拉到高电平,此时可作输入口,作输入口使用时,由于内部存在上 拉电阻,某个引脚被外部信号拉低时会输出一个电流 IIL;在拜访外部程序储备器或16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时, P2 口送出高 8 位地址数据;在拜访 8 位地址的外部数据储备器(如执行 锁存器的内容;MOVX RI 指令)时, P2 口输出 P2 P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口;P3 口输出缓冲表 1 P1.0 和 P1.1 的功能级可驱动(吸取或输出电流)4 个 TTL规律门电路;对 P3 口写入“1” 时,它们被内部上拉电阻拉高并可作为输入端口;此时,被外部拉低的 P3 口将用上拉电阻输出电流( IIL);P3 口除了作为一般的 P3 口仍接收一些用于I/O 口线外,更重要的用途是它的其次功能 Flash 闪速储备器编程和程序校验的掌握信号;RST:复位输入;当振荡器工作时,RST引脚显现两个机器周期以上高电平将使单片机复位;ALE/PROG:当拜访外部程序储备器或数据储备器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节;一般情形下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的;要注意的是:每当拜访外部数据储备器时将跳过一个 ALE 脉冲;PSEN:程序储存答应( PSEN)输出是外部程序储备器的读选通信号,当AT89C52 由外部程序储备器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲;在此期间,当拜访外部数据储备器,将跳过两次 PSEN信号;EA/VPP:外部拜访答应;欲使 CPU 仅拜访外部程序储备器(地址为 0000HFFFFH),EA 端必需保持低电平(接地);需留意的是:假如加密位 LB1 被编程,复位时内部会锁存 EA端状态;令;如 EA端为高电平(接 Vcc端), CPU 就执行内部程序储备器中的指XTAL1:振荡器反相放大器的及内部时钟发生器的输入端;XTAL2 :振荡器反相放大器的输出端;名师归纳总结 - - - - - - -第 5 页,共 25 页精选学习资料 - - - - - - - - - 2.4.2 锁存器锁存器是一种对脉冲电平敏锐的储备单元电路,它们可以在特定输入脉冲电平作用下转变状态;由如干个钟控 制代码的时序规律电路,叫锁存器件;规律结构与功能表见图 2-4 :D 触发器构成的一次能储备多位二进图 2-4 锁存器规律结构与功能表8 位锁存器74HC373的规律图如下图所示;其中使能端G 加入 CP 信号, D 为数据信号;输出掌握信号为 出;0 时,锁存器的数据通过三态门进行输图 2-5 74HC373 引脚 管脚 图: 名师归纳总结 - - - - - - -第 6 页,共 25 页精选学习资料 - - - - - - - - - 图 2-6 74LS373 内部规律图图 2-7 74LS373 真值表所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在 有锁存信号时输入的状态被储存到输出,直到下一个锁存信号到来时才改 变;在某些运算器电路中有时采纳锁存器作为数据暂存器数据有效推迟后于 时钟信号有效;这意味着时钟信号先到,数据信号后到;典型的锁存器规律电路是 D 触发器电路;锁存,就是把信号暂存以维护某种电平状态;锁存器的最主要作用是缓 存,其次完成高速的掌握其与慢速的外设的不同步问题,再其次是解决驱动的问题,最终是解决一个 I/O 口既能输出也能输入的问题;3 系统硬件设计3.1 硬件电路的总体框图名师归纳总结 本数字抢答器的硬件电路总体框图见图3-1:第 7 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - 按键与按钮电 数码管显示电路路总体开关复位等帮助电路电源系统图 3-1 数字抢答器电路框图3.2 电路器件挑选本次设计的数字抢答器采纳AT89C52 单片机作为系统的掌握单元;就抢答器而言,通常可采纳液晶显示或数码管显示;由于数码管作为一种 主动显示器件,具有亮度高、价格廉价等优点,而且市场上也有特地的时钟显 示组合数码管;本试验用数码管来显示;3.3 最小系统设计3.3.1 时钟频率电路图单片机必需在时钟的驱动下才能工作 统内容,在单片机内部有一个时钟振荡电路 定的时钟信号送到单片机内部的各个单元 图 3-2: . 由之前所学的单片机原理最小系 , 只需要外接一个振荡源就能产生一 , 打算单片机的工作速度;晶振电路见·图 3-2 晶振电路 3.3.2 复位电路图设计名师归纳总结 - - - - - - -第 8 页,共 25 页精选学习资料 - - - - - - - - - 单片机的第 9 脚 RST为硬件复位端 , 只要将该端连续 4 个机器周期的高电平 即可实现复位 , 复位后单片机的各状态都复原到初始化状态;复位电路图见图 3-3 所示: 图 3-3 复位电路3.3.3 键盘扫描电路的设计在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘;本试验用的 是独立式键盘;键盘扫描电路图见图 3-4 :图 3-4 独立键盘3.3.4 功能键及发声系统设计声音的频谱范畴约在几十到几千赫兹,如能利用程序来掌握单片机某个口 线的“ 高” 电平或低电平,就在该口线上就能产生肯定频率的矩形波,接上喇 叭就能发出肯定频率的声音,如再利用延时程序掌握“ 高” “ 低” 电平的连续 时间,就能转变输出频率,从而转变音调,使喇叭发出不同的声音;通过添加一些详细的功能键可以使系统的功能更加完善;名师归纳总结 功能键及发声系统结构图见图3-5 :第 9 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - 图 3-5 功能键及发声系统结构图3.4 总体设计结构图数字抢答器的总体设计结构见图 3-6:图 3-6 总体结构图名师归纳总结 - - - - - - -第 10 页,共 25 页精选学习资料 - - - - - - - - - 4 个人小结这次的课程设计的在学期开头时进行的,经过一个暑假的“ 沉淀” ,对做 课程所要求的严谨科学态度仍不适应了,所以一开头选题的时候是很不知所措,再加上考研时间的需要,这次就选了个比较简答的抢答器;当天选了题目之后,就开头找资料,先是就之前所学的单片机原理及 应用技术进行有关芯片的讨论,后来又去图书馆找了单片机的实训教程,最 终确定了用芯片 AT89C52;这次的课程设计我们期望能加入一些新的想法:比 如说不准有人抢答,设定抢答时间;主要是考虑到以前看节目的时候常常会看 到主持人仍没说开头的时候有些人已经抢答了,而且也算是为以后的课程设计奠定基础;找了相关资料,在P3 口添加了6 个按键,设定了主持人的复位键(开头,终止),设定抢答时间;确定了电路图;然后是在proteus中画电路,由搭档在keil中编写程序,经过反复检查,修改;终于是调试出来了;接着就是去采集器件了,一开头也没想到要用插针,根据电路图在版子上 描画电路图,就开头焊,后来发觉可能是排版的不够严谨吧,板子背面的排线 焊出来会很杂乱;于是就想到了插针,又去电子市场买了些;最终是焊好了,一调试结果也是正确,应当说主要是之前的工作做的比较充分;设计电子智能抢答器,采纳了单片机技术、数字电子、模拟电子等相关技 术;把在学校三年所学学问连成一串;理论联系实践是我懂得了在系统设计中设计方法的选用是系统设计能否胜利的关键;在以后的道路中,我会严格要求 自己,追求完善;5 致谢这次的课程设计是对过去所学学问的系统提高和扩充的过程,为今后的发 展打下了良好的基础;经过反复的查资料以及向同学请教,我学会了许多做课 题的思想,套路;老师给我们支配的课程设计就是在之前理论学习的基础上增 加自己的动手才能,是我们的思维更活跃,不至于做只会理论学问的“ 书呆 子” ;这对以后我们的出路奠定了很好的基础;在此,我要感谢指导老师庄志红和仍有其他帮忙过我们的同学;名师归纳总结 - - - - - - -第 11 页,共 25 页精选学习资料 - - - - - - - - - 6 参考文献1. 单片机原理及应用技术范力旻电子工业出版社2. 单片机应用技术实训教程3. 8051 单片机完全讨论实习篇胡文金 钟秉翔 杨健 重庆高校出版社林申茂编著 人民邮电出版社4. 单片机原理及接口技术实践教程胡建编著机械工业出版社5. 新型单片机接口器件与技术林凌 高校出版社 ,2005 年, 李刚 , 丁茹, 李小霞 . 西安 : 西安电子科技6. 单片机原理与应用及C51 程序设计谢维城,杨加国. 清华高校出版社,2006 年7. 附录附录 1:程序清单OK EQU 20H;抢答开头标志位RING EQU 22H;响铃标志位ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN: MOV R1,#10 ;初设抢答时间为 10s MOV R2,#10 ;初设答题时间为 10s MOV TMOD,#11H;设置未定时器 / 模式 1 名师归纳总结 - - - - - - -第 12 页,共 25 页精选学习资料 - - - - - - - - - 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 FFF.假如想重新计 SETB TR0;一开头就运行定时器 , 以开头显示数, 重置 TH1/TL1 就可以了;=查询程序 = START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未开头抢答时候显示 FFF JB P3.0,NEXT;ddddddd ACALL DELAY JB P3.0,NEXT;去抖动 , 假如 "开头键 " 按下就向下执行 , 否者跳到非法抢答查 询ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送 R1->R6,由于 R1中储存了抢答时间 SETB OK;抢答标志位 , 用于 COUNT只程序中判定是否查询抢答 MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号 MOV R3,#0AH;抢答只显示计时 , 灭号数 AJMP COUNT;进入倒计时程序 ," 查询有效抢答的程序 " 在 COUNT里面 NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 名师归纳总结 - - - - - - -第 13 页,共 25 页精选学习资料 - - - - - - - - - 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: MOV R3,#01H AJMP ERROR FALSE2: MOV R3,#02H AJMP ERROR FALSE3: MOV R3,#03H AJMP ERROR FALSE4: MOV R3,#04H AJMP ERROR FALSE5: MOV R3,#05H AJMP ERROR FALSE6: MOV R3,#06H AJMP ERROR FALSE7: MOV R3,#07H AJMP ERROR FALSE8: MOV R3,#08H AJMP ERROR ;=INT0抢答时间 R1调整程序 = INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B 名师归纳总结 - - - - - - -第 14 页,共 25 页精选学习资料 - - - - - - - - - MOV R3,#0AH ACALL DISPLAY;先在两个时间 LED上显示 R1 JNB P3.4,INC0 ;P3.4 为+1s 键, 如按下跳到 INCO JNB P3.5,DEC0;P3.5 为-1s 键, 如按下跳到 DECO JNB P3.1,BACK0;P3.1 为确定键 , 如按下跳到 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 ;=INT1回答时间 R2调整程序 = INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH 名师归纳总结 ACALL DISPLAY 第 15 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT1SUB INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1: INC R2 ACALL DELAY1 AJMP INT1SUB DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB BACK1: RETI ;=倒计时程序 抢答倒计时和回答倒计时都跳到改程序 = REPEAT: MOV A,R2 ;使用锦囊时重新计时 MOV R6,A CLR RING COUNT: MOV R0,#00H;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器 RECOUNT: 时间给 R6 MOV A,R6;R6 储存了倒计时的时间 , 之前先将抢答时间或回答MOV B,#0AH 名师归纳总结 DIV AB;除非常出个位 / 十位第 16 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - MOV 30H,A;十位存于 30H MOV 31H,B;个位存于 31H MOV R5,30H;取十位 MOV R4,31H;取个位 MOV A,R6 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;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NEXTT CHECKK: JNB P3.0,REPEAT ;判定是否使用锦囊 NEXTT: ACALL DISPLAY JB OK,ACCOUT;假如是抢答倒计时 , 如是就查询抢答 , 否者跳过查询连续倒数 这里起到锁抢答作用 AJMP RECOUNT ACCOUT: MOV A,36H 名师归纳总结 JNB ACC.0,TRUE1 第 17 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNT TZ1: JMP TRUE7 TZ2: JMP TRUE8 QUIT: CLR OK;假如按下了 " 停止键 "执行的程序CLR RING AJMP START ;=正常抢答处理程序 = TRUE1: ACALL BARK MOV A,R2 MOV R6,A;抢答时间 R2送 R6 MOV R3,#01H CLR OK ;由于答题的计时不再查询抢答 , 所以就锁了抢答 AJMP COUNT TRUE2: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNT TRUE3: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNT 名师归纳总结 TRUE4: ACALL BARK 第 18 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT TRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNT BARK TRUE6: ACALL MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT BARK TRUE7: ACALL MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNT TRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT ;=犯规抢答程序 = ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H 名师归纳总结 - - - - - - -第 19 页,共 25 页精选学习资料 - - - - - - - - - MOV 34H,R3;犯规号数暂存与 34H HERE: MOV A,R0 CJNE A,#06H,FLASH;0.3s 向下运行 ->灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1 FLASH: CJNE A,#0CH,CHECK1;下面是 0.8s 的情形 , 响并显示号数并清 R0,重新计 SETB RING MOV R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示 FF 和号数 AJMP CHECK1 CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1: CLR RING CLR OK AJMP START ;=显示程序 = DISPLAY: MOV DPTR,#DAT1;查表显示程序 , 利用 P0 口做段选码口输出 /P2 低三位做位选码输出 , MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A 名师归纳总结 ACALL DELAY2 第 20 页,共 25 页MOV DPTR,#DAT2 MOV A,R5 - - - - - - -精选学习资料 - - - - - - - - - MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY2 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 ;第一个为零 , 其他与上相同 , 由于十位假如为零显示熄灭;=加减时间延时 起到不会按下就加 N个数= DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET ;=延时 4236 个机器周期 去抖动用到 = DELAY: MOV 32H,#12H LOOP: M