基于单片机的智能抢答器系统文档格式.docx

上传人:聆听****声音 文档编号:3670827 上传时间:2023-05-02 格式:DOCX 页数:25 大小:135.87KB
下载 相关 举报
基于单片机的智能抢答器系统文档格式.docx_第1页
第1页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第2页
第2页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第3页
第3页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第4页
第4页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第5页
第5页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第6页
第6页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第7页
第7页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第8页
第8页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第9页
第9页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第10页
第10页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第11页
第11页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第12页
第12页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第13页
第13页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第14页
第14页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第15页
第15页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第16页
第16页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第17页
第17页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第18页
第18页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第19页
第19页 / 共25页
基于单片机的智能抢答器系统文档格式.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的智能抢答器系统文档格式.docx

《基于单片机的智能抢答器系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能抢答器系统文档格式.docx(25页珍藏版)》请在冰点文库上搜索。

基于单片机的智能抢答器系统文档格式.docx

控制器主要用于各模块控制显示、抢答、音乐等。

控制器的选择有以下两钟方案。

-1-

采用FPGA(现场可编程门列阵)作为系统的控制器。

FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进行功能扩展。

FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。

但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。

采用ATMEL公司的STC89C51作为系统控制器的CPU方案。

单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。

基于以上分析拟订方案二。

2.3电源方案的选择

系统需要多个电源,STC89C51使用5V稳压电源,四联数码管供电电压为5V。

给出以下两个方案。

采用升压型稳压电路。

用两片MC34063芯片分别将3V的电池电压进行直流崭波调压,得到5V稳压输出。

只需使用两节电池,既节省了电池,又减小系统体积重量但该电路供电电流小,供电时间短,无法使相对庞大的系统稳定运作。

由于所做的设计不需要很高的精度要求,结合这个电源分析只要给系统5-9V的电压基本能输出显示和运用抢答,故只需利用一节9V的电池便可使整个电路工作。

该方法方便简单,节省材料。

综上所述,选择方案二。

2.4键盘的选择

键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。

键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。

在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。

独立式键盘

-2-

键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了6根I/O口线,该键盘就有6个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。

因此可以根据实际需要对键盘中的按键灵活的编码。

如图2-1。

P1

1

2

3

4

5

6

7

图2-1独立式键盘

最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。

独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的键盘。

行列式键盘

行列式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘,在行线和列线的每个交叉点上,设置一个按键中按键的个数是M*N个。

这种形式的键盘结构,能够有效的提高单片机系统中I/O的利用率,列线接P1.0~P1.3行线接P1.4~P1.7,行列适用于按键输入多的情况。

-3-

CPU对键盘的扫描可以采用取程序控制的随机方式,即只有在CPU空闲是时才去扫描键盘,响应操作人员的键盘输入,但CPU在执行应用程序的过程中,不能响应键盘输入,对键盘的扫描可以采用定时方式,即利用单片机内部定时器每隔一定时间对键盘扫描一次,这样控制方式,不管键盘上有无键闭合,CPU总是定时的关心键盘状态。

在大多数情况下,CPU对键盘可能进行空扫描。

为了提高CPU的效率而又能及时响应键盘输入,可以采用中断方式,既CPU

平时不必扫描键盘,只要当键盘上有键盘闭合时就产生中断请求,向CPU申请中断后,立即对键盘上有键盘进性扫描,识别闭合键,并做相应的处理。

如图2-2所示。

P1.0

P1.1P1.2

P1.3P1.4P1.5P1.6P1.7

3 2 1 0

7 6 5 4

B A 9 8

F E D C

图2-2行列式键盘

根据以上的论述,采用方案一,在本系统中采用了独立式键盘,其按键比较少,且键盘中各个按键的工作互不干扰。

3模块的最终方案

主控制器模块:

采用STC89C51单片机控制。

抢答器显示模块:

数码管显示。

-4-

电源方案的选择:

采用9V电池供电。

抢答器键盘模块:

独立式键盘。

4功能介绍

如果想调节抢答时间或答题时间,按"

抢答时间调节"

键或"

答题时间调节"

键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"

加1s"

键,如果想减一秒按一下"

-1s"

键,时间LED上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。

主持人按"

抢答开始"

键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

如倒计时期间,主持人想停止倒计时可以随时按"

停止"

按键,系统会自动进入准备状态,等待主持人按"

进入下次抢答计时。

如果主持人未按"

键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"

键为止。

5抢答器的软件设计

通过ST89C51芯片的控制,从而构成了整个电路。

抢答组数可以在六组以内任意使用,其流程如图5-3

-5-

图5-3抢答系统流程图

5.1数码显示软件设计

采用动态显示,显示器由4个共阴极数码管组成,数码显示程序流程如图5-4。

-6-

5.2音乐音频输出

图5-4数码显示流程图

音乐音频输出由 输出,流程图如图5-5

-7-

图5-5音乐音频输出流程图

6调试情况分析

6.1硬件调试

6.1.1电路板的制作与检查

考虑到本系统所用元器件较少,大部分功能都是通过软件编程来实现,同时也出于对毕业设计成本的考虑,因此所用到的板子是自己手工制作的PCB板。

在电路板的制作中,首先要进行线路的排布。

利用PROTEL软件模拟实际电路板的线路走向,尽量避免线路出现交叉短路,电源线路尽量安排在电路板的最外圈。

PCB板刻录完成之后,开始进行焊接工作。

焊接完后进行电路板检查,将原线路图与实际焊接的电路板进行对比,由于线路不多,所以用万用表的欧姆档或是短路声响指示功能来做焊点的检测,如此可以避免焊接时漏焊、虚焊和配线错误的问题,同时保证了所制作出来的线路与原设计线路的一致性。

6.1.2电路模块调试

-8-

本设计硬件部分主要为显示模块按键模块。

硬件电路功能检测主要针对这两部分进行测试。

对于显示电路,由于使用的是四联数码管显示屏,首先要确定数码管的共阴还是共阳极。

因此先用万用表检测是什么极性。

然后再先固定下,检查显示电路能否正常显示。

最后再焊接上去。

对于按键部分,首先要确定各个按键是否完好,先自己接到一个简易的电路上测试下,确定完好后再焊接。

6.2软件调试的基本方法

软件的设计与调试实行分模块实现方法。

本设计软件调试中的分模块包括显示功能模块、调正时间功能模块,抢答功能模块以报警功能模块。

各个独立模块功能调试成功后,将这些模块程序通过主程序合并在一起,最后再对合并后的总程序进行调试。

各软件模块首先要通过PC和仿真器进行软件调试,当仿真效果符合要求后,再烧写进单片机看能否在实际电路板上正常工作。

编程语言的软件设计采用MCS-51汇编语言编写,所使用的调试软件包括proteus和MedWin2.39

6.2.1软件调试问题分析

LED显示问题:

本次设计的最终方案是采用LED显示屏实现显示功能,最初数码管显示不正常,出现闪烁现象。

通过调试发现这是由于延时时间选择不当会使人眼产生视觉暂留效果,每一次显示时都必须加入适当的时间延时。

由于一开始所选用的延时时间太短,因此出现闪烁现象,在增加显示延时之后,数码管显示正常。

蜂鸣器异常启动问题:

蜂鸣器的启动/关闭是通过单片机输出的控制信号来实现的,当当前时间与闹钟设置时间比较吻合时,单片机将对闹铃控制口执行取反命令,从而启动蜂鸣器发声。

一开始编写程序时,没有对口的最初状态作正确设置,由于

系统开机复位后,口处于高电平状态,因此出现一开机蜂鸣器就处于启动状态的情况。

通过在主程序最开始加入对口取零命令后,蜂鸣器启动/关闭控制恢复正常。

按键消抖问题:

在最初编写程序时,键盘控制部分按照常例加入了按键消抖程序。

在实际调试中,发现按键出现反应不灵敏现象。

这是因为在键盘控制程序中,除了消抖程序外,还加入了按键提示音程序(每次按压键盘时,蜂鸣器发出“哔”的一声提示音)。

由于在调用提示音子程序时,实际上已实现了一次时间的延时,因此再加入按键消抖程序的延时后,致使延时时间过长而出现按键

-9-

反应不灵敏问题。

通过调试发现提示音子程序本身所产生的延时已能够满足按键消抖时间延迟的要求,因此在键盘控制程序中无需

再加入专门的按键消抖程序。

在去除按键消抖程序后,按键控制灵敏度恢复正常。

附件1:

硬件电路原理图

VCC

VCCJ1

10K

12345678

U1

210

22PF

32.768KHZ

31

19

EA/VP

P0.0P0.1

39

38

37

111 987

1 A2F3 B DS1

Y1

X1

P0.2

P0.3

36

Na aNNa aDDY

O OO

C2

VCC

R1

18

X2

P0.4P0.5

P0.6

35

34

33

Cf bfCbCf bf bg g g g

e ce ce ce c

C322PF

P0.7

32

d d d4 d

N

C1

S11

ELECTRO1



0.2K

9RESET

P2.021

22

dpPdp

EDDC

Odp dp

CG

SW-PB

S1 SW-PB

S2 SW-PB

S3 SW-PB

S4 SW-PB

S5 SW-PB

S6 SW-PB

S7

S8 SW-PB

S9 SW-PB

S10 SW-PB

12INT0

13INT1

14T0

15T1

1P1.0

2P1.1

3P1.2

4P1.3

5P1.4

6P1.5

7P1.6

8P1.7

89C51

P2.1

P2.223

P2.324

P2.425

P2.526

P2.627

P2.728

RD17

WR16

PSEN29

ALE/P30

TXD11

RXD10

R2470

S12 SW-PB

S13 SW-PB

123

456

Q?

PNP

U2

BELL

CON2

VCCJ2

-10-

附件2:

PCB图

附件3:

元器件清单列表

元器件描述

元器件编号

数量

单片机

STC89C51

LED显示屏

四联共阴

晶体振荡器

12MHZ

三极管

9012

蜂鸣器

/

电容

30PF

电阻

20K

9脚排阻

按键

13

附件4:

程序清单

OKEQU20H;

抢答开始标志位RINGEQU22H;

响铃标志位ORG0000H

AJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040H

MAIN:

MOVR1,#30;

初设抢答时间为30s

MOVR2,#60;

初设答题时间为60s

MOVTMOD,#11H;

设置未定时器/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;

越高发声频率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;

50ms 为一次溢出中断

SETBEA

SETBET0

SETBET1SETBEX0

SETBEX1;

允许四个中断,T0/T1/INT0/INT1CLROK

CLRRING

SETBTR1

SETBTR0;

一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

;

=====查询程序=====START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;

未开始抢答时候显示FFF

JBINT0,NEXT;

ddddddd

ACALLDELAY

去抖动,如果"

开始键"

按下就向下执行,否者跳到非法抢答查询

ACALLBARK;

按键发声

MOVA,R1

MOVR6,A;

送R1->

R6,因为R1中保存了抢答时间

SETBOK;

抢答标志位,用于COUNT只程序中判断是否查询抢答

MOVR3,#0AH;

抢答只显示计时,灭号数

AJMPCOUNT;

进入倒计时程序,"

查询有效抢答的程序"

在COUNT里面

NEXT:

JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

JNBP1.5,FALSE6

AJMPSTARTTZ1:

JMPFALSE7TZ2:

JMPFALSE8

=====非法抢答处理程序=====FALSE1:

ACALLBARK;

按键发声MOVR3,#01H

AJMPERROR

FALSE2:

ACALLBARKMOVR3,#02H

AJMPERRORFALSE3:

ACALLBARKMOVR3,#03H

AJMPERRORFALSE4:

ACALLBARKMOVR3,#04H

AJMPERRORFALSE5:

ACALLBARKMOVR3,#05H

AJMPERRORFALSE6:

ACALLBARKMOVR3,#06H

AJMPERRORFALSE7:

ACALLBARKMOVR3,#07H

AJMPERRORFALSE8:

ACALLBARKMOVR3,#08H

=====INT0(抢答时间R1调整程序)=====INT0SUB:

MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;

先在两个时间LED上显示R1

JNBT0,INC0;

T0 为+1s键,如按下跳到INCO

JNBT1,DEC0;

T1 为-1s键,如按下跳到DECO

JNBINT1,BACK0;

INT1 为确定键,如按下跳到BACKOAJMPINT0SUB

INC0:

MOVA,R1

CJNEA,#63H,ADD0;

如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1AJMPINT0SUB

ADD0:

INCR1

ACALLDELAY1

AJMPINT0SUBDEC0:

JZSETR1;

如果R1为0,R1就置99,

DECR1

AJMPINT0SUBSETR1:

MOVR1,#63H

AJMPINT0SUBBACK0:

RETI

=====INT1(回答时间R2调整程序)=====INT1SUB:

MOVA,R2

DIVABMOVR5,A

ACALLDISPLAY

JNBT0,INC1

JNBT1,DEC1

JNBINT1,BACK1

AJMPINT1SUBINC1:

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1AJMPINT1SUB

ADD1:

INCR2

AJMPINT1SUBDEC1:

MOVA,R2

JZSETR2

DECR2

AJMPINT1SUBSETR2:

MOVR

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2