单片机 抢答器.docx

上传人:b****8 文档编号:9491348 上传时间:2023-02-04 格式:DOCX 页数:28 大小:370.63KB
下载 相关 举报
单片机 抢答器.docx_第1页
第1页 / 共28页
单片机 抢答器.docx_第2页
第2页 / 共28页
单片机 抢答器.docx_第3页
第3页 / 共28页
单片机 抢答器.docx_第4页
第4页 / 共28页
单片机 抢答器.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

单片机 抢答器.docx

《单片机 抢答器.docx》由会员分享,可在线阅读,更多相关《单片机 抢答器.docx(28页珍藏版)》请在冰豆网上搜索。

单片机 抢答器.docx

单片机抢答器

1引言

电子计算机的发展经历了从电子管、晶体管、集成电路到大规模集成电路共四个阶段,即通常所说的第一代、第二代、第三代和第四代计算机。

现在广泛使用的微型计算机是大规模集成电路技术发展的产物,因此它属于第四代计算机,而单片机则是微型计算机的一个分支。

从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展:

一个是向着高速度、大容量、高性能的高档微机方向发展;而另一个则是向稳定可靠、体积小和价格廉的单片机方向发展。

但两者在原理和技术上是紧密联系的。

单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O口电路等主要微型机部件,集成在一块芯片上。

虽然单片机只是一块芯片,但从功能和组成上,它已具有了计算机的属性,为此它称为单片微型机。

单片机有很多的特点,主要表现在:

体积小、功耗低、价格廉、控制功能强、应用现场环境恶劣等。

本设计的核心采用了AT89C51单片机。

80C51单片机系列是在MCS—51系列的基础上发展起来的,早期的80C51只是系列众多芯片中的一类,但是随着后来的发展,80C51已经形成独立的系列,并且成为当前8位单片机的典型代表。

80C51芯片为40引脚双列直插封装,单一的+5V电源,它具有3个可编程I/O口,其中2个口(A和B)为8位口,1个口(C)为6位口。

此外还有128单元的RAM和1个14位计数结构的定时器/计数器。

 

2课程设计说明

2.1设计任务

本设计是采用单片机设计的多人比赛智力抢答器系统。

它具有电路简单、功能齐全、制作成本低、性价比高等特点,是一种经济、实用的比赛用抢答器。

硬件部分主要由单片机、LED显示器、LED驱动器、声音报警器、主持人操作键盘和其它基本外围电子电路组成。

软件部分采用51系列单片机通用汇编语言与C语言设计编写。

该抢答器不仅能实现显示各位抢答选手号,而且具有抢答30秒倒计时(可调)、答题60秒倒计时(可调)、违例抢答报警等功能。

并且功能增减方便,只需对软件做相应修改即可。

2.2总体方案设计

方案一:

采用数字电路实现

定时抢答器的总体框图如图2-1所示,它由主体电路和扩展电路两部分组成。

主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答按钮时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。

扩展电路完成定时抢答功能。

主要是对秒脉冲产生电路计算从而达到定时功能。

图2-1 数字抢答器组成框图

定时抢答器的工作过程是:

主持人将开关置于“清除”位置,抢答器处于禁止工作状态,定时显示器上显示设定的时间,当节目主持人宣布抢答题目后,按下“开始”键,扬声器发出响声提示,定时器倒计时。

当定时时间到,却没有选手抢答,系统报警,并禁止选手超时后抢答。

当选手在定时时间内抢答时,电路立即分辨出抢答者的编号,由锁存器进行锁存,然后译码显示电路显示编号,同时扬声器发声报警,同时对输入编码电路进行封锁,避免其他选手再次抢答,显示剩余抢答时间,并保持到主持人将系统清零为止。

当选手将问题回答完毕时,主持人操作控制开关,使系统恢复到禁止工作状态,以便进行下一轮抢答。

方案二:

采用单片机实现

相比第一方案而言此方案,采单片机为控制核心大大简化了系统电路结构,把各种处理的功能整合在了单片机内部。

此设计方案把软件的设计作为设计重点,在原始的单一功能上添加了倒计时抢答、答题倒计时、显示选手号等新颖的附属功能,并保留了传统的报警部分,电路还较简单,具体方框图如2-2所示。

图2-2 方案二框图

这是一种单片机控制的智能化抢答器,该抢答器可以克服普通抢答器存在的各种缺陷。

本系统的功能是通过按下抢答键的按钮使单片机相应的端口线读入信号,经过处理后输出显示所按下的键号。

本系统还具备筛选第一有效抢答信号、显示超前违规抢答信号、以及可变的抢答倒计时信号和答题倒计时信号等功能。

 

3抢答器硬件电路设计

3.1单片机最小系统

单片机使用51系列的AT89C51单片机,该单片机应用广泛,技术成熟。

AT89C51单片机是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM)。

AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。

AT89C51单片机引脚见图3-1所示:

图3-1 AT89C51引脚图

3.1.1单片机时钟电路

AT89C51单片机中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别为反向放大器的输入和输出,这个放大器作为反馈元件的片外石英晶体振荡或陶瓷谐振器一起构成自激振荡器。

外接石英晶体及电容

接在放大器的反馈回路中构成并联振荡电路。

对于外接电容

虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器的稳定性、起振的难易程度及温度稳定性。

一般使用石英晶体,电容使用30pF±10pF,而如使用陶瓷谐振器,最好选择40pF±10pF。

3.1.2单片机复位电路

复位是单片机的重要操作内容,复位功能是系统正常运行的先决条件。

在简单的复位电路中,只要在微处理芯片的RST引脚保持高电平达2个以上的机器周期,即可完成一次复位操作。

考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,一般只要在RST引脚出现10ms以上的高电平,就能使单片机有效复位。

复位是由外部电路来实现的,按功能分为以下两种方式:

上电自动复位方式和人工复位方式。

上电自动复位电路虽然能实现上电复位功能,但对干扰没有抵抗作用,不能保证复位电路任何时候都能可靠地工作。

人工复位将一个按钮开关并联于上电复位电路中。

按一下开关会在RST端出现一段时间的高电平,使单片机复位,安全可靠,所以选择人工复位电路。

见图3-2所示。

图3-2 单片机最小系统电路原理图

3.2键盘电路设计

键盘是单片机应用系统最常用的输入设备,操作人员可以通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。

3.2.1选手抢答电路

本设计要求设计可供8名选手抢答的抢答器,可选用矩阵键盘独立式行列键盘。

独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。

因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。

优点:

电路配置灵活,软件结构简单。

缺点:

每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。

因此,此键盘是用于按键较少或操作速度较高的场合。

矩阵键盘与独立式按键键盘相比,硬件电路大大节省。

可通过软件的方法让一键具有多功能。

它适用于按键数量较多的场合,由行列线组成,按键位于行列的交叉点上,节省I/O口。

但是需要大量扫描、译码程序设计对于我们来说有些困难,考虑到本设计只需8名选手抢答,所以采用独立式行列按键,S1-S8分别是选手1至选手8的抢答按键,如图3-3所示。

图3-3 选手抢答电路

3.2.2主持人控制电路

控制电路是抢答器所必要的部分,它由主持人控制,用于控制开始/停止抢答、抢答时间和答题时间的调整。

采用功能按键实现,如图3-4所示。

图3-4 主持人控制电路

3.3显示驱动电路

驱动显示部分是本设计一个重要部分,LED数码管分为共阴极7段数码管如图3-5所示,共阳极7段数码管如图3-6所示。

图3-5 共阴极7段数码管

图3-6 共阳极7段数码管

在单片机设计中,LED数码管的显示方式有静态显示、动态显示两种,由于静态显示数码管的每一个LED需要占用单片机的一条端口线实现显示控制,而单片机端口有限,所以采用动态控制显示方式。

将几只数码管的a-h分别连在一起与单片机段码控制端P0口连在一起,作为数码管段码控制。

P2口的P2.0—P2.2与数码管公共端连在一起作为位码选择控制,使每只数码管可以单独显示。

由于单片机端口驱动能力不足,数码管的电流较大,所以在P0口接上拉电阻增加驱动能力,P2口作为位码控制端驱动共阴型数码管显示。

如图3-7所示。

图3-7 驱动显示电路

3.4蜂鸣电路

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。

压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

它的发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动,本设计采用I/O口(P3.6)向扬声器送高电平来控制扬声器发声。

如图3-8所示。

图3-8 蜂鸣电路

3.5电源电路

80C51单片机正常工作电压范围为直流+4.5V至+6V,标准电压为+5V。

实际应用时,可采用3节1.5V干电池串联构成4.5V或三端集成稳压器构成+5V直流电压源。

若采用后者,可用220V市电经整流、滤波、稳压后输出稳定的+5V的直流电为其供电。

+5V稳压器采用CW7805,其应用电路如图3-9所示。

图中滤波电容C2和C4的值约为1000μF,C3和C5为0.33μF。

发光二极管D6的作用是显示读写器的电源是否接通,若接通则D6灯亮,无接通则D6灯灭。

图3-9 电源电路原理图

4软件部分

4.1单片机内部信息分析

首先主持人按下复位按键,单片机进行内部扫描的同时主持人可以调节抢答时间和允许答题时间,在整定的时间当中如果没有调节抢答时间和答题时间,则抢答器工作为设置的默认值(抢答时间30s,答题时间60s)。

如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始键”进入下次抢答计时。

同时在主持人未按下开始抢答按钮的时候有选手抢答,则单片机发出一个选手犯规信号送入扬声器,同时在LED数码管上显示选手号,以便主持人记录。

只有当主持人按下开始抢答按钮,此时单片机开始倒计时并送到数码管显示,与此同时单片机向扬声器发一个提示信号驱动扬声器发声,此时选手才能开始抢答。

4.2主要程序流程

4.2.1系统主程序流程

系统主程序控制单片机系统按预定的操作方式运行,它是单片机系统程序的框架。

系统上电后,对系统进行初始化。

初始化程序主要完成对单片机内专用寄存器的设定,单片机工作方式及各端口的工作状态的规定流程图如图4-1所示。

图4-1 主要流程图

4.2.2中断程序流程

时间调节采用中断来实现,流程图如图4-2所示,如果想调节抢答时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下“加1s”键,如果想减一秒按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99s,99s时再加1s会变到0s。

图4-2 中断流程图

5仿真及调试

5.1软件仿真

首先安装keil C51软件,建立工程,在工程目录下建立项目,在项目下编辑程序,保存在工程项目中,注意一定要设置文件后辍名,汇编语言程序为.ASM,C语言程序为.C,然后编译仿真直到0错误,0警告,最后生成hex文件以备后用,如图5-1所示。

图5-1 程序仿真完成

5.2软件调试

安装硬件调试软件Proteus ISIS,在原理图编辑区画好硬件电路图,设置好相应参数,导入hex文件。

具体功能仿真如下:

电路初始化,显示FF F等待主持人按下开始键,如图5-2所示。

图5-2 电路初始化

抢答时间调至72秒时,如图5-3所示。

图5-3 抢答时间调至72秒

答题时间调至67秒时,如图5-4所示。

图5-4 答题时间调至67秒

在主持人未按下开始键时3号选手抢答犯规,显示器显示选手号并闪烁,同时扬声器发声报警,如图5-5所示。

图5-5 3号选手抢答犯规

主持人按下开始键,倒计时到21秒都无人抢答,显示器显示倒计时,如图5-6所示。

图5-6 无人抢答倒计时到21秒

主持人按下开始键,4号选手成功抢答,显示器显示4号选手号,同时扬声器短暂发声报警,如图5-7所示。

图5-7 4号选手成功抢答

经过调试此设计除了满足显示、报警、控制等设计要求外,还具有显示犯规选手号并闪烁提示、抢答时间答题时间可调等新颖的功能。

还需要改进的地方是在抢答期间或答题期间主持人按“停止”按键,终止抢答和答题时,扬声器不能报警。

附录1:

整机电路图

附录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

MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1