完整word版多路抢答器课程设计.docx

上传人:b****6 文档编号:6421131 上传时间:2023-01-06 格式:DOCX 页数:21 大小:148.86KB
下载 相关 举报
完整word版多路抢答器课程设计.docx_第1页
第1页 / 共21页
完整word版多路抢答器课程设计.docx_第2页
第2页 / 共21页
完整word版多路抢答器课程设计.docx_第3页
第3页 / 共21页
完整word版多路抢答器课程设计.docx_第4页
第4页 / 共21页
完整word版多路抢答器课程设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

完整word版多路抢答器课程设计.docx

《完整word版多路抢答器课程设计.docx》由会员分享,可在线阅读,更多相关《完整word版多路抢答器课程设计.docx(21页珍藏版)》请在冰豆网上搜索。

完整word版多路抢答器课程设计.docx

完整word版多路抢答器课程设计

摘要

多路数字抢答器在各种智力竞赛中经常用到。

在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。

为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。

一方面加深我们对所学习的知识的了解,巩固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。

积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。

控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。

具体以AT89C51单片机为系统工作核心,负责控制各个部分协调工作。

在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,用到的元器件有晶振X1、电容C1、C2、C3、电阻RP1,P3.0、P3.1由主持人控制,分别为抢答停止和开始键。

P1.0-1.7是8组输入口,P2.0-P2.3为数码管的段选口,位选口用的是P.0-P0.6口输出,外部中断0、1和P3.3和P3.4为抢答计时调整口,实现对各队的计时,并且加减调整,外部中断0、1实现对答题时间的调整,P3.4和P3.5分别实现了对时间的加一和减一,P3.6为蜂鸣口的控制口,安装了led灯。

其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。

同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。

关键词:

多路数字抢答器;AT89C51;WAVE;PROTEUS;

 

1绪论

1.1引言

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

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

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

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

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

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

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

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

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

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

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

抢答器由计数器、寄存器、集成定时器和译码显示等组合、时序电路组成。

可分为抢答电路,定时电路,报警电路等几个单元部分。

每个单元电路分别可以处理一些抢答竞赛中的基本问题。

本次课程设计设计的是一个多路定时抢答器,是一个多于两位选手参赛的一个抢答器,具有锁存和显示功能。

同时有主持人控制系统的清零和抢答的开始。

抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,并有扬声器发出提示,同时其他人再抢答就无效了。

这次设计的抢答器还有自动定时功能,主持人可以设定选手答题的时间。

当主持人启动“开始”键后,定时器会自动减计时,这个会显示在显示器上。

选手只有在抢答时间内抢答才有效,若在答题时间内没有选手答题,时间到时,报警电路就会发出警报亮灯并且禁止抢答。

.。

.T5

1.2抢答器的原理

抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。

主持人按下开始抢答键才可以抢答。

主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。

主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。

单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。

1.3单片机控制原理

单片机(SCM)是单片微型计算机(SingleChipMicrocomputer)的简称。

它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。

它的最大优点是体积小,可放在仪表内部。

但存储量小,输入输出适配器简单,功能较低。

目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。

简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。

 

2概要设计

2.1系统流程图

图1系统流程图

 

2.2显示抢答违规流程图

图2显示抢答违规流程图

 

2.3抢答成功流程图

图3抢答成功流程图

 

3详细设计

3.1晶振复位及开始抢答电路

晶振的频率为12MHZ,提供89C51的时钟脉冲使89C51工作,复位电路是单片机初始化,使单片机重新开始执行程序。

当复位开关按下RST由低电平变为高电平,则程序从头开始执行,在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。

图1复位及开始抢答电路

 

3.2选手抢答键

89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。

图2选手抢答电路

 

3.3显示与显示驱动电路

此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。

驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。

在+5V电压下接10k的电阻,保证正常压降。

 

图3显示与显示驱动电路

 

3.4蜂鸣器音频及LED灯输出电路

通过控制不同频率的矩形脉冲来控制蜂鸣器发声。

此次课程设计中只需要一些简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到得提示声和亮灯提醒。

 

图4输出电路

 

4总原理图及程序

4.1原理及电路总框图

图1抢答器总原理图

4.2抢答器程序

=======================多路抢答器程序========================

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

DATA0EQU36H;抢答按键口数据存放地址

ORG0000H

AJMPMAIN

ORG0003H

AJMPINTT0

ORG000BH

AJMPT0INT

ORG001BH

AJMPT1INT

ORG0040H

MAIN:

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

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

MOV38h,#60;启用锦囊时间从60s倒计时

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

MOVTH0,#0F0H

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

MOVTH1,#3CH

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

SETBEA

SETBET0

SETBET1;允许二个中断,T0/T1

CLROK

CLRRING

SETBTR1

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

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

START:

MOVDATA0,#0FFH;初始化

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;未开始抢答时候显示FFF

JNBP3.3,SELSUB0

JNBP3.4,TZ3;倒计时调整

JBP3.0,NEXT

ACALLDELAY

JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

SETBEX0;开放INT0

ACALLBARK;按键发声

MOVA,R1

MOVR6,A;送R1->R6,因为R1中保存了抢答时间

SETBOK;抢答标志位,在使用锦囊时用作判断是抢答倒计时还是回答倒计时

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:

AJMPFALSE7

TZ2:

AJMPFALSE8

TZ3:

AJMPSELSUB1

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

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

;=================SELSUB0(抢答时间R1调整程序)==================

SELSUB0:

MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY;先在两个时间LED上显示R1

JNBP3.5,INC0;P3.5为+1s键,如按下跳到INCO

JNBP3.6,DEC0;P3.6为-1s键,如按下跳到DECO

JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO

AJMPSELSUB0

INC0:

MOVA,R1

CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起.

MOVR1,#00H

ACALLDELAY1

AJMPSELSUB0

ADD0:

INCR1

ACALLDELAY1

AJMPSELSUB0

DEC0:

MOVA,R1

JZSETR1;如果R1为0,R1就置99,

DECR1

ACALLDELAY1

AJMPSELSUB0

SETR1:

MOVR1,#63H

ACALLDELAY1

AJMPSELSUB0

BACK0:

AJMPSTART

;==================SELSUB1(回答时间R2调整程序)================

SELSUB1:

MOVA,R2

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY

JNBP3.5,INC1

JNBP3.6,DEC1

JNBP3.1,BACK1

AJMPSELSUB1

INC1:

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1

AJMPSELSUB1

ADD1:

INCR2

ACALLDELAY1

AJMPSELSUB1

DEC1:

MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPSELSUB1

SETR2:

MOVR2,#63H

ACALLDELAY1

AJMPSELSUB1

BACK1:

AJMPSTART

;======================启用锦囊程序===========================

REPEAT:

MOVA,38h;使用锦囊时重新计时

MOVR6,A

CLRRING;当倒计时进入最后5秒的时候,启用锦囊能消除蜂鸣

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

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

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6

JNBACC.6,TZ7

JNBACC.7,TZ8

AJMPRECOUNT

TZ7:

AJMPTRUE7

TZ8:

AJMPTRUE8

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

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.7

;RING标志位为1时候P3.7口不断取反使喇叭发出一定频率的声音

OUT:

RETI

;==================T1溢出中断(计时程序)=========================

T1INT:

MOVTH1,#3CH

MOVTL1,#0B0H

INCR0

RETI

;====================INTT0中断服务程序========================

INTT0:

MOVDATA0,P1

CLREX0

RETI

END

5课程设计的总结与体会

自接触单片机以来,一直觉得单片机非常难,这次的课程设计我开始是以老师布置题目为主要选择对象的,但是后面发现,像步进电机和电子密码锁在我脑海中根本没得一点意象,上网搜了很多资料,也感觉不怎么很懂,于是问老师怎么弄,后面发现老师的意见和我的原本的程序和图只有几个地方不同,于是便将两者综合了一下,经调试和运行后,发现还行的通,于是便开始了忐忑的正文模版之路,以为快搞完了,后面发现其实程序和图还是要细细的弄懂才能写好报告,于是我又将程序和图细细的剖析了一遍,然后慢慢将流程图和proteus图画好和截取下来,经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。

在此,还是非常感谢我们的指导老师刘伟春老师的,他是一位很负责和很细心的老师,谢谢他的辅导和鼓励,这次的课程设计给了我一个很好的开始,我会好好努力的以后。

参考文献资料

[1]张迎新.《单片机初级教程》.北京航天航空大学出版社2000年.

[2]康华光.《电子技术基础(模拟部分)》.第四版高等教育出版社1999年.

[3]喻宗泉.《单片机原理与应用技术》.西安电子科技大学出版社2005年.

[4]万光毅.《单片机实验与实践教程》.北京航天航空大学出版社2003年.

[5]张俊谟.《单片机初级教程》.北京航天航空大学出版社2000年.

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

当前位置:首页 > 外语学习 > 其它语言学习

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

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