《八路抢答器报告.doc》由会员分享,可在线阅读,更多相关《八路抢答器报告.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、绪论工厂、学校和电视台等单位常举办各种智力竞赛, 抢答器是必要设备。在我校举行的各种竞赛中我们经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。现在就本次课设的机会制作一个低成本的八路数显抢答器。 单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的
2、提出和普遍接受及应用。51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用是非常重要的。本次课程设计的内容是使用89C51RC单片机最小系统设计抢答电路系统,系统以单片机为主控单元,主要用于对抢答电路的控制。1.设计内容及要求 1.1设计目的 定时电路是数字系统中基本的单元电路,它主要由计数器和振荡器组成。在实际工作中,定时器的应用场合很多。通过本次设计:1.学习数字电路中的RS触发器、单稳态触发器、时钟发生器及其计数、译码显示电路等单元电路的综合应用。2.熟悉智力竞赛抢答电路的工作原理。
3、3.了解数字电路的设计,仿真和故障排除方法。、1.2.设计任务及主要技术指标 可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个抢答按钮,按钮的编号与选手的编号相对应。给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其它选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。 抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。当节目主持人启动“开始”键后,
4、要求定时器立即进行减计时,并用显示器进行显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。 如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。2 电路工作原理分析、方案论证和确定2.1电路工作原理框图分析2.1.1方案一 如图1所示为总体方框图。其工作原理为:接通电源后,主持人将开关拨到清零状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置;开始状态
5、,宣布开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作清除和开始状态开关。图1 智力抢答器的电路方框图 若直接采用单元电路设计频率计显然电路相当复杂。考虑电路的简易性和节约成本的原则,选择单片机作为核心器件,采用模块化布局,在其最小系统上进行扩展。如图2所示。图2单片机电路方框图2.2电路工作原理分析2.2.1方案一的工作原理 设计电路如图2所示。电路选用优先编码器 74LS148 和锁存器 74LS297 来完成。该电路
6、主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号(显示电路采用七段数字数码显示管);二是禁止其他选手按键,其按键操作无效。工作过程:开关S置于清除端时,RS触发器的 R、S端均为0,4个触发器输出置0,使74LS148的优先编码工作标志端(图中5号端)0,使之处于工作状态。当开关S置于开始时,抢答器处于等待工作状态,当有选手将抢答按键按下时(如按下S5),74LS148的输出经RS锁存后,CTR=1,RBO(图中4端) =1,七段显示电路74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。此外,CTR,使74LS148 优先编码工作标
7、志端(图中5号端),处于禁止状态,封锁其他按键的输入。当按键松开即按下时,74LS148的 此时由于仍为CTR,使优先编码工作标志端(图中5号端),所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将S开关重新置“清除”然后再进行下一轮抢答。74LS148为8线3线优先编码器,如图3所示图3 数字抢答电路 我们可以从其中的上述抢答电路看出这是对原理框图中一部分的控制电路即如图4所示。图4上述抢答电路部分方框图2.2.2方案二的工作原理1.主要由单片机最小工作电路、显示电路组成,和其它外围电路。基中单片机是各各电路的核心,起到组织控制的作
8、用。2.硬件组成及所需元件:单片机采用 AT89C51。外围接上震荡电路,复位电路、数码管、按钮及扬声器。3.P3.0 和 P3.1 由裁判控制,分别是抢答停止和开始键。P1.0-P1.7是 8 组抢答的输入口,P2.0-P2.2 口 为 数 码 管 的 段 选 口 , 位 选 口 用 的 是 P0.0-P0.6 口输出, P3.3-P3.6 为抢答和回答计时调整,并且能够给实现加1和减1等操作。2.3电路的确定方案一采用出数字芯片,比较浅显易懂,但实际操作的可能性却不强,原因有以下几点:1. 数字芯片功能不稳定,易受干扰信号的影响,最终影响功能的实现。2. 有数字芯片构成的电路相对于单片机构
9、成的电路显得复杂很多。对于实际焊接电路板有很大的影响,布线复杂易出错。3. 单片机实现其功能简单易操作,而且经济。综上所述采用单片机电路实现八路数字抢答器功能。其总体电路如图5所示。图5 整机电路图3 硬件电路的单元电路设计参数计算及器件选择3.1单元电路3.1.1外部晶体振荡电路 单片机的时钟信号用来提供单片机内部各种操作的时间基准,时钟电路用来产生单片机工作所需要的时钟信号。单片机内部有一个高增益的反向放大器,其输入端X1和X2用于外接晶体和电容,以构成自激振荡器,其发出的脉冲直接送入内部的时钟电路。外接电路如图6, 单片机内部有一个用于构成振荡器的高增益反相放大器,其输入端:XTAL1,
10、输出端:XTAL2。振荡器的工作频率一般在1.212MHZ之间,用晶振作定时控制元件。然后用晶振和电容构成谐振电路。C1和C2虽然没有严格要求,但电容的大小影响振荡器的稳定性和起振的快速性,通常选择范围为1030PF。图6 单片机晶振电路3.1.2复位电路 外部中断和内部中断并存,单片机有硬件复位端,只要输入持续 4 个机器周期的高电平即可实现复位。硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,应为本设计功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位。只能用软复位。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序初始值。复位电路采用图7所示:
11、图7 单片机复位电路3.1.3控制电路与选手抢答清零开关开始抢答时间调整开关图8 控制电路图8为主持人控制开关按钮,控制抢答电路。图9为选手抢答电路。图9 选手抢答电路3.1.4显示电路 采用七段码 7SEG-MPX4-CC 显示,它是共阴极的由高电平点亮。如图11所示: 图11 数码显示电路3.2器件的选择 AT89C51 单片机由微处理器,存储器,I/O 口以及特殊功能寄存器 SFR 等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为 4KB,片内数据存储器为 128 个字节。89C51 单片机有 4个 8 位的并行 I/O 口:P0 口,P1
12、口,P2 口和 P3 口。各个接口均由接口锁存器,输出驱动器,和输入缓冲器组成。P1 口是唯一的单功能口,仅能用作通用的数据输入/输出口。P3 口是双功能口除了具有数据输入/输出功能外,每条接口还具有不同的第二功能,如 P3.0 是串行输入口线,P3.1 口是串行输出口线。在需要外部程序存储器和数据存储器扩展时,P0 可作为分时复用的低 8 位地址/数据总线,P2 口可作为高 8 位的地址总线。P3 口也可作为 AT89C51 的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。 图12 AT89s52的管脚图 图13 74LS04的管脚图 图13为与非门的管脚图,图14为八输入与非门
13、的管脚图; 图14 74LS30的管脚图 4.系统软件的设计4.1总体设计思路首先先要初始化程序,初始化程序主要是对定时器和外部中断进行初始化,然后进入查询程序在查询程序中来判断开始键,调整键,8个选手的按键是否按下,如果没有按下则返回开始部分重新查询。抢答时间或回答时间调整键按下后则进入调整模式,将存储抢答或回答时间提出来并在LED上显示。然后判断加1,减1,停止键是否按下,如果按下加1或减1的操作则相应的对存储抢答或回答时间的寄存器进行加1或减1。如果按下停止键则返回主程序,继续查询。如果在查询程序中按下8个选手的按钮,则表示犯规,这时候进入犯规程序段,通过对P1进行逐位扫描,得到按下的键
14、,将其对应的选手号显示在LED显示器上,并且让蜂鸣器响起。LED不断闪烁,直到按下停止键。返回主程序。如果按下开始键,则进入正常抢答主程序。开始进入倒计时程序,将存储倒计时秒数的寄存器的内容,放到专门存放倒计时程序的寄存器中。根据50MS定时器的累加得到1秒的时间。当运行一秒后,则将倒计时时间减1,在最后5秒的时候,要提出报警,将蜂鸣器0.6秒分,前0.3秒响,后0.3秒 不响,倒计时完毕后,返回查询程序。如果此时有按键按下,则对P1口进行逐位检查,把按下的键的号通过显示程序显示在LED显示器上,并把存放回答时间的寄存器的内容放到倒计时有的寄存器中,开始倒计时,倒最后5秒时,也给于蜂鸣器的警告
15、。根据设计工作状态可以划分为:1.调整时间,任务:等待清零2.计时开始,任务:等待按键3.计时终止,任务:等待清零4.计时临近,任务:报警,等待按键或者时间到5.空闲,任务:防止非法按键,可以进入调整时间态,或者计时开始状态,或者误按状态6.误按状态,任务:等待清零根据设计要求,可制定一张抢答器的状态切换表,如下表1所示。可按照该表进行抢答电路的各种状态的显示,并要求在数码管上显示抢答时间和选手号码,需要报警时喇叭发出报警。表1 抢答器电路功能转换电路工作状态任务/ 输入驱动事件数码管的显示(右)蜂鸣备注调整时间等待主持人侧按键所设时间无计时开始等待选手按键减计时短声,0.5s计时终止等待选手
16、按键有答,显示当时计时无答,显示FF 无分两种情况计时临近等待选手按键计时数值连续声响空闲等待选手按键(非法按键;等开始;可以进调整态)无无清零初始化两种情况误按等待清零选手编号持续报警 4.2程序流程图图15 单片机实现抢答电路的流程图 4.3整机程序代码源程序代码如下:OK EQU 20H ;抢答开始标志位 RING EQU 22H ;响铃标志位 DATA0 EQU 36H ;抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 0003H AJMP INTT0 ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT ORG 0040HMAIN
17、: MOV R1,#20 ;初设抢答时间为20s MOV R2,#30 ;初设答题时间为30s mov 38h,#60 ;启用锦囊时间从60s倒计时 MOV TMOD,#11H ;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH ;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 ;允许二个中断,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0 ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了; =
18、查询程序= START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未开始抢答时候显示FFF JNB P3.3,SELSUB0 JNB P3.4,TZ3 ;倒计时调整 JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT ;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 SETB EX0 ;开放INT0 ACALL BARK ;按键发声 MOV A,R1 MOV R6,A ;送R1-R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位,在使用锦囊时用作判断
19、是抢答倒计时还是回答倒计时 MOV R3,#0AH ;抢答只显示计时,灭号数 AJMP COUNT ;进入倒计时程序,查询有效抢答的序在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP START TZ1: AJMP FALSE7TZ2: AJMP FALSE8TZ3: AJMP SELSUB1;=非法抢答处理程序=FALSE1: MOV R3,#01H AJMP E
20、RRORFALSE2: MOV R3,#02H AJMP ERRORFALSE3: MOV R3,#03H AJMP ERRORFALSE4: MOV R3,#04H AJMP ERRORFALSE5: MOV R3,#05H AJMP ERRORFALSE6: MOV R3,#06H AJMP ERRORFALSE7: MOV R3,#07H AJMP ERRORFALSE8: MOV R3,#08H AJMP ERROR;=SELSUB0(抢答时间R1调整程序)=;= SELSUB0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,
21、#0AH ACALL DISPLAY ;先在两个时间LED上显示R1 JNB P3.5,INC0 ;P3.5为+1s键,如按下跳到INCO JNB P3.6,DEC0 ;P3.6为-1s键,如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键,如按下跳到BACKO AJMP SELSUB0INC0: MOV A,R1 CJNE A,#63H,ADD0 2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP SELSUB0ADD0: INC R1 ACALL DELAY1 AJMP SELSUB0DEC0: MOV A,R1 JZ
22、 SETR1 ;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP SELSUB0SETR1: MOV R1,#63H ACALL DELAY1 AJMP SELSUB0BACK0: AJMP START;=SELSUB1(回答时间R2调整程序)= SELSUB1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.5,INC1 JNB P3.6,DEC1 JNB P3.1,BACK1 AJMP SELSUB1INC1: MOV A,R2 CJNE A,#63
23、H,ADD1 MOV R2,#00H ACALL DELAY1AJMP SELSUB1ADD1: INC R2 ACALL DELAY1 AJMP SELSUB1DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP SELSUB1SETR2: MOV R2,#63H ACALL DELAY1 AJMP SELSUB1BACK1: AJMP START;=启用锦囊程序=REPEAT:MOV A,38h ;使用锦囊时重新计时 MOV R6,A CLR RING ;当倒计时进入最后5秒的时候,启用锦囊能消除蜂鸣;=倒计时程序(抢答倒计时和回答倒计时都跳到改
24、程序)= COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器RECOUNT: MOV A,R6 ;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 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
25、 ;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK ;下面是1s的情况,响并显示号数并清R0,重新计 SETB RING MOV A,R6 JZ QUIT ;计时完毕 MOV R0,#00H DEC R6 ;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK ;如果1s向下运行,否者跳到查停/显示 DEC R6 ;计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NE
26、XTTCHECKK:JNB P3.0,REPEAT ;判断是否使用锦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ7 JNB ACC.7,TZ8 AJMP RECOUNTTZ7: AJMP TRUE7TZ8: AJMP
27、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 COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACA
28、LL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CL
29、R OKAJMP COUNT;= =犯规抢答程序=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 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 ;取回号数 MO
30、V R5,#0BH MOV R4,#0BH ;显示FF和号数 AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: 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 DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,
31、A ACALL DELAY MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJ
32、NZ 35H,LOOP0 RET;=延时(显示和去抖动用到)= DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=发声程序=BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING ;按键发声 RET;=TO溢出中断(响铃程序)= T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.7 ;RING标志位为1时候P3.7口不断取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断
33、(计时程序)= T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI;=INTT0中断服务程序=INTT0:MOV DATA0,P1 CLR EX0 RETI END5.系统仿真与源程序代码系统仿真采用的软件为PROTUCE,采用本软件的原因是,仿真效果好,添加代码方便能够很好的显示出结果。库里面有很多仿真的控件,能够非常方便的给我们使用,所以这里采用PROTUCE软件,来进行本实例的仿真。按照设计的硬件电路图在protues中构建好电路图,导入源代码程序,进行仿真,观察仿真结果。如图16、17所示: 图16 支持人开始按下开关 图17 抢答时间到报警有选
34、手进行抢答后,例如六号选手开始开始抢答,数码管显示六号选手,并且进入答题时间倒计时,时间快结束时候,报警器从倒数五秒开始进行报警。如图18 19 所示: 图18 六号抢答 图19 六号抢答时间到按照设计还可以对抢答时间进行调整,还可以对答题时间调整,如图20所示,调整时间开关,左一为抢答时间,左二为答题时间,其余为加一减一开关 图20 调整时间通过仿真可以看出,电路在仿真条件下基本符合设计要求,这说明所设计的硬件电路和程序在理论上符合设计要求,因此可以进行实物搭建与调试,在实际电路中检验电路的工作状态是否与设计要求相符。 6.电路安装与调试步骤电子电路调试技术包括调整和测试两部分。调整主要是对电路参数的调整,如对电阻、电容和电感等,以及机械部分进行调整,使电路达到预定的功能和性能要求;测试主要是对电路的各项技术指标和功能进行测量与试验,并与设计的性能指标进行比较,以确定电路是否合格。电路测试是电路调整的依据,又是检验结论的判断依据。6.1硬件调试 1.通电观察:通电后不要急于测量电气指标,而要观察电路有无异常现象,例如有无冒烟现象,有无异常气味,手摸集成电路外封装,是否发烫等。如果出现异常现象,应立即关断电源,待排除故障后再通电。 2.静态调试:静态调试一般是指在不加输入信号,或只加固定的电平