抢答器の3.docx

上传人:b****5 文档编号:7293143 上传时间:2023-01-22 格式:DOCX 页数:21 大小:1MB
下载 相关 举报
抢答器の3.docx_第1页
第1页 / 共21页
抢答器の3.docx_第2页
第2页 / 共21页
抢答器の3.docx_第3页
第3页 / 共21页
抢答器の3.docx_第4页
第4页 / 共21页
抢答器の3.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

抢答器の3.docx

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

抢答器の3.docx

抢答器の3

前言

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:

一块芯片就成了一台计算机。

由于单片机具有体积小、功能全、性价比高、性能成熟稳定等诸多优点,目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域导弹的导航装置。

单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。

对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。

学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。

同时,提供了一个实际应用手段。

21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。

这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。

智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。

抢答是各种竞赛常用的一种形式。

在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。

这些如果仅凭主持人的主观判断,很容易出现误判的情况。

因此,在竞赛中,抢答器就扮演了一个非常重要的角色。

 

1课程设计的目的和要求

单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。

通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。

根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和存储器扩展设计、接口技术应用设计。

其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。

存储器扩展设计要求学生掌握常用半导体芯片与单片机的接口,如EPROM存储器用作外部程序存储器时与单片机的连接关系,SRAM存储器用作外部数据存储器时与单片机的连接关系,E2PROM存储器用作外部程序/数据存储器时与单片机的连接关系。

能合理分配和使用单片机的内部和外部存储器,编程实现正常的读写功能。

 

2总体设计

2.1功能介绍

1、如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间LED上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。

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

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

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

4、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。

5、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。

2.2抢答器的工作原理

抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接8个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、抢答时间调整,加1、减1调整之用。

抢答功能:

通过八路按键配合程序来实现抢答功能。

当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及其当前时间。

抢答限时:

主持人按下抢答键后,设置5秒为抢答时间(此时间可在1-99秒之间修改)。

若5秒内无人抢答,倒计时为0时发出报警,说明该抢答题目作废。

此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。

答题限时:

当选手按下按钮时,启动倒计时(此倒计时时间可在1~99秒之间修改),倒计时为0时发出报警,说明答题时间到。

3硬件设计

3.1原理框图和原理图的确定

单片机实现抢答的原理框图和原理图:

原理框图

原理图

3.2芯片的选择

抢答器电路的核心是89C51单片机,其内部带有4KB的FLASHROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的128B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有8位8段数码显示管,管采用共阴数码管,作为时钟的显示输出。

3.3复位电路的设计

图2-1复位电路原理图

该复位电路采用上电自动复位和手动复位两种复位方式,图中网络标号所指9连接到单片机的复位引脚。

要实现复位只需在,51系列单片机的RESET引脚上加上5ms的高电平就可以了。

上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。

这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。

通常若采用12MHz的晶振时,复位元件参数为22μF的电解电容和10kΩ的电阻。

按钮复位电路是通过按下复位按钮时,电源对RESET端维持两个机器周期的高电平实现复位的。

3.4晶振电路的设计

MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。

本设计中采用内部时钟方式。

单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。

时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。

一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。

加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。

电容C1,C2的作用有两个:

一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。

晶振电路的设计如图2-2所示:

图2-2晶振电路原理图

3.5数码显示管的选择

数码显示管用来作为时间的显示输出,一般用7段数码显示管。

本次设计中采用7段共阴数码显示管应用简单、可靠性高、成本低,作为显示输出。

连接时段选信号接在P0口的P0.0~P0.6七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400μA,所以在接电阻时选择接510Ω限流电阻。

而在位选方面采用单片机P2口的P2.0~P2.2三个I/O口作为位选信号的输出口。

数码管的选择如图2-3所示:

图2-3数码管的选择

4软件设计

4.1主程序的设计

此程序的及时采用定时器T0和T1中断完成,其余状态循环调用显示子程序。

系统主程序流程图如图3-1所示。

图3-1系统主程序流程图

4.2显示子程序的设计

由于采用软件动态扫描实现数据显示,显示用十进制BCD码的数据对应段码存放在ROM表中。

显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示段码从P0口输出。

P2口将对应的数码管选中,就能显示该地址单元的数据值。

4.3定时器T0、T1中断服务程序的设计

定时器T0用于响铃程序,定时器T1用于计时程序。

当答题剩余5秒种时P3.6口不断取反使喇叭发出一定频率的声音,提示选手。

4.4程序清单

定时器T1时间初值

设50ms时间初值为Z,Z的计算方法为

(216-Z)×12=12×50×103,结果Z=15536D=3CB0H

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

MAIN:

MOVR1,#30;初设抢答时间为30s

MOVR2,#60;初设答题时间为60s

MOVTMOD,#11H;设置定时器T0/T1模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高发声频率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms为一次溢出中断

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;允许四个中断,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一开始就运行定时器,以开始显示FFF

=====查询程序=====

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只程序中判断是否查询抢答

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,TZ1

JNBP1.7,TZ2

AJMPSTART

TZ1:

JMPFALSE7

TZ2:

JMPFALSE8

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

FALSE1:

ACALLBARK;;按键发声

MOVR3,#01H

AJMPERROR

FALSE2:

ACALLBARK

MOVR3,#02H

AJMPERROR

FALSE3:

ACALLBARK

MOVR3,#03H

AJMPERROR

FALSE4:

ACALLBARK

MOVR3,#04H

AJMPERROR

FALSE5:

ACALLBARK

MOVR3,#05H

AJMPERROR

FALSE6:

ACALLBARK

MOVR3,#06H

AJMPERROR

FALSE7:

ACALLBARK

MOVR3,#07H

AJMPERROR

FALSE8:

ACALLBARK

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

===倒计时程序(抢答倒计时和回答倒计时都跳到改程序)===

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,FULL1s中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;如按下停止键退出

ACALLDISPLAY

JBOK,ACCOUT如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

AJMPRECOUNT

ACCOUT:

JNBP1.0,TRUE1

JNBP1.1,TRUE2

JNBP1.2,TRUE3

JNBP1.3,TRUE4

JNBP1.4,TRUE5

JNBP1.5,TRUE6

JNBP1.6,TZ3

JNBP1.7,TZ4

AJMPRECOUNT

TZ3:

JMPTRUE7

TZ4:

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,#0AH,FLASH;0.5s向下运行->灭并停响

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三灯全灭

AJMPCHECK1

FLASH:

CJNEA,#14H,CHECK1下面是1s的情况,响并显示号数并清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

ACALLDELAY

MOVDPTR,#DAT2

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#0fdH

MOVP0,A

ACALLDELAY

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#0fbH

MOVP0,A

ACALLDELAY

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

=====延时(显示和去抖动用到)=====

DELAY:

MOV32H,#12H

LOOP:

MOV33H,#0AFH

LOOP1:

DJNZ33H,LOOP1

DJNZ32H,LOOP

RET

=====发声程序=====

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

 

5使用keil、proteus软件调试仿真说明

1试验的程序通过Keil软件编译,产生HEX文件如图4-1所示:

 

图4-1程序在Keil软件上编译结果

 

2通过Proteus进行仿真,仿真结果如图4-2所示。

图4-2Proteus仿真的结果

通过仿真结果证实,该方案可行。

该设计方案同过51系列单片机的P0口作为段选输出,用P2口作为位选输出,动态扫描LED显示管,显示时间。

并通过接在P3.0-P3.6口的按键开关控制开始、结束、喇叭提示等功能。

P1口接选手按键,控制抢答。

本设计实现简单,成本较低很适合我们大学生动手实践。

 

6元器件清单

器件名称

规格型号

数量

微处理器

AT89C51

极性电容

10uf

1

电阻

3wTT10k

9

电容

20pf

3

晶振

12Mhz

按钮

15

共阴4段7位数码管

SMGSM41056K

扬声器

1

 

小结

在这为期两周的单片机课程设计中,我们小组采用了单片机汇编语言顺利的完成了8路抢答器的课程设计。

通过本次课程设计,进一步加深了我对单片机这门学科的了解,并且培养了团队合作的精神。

使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我在现代电子设计理念有一个较全面的了解,学到扎实的技能,增强了自身的创造实践能力,为日后成为合格的应用型人才打下良好的基础。

虽然在编写8路抢答器程序时,遇到了不少困难,但通过老师耐心细致的讲解和自己的不懈努力,终于将这些问题一一克服掉了,这也使我更加深刻的理解到了“付出一定会有回报”的内涵。

本次毕业设计,我在指导老师田景贺老师的精心指导和严格要求下,获得了丰富的理论知识。

在此,我忠心感谢田老师的指导和支持。

在未来的工作和学习中,我将以更好

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

当前位置:首页 > 高等教育 > 理学

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

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