八位竞赛抢答器的设计

上传人:沈*** 文档编号:80803521 上传时间:2022-04-26 格式:DOC 页数:22 大小:405.50KB
返回 下载 相关 举报
八位竞赛抢答器的设计_第1页
第1页 / 共22页
八位竞赛抢答器的设计_第2页
第2页 / 共22页
八位竞赛抢答器的设计_第3页
第3页 / 共22页
点击查看更多>>
资源描述
课程设计论文(设计)题目:八位竞赛抢答器的设计 学 院:贵州大学明德学院 专 业:通 信 工 程班 级:通信082班 学 号:082003111350,082003111336 082003111342,08200311361 学生姓名:倪家醒,邓丽娟 李林林,余韬指导教师:王 许2011年 7 月 14 日目 录摘 要4Abstract5第一章概述6第二章 抢答器的硬件系统设计72.1 方案对比72.1.1 控制器模块对比72.1.2 电源方案的选择72.1.3 抢答器键盘的选择82.2 系统整体方案设计82.3 系统硬件组成9第三章 最小系统与主控模块的设计与实现93.1 AT89C51简介93.2 单片机最小硬件系统的组成简述133.2.1 电源电路143.2.2 时钟电路143.2.3 复位电路153.3 主流程图16第四章 模块的设计与实现174.1 抢答电路的设计174.2 锁存器74HC573174.3 主持人控制电路与扬声器的设计184.4 显示电路的设计19第五章 软件的设计205.1语言选择205.2软件总体设计205.3系统程序21总 结34参考文献36附 录37附录1 主程序37附录2 元件清单38八位竞赛抢答器的设计摘 要随着单子技术的飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念。考虑到需设定限时回答的功能呢个,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示,正常工作时为绿灯,报警或抢答等违规信号时则出现红灯。关键词:AT89C51,抢答器,计数器The design of eight contest responderAbstract Along with the list of the rapid development of technology, the control system based on SCM has been widely used in industry, agriculture, electricity, electronics, intelligent building and other industries, the microcomputer embedded control system as the main and core, instead of the traditional control system of conventional electronic circuits. This design is eight way contest as the basic concept. Taking into account the need to set the time response function, using AT89C51 MCU and peripheral interface of the answering system, the use of single-chip timer / counter timing and counting principle, the software and hardware combination, so that the system can correctly time, while the digital tube able to correctly display the time and answer in the number. By switching the keyboard output, speaker prompted occurred, and a warning light display, normal working hours for lights, alarm or other illegal signal when the answer appears red.Key words: AT89C51,responder,counter第一章 概述数字技术是当前发展最快的学科之一,数字逻辑器件已从20世纪60年代的小规模集成电路集成电路 集成电路是采用半导体制作工艺,在一块较小的单晶硅片上制作上许多晶体管及电阻器、电容器等元器件,并按照多层布线或遂道布线的方法将元器件组合成完整的电子电路。它在电路中用字母IC(也有用文字符号N等)表示。 全文(SSI)发展到目前的中、大规模集成电路(MSI,LSI)及超大规模集成电(VLSI)。相应地,数字逻辑电路逻辑电路 逻辑电路是包含逻辑关系的数字电路, 以二进制为原理、实现数字离散信号的传递,逻辑运算和操作的电路。最基本的逻辑电路是常见的门电路,而最简单的门电路为与电路、或电路和非电路。 全文的设计方法在不断的演变和发展,由原来单一的硬件逻辑设计发展成三个分支,即硬件逻辑设计(中、小规模集成器件)、软件逻辑设计(软件组装的LSI和VSI,如微处理器、单片机单片机 单片机是单片微型计算机(Single-Chip Microcomputer)的简称,是一种将中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)采用超大规模集成电路技术集成到一块硅片上构成的微型计算机系统。 全文等)及兼有二者优点的专用集成电路(ASIC)设计。目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。针对以上情况,本文设计出以AT89C51单片机为核心的八路抢答器。它能根据不同的抢答输入信号,经过单片机的控制并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差及微妙,也可分辨出是哪组优先按下的按键。抢答器主要用于选手做抢答题时,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。传统普通抢答器主要存在一下缺陷:1.在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号,而对没有违规的有效抢答信号不能进行处理,因而使该次抢答过程变成无效。2.当有多个违规抢答时,普通抢答器或采用优先编码电路选择其中一个,或利用抢答电路电子元件的“竞争”选择其中一个。对于或者由于抢答电路制作完毕后电子元件被固定。各路抢答信号的“竞争”能力也被固定,因而本质上也有优先权。普通抢答器存在不公平性。3.当有多个违规抢答时,普通抢答器只能“抓住”其中一个而出现“漏洞”。第二章 抢答器的硬件系统设计2.1 方案对比总的方案来说,可以利用集成芯片电路来控制选手抢答,但有更为精准、公平的控制电路,即51单片来控制电路,给各个选手一个公平竞争的机会。一、用集成芯片通过电路直接控制选手抢答器的按钮,用CT74LS175触发器来连接电路,电路中还包括三个与非门。在这个电路中就需要有很多的配合,比如说选手抢答的限定时间,选手按钮的清零等等,显得比较麻烦。二、用AT89C51单片机来控制电路,简单、方便。最重要的就是写程序,如何通过程序来达到抢答器的作用,利用51单片机来说补充了集成电路中所缺的遗漏,更是在集成电路上更加精准,对选手更加的公平,让选手都站在同一的战线上。故选用此方案。2.1.1 控制器模块对比控制器主要用于个模块控制对显示、抢答、计时等。控制器的选择有以下两种方案:方案一:采用FPGA(现场可编程门列阵)作为系统的控制器。FPGA可以实现各种复制的逻辑功能,规模大,密度高,它将所有期间集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。方案二:采用ATMEL公司的AT89C51作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。基于以上分析拟定方案二。2.1.2 电源方案的选择系统需要多个电源,AT89C51使用5V稳压电源:方案一:采用升压型稳压电路。用两片MC34063芯片分别将3V的电池电压进行直流崭波调压,得到5V的稳压输出。只需使用两节电池,既节约了电池,又减少系统体积重量但该电路供电电流小,供电时间短,无法使相对庞大的系统稳定运作。方案二:采用三端稳压集成78L05得到5V的稳定电压。利用该方法方便简单,工作稳定可靠。综上所述,选择方案二,采用三端稳压器电路。2.1.3 抢答器键盘的选择键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,承建低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。方案一:独立式键盘键盘接口中使用多少根I/O口,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。方案二:行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个交叉点上,设置一个按键中按键的个数是M*N个,这种形式的键盘结构,能够有效的提高单片机系统中I/O的利用率,行列使用与按键输入多的情况。综上所述,使用方案一。2.2 系统整体方案设计本文以AT89C51单片机为核心设计的八路抢答器方案是:l 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 S7表示。l 设置一个系统清除和抢答控制开关S,该开关由主持人控制。l 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。l 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动开始键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。l 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。l 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 2.3 系统硬件组成抢答器同时提供8名选手或8个代表队比赛,分别用8个按钮S1-S8表示。设置一个系统清除和抢答控制按钮,该按钮由主持人控制,抢答器具有所存与显示功能呢个。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始”状态,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。其框图如图2.1所示: AT89C51抢答信号输入主持人控制信号输入LED显示扬声器发音图2.1 系统框图第三章 最小系统与主控模块的设计与实现3.1 AT89C51简介AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机(图3-1)可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数:与MCS-51产品指令系统完全兼容4k字节可重擦写Flash闪速存储器1000次擦写周期全静态操作:0Hz24MHz 三级加密程序存储器1288字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行UART通道低功耗空闲和掉电模式 图3-1 AT89C51单片机功能特性概述: AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚功能说明Vcc:电源电压GND:地P0 口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。FIash编程和程序校验期间,P1接收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRI 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表3-1所示:表 3-1 P3口的第二功能端口引脚第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0()(外中断0)P3.3 INT1()(外中断1)P3.4 T0(定时/计数器0外部输入)P3.5 T1(定时/计数器1外部输入)P3.6 WR()(外部数据存储器写选通)P3.7 RD()(外部数据存储器读选通)P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG(): 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的l6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG())。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN():程序储存允许(PSEN())输出是外部程序存储器的读选通信号,当AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN()有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN()信号不出现。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。3.2 单片机最小硬件系统的组成简述要使单片机工作起来,最基本的电路构成为:1.电源电路:向单片机供电;2.时钟电路:单片机工作的时间基准,决定单片机的工作速度;3.复位电路:确定单片及工作的起始状态,完成单片机的启动过程。连接方式如图3-2所示:图 3-2 最小系统的设计图3.2.1 电源电路在设计电源电路前,因为单片机所工作的范围在4.0-5.5V,所以需要对交流电压220V对其进行转变,下图3-3是最常用的220V输入5V输出的直流稳压电源电路,稳压芯片用通用78L05。图3-3 220V转5V电路图AT89C51单片机的工作电压范围:4.0-5.5V,所以通常给单片机外接5V直流电源。连接方式为如图3-4所示;图 3-4 电源电路GND(20脚):接电源地端;VCC(40脚):接电源+5V端。3.2.2 时钟电路本设计所采用的时钟信号为C51中的内部形式,内部方式实现单片机的时钟电路,利用单片机芯片上提供的反相放大器电路,在XTAL1和XTAL2引脚之间外接振荡器(晶体振荡器或陶瓷振荡器,Crystal or Ceramic Resonator)构成一个自激振荡器,自激振荡器与单片机内部的始终发生器(Clock Generator)构成单片机的时钟电路。如图中,由OSC和电容C1和C2构成了并联谐振回路作为定时元件,振荡源OSC可选用晶体振荡器或陶瓷振荡器,频率为1.212MHz,电容C1、C2为530pF,起频率微调作用。如图3-5所示:图 3-5 时钟电路3.2.3 复位电路在单片机工作过程中,由于某种原因使单片机陷入“死机”状态,或根据需要采用强制手段使程序重新开始执行等等,需要采用按钮开关复位方式。当按钮开关S按下时,+5V电源通过S接入电阻构成的电路网络,设计时使电阻上的分压达到高电平的阀值,就可以使单片机复位。因为我们按动按钮开关使其闭合的时间远远大于单片机复位所用的时间。通常把上电自动复位电路和按钮开关复位电路综合在一起,这样既可以在每一次电源接通时系统复位,也可以满足强制复位的要求。如图3-6所示:图 3-6 复位电路3.3 主流程图一个硬件系统的设计都伴随着软件的设计,本设计具有倒计时功能。首先设置其倒计时时间,在主持人没按键时,显示器显示时间为00,号数为0。当主持人按键开始后,时间开始倒计时,同时八位选手开始抢答,如果哪位选手抢答到后,显示器上将显示这位选手的号数,如果在倒计时完成后都没人抢答,则重新开始,如果有选手抢答到,则灯亮扬声器响并回答问题。如图3-7所示:YNYNNYYY开始读取倒计时时间设置开始抢答主持人按键开始?有键按下?按键处理结束本轮回答?倒计时时间到?超时处理等待图3-7 主流程图第四章 模块的设计与实现4.1 抢答电路的设计最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称直接状态吗,对于这样的编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的按键。键盘接口中使用多少根I/O线,键盘中就有几个按键,本设计键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且按键比较少,键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。如图4.1:图4.1 抢答电路的设计4.2 锁存器74HC57374HC573 跟 LS/AL573 的管脚一样。器件的输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。1脚是输出使能;11脚是锁存使能; D是输入; Q是输出; 是高电平,L是低; /OE是1脚 LE是11脚; /OE 接低电平,使芯片内部数据保持器输出端与芯片8位输出端之间连通; LE 端的作用是通过高低电平控制8位输入与内部数据保持器输入端的连通与断开; 当 LE = 0 时,P0端口的8位数据线与74HC573内部数据保持器的输入端断开; 当 LE = 1 时,P0端口的8位数据线与74HC573内部数据保持器的输入端连通。图4.2 锁存器与单片机的连接4.3 主持人控制电路与扬声器的设计当有信号源从P2.7口输入时,扬声器发出声响,可根据定时器设计发声时间的长短,此信号源可以为抢答开始、抢答时间到、选手正常抢答、选手非法抢答、答题时间到都会同过此扬声器发出一定时间的声响,并且设计了一个LED显示来提示是否为报警信号,当正常信号源来的时候,此灯为绿灯,发出声响,但是如果为报警信号来时,此灯为红灯,并发出声响。同时主持人通过S按键输入信号,提示答题时间开始、清除,扬声器同时发出声响,发出声响的时候优先判断是哪位抢答到答题的机会,并在LED上显示出来,同时显示开始后的时间,此电路设计答题时间为30秒,扬声器响的时间为0.5秒。当主持人清除系统信号的时候,显示器上显示时间为00,选手号数也为0。设计电路如图4.3所示:图4.3主持人控制电路与扬声器的设计4.4 显示电路的设计 本设计采用LED数码管显示,利用软件设计其倒计时功能,当主持人未按键开始抢答时,时间显示数码管显示为00,当开始抢答后,显示为30并开始倒计时,如果在此期间有人按键抢答,则在第三个数码管上显示响应的号数,当然如果出现违规的选手则不能参与本次回答,因为违规的时候会出来二极管LED显示红灯,同时扬声器发出声响,时间大约为0.5秒,如果有人正常按键抢答,则出现绿灯,扬声器也发出声响时间也为0.5秒左右。具体的硬件设计如图4-4所示:图4-4 显示电路硬件图第五章 软件的设计5.1语言选择在目前单片机的发展中,其编程语言主要有C语言和汇编语言。C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。但介于本次程序不是太复杂,所以我们这一组选择的程序采用汇编语言来编写。5.2软件总体设计本程序采用子程序设计,在主程序中调用子程序来完成特定的功能,这样程序会通俗易懂,同时也有利于程序的调试和修改。本程序的程序流程如下:初始化显示FFF开始键按下?加一键按下?减一键按下?正常抢答非法抢答处理显示犯规显示抢答号并倒计时调整抢答时间回答时间程序流程图5.3系统程序P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。OK EQU 20H; 抢答开始标志位RING EQU 22H; 响铃标志位ORG 0000HAJMP MAINORG 0003H ;外部中断0AJMP INT0SUBORG 000BH ;T0中断AJMP TOINTORG 0013H ;外部中断1AJMP INT1SUBORG 001BH ;T1中断AJMP T1INTORG 0040HMAIN: MOV R1, #0FH; 初始欠打时间为15SMOV R2,#0AH; 初始答题时间为10SMOV TMOD,#11H; 设置为定时器T0,T1/模式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.1, NEXTACALL DELAYJB P3.1, NEXT; 去抖动,如果“开始键”按下就向下执行, 否则跳到非法抢答查询ACALL BARK; 按键发声MOV A,R1MOV R6,A; 送R1到R6,因为R1中保存了抢答时间SETB OK;抢答标志位,用于COUNT子程序中判断是否查询抢答MOV R3,0AH;抢答只显示时,灭号数ALMP COUNT; 进入倒计时程序,“查询有效抢答的程序”在 COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8非法抢答处理程序:FALSE1:ACALL BARK; 按键发声MOV R3,#01HALMP ERRORFALSE2:ACALL BARKMOV R3,#02HALMP ERRORFALSE3:ACALL BARKMOV R3,#03HALMP ERRORFALSE4:ACALL BARKMOV R3,#04HALMP ERRORFALSE5:ACALL BARKMOV R3,#05HALMP ERRORFALSE6:ACALL BARKMOV R3,#06HALMP ERRORFALSE7:ACALL BARKMOV R3,#07HALMP ERRORFALSE8:ACALL BARKMOV R3,#08HALMP ERRORINT0(抢答时间R1调整程序):INT0SUB: MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY; 先在两个时间LED上显示R1JNB P3.2,INC0; P3.2为+1s键,如按下跳到INC0JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DEC0JNB P3.0,BACK0; P3.0为+1s键,如按下跳到BACK0AJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了, R1就置0,重新加起MOV R1,#00HACALL DELAY1AJMP INT0SYBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1; 如果R1 为0,R1就置99DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK0: RETIINT1(回答时间R2调整程序):INT0SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY; 先在两个时间LED上显示R1JNB P3.2,INC1; P3.2为+1s键,如按下跳到INC0JNB P3.3,DEC1; P3.3为-1s键,如按下跳到DEC0JNB P3.0,BACK1; P3.0为+1s键,如按下跳到BACK0AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1; 如果不是99,R2加1,如果加到99了, R1就置0,重新加起MOV R2,#00HACALL DELAY1AJMP INT1SYBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2; 如果R2 为0,R2就置99DEC 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 RINGAJMP CHECKFULL: CJNE A,#14H,CHECK; 下面系1s的情况,响并显示号数清R0, 重新计时SETB RINGMOV A,R6JZ QUIT; 计时完毕MOV R0, #00HDEC R6; 一秒标志减1AJMP CHECKLARGER:MOV A,R0CJNE A,#14H,CHECK; 如果1s向下运行,否则跳到查“停/XX 显示”DEC R6; 计时一秒R6自动减1MOV R0,#00HCHECK: JNB P3.0,QUIT; 如按下停止键退出ACALL DISPLAYJB OK,ACCOUT; 如果是抢答倒计时,如是则查询抢答,否则跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNTACCOUT:JNB P1.0, TRUE1JNB P1.1, TRUE2JNB P1.2, TRUE3JNB P1.3, TRUE4JNB P1.4, TRUE5JNB P1.5, TRUE6JNB P1.6, TRUE7JNB P1.7, TRUE8AJMP RECOUNTQUIT: CLR OK; 如果按下了“停止键”执行的程序CLR RINGAJMP START正常抢答处理程序:TRUE1:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#01HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE2:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#02HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE3:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#03HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE4:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#04HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE5:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#05HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE6:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#06HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE7:ACALL BARK; 按键发声MOV A,R2MOV R7,A; 抢答时间R2送R6MOV R3,#02HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTURE8:ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#08HCLR OK; 因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTMOV A,R2MOV R6,AMOV R3,#03#CLR OKAJMP COUNTTRUE4:ACALL BARK;MOV A,R2 MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5:ACALL BANK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6:ACALL BANK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BANK;MOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8:ACALL BANK;MOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;犯规抢答程序;ERROR:MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3; 犯规号数暂存与(34H)HERE: MOV A,R0CJNE A,#0AH,FLASH; 0.5s向下运行-灭并停响CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0AH; 三灯全灭AJMP CHECK1FLASH: CJNE A,#14H,CHECK1; 下面系1s的情况,响并显示号数并清R0,重新计SETB RINGMOV R0,#00HMOV R3,34 H; 取回号数MOV R5,#0BHMOV R4,#0BH; 显示FF和号数AJMP CHECK1CHECK1:JNB P3.0.QUIT1ACALL DISPLAYAJMP HEREQUIT1: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 DELAYRETDAT1: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,71HDELAY1:MOV 35H,#08HLOOPO: ACALL DISPLAYDJNZ 35H,LOOPORET;延时(显示和去抖动用到);DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1:DJNZ 33H,LOOP1DJNZ 32H,LOOPRET发声程序:BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING; 按键发声RET;T0溢出中断(响铃程序);TOINT: MOV TH0,#0ECHMOV TH0,#0FFHJNB RING,OUTCPL P3.6; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音 OUT: RETI;T1溢出中断(计时程序);T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC RORET1END总 结现在开展的竞赛抢答活动越来越多,而在大多数比赛当中都是采用抢答器进行抢答的。虽然市面上的抢答器功能较为齐全,但价钱也相对较贵,在一些小型的比赛当中难以普及。本组设计的思路是使用AT89C51单片机来对信号进行锁存、显示等功能。在比赛当中有按键被按下,在程序的控制下就可以判断是那个按键被按下,并对该按键进行锁定,同时输出到数码管中,显示出是那一位选手抢答成功。当完成了一次抢答的时候,主持人可以通过控制键对上一次的抢答结果进行清零使程序回到初始状态并同时开始下一轮的抢答。此抢答器电路设计原理简单、功耗低、稳定性好、反应速度快和安装方便。由于实现此抢答器所需的硬件只是一块AT89C51芯片、数码管和按键等,所以成本比较低,适用于许多场合。在这一次的课程设计中,我们选择的课题以51单片机为基础。通过复习相关知识,查阅有关资料,并利用所学知识学习新的知识,根据所掌握的知识选择设计方案和所需器件。通过本次设计,提高了我们对以往知识的认证度,也提高了用旧的知识和已有的学习能力学习新知识的能力。与原先的被动的接受知识转换为主动的寻求知识,遇到不懂的地方能够进行小组讨论或者是向老师寻求帮助并指点,这可以说是学习方法上的一个很大的突破。例如,在设计过程中,我们一开始对AT89C51芯片不是很了解,在原有8051单片机的基础上学会了89C51的编程以及其外围电路的设计和连接。通过此次设计熟悉了该协议,并了解了该协议的编程原理,掌握了该芯片的读写原理。还有就是对 PROTEL软件的第一次认识与学习,它包含了电路原理图绘制、模拟电路与数字电路混合信号仿真、多层印制电路板设计(包含印制电路板自动布线)、可编程逻辑器件设计、图表生成、电子表格生成、支持宏操作等功能,并具有Client/Server (客户/服务器)体系结构,是电子设计者的好助手。此外,该设计还用到了电路设计中常用的LED八段数码管显示电路,其中使用了静态显示,在学习新的静态显示时,也让我们复习了动态显示的相关知识。总之,通过这次设计我们大家受益良多。此外,在设计中,我们拟出了不同的方案进行对比,最后选择了单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低的AT89C51作为系统控制器的CPU方案。在程序的编写过程中,根据设计的要求和自己所要增加的功能写出了程序流程图,在此基础上,根据单片的指令系统和芯片的功能写出了相应的程序,然后在进行程序调试和修改,使得能够实现所要求的功能。总之,只要能做到以上几点,我们就能达到既能完成课程设计,又能锻炼自己能力的目的了。因此,我们的设计不仅仅是一个重新学习的过程,而且也是我们动手和动脑能力的培养。另外在设计中通过与王许老师以及小组同学的沟通,学会了团队合作。在此,要感谢学校给于我们这次设计的机会,同时也感王许老师不懈的讲解,感谢同学的帮忙,这一切都为以后走向社会参与社会竞赛奠定了基础。参考文献1 张伟,单片机原理及应用,机械工业出版社,20052 张鑫,单片机原理及应用,电子工业出版社,20053 曹国清,数学电路与逻辑设计中国矿业大学出版社,20044 任致程,经典集成电路400例机械工业出版社,20025 薛栋梁,单片机原理及应用,中国水利水电出版社,20016 吴金戎,沈庆阳等,8051单片机实践与应用,清华大学出版社,2001附 录附录1 主程序附录2 元件清单元件名称元件型号元件大小元件数量单片机 AT89C51 1稳压器 78L05 1锁存器 7
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!