抢答器的设计与制作_第1页
抢答器的设计与制作_第2页
抢答器的设计与制作_第3页
抢答器的设计与制作_第4页
抢答器的设计与制作_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

学号:2009060201综合技能实训报告实训题目:四人抢答器系(部):电子工程系专业:电子信息工程技术班级:09电子工程302学生姓名:指导教师:起止时间:海南软件职业技术学院海南软件职业技术学院综合实训报告摘要抢答器是一种广泛应用于企事业单位和商业部门,为各种知识竞赛、文娱活动提供公正客观快速裁决的一种常用电子设备,也是一种逐渐成型的电子产品,但市面上所售抢答器价格一般较贵且多为小规模集成电路构成,其性能单一,工作起来不够理想。因此,提高抢答器的性能,使其具有更强的功能,使用可靠方便已为抢答器发展的一个方向。随着集成技术和计算机技术的发展,单片机作为其中的一个分支亦于20世纪80年代以来获得了飞速发展,各种新品不断涌现,使单片机的应用更加深入,灵活性也大大增强。本设计是采用单片机设计一款四路多功能电子抢答器。此抢答器除了具有基本的抢答功能以外,还具有答题时间控制、显示分数等功能。它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、实用性强的特点。本设计利用8051系列单片机中的AT89C51为主控芯片及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用按钮做键盘输入,扬声器发生提示。同时系统能够实现:开机后,液晶屏LCD1602第一行显示“YOUYIDIYI”(友谊第一)和第二行显示“BISAIDIER”(比赛第二)的字样同时8只用于渲染气氛的跑马灯循环显示;在抢答中,跑马灯在原位停止,且只有开始后抢答才有效,如果在开始抢答前抢答为无效;答题中主持人可以根据答题者的答题情况对其进行加减分;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,抢答后跑马灯继续显示渲染气氛和对应的发光二极光亮,直至主持人按复位键;抢答时间和回答问题时间倒记时显示,倒计时时间到后扬声器发出提示;答题后主持人可以根据答题情况对答题者进行加减分。关键词:多功能抢答器AT89C51单片机抢答时间答题时间

目录1 绪论 11.1 国内研究现状与存在的问题 11.2 选题意义与目的 12 抢答器的系统概述 32.1 系统设计要点 32.2 系统的主要功能 32.3 系统需求分析 42.4 抢答器的工作流程 42.5 抢答器的工作过程 52.6 器件选型方案及详细清单 63 硬件电路设计 73.1 芯片介绍 73.1.1 主控芯片 73.1.2 锁存器74LS373芯片 93.1.3 串行数据转并行数据74164芯片 93.2 时钟频率电路设计 93.3 复位电路设计 103.4 显示电路设计 113.4.1 数码管显示电路 113.4.2 液晶屏LCD1602显示电路 123.5 跑马灯电路设计 133.6 发声电路 133.7 键盘扫描电路设计 144 软件设计 154.1 跑马灯程序 154.2 数码管显示程序 154.3 报警(发声)程序 164.4 抢答和答题时间调节程序 164.5 复位程序 174.6 液晶屏LCD1602程序 18结束语 19致谢 20参考文献 21附录 22PAGE18绪论当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,比赛中为了准确、公正、直观地判断出第一抢答者,这就要有一种抢答设备作为裁判员,于是抢答器应用而生。抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手,无论是军队还是电视节目中,都可能会举办各种各样的智力竞赛,都会用到抢答器。如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。国内研究现状与存在的问题抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块,而专用集成块的购买又很困难。为适应高校等多代表队单位活动的需要而设计一个多功能抢答器,这种抢答器具有电路简单,元件普通,易于购买等优点,很好地解决了制作者制作困难和难于购买的问题。在国内外已经开始了普遍的应用。随着改革开放事业的不断深入,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。由于抢答器使用频率较低,且制作程序复杂,容易让人对其减少兴致。作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。而且目前多数抢答器存在三个不足之处:第一,现场线路连接复杂。因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。第二,电路复杂。因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。第三,选手抢按成功,但出现没有抢答被记录的问题。选题意义与目的在知识比赛中,特别是做抢答题目的时候,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。怎样来设计抢答器,能使以上问题得以解决?即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题?通过研究并在设计验证后发现,采用单片机技术设计的抢答器与传统的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部。第二,工作性能可靠,抗干扰能力优于传统抢答器,并能够解决以上提出的问题。所以本研究是一个实用的工程设计,具有创新性。通过本次设计,基本掌握51系列单片机的原理,了解简单多功能抢答器组成部分,详细掌握智能抢答器的原理和编程方法,了解单片机类系统的设计基本理念,提高独立思考的能力和编程的逻辑思维能力。同时通过这次综合设计,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。进一步深入了解掌握以单片机为核心控制系统的设计方法及编程方法。抢答器的系统概述系统设计要点系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。系统的主要功能本系统是借用单片机采用模块化设计的四路抢答器,包括液晶屏LCD1062显示、四路抢答按纽、计时(分)显示、提示功能、开始与结束控制按钮、时限设定、各种相关显示调控功能等(根据需要也可另设或多设相关功能)。显示系统,除了有显示计时功能外,还有加了计分功能和人性化的液晶LCD1602第一行显示“YOUYIDIYI”(友谊第一)和第二行显示“BISAIDIER”(比赛第二)的字样功能等;主持人的开始按钮和复位分别做开始与结束控制,根据活动参赛者的层次,对提前抡答者的行为设定为非法或阻隔,若设有非法抢答控制功能时,在主控处带有公示性显示的非法抡答者的代号,对抢答限时及回答问题限时设为倒计时,并有显示提示。系统的主要功能模块方框图如REF_Ref302256712\h图1所示图SEQ图\*ARABIC1系统主要功能模块本系统采用模块化设计的四路抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。一共有四个按键输入,分别对应四路选手的抢答按键。主持人有开始和结束键。在节目开始之前可以修改,抢答时间和选手回答问题的时间设置,原始状态下抢答时间为10s,回答问题时间为60s。通过加键和减键修改上述时间,改完后开始键确定。新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在倒计时间到扬声器发生提示。如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发生。主持人可按键复位,新一轮抢答开始。单片机是整个抢答器的核心,内部电路设计用C语言编写。它完成了时间参数的设定,抢按号码的译码,保存;显示;输出,抢按及答题倒计时功能等。本设计中,有一个共阴的数码管组,四个数码管。其中两个显示时间,一个空位,一个显示抢答号码。主持人依次按下复位键(RESET),开始键后开始抢答。可以抢按,当抢按超过规定时间或答题超过规定时间后数码管显示“0—00”。若有选手在规定时间内抢按成功,再次按下开始键则可以答题,数码管显示抢答时间的同时也显示选手号码。若在按开始键前抢答表示违规,数码管显示“X—00”(X为选手代号)。系统需求分析抢答限定时间和回答问题的时间可以在1~99s设定。液晶屏LCD1602和跑马灯做渲染气氛之用、在抢答开始,有专门的LED灯作为开始信号(灯亮表示开始抢答)。在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效。在抢答后,有效抢答的选手对应的LCD灯亮,表示已成功抢答。可以显示是哪位选手有效抢答和无效抢答,抢答和答题倒计时时间到扬声器发生提示。答题后主持人可以根据答题情况对答题者进行加减分。抢答器的工作流程抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、违例流程等几部分,如REF_Ref302258159\h图2所示,图SEQ图\*ARABIC2抢答器工作流程抢答器的工作过程开机液晶LCD1602第一行显示“YOUYIDIYI”(友谊第一)和第二行显示“BISAIDIER”(比赛第二)的字样同时跑马灯移动,并共阴的数码管组显示“00—10”(10为系统默认的抢答时间10秒),可以通过加时间和减时键来重新设置抢答时间,设定好抢答时间后按开始键确定,共阴的数码管组显示“00—60”(60为系统默认的答题时间60秒)进入答题时间设置状态,设置方法同抢答时间设置。设置好后按开始确定进入系统初始状态;主持人按开始键开始抢答,并数码管开始倒计时和抢答LCD灯亮,作为开始抢答提示信号,若在倒计时期间的第一位选手抢答则视为有效抢答,进入预答题阶段,等待主持人按开始键;这时若主持人按下开始后就可以进入答题阶段,数码管倒计时显示;一旦有有效抢答则对其他选手的抢答进行封锁;抢答和答题的倒计时时间到则扬声器发声提示;答题后主持人可以根据答题情况通过减分键和减分键对答题者进行加减分;在主持人按开始抢答前若有选手按了抢答键,则数码管显示其代号并扬声器发声提示;在进入初始状态后,主持人任何时候按下复位键,则立即进入初始状态;总而言之,本课题利用AT89C51单片机及外围接口实现的抢答系统设计了抢答器,该抢答器增加了新功能、提高了系统的可靠性、简化了电路结构、节约了成本,是一个实用的工程设计。器件选型方案及详细清单微控制器选用ATMAL公司生产的AT89C51,该芯片货源充足,并且价格也比较便宜。如表1所示。表1元器件清单器件名称规格型号数量微处理器AT89C511芯片74LS373674LS1641晶振12MHZ1电容30pF210pF(电解电容)1电阻220Ω211KΩ(滑动变阻器)110KΩ1按钮BUTTON87段数码管组7SEG-MPX4-CC-BLUE17SEG-COM-CAT-BLUE4LCD1602液晶屏LM016L1三极管NPN1扬声器SPEAKER1LEDBLUE8GREEN4YELLOW1硬件电路设计芯片介绍主控芯片本设计中的微控制器选用单片机系列中的ATMAL公司生产的AT89C51,该芯片具有标准易用,货源充足,价格便宜等特点。AT89C51单片机是ATMAL公司89系列单片机的一种具有8位Flash存储器的单片机,是众多由8051单片机加强改进演变而来的系列单片机中最具代表性的一款。它最大特点是片内含有Flash存储器,用途十分广泛,特别是在生产便携式商品,手提式仪器等方面,有着十分广泛的应用[]。其外部结构及引脚如REF_Ref302332601\h图3所示。图SEQ图\*ARABIC3AT89C51外部结构图AT89C51是89系列单片机的标准型,它在内部含有4KB或8KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-24MHZ,有3级程序锁存器,内部含有128-256字节的RAM,有32条可编程I/O口线,2-3个16位定时/计数器,6-8个中断源,通用的串行接口,低电压空闲及电源下降方式。AT89C51单片机主要有以下部件:8051CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口。AT89C51单片机内部由CPU、4KB的FPEROM,128B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的部分是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。为了提高数据处理和位操作功能,片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路的功能。其内部结构如REF_Ref302419666\h图4所示。图SEQ图\*ARABIC4AT89C51内部结构图AT89C51单片机具有特殊功能寄存器,也称专用寄存器,是具有特殊功能的所有寄存器的集合,简称SFR(SpecialFunctionRegister)。特殊功能寄存器共含有22个不同寄存器。它们的地址分配在80H~FFH中,即在RAM地址中。这些寄存器的名称和地址见表1表2AT89C51特殊功能寄存器列表注:带*号的特殊功能寄存器都是可以为寻址的寄存器。符号地址注视*ACC0E0H累加器*B0F0H乘法寄存器*PSW0D0H程序状态字SP81H堆栈指针DPL82H数据存储器指针低8位DPH83H数据存储器指针高8位*IE0A8H中断允许控制器*IP0D8H中断优先控制器*P080H端口0*P190H端口1*P20A0H端口2*P30B0H端口3PCON87H电源控制及波特率选择*SCON98H串行口控制器SBUF99H串行数据缓冲器*TCON88H定时器控制TMOD89H定时器方式选择TL08AH定时器0低8位TL18BH定时器0高8位TH08CH定时器1低8位TH18DH定时器1高8位虽然特殊功能寄存器地址在80H~FFH之中,但在80H~FFH的地址单元中,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的,如果对这些单元进行操作,得到的是一些随机数,而写入则无效。所以,用户编程时不应该将数据写入这些未确定的地址单元,它们是公司留待将来开发新产品时使用的。锁存器74LS373芯片当三态允许控制端OE为低电平时,O0~O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0~O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。图SEQ图\*ARABIC574LS373引脚图串行数据转并行数据74164芯片时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。图SEQ图\*ARABIC674LS164引脚图时钟频率电路设计单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路原理图如REF_Ref302419538\h图7所示。图SEQ图\*ARABIC7时钟电路原理图一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期,其大小是时钟信号频率fosc的倒数。图中时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12μs。复位电路设计计算机在启动运行时都需要复位,复位使中央处理器CPU和系统中的其他器件都处于一种初处理器CPU和系统中的其他器件都处于一种初始状态,并从这个初始状态开始工作。对于MCS-51单片机,在RST复位引脚端接一个电容至+5V和一个电阻至地端,就能实现上电自动复位,如REF_Ref302337868\h图8所示。在加电瞬间,电容通过电阻充电,就在RST引脚上出现一定时间的高电平信号,只要高电平信号时间足够长,就可以使MCS-51单片机有效地复位。图图SEQ图\*ARABIC8上电/手动复位电路MCS-51系列单片机复位后内部各单元的初始状态寄存器初始状态值寄存器初始状态值PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP1、P2、P3、P40FFHSCON00HIPxxx00000BPCON0xxx0000BIE0xx00000BSBUF不定显示电路设计显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。数码管显示电路在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示和静态显示方法。单片机P0口外接两片74LS373锁存器来输出段选码和位选码,通过C语言编程,先让其段选的锁存器打开,位选锁存器关闭,P0口输出段选码,然后打开位选锁存器,关闭段选锁存器,P0口输入段选,这样就可以拓展了I/O口,解决了单片机I/O口不够用的问题。4位七段数码管动态显示电路如REF_Ref302340414\h图9所示图SEQ图\*ARABIC94位共阴极数码管显示电路1位七段数码管静态显示电路如REF_Ref302340933\h图10所示图SEQ图\*ARABIC101位共阴极数码管计分显示电路液晶屏LCD1602显示电路为了获得较好的效果,在本设计中加入了液晶屏LCD1602显示电路,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602识别的是ASCII码,试验可以用ASCII码直接赋值。1602通过D0~D7的8位数据端传输数据和指令。显示模式设置:00110000[0x38]设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:00001DCB,D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)000001NS,N=1(读或写一个字符后地址指针加1&光标加1),N=0(读或写一个字符后地址指针减1&光标减1),S=1且N=1(当写一个字符后,整屏显示左移),S=0当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H),其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。写指令08H是关闭显示,写指令01H显示清屏,写指令06H光标移动设置,写指令0cH显示开及光标设置。图SEQ图\*ARABIC11液晶屏LCD1602显示电路跑马灯电路设计跑马灯由8个LED发光二极管组成,如果把8个LED等直接接在单片机的I/O口上需要占8个I/O口,很浪费资源,所以本设计的跑马灯是由单片的串口来操作,通过串行数据转并行数据芯片74LS164来直接驱动跑马灯,为了防止流过二极管的电路过大,所以在二极管的另一端加上220Ω的电阻。图图SEQ图\*ARABIC12跑马灯电路设计发声电路人耳能听到的声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个I/O口线上的“高”电平或“低”电平,则在该I/O 口线上就能产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。利用三极管的特性,当三极管Vc>Vb.>Ve时三极管工作在放大区使电路的电路和电压放大,达到放大功率的目的,原理图REF_Ref302419502\h图13所示。图SEQ图\*ARABIC13发声电路原理图键盘扫描电路设计键盘是人与单片机打交道的主要设备。关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是消除在按键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。在本文设计中采用了独立键盘的方式,本键盘扫描电路设计中包括选手抢答按键输入电路(四个选手按钮),主持人按键输入电路(一个开始按键、一个复位按键),时间控制电路和计分电路(加一按键、减一按键各一个)键盘电路如REF_Ref302420638\h图14所示图SEQ图\*ARABIC14键盘电路软件设计软件是计算机系统的灵魂,没有软件计算机不能充分发挥其功能,这是软件在计算机中的地位,而在计算机控制系统中,软件也是非常重要的。在四人多功能抢答器系统中,硬件设备的功能是由软件来定义的,如系统要数码管显示字符,通过向数码管输入段选码和位选码程序来完成控制功能,通过软件定义键盘功能,通过编程完成LED数码显示等等,由此可见,软件是控制系统中的一个重要组成部分。本程序通过C语言来编程的,C语言的特点就是可以使你尽量少地对硬件进行操作,具有很强的功能性、结构性和可移植性。跑马灯程序利用单片机的定时器0每50ms中断一次对变量count进行加一,然后在跑马灯子程序程序里查询变量count的值,若变量count的值等于5则清零变量count的值并通过单片的串行口发送数据。在主程序里调用跑马灯程序即可。 ucharn,temp=0x80; if(count==5) { count=0; SBUF=_cror_(temp,n); while(!TI) disp(1,xuanshou_,led_,time_); TI=0; if(++n==8) n=0; }数码管显示程序由于数码管是接在锁存器74LS373上,所以要对其操作是就要开打相应的锁存器,若要在某一位显示字符时,先打开段选锁存器,向数码管输入段选,再关闭段选锁存器打开位选锁存器,向数码管输入位选,然后关闭位选即可显示需要显示的字符。防止段选对位选的干扰,应在输入段选后加一条消影语句P0=led;,由于单片机执行程序速度非常快,通常在显示一个字符后稍作延时。 N2=0; //开段选锁存器 N1=1; //关位选锁存器 P0=table[xuanshou];//显示编号 N1=0; N2=0; P0=led; //消影 N1=0; //关段选锁存器 N2=1; //开位选锁存器 wei_1(); //调用位选子函数 delay(200);//延时 clear(); //清楚位选报警(发声)程序对接在扬声器上的引脚输出“高”,“低”电平的方波,就能听到扬声器发出的声音。在报警时检测是否有复位键按下,若有则退出报警程序。 for(m=0;m<=5000;m++) { if(m%2) disp(1,xuanshou_,0x0f,time_); else disp(1,xuanshou_,0x80,time_); pmd(); if(reset==0) { Reset(); break; } }抢答和答题时间调节程序系统开机后,先要设置抢答和答题时间,当变量a等于0时间设置抢答时间,当变量a等于1时间设置答题时间,先是a等于0进入设置抢答时间,系统检测到“加时”键按下,则系统增加抢答时间,测到“减时”键按下,则系统减少抢答时间,若系统检测到“开始”键按下,则a加1等于1进入答题时间设置,设置方法同抢答时间设置,系统再次检测到“开始”键按下则退出设置。while(1) { if(i%50) { disp(0,xuanshou_,led_,Time[a]); } else { disp(1,xuanshou_,led_,Time[a]); delay(100); } if(add==0) Time[a]++; if(sub==0) Time[a]--; if(start==0) a++; if(++i==51) i=0; P1=0xff; while(P1!=0xff) { P1=0xff; disp(1,xuanshou_,led_,Time[a]); pmd(); } if(a==2) break; }复位程序对某些变量和显示初始化start_=0; suoding=0; xuanshou_=0; led_=0x0f; time_=Time[0]; t=0; suoding=0; qd=0; count=0; P0=table[fen[0]]; N1=N2=N3=N4=N5=N6=0; N3=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[1]]; N1=N2=N3=N4=N5=N6=0; N4=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[2]]; N1=N2=N3=N4=N5=N6=0; N5=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[3]]; N1=N2=N3=N4=N5=N6=0; N6=1; LED=0; N1=N2=N3=N4=N5=N6=0;液晶屏LCD1602程序液晶屏LCD1602写程序分为写指令和写数据,写指令是写一些控制命令;写数据是写要显示的数据。在程序里他们的唯一区别是写指令时rs=0;而写数据时rs=1; rs=0; en=0或1;(0表示写指令,1表示写数据) P2=x; delay(10); en=1; delay(10); en=0; rs=0; 结束语我在这一次抢答器的设计过程中,很是受益匪浅。通过对自己在大学两年时间里所学的知识的回顾并充分发挥对所学知识的理解和对毕业设计的思考及书面表达能力,最终完成了。这为自己今后进一步深化学习,积累了一定宝贵的经验。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。通过这次课程设计我发现,只有理论水平提高了,才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实训十分有意义,我获得很深刻的经验,通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。由于时间的限制有些功能还不是很完善,如果时间允许还可以将设计的扩展功能增强:1、把四路拓展成八路或更多路抢答。2、可以设计声控装置,在主持人说开始时,系统自动完成清零并开始计时的功能。3、将抢答按键用无线实现,如红外线,使抢答者可以远距离进行抢答,并简化按键模块的线路布置。附录Protues仿真图C程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbitstart=P1^4;sbitreset=P1^5;sbitadd=P1^6;sbitsub=P1^7;sbitN1=P3^2;sbitN2=P3^3;sbitN3=P3^4;sbitN4=P3^5;sbitN5=P3^6;sbitN6=P3^7;sbitL1=P0^0;sbitL2=P0^1;sbitL3=P0^2;sbitL4=P0^3;sbitrs=P0^4;sbiten=P0^5;sbitLED=P0^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};ucharcodelcd_1[]="YOUYIDIYI";ucharcodelcd_2[]="BISAIDIER";ucharTime[2]={10,60};charfen[4]={0,0,0,0};ucharxuanshou_,led_;chartime_; uchart,count;bitstart_,suoding,qd;voiddelay(uchara) //延时{ ucharb; for(b=0;b<=50;b++) for(;a>0;a--);}voidwei_1() //位选1{ L1=0; L2=1; L3=1; L4=1;}voidwei_2() //位选2{ L1=1; L2=0; L3=1; L4=1;}voidwei_3() //位选3{ L1=1; L2=1; L3=0; L4=1;}voidwei_4() //位选4{ L1=1; L2=1; L3=1; L4=0;}voidclear() //清除位选{ L1=1; L2=1; L3=1; L4=1;}voidlcd_com(ucharx)//LCD1602写指令{ N1=0; N2=1; rs=0; en=0; P2=x; delay(10); en=1; delay(10); en=0; rs=0; N1=0; N2=0; }voidlcd_data(ucharx) //LCD1602写数据{ N1=0; N2=1; rs=1; en=0; P2=x; delay(10); en=1; delay(10); en=0; rs=0; N1=0; N2=0; }voiddisp(bitwei,ucharxuanshou,ucharled,uchartime) //显示{ N2=0; //开段选锁存器 N1=1; //关位选锁存器 P0=table[xuanshou];//显示编号 N1=0; N2=0; P0=led; //消影 N1=0; //关段选锁存器 N2=1; //开位选锁存器 wei_1(); //调用位选子函数 delay(200);//延时 clear(); //清楚位选 N2=0; N1=1; P0=table[10]; N1=0; N2=0; P0=led; N1=0; N2=1; wei_2(); delay(200); clear(); N2=0; N1=1; P0=table[time/10]; N1=0; N2=0; P0=led; N1=0; N2=1; wei_3(); delay(200); clear(); if(wei) { N2=0; N1=1; P0=table[time%10]; N1=0; N2=0; P0=led; N1=0; N2=1; wei_4(); delay(200); clear(); }}voidpmd() //跑马灯{ ucharn,temp=0x80; if(count==5) { count=0; SBUF=_cror_(temp,n); while(!TI) disp(1,xuanshou_,led_,time_); TI=0; if(++n==8) n=0; }}voidReset() //复位{ start_=0; suoding=0; xuanshou_=0; led_=0x0f; time_=Time[0]; t=0; suoding=0; qd=0; count=0; P0=table[fen[0]]; N1=N2=N3=N4=N5=N6=0; N3=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[1]]; N1=N2=N3=N4=N5=N6=0; N4=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[2]]; N1=N2=N3=N4=N5=N6=0; N5=1; LED=0; N1=N2=N3=N4=N5=N6=0; P0=table[fen[3]]; N1=N2=N3=N4=N5=N6=0; N6=1; LED=0; N1=N2=N3=N4=N5=N6=0; }voidbaojing() //报警{ uintm; N1=0; N2=1; for(m=0;m<=5000;m++) { if(m%2) disp(1,xuanshou_,0x0f,time_); else disp(1,xuanshou_,0x80,time_); pmd(); if(reset==0) { Reset(); break; } }}voidinti() //初始化{ uchari=0; uchara=0; EA=1; ET0=1; SCON=0x00; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; xuanshou_=0; led_=0x0f; N1=N2=N3=N4=N5=N6=0; N3=1; P0=table[fen[0]]; N1=N2=N3=N4=N5=N6=0; N1=N2=N3=N4=N5=N6=0; N4=1; P0=table[fen[1]]; N1=N2=N3=N4=N5=N6=0; N1=N2=N3=N4=N5=N6=0; N5=1; P0=table[fen[2]]; N1=N2=N3=N4=N5=N6=0; N1=N2=N3=N4=N5=N6=0; N6=1; P0=table[fen[3]]; N1=N2=N3=N4=N5=N6=0; lcd_com(0x38); lcd_com(0x0c); lcd_com(0x06); lcd_com(0x01); delay(30); lcd_com(0x80+0x03); while(lcd_1[i]!='\0') { lcd_data(lcd_1[i]); i++; } lcd_com(0x80+0x43); i=0; while(lcd_2[i]!='\0') { lcd_data(lcd_2[i]); i++; } //***************设置抢答和答题时间***************// while(1) { if(i%50) { disp(0,xuanshou_,led_,Time[a]); } else { disp(1,xuanshou_,led_,Time[a]); delay(100); } if(add==0) Time[a]++; if(sub==0) Time[a]--; if(start==0) a++; if(++i==51) i=0; P1=0xff; while(P1!=0xff) { P1=0xff; disp(1,xuanshou_,led_,Time[a]); pmd(); } if(a==2) break; }//*****************************************// time_=Time[0];}voidmain() //主函数{ ucharp1_data; inti(); TR0=1; while(1) { pmd(); //***********************抢答部分***************************// P1=0xff; if(P1!=0xff) { disp(1,xuanshou_,led_,time_); if(P1!=0xff) { p1_data=P1; switch(p1_data) { case0xfe: if(suoding==0) { P0=table[fen[0]]; N1=N2=0; N3=1; LED=1; N1=N2=N3=0; if(start_) { t=0; suoding=1; start_=0; led_=0x0f; xuanshou_=1; //1号抢答 } else { t=0; suoding=1; start_=0; xuanshou_=1; //1号犯规 baojing(); } } break; case0xfd: if(suoding==0) { P0=table[fen[1]]; N1=N2=0; N4=1; LED=1; N1=N2=N4=0; if(start_) { t=0; suoding=1; start_=0; led_=0x0f; xuanshou_=2; //2号抢答 } else { t=0; suoding=1; start_=0; xuanshou_=2; //2号犯规 baojing(); } } break; case0xfb: if(suoding==0) { P0=table[fen[2]]; N1=N2=0; N5=1; LED=1; N1=N2=N5=0; if(start_) { t=0; suoding=1; start_=0; led_=0x0f; xuanshou_=3; //3号抢答 } else { t=0; suoding=1; start_=0; xuanshou_=3; //3号犯规 baojing(); } } break; case0xf7: if(suoding==0) { P0=table[fen[3]]; N1=N2=0; N6=1; LED=1; N1=N2=N6=0; if(start_) { t=0; suoding=1; start_=0; led_=0x0f; xuanshou_=4; //4号抢答 } else { t=0; suoding=1; start_=0; xuanshou_=4; //4号犯规 baojing(); } } break; case0xef: if(suoding==0) if(qd==0) { qd=1; start_=1; //抢答开始 led_=0x4f; time_=Time[0]; } if(suoding==1) if(qd==1) { //答题开始 qd=0; start_=1; led_=0x0f; time_=Time[1]; } break; case0xdf:Reset();break;//复位 case0xbf: //加分 if(suoding&&!qd) { switch(xuanshou_) { case1: if(++fen[0]==10) fe

温馨提示

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

评论

0/150

提交评论