毕业设计(论文)-基于单片机的抢答器的设计_第1页
毕业设计(论文)-基于单片机的抢答器的设计_第2页
毕业设计(论文)-基于单片机的抢答器的设计_第3页
毕业设计(论文)-基于单片机的抢答器的设计_第4页
毕业设计(论文)-基于单片机的抢答器的设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的抢答器系统的设计 焦建净摘 要随着电子技术的飞速发展,基于单片机的控制系统已广泛应用于工业、农业、电力、电子等行业。在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中是很难判别哪一组先抢答,利用单片机系统来设计抢答器可以使以上问题解决。即使两组的抢答时间相差几微秒,也可以分辨出哪一组优先答题。本文介绍了一种基于AT89C51单片机的抢答器系统的设计,它设计简单实用。它除了具有基本的抢答功能之外, 还有定时报警和数显的功能。主持人可以手动设置抢答和答题时间。当抢答开始后系统会自动倒计时,当有选手摁下按键后将显示该选手的组号并伴有蜂鸣声,且进入答题时间倒计时。若还未开始抢答倒计时,有选手抢答,则将显示该选手号并给予报警。在抢答和答题环节,当剩下五秒时,蜂鸣器都会给出报警。关键词:单片机、抢答、数显、报警、仿真ABSTRACTWith the rapid development of electronics technology and the control system which based on Monolithic integrated circuits has been widely used in agriculture, industry, the electrical and electronic industries. In answer process, in order to know which one group or which a player to answer, have to design a system to complete this task. If there is very difficult to determine which group to answer,use monolithic integrated circuits can solve the above questions. Even the time difference between the two groups of Answer a few microseconds, you can also distinguish which team does.This article describes a monolithic integrated circuits eight groups which based on at89c51, it is simple functional design. In addition its basic Answer function, there are regular police and figures show functions. The host can set Answer time. When qiangda starts,the system automatically counted down, when the player pressed the key ,LED will show the group number, and being the answer the question time count down, qiangda time and answer time all you can set. In qiangda and answer time, when there are five seconds, the buzzer will give the alarm.Key words:singlechip、 vie to answer 、figures show 、give an alarm、emulation目 录摘 要IABSTRACTII目 录III前 言V第一章 抢答器的系统概述11.1 国内外的研究现状11.2 系统设计的功能要求11.3 系统的原理及组成11.3.1抢答器的系统总体框图11.3.2 抢答器基本工作原理21.4 抢答器的工作过程2第二章 硬件电路设计及其功能介绍42.1 方案论证42.2 方案比较42.3.1 AT89C51的主要特性42.3.2 引脚描述5第三章 硬件电路设计73.1单片机最小系统电路图73.2单片机的单元电路73.2.1报警电路73.2.2单片机的主控电路83.2.3复位和晶振电路83.2.4主持人控制端电路83.2.5选手控制电路93.2.6显示电路9第四章 软件设计程序流程图及程序104.1系统主程序流程图104.2 时间调整子程序流程图114.3倒计时子程序流程图124.4抢答器源程序124.5 Proteus软件仿真系列组图23第五章 元器件及焊接调试255.1元器件255.1.1四位一体共阴数码管255.1.2蜂鸣器255.2焊接与调试265.2.1电路板的制作与检查265.2.2电路模块调试26第六章 总结27致 谢28参考文献29附 录30前 言单片微型计算机(Single Chip Microcomputer)简称单片机,又称微控制器(Microcontroller Unit)或嵌埋式控制器(Embeded Controller),是将计算机的基本部件微型化,使之集成在一块芯片上的微机。片内含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。1970年微型计算机研制成功之后,随着就出现了单片机(即单片微型计算机)。美国Intel公司1971年生产的4位单片机4004和1972年生产的雏形8位单片机8008,特别是1976年MCS-48单片机问世以来,在短短的二十几年间,经历了四次更新换代,其发展速度大约每二、三年要更新一代、集成度增加一倍、功能翻一番。其发展速度之快、应用范围之广,已达到了惊人的地步,它已渗透到生产和生活的各个领域。随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出很强的生命力。它和一般的集成电路相比有较好的抗干扰能力,对环境的温度和湿度都有较好的适应性,可以在工业条件下稳定工作。当今社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,智力竞赛是一种生动活泼的教育方式,通过抢答和必答两种答题方式能引起参赛者和观众的极大兴趣,并且能在极短的时间,使人们迅速增加一些科学知识和生活常识。那么也就必然离不开抢答器,为竞赛的公平、公正提供有力的保障。在竞赛中往往分为几组参加,这时针对主持人提出的问题,各个组一般要进行必答和抢答,对必答一般有时间限制,到时有声响提示;对于抢答要判断哪组先按键,为了公正,这就要有一种逻辑电路抢答器作为裁判员。抢答器在竞赛中有很大用处,它能准确、公正、直观的判断出第一抢答者。通过抢答器的数码显示、警示蜂鸣等手段显示出第一抢答者。 34第一章 抢答器的系统概述1.1 国内外的研究现状抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块,而专用集成块的购买又很困难。为适应高校等多代表队单位活动的需要而设计一个多功能抢答器,这种抢答器具有电路简单,元件普遍,易于购买等优点,很好的解决了制作者制作困难和难于购买的问题。在国内外已经开始了普遍应用。1.2 系统设计的功能要求(1)抢答器可供八名选手或队伍参加比赛。(2)抢答器分为选手控制端和主持人控制端。(3)主持人端可设置抢答时间、答题时间、控制抢答开始并进行系统清零。(4)当主持人启动开始键后,显示器上显示抢答倒计时。(5)参赛选手在设定的时间内进行抢答,抢答有效,显示器转而显示优先抢答的选手编号。同时蜂鸣器发出报警声响提示,声响持续的时间1秒左右。(6)如果设置的抢答时间已到,无人抢答,则本次抢答无效,系统报警并禁止抢答,显示器上显示00。(7)每次抢答完成后主持人可手动使系统清零。1.3 系统的原理及组成1.3.1抢答器的系统总体框图抢答器系统总体框图如图1.1所示。 图1.1 系统总体框图由系统总体框图可知,该系统由五部分组成,分别是单片机主控电路、复位和晶振电路、抢答按键电路、主持人端按键及报警电路和显示模块。对于各部分的功能下面做一个具体介绍。1.单片机主控电路单片机主控电路是一片AT89C51芯片,它是此电路的核心,在芯片中写入程序后,才能使系统正常工作。其中用P0口作为数码管的八个段选,用P2口作为4个数码管其中3个位选,P1口接选手控制端按键,P3接主持人控制端。2.复位和晶振电路单片机必须在时钟的驱动下才能工作,在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。复位后单片机的各状态都恢复到初始化状态。 3.抢答按键电路 八个抢答按键分别接入单片机的P1.0-P1.7端口,当有选手摁下按键时,单片机通过读取P1.0-P1.7的值来判断当前输入的是八个按键中的哪一个。 4.显示模块 用四位一体共阴极LED数码管来显示,其中A-H段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码CMOS1、CMOS3、CMOS4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。5.主持人端按键及报警电路 由P3.2-P3.5接四个按键,做答题时间调整、抢答时间调整,加1、减1调整之用。同时主持人控制开始和停止按键。电路采用蜂鸣器报警,P3.6接蜂鸣器驱动电路,报警现象明显。1.3.2 抢答器基本工作原理抢答器的工作原理是基于单片机AT89C51的定时器T0、T1中断来完成,其余状态利用循环调用显示子程序,并用4联共阴极LED数码管来显示。用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2作为4个数码管其中3个位选,P1口接8个按键,作为选手抢答按键,P3.0、P3.1分别作为开始抢答计时、结束抢答计时,P3.2、P3.3、P3.4、P3.5四个接口接四个按键,分别提供抢答时间调整,答题时间调整,加1,减1调整之用。1.4 抢答器的工作过程1.如果想调节抢答时间,按“加一”键或“减一”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下“加一”键,如想减一秒按一下“减一”键,时间LED上会显示改变后的时间,调整范围为099s,0s时再减1s会跳到99,99s时再加1s会变到0s。2.主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设20s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入答题倒计时(预设30s答题时间),只有第一个按抢答按键的选手有效。倒数时间到小于5s会每秒响一下提示音。3.如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。4.如果主持人未按“抢答开始“键,而有选手按了抢答按键,犯规抢答,LED上不断闪烁犯规号数并响个不停,直到按下”停止“键为止。总而言之,本论文利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的设计。第二章 硬件电路设计及其功能介绍2.1 方案论证方案一:纯数字电路抢答器它是由各个元器件如集成电路74LS148、74LS192、74LS192、74LS121、电容、电阻等74LS系列按照一定功能和结构组合在一起实现我们所需要得到的功能。系统各部分采用中小规模集成数字电路,用机械开关按钮作为控制开关,完成抢答器输入信号的触发。该方案的特点是中小规模集成电路应用技术成熟,性能可靠,能方便的完成抢答器的基本功能,但由于系统要求较高,所以电路连接集成电路相对较多,而且过于复杂,并且制作过程工序比较繁琐,使用不太方便。方案二:该系统采用MCS-51系列单片机AT89C51作为控制核心,其片内带有4KflashROM,128的RAM,以及15根I/O口线能满足设计要求。该系统可完成运算控制、信号识别以及显示功能的实现。2.2 方案比较从第一个方案我们可以看出,这个抢答器是由抢答电路,定时电路,报警电路,时序控制电路四个电路组成。它的功能很齐全,设计的电路也很稳定。但是它的造价却很高,这跟我们的设计理念是相冲突的。而方案二采用单片机,可靠性好,结构简单,具有显示选手号,倒计时功能等。该模式充分体现了原有系统性能的改进,且比较经济实用,所以我们选用单片机的方案。2.3 AT89C51简介2.3.1 AT89C51的主要特性AT89C51是一个低电压,高性能CMOS 8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。AT89C51的引脚图如图2.1所示 。 图2.1 AT89C51的引脚图2.3.2 引脚描述VCC:电源电压 GND:地RST:复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。ALE/:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除作为一般的I/O口外,更重要的用途是它的第二功能,如表2.1所示。端口引脚第二功能P3.0RXDP3.1TXDP3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RD表2.1 P3口的第二功能表P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。XTAL1:震荡器反相放大器及内部时钟发生器的输入端。XTAL2:震荡器反相放大器的输出端。第三章 硬件电路设计3.1单片机最小系统电路图对于51系列单片机来说,单片机加晶振电路加复位电路,便组成了一个最小系统。该电路的功能是在单片机最小系统基础上加显示电路,抢答电路,报警电路实现的。单片机最小系统电路图如图3.1所示。图3.1 单片机最小系统电路图3.2单片机的单元电路3.2.1报警电路该电路采用蜂鸣器报警,P3.6接蜂鸣器驱动电路,报警现象明显。报警电路图如图3.2所示。 图3.2 报警电路图3.2.2单片机的主控电路 该电路用P0口作为数码管的八个段选,用P2口作为4个数码管其中3个位选,P1口接选手控制端按键,P3接主持人控制端。在单片机中写入程序后,才能使系统正常工作,它是此系统的核心。单片机的主控电路图如图3.3所示。图3.3 单片机的主控电路图3.2.3复位和晶振电路该电路的复位电路采用上电自动复位方式,上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容储能增加,电容电压也逐渐增大充电电流减小。这样会建立一个脉冲电压,调节电容与电阻大小可对脉冲的持续时间进行调节。复位和晶振电路图如图3.4所示。 图3.4 复位和晶振电路图3.2.4主持人控制端电路由P3.2-P3.5分别接四个按键K1,K2,K3,K4,做答题时间调整、抢答时间调整,加1、减1调整之用。主持人控制端电路图如图3.5所示。 图3.5主持人控制端电路图3.2.5选手控制电路在单片机应用中用得最多的形式是独立键盘及矩阵键盘。它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中。矩阵键盘与独立键盘有很大区别,它在节省端口资源上有优势得多,因此它更适用于多按键电路。本设计采用了独立键盘的方式。在图中八个抢答按键1-8分别接入单片机的P1.0-P1.7端口,单片机通过读取P1.0-P1.7的值来判断当前输入的是八个按键中的哪一个。选手控制端电路图如图3.6所示。3.6选手控制端图3.2.6显示电路用四位一体共阴极LED数码管来显示,其中A-H段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码CMOS1、CMOS3、CMOS4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。图中还有七个10K的电阻,连接在P0口上,用作P0口的上拉电阻,可增加数码管的亮度。显示电路图如图3.7所示。图3.7显示电路图第四章 软件设计程序流程图及程序4.1系统主程序流程图P1.0-P1.7为八路抢答器的输入端口,数码管段选P0口、位选P2口,蜂鸣器输出为P3.6。此程序采用定时器T0和T1中断完成,其余状态循环调用显示子程序。主程序流程图如图4.1所示。调用键值处理程序调用显示程序各变量赋初值调用键扫描程序初始化开始图4.1 主程序流程图4.2 时间调整子程序流程图时间调整子程序是用来调整抢答时间和答题时间。其中抢答时间的初始值是20秒,答题时间的初始值是30秒。当主持人按开始键后从20秒开始抢答倒计时,当有选手抢答后立即从30秒开始进行答题倒计时。抢答时间和答题时间都可在0至99秒间变动。时间调整子程序流程图如图4.2所示。开始初始化计时K3按下K4按下K1按下时间上调时间下调结束 YYYNNN图4.2 时间调整流程图 4.3倒计时子程序流程图倒计时子程序流程图如图4.3所示。开始初始化显示总时间键按下减1并显示大于5秒提 醒等于0秒计时完毕结束减1并显示YYYNNN图4.3 倒计时子程序流程图4.4抢答器源程序ORG 00H LJMP START ORG 03H LJMP INT0SHIFT ORG 0BH LJMP T0INT ORG 13H LJMP INT1SHIFT ORG 1BH LJMP T1INT ORG 30HSTART: MOV SP,#60H ;建堆栈 MOV R1,#20 ;初设抢答时间为20s MOV R2,#30 ;初设答题时间为30s MOV TMOD,#11H ;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH ;设置发声频率 MOV TH1,#3CH MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA SETB ET0 ;允许T0中断 SETB ET1 ;允许T1中断 SETB EX0 ;允许INT0中断 SETB EX1 ;允许INT1中断 CLR 10H ;10H为允许通过标志位 CLR 12H ;12H为响铃标志位SETB TR1 SETB TR0 ;一开始就运行定时器,以开始显示00;-查询程序-INQURY: MOV R5,#00H MOV R4,#00H MOV R3,#00H LCALL DISPLAY ;未开始抢答时候显示00 JB P3.0,DEBUGGING LCALL DELAY JB P3.0,DEBUGGING ;去抖动,如果开始键按下就向下执行,否则跳到非法抢答查询 LCALL WARN ;有按键就发声 MOV A,R1 MOV R6,A ;送R1-R6,因为R1中保存了抢答时间 SETB 10H ;抢答标志位,用于COUNTDOWN指程序中判断是否查询抢答MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号 MOV R3,#0AH ;抢答只显示计时 LCALL COUNTDOWN ;进入倒计时程序,查询有效抢答的程序在COUNTDOWN里面;-查询犯规程序-DEBUGGING:JNB P1.0,NO1 ;在此查错程序中有一定得时间误差,但很小可忽略 JNB P1.1,NO2 JNB P1.2,NO3 JNB P1.3,NO4 JNB P1.4,NO5 JNB P1.5,NO6 JNB P1.6,NO7 JNB P1.7,NO8 LJMP INQURYNO1: MOV R3,#01H;如果犯规则显示号数和FF LJMP ERRORNO2: MOV R3,#02H LJMP ERRORNO3: MOV R3,#03H LJMP ERRORNO4: MOV R3,#04H LJMP ERRORNO5: MOV R3,#05H LJMP ERRORNO6: MOV R3,#06H LJMP ERRORNO7: MOV R3,#07H LJMP ERRORNO8: MOV R3,#08H LJMP ERROR;-INT0(抢答时间R1调整程序)-INT0SHIFT: MOV A,R1 MOV B,#10 DIV AB MOV R5,A MOV R4,B MOV R3,#0AH LCALL 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 LJMP INT0SHIFTINC0: MOV A,R1 CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H LCALL DELAY1 LJMP INT0SHIFTADD0: INC R1 LCALL DELAY1 LJMP INT0SHIFTDEC0: MOV A,R1 JZ SETR1 ;如果R1为0, R1就置99 DEC R1 LCALL DELAY1 LJMP INT0SHIFTSETR1: MOV R1,#63H;R1置99 LCALL DELAY1 LJMP INT0SHIFTBACK0: RETI;-INT1(回答时间R2调整程序)-INT1SHIFT: MOV A,R2 ;与调节抢答程序一样 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH LCALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 LJMP INT1SHIFTINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H LCALL DELAY1 LJMP INT1SHIFTADD1: INC R2 LCALL DELAY1 LJMP INT1SHIFTDEC1: MOV A,R2 JZ SETR2 DEC R2 LCALL DELAY1 LJMP INT1SHIFTSETR2: MOV R2,#63H ;设置R2为99 LCALL DELAY1 LJMP INT1SHIFTBACK1: RETI;-倒计时程序(抢答倒计时和回答倒计时都跳到改程序)-RERUN: MOV A,R2 ;使用锦囊时重新计时 MOV R6,A CLR 12HCOUNTDOWN: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器COUNT: MOV A,R6 ;R6保存了倒计时的时间 MOV B,#10 DIV AB ;分离个位、十位 MOV 30H,A MOV 31H,B MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H JNC CONTINUE ;大于5s跳到CONTINUE,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,RUNOUT ;1s中0.5s向下运行 CLR 12H LJMP CHECKRUNOUT: CJNE A,#14H,CHECK ;下面是1s的情况,响并显示号数并清R0 SETB 12H MOV A,R6 JZ QUIT ;计时完毕 MOV R0,#00H DEC R6 ;一秒标志减1 LJMP CHECKCONTINUE: MOV A,R0 CJNE A,#14H,CHECK ;如果1s向下运行,否者跳到查停/显示 DEC R6 ;计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT ;如按下停止键退出 JNB 10H,CHECK1 ;只在回答倒计时才有效 LJMP CHEAK3CHECK1: JNB P3.0,RERUN ;判断是否使用锦囊CHEAK3: LCALL DISPLAY JB 10H,ACCOUT ;如果是抢答倒计时,如是抢答允许则查询抢答,否者跳过查询继续倒数 LJMP COUNTACCOUT: MOV A,36H JNB ACC.0,YES1 JNB ACC.1,YES2 JNB ACC.2,YES3 JNB ACC.3,YES4 JNB ACC.4,YES5 JNB ACC.5,YES6 JNB ACC.6, YES7 JNB ACC.7, YES8 LJMP COUNTQUIT: CLR 10H ;如果按下了停止键执行的程序 CLR 12H LJMP INQURY;-正常抢答处理程序-YES1: LCALL WARN MOV A,R2 MOV R6,A ;抢答时间R2送R6 MOV R3,#01H CLR 10H ;因为答题的计时不再查询抢答,所以就锁了抢答 LJMP COUNTDOWNYES2: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#02H CLR 10H LJMP COUNTDOWNYES3: lCALL WARN MOV A,R2 MOV R6,A MOV R3,#03H CLR 10H LJMP COUNTDOWNYES4: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#04H CLR 10H LJMP COUNTDOWNYES5: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#05H CLR 10H LJMP COUNTDOWNYES6: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#06H CLR 10H LJMP COUNTDOWNYES7: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#07H CLR 10H LJMP COUNTDOWNYES8: LCALL WARN MOV A,R2 MOV R6,A MOV R3,#08H CLR 10H LJMP COUNTDOWN;-非法抢答处理程序-ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH ;0.3s向下运行-灭并停响 CLR 12H MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 LJMP CHECK2FLASH: CJNE A,#0CH,CHECK2 ;下面是0.8s的情况,响并显示号数并清R0,重新计数 SETB 12H MOV R0,#00H MOV R3,34H ;取回号数 MOV R5,#0BH MOV R4,#0BH ;显示FF和号数 LJMP CHECK1CHECK2: JNB P3.1,QUIT1 LCALL DISPLAY LJMP HEREQUIT1: CLR 12H CLR 10H LJMP INQURY;-显示程序-DISPLAY:MOV DPTR,#TAB1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出 MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A LCALL DELAY2 MOV DPTR,#TAB2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A LCALL DELAY2 MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A LCALL DELAY2 RETTAB1: DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;共阴数码管显示TAB2: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;-去抖动用到的延时-DELAY: MOV 32H,#12H ;延时4236个机器周期LOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;-加减时间延时-DELAY1: MOV 35H,#08HLOOP0: LCALL DISPLAY DJNZ 35H,LOOP0 RET;-显示用到的延时-DELAY2: MOV 32H,#43H ;延时4236个机器周期LOOP3: MOV 33H,#1EH MOV A,R7 ;每隔6070个机器周期读一次P1口,全为1时继续读,有一个不为1时,转到正常抢答处理 JNZ AA0 ;没读到有效数据时继续转到AA0LOOP2: DJNZ 33H,LOOP2 DJNZ 32H,LOOP3 RET;-读抢答按键数据口程序-AA0: MOV A,P1 ;故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性CJNE A,#0FFH,AA2 ;当不全为1时的数据为有效数据; AA1: MOV 36H,A ;将有效数据送到36H暂存 LJMP LOOP2 AA2: DEC R7 AJMP AA1;-发声程序-WARN: SETB 12H ACALL DELAY1 ACALL DELAY1 CLR 12H ;按键发声 RET;-TO溢出中断(响铃程序)-T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB 12H,OUT;CPL P3.6 ;响铃标志12H为1时候P3.6口使喇叭发出声音O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论