八位抢答器课设.docx
- 文档编号:11361163
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:20
- 大小:132.41KB
八位抢答器课设.docx
《八位抢答器课设.docx》由会员分享,可在线阅读,更多相关《八位抢答器课设.docx(20页珍藏版)》请在冰豆网上搜索。
八位抢答器课设
电子技术课程设计报告
题目:
八位智力竞赛抢答器设计
专业:
生产过程自动化
班级:
学号:
姓名:
指导教师:
设计日期:
摘要:
八位智力竞赛抢答器是一个可供八个参赛组进行智力竞赛的电气装置,该装置由主体电路与扩展电路组成。
优先编码电路、锁存器、译码电路将参赛组的输入信号在显示器上输出;用控制电路的主持人开关启动报警电路,以上两部分组成主体电路、通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
本文详细介绍了抢答器的设计方案、功能、及在设计过程中所做的改进。
关键字:
抢答电器定时电器报警电器时序电器
一、设计目的作用
1、明确设计任务和要求,了解数字电子技术的基本应用过程及领域。
2、理解抢答器的设计原理、参考电路。
3、理解抢答器基本电路的构成原理及分析方法。
4、掌握抢答器的装备及调试方法。
5、理解抢答器常用元器件的工作原理、特性、主要参数及应用。
二、设计要求
1、抢答器同时供8名选手比赛,分别用8个按钮S1S2S3S4S5S6S7S8表示;
2、设置一个系统清除G和抢答控制开关S,该开关由主持人控制;
3、抢答器具有第一抢答信号鉴别与锁存功能,抢答成功后,显示组别、发出声响;
4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒);
5、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止;
6、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示0。
三、设计的具体实现
1、系统概述
本设计是以八路抢答器为基本理念。
考虑到需设定限时回答的功能利用89S51单片机及外接口实现的抢答器系统,利用单片机的定时器/计时器实现定时和计数的功能,将软硬件结合起来,使得系统能正常的进行计时,同时使数码管能够正确的显示时间。
用开关键盘输出,扬声器发声提示。
同时系统能够实现:
在枪答中只有开始后抢答才有效,如果在开始抢答前抢答无效;满时后系统计时自动复位,主控强制复位,按键锁定,在这种状态下,按键无效。
1.1抢答器的需求分析
1.在抢答器中,只有开始后抢答才有效,如果在开始抢答前抢答为无效。
2.抢答限定时间和回答问题的时间可是在1—99秒设定。
3.可以显示是哪位选手有效抢答,正确按键后有蜂鸣器鸣叫提示。
4.抢答时间和回答问题时间倒计时显示,时间完后系统自动复位。
5.按键锁定,在有效状态下,按键无效非法。
1.2工作原理及流程:
根据本实验设计的功能要求,本实验电路由抢答电路、译码显示电路、主持人控制电路、定时电路、报警电路组成。
通过复位按键,电路进入就绪准备状态。
根据具体情况,可以通过“JIAYI”和”JIANYI”两个按键,将抢答时间设定在(0—99S)之间,然后按下开始抢答按键开始抢答。
按下开始抢答键同时蜂鸣器鸣叫,数码管显示时间,进入倒计时状态和抢答状态。
在电路中“S1-S8”为8路抢答器的8个按键,当有按键按下,程序锁定信号,从P2口输出抢答者号码的七段码值,经驱动,送到码管显示,并封锁键盘,数码管显示答题时间倒计时,禁止其他人按键的输入,从而实现了抢答的功能。
当抢答时间结束,仍然没有抢答键按下,则产生已经超时的报警信号,抢答结束。
当要进行下一次的抢答时,首先先按一下复位键,电路复位,进行下一次的就绪状态。
然后重复抢答操作。
1.3功能模块划分:
2、单元电路设计与分析
2.1抢答器模块的设计
抢答器具有第一强大信号的鉴别、数据锁存、显示的功能。
每名选手有一个抢答按钮,按钮的编号与选手的编号相对应,抢答开始后,某抢答按钮被按下,电路具备自锁功能将信号锁定,禁止其他选手再抢答,优先抢答选手信息一直保持到启动键再次被按下,将系统清0为止。
同时,在数码管上显示该选手的编号,且扬声器发出音响提示。
工作原理:
接通电源后,开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灯灭,定时器显示设定时间;开关置“开始”状态,抢答器工作开始。
定时器倒计时,扬声器给出音响提示。
选手在设定的时间内抢答。
抢答器完成:
优先判断、编号锁存、编号显示,扬声器提示。
抢答结束后,定时器停止、禁止二次抢答、定时器显示答题倒计时
2.2报警电路模块分析
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能产生一定频率的声音,若再利用延时程序
控制时间,就能改变发声时间长短。
2.3时钟频率电路的设计
时钟电路时计算机的心脏,它控制着计算机的工作节奏。
MCS-51单片机允许的时钟频率是因型号而异的。
晶振的选择:
6MHZ的晶振,其机器周期是2us。
12MHZ的晶振,其机器周期是1us,也就是说在执行同一条指令时用6MHZ的晶振所用的时间是12MHZ晶振的两倍。
为了提高整个系统的性能我选择了12MHZ的晶振。
晶振方式的选择:
内部振荡方式,MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。
这样就构成了内部振荡方式。
外部振荡方式是把已有的时钟信号引入单片机内。
这种方式适合用来使单片机的时钟与外部信号一致。
在我的这个设计中没有也无需与外部时钟信号一致,所以我选择了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
晶振我选择了12MHZ,相对于6MHZ的晶振,整个系统的运行速度更快了。
电容C1、C2起稳定振荡频率,快速起振的作用,电容值我选择了30pF。
内部振荡方式所得的时钟信号稳定性高。
在单片机内部有一个时钟振荡电路,只需外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
一般选用石英晶体振荡器。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数。
如时钟频率为12MHZ,即f=12MHZ,则时钟周期为1/12us。
四、总结
整个设计通过了软件和硬件上的调整、仿真。
我想着对于我自己以后的学习和工作都会有很大的帮助的。
在这次设计中遇到了很多实际性的问题,在实际设计中才发现、书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。
通过这次设计我也发现自己的很多不足之处,在设计过程中我发现自己考虑问题不是很全面,自己的专业知识掌握的很不牢固,在所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作学习中得到改善。
五、附录
总电路图
5.1AT89S51的功能
1.AT89S51特殊功能寄存器
特殊功能寄存器也称为专用寄存器,是具有特殊功能的所有寄存器的集合,简称SFR。
特殊功能寄存器共有22个并不同寄存器。
他们的地址分配在80H—FFH中,即在RAM中。
2.AT89S51单片机内部结构
AT89S51单片机内部由CPU、4KB的FPROM,1288的RAM,两个16位的定时、计数器T0和T1,4个8位的I/O端P0、P1、P2、P3等组成。
单片微机内部最核心的部分是CPU,CPU主要功能是产生各种控制信号,控制存储器、输入|输出端口的数据传输、数据的算术运算、逻辑运算以及位操作等,CPU按其功能可分为运算器和控制器两部分。
控制器由程序计数器PC、指令存储器、指令译码器、实时控制与条件转移逻辑电路等组成。
它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。
运算器由算术编辑器部件ALU累加器ACC、暂存器、程序状态寄存器PSW,BCD码运算整电路等组成。
5.2总程序:
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#30;初设抢答时间为30s
MOVR2,#60;初设答题时间为60s
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
;=====查询程序=====
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JBP3.0,NEXT;ddddddd
ACALLDELAY
JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答
MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号
MOVR3,#0AH;抢答只显示计时,灭号数
AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
AJMPSTART
;=====非法抢答处理程序=====
FALSE1:
MOVR3,#01H
AJMPERROR
FALSE2:
MOVR3,#02H
AJMPERROR
FALSE3:
MOVR3,#03H
AJMPERROR
FALSE4:
MOVR3,#04H
AJMPERROR
FALSE5:
MOVR3,#05H
AJMPERROR
FALSE6:
MOVR3,#06H
AJMPERROR
FALSE7:
MOVR3,#07H
AJMPERROR
FALSE8:
MOVR3,#08H
AJMPERROR
;=====INT0(抢答时间R1调整程序)=====
INT0SUB:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO
JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO
JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。
MOVR1,#00H
ACALLDELAY1
AJMPINT0SUB
ADD0:
INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99,
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:
MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:
RETI
;=====INT1(回答时间R2调整程序)=====
INT1SUB:
MOVA,R2
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.4,INC1
JNBP3.5,DEC1
JNBP3.1,BACK1
AJMPINT1SUB
INC1:
MOVA,R2
CJNEA,#63H,ADD1
MOVR2,#00H
ACALLDELAY1
AJMPINT1SUB
ADD1:
INCR2
ACALLDELAY1
AJMPINT1SUB
DEC1:
MOVA,R2
JZSETR2
DECR2
ACALLDELAY1
AJMPINT1SUB
SETR2:
MOVR2,#63H
ACALLDELAY1
AJMPINT1SUB
BACK1:
RETI
;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====
REPEAT:
MOVA,R2;使用锦囊时重新计时
MOVR6,A
CLRRING
COUNT:
MOVR0,#00H;重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器
RECOUNT:
MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6
MOVB,#0AH
DIVAB;除十分出个位/十位
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
SUBBA,#07H
JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒
MOVA,R0
CJNEA,#0AH,FULL;1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP3.1,QUIT;如按下停止键退出
JNBOK,CHECKK;只在回答倒计时才有效
AJMPNEXTT
CHECKK:
JNBP3.0,REPEAT;判断是否使用锦囊
NEXTT:
ACALLDISPLAY
JBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)
AJMPRECOUNT
ACCOUT:
MOVA,36H
JNBACC.0,TRUE1
JNBACC.1,TRUE2
JNBACC.2,TRUE3
JNBACC.3,TRUE4
JNBACC.4,TRUE5
JNBACC.5,TRUE6
JNBACC.6,TZ1
JNBACC.7,TZ2
AJMPRECOUNT
TZ1:
JMPTRUE7
TZ2:
JMPTRUE8
QUIT:
CLROK;如果按下了"停止键"执行的程序
CLRRING
AJMPSTART
;=====正常抢答处理程序=====
TRUE1:
ACALLBARK
MOVA,R2
MOVR6,A;抢答时间R2送R6
MOVR3,#01H
CLROK;因为答题的计时不再查询抢答,所以就锁了抢答
AJMPCOUNT
TRUE2:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#02H
CLROK
AJMPCOUNT
TRUE3:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#03H
CLROK
AJMPCOUNT
TRUE4:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#04H
CLROK
AJMPCOUNT
TRUE5:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#05H
CLROK
AJMPCOUNT
TRUE6:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#06H
CLROK
AJMPCOUNT
TRUE7:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#07H
CLROK
AJMPCOUNT
TRUE8:
ACALLBARK
MOVA,R2
MOVR6,A
MOVR3,#08H
CLROK
AJMPCOUNT
;=====犯规抢答程序=====
ERROR:
MOVR0,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOV34H,R3;犯规号数暂存与(34H)
HERE:
MOVA,R0
CJNEA,#06H,FLASH;0.3s向下运行->灭并停响
CLRRING
MOVR3,#0AH
MOVR4,#0AH
MOVR5,#0AH;三灯全灭
AJMPCHECK1
FLASH:
CJNEA,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计
SETBRING
MOVR0,#00H
MOVR3,34H;取回号数
MOVR5,#0BH
MOVR4,#0BH;显示FF和号数
AJMPCHECK1
CHECK1:
JNBP3.1,QUIT1
ACALLDISPLAY
AJMPHERE
QUIT1:
CLRRING
CLROK
AJMPSTART
;=====显示程序=====
DISPLAY:
MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#0feH
MOVP0,A
ACALLDELAY2
MOVDPTR,#DAT2
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#0fdH
MOVP0,A
ACALLDELAY2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#0fbH
MOVP0,A
ACALLDELAY2
RET
DAT1:
DB00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2:
DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;第一个为零,其他与上相同,因为十位如果为零显示熄灭
;====加减时间延时(起到不会按下就加N个数)======
DELAY1:
MOV35H,#08H
LOOP0:
ACALLDISPLAY
DJNZ35H,LOOP0
RET
;=====延时4236个机器周期(去抖动用到)=====
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
RET
;=====延时4236个机器周期(显示用到)=====
DELAY2:
MOV32H,#43H
LOOP3:
MOV33H,#1EH
MOVA,R7;每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转到正常抢答处理
JNZAAAA1;没读到有效数据时继续转到AAAA1
LOOP2:
DJNZ33H,LOOP2
DJNZ32H,LOOP3
RET
;=====读抢答按键数据口程序=====
AAAA1:
MOVA,P1
CJNEA,#0FFH,AA1;当不全为1时的数据为有效数据
AA0:
MOV36H,A;将有效数据送到36H暂存
AJMPLOOP2
AA1:
DECR7
AJMPAA0
;=====发声程序=====
BARK:
SETBRING
ACALLDELAY1
ACALLDELAY1
CLRRING;按键发声
RET
;=====TO溢出中断(响铃程序)=====
T0INT:
MOVTH0,#0ECH
MOVTL0,#0FFH
JNBRING,OUT;
CPLP3.6;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT:
RETI
;=====T1溢出中断(计时程序)=====
T1INT:
MOVTH1,#3CH
MOVTL1,#0B0H
INCR0
RETI
END
参考文献
【1】张伟,《单片机原理及应用》,机械工业出版社,2005
【2】曹国清,《数字电路与逻辑设计》,中国矿业大学出版社,2004
【3】认致程,《经典集成电路400例》,机械工业出版社,2002
【4】薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八位 抢答 器课设