多路抢答器课程设计报告.docx

上传人:b****7 文档编号:9324781 上传时间:2023-02-04 格式:DOCX 页数:28 大小:97.40KB
下载 相关 举报
多路抢答器课程设计报告.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设计任务和性能指标1

1.1设计任务1

1.2性能指标1

2设计方案1

2.1需求分析1

2.2方案论证2

3系统硬件设计2

3.1硬件电路功能介绍2

3.2硬件电路原器件3

3.2硬件电路图3

3.3准备状态图4

3.4抢答倒计时4

3.5五号抢答及回答倒计时5

4系统软件设计6

4.1程序主流程图6

4.2抢答违规流6

4.3查询程序流程7

4.4抢答时间调整9

5系统硬件设计10

5.1调试步骤10

5.2性能分析10

6总结和体会11

参考文献12

附录1程序清单13

1设计任务和性能指标

1.1设计任务

本课程设计所制作的多路抢答器以八路抢答器做为例,该抢答器具有定时抢答的功能。

参赛选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手。

如定时抢答时间已到,无选手抢答,抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示

1.2性能指标

1、实现多路抢答;

2、能显示最终抢答题机会的机号;

3、主持人有控制抢答的权限;

4、实现抢答时间和回答时间的调整。

2设计方案

2.1需求分析

1原理

抢答器的工作原理为:

接通电源后,主持人将开关拨到"清零"状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置;开始"状态,宣布"开始"抢答器工作。

定时器倒计时,扬声器给出声响提示。

选手在定时时间内抢答时,抢答器完成:

优先判断、编号锁存、编号显示、扬声器提示。

当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。

如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。

2任务

(1)画出程序流程图

(2)分析电路图

(3)编写代码

(4)程序分析与仿真

2.2方案论证

按照要求,初步确定设计系统由主控模块、显示模块、抢答接口电路三个部分组成,电路系统构成框图。

主控芯片使用AT89C51单片机芯片,控制电路由两个抢答控制按钮和4个抢答时间调整按钮组成,抢答电路由8个同步抢答按键,显示部分由一个四公阴二极显示器和8个上拉电阻构成。

3系统硬件设计

3.1硬件电路功能介绍

如图4。

1所示接在X1、X2两个引脚之间的为晶振,为整个单片机提供时序逻辑。

P0端口(P0.0-P0.7):

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P2.0到P2.3为显示器控制位,控制是显示抢答小组的组号还是正式答题时的倒计时时间数。

P1端口(P1.0-P1.7):

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

此次P1.0到P1.7代表8组选手控制键,按键按下时表示该组抢答,P3.0为开始键,P3.1为停止键,P3.2为抢答时间调整P3.3回答时间调整位P3.4为加1P3.5为减1P3.6为扬声器控制位,当主持人闭合开关扬声器发声,多路抢答器电路和计时电路进入正常状态;参赛者按键时,扬声器发声,抢答电路和计时电路停止工作;若是抢答时间到,无人抢答,扬声器发声,抢答电路和计时电路停止工作。

 

3.2硬件电路原器件

原器件

数量

10K电阻

7个

按钮

15个

AT89C51芯片

1个

200欧电阻

1个

500欧电阻

1个

30pF电容

2个

晶振

1个

8输入端与非门

1个

10u电容

1个

四个公阴二极显示器

1个

74LS04反相器

1个

表1硬件电路原器件列表

3.2硬件电路图

图3.1八路抢答器硬件电路图

3.3准备状态图

图3.2准备状态电路图

3.4抢答倒计时

图3.3抢答倒计时图

3.5五号抢答及回答倒计时

图3.4五号抢答及回答倒计时图

4系统软件设计

4.1程序主流程图

图4.1程序主流程图

4.2抢答违规流

当抢答选手没有在规定的时间按抢答按钮时,抢答器进入违规抢答程序。

具体程序如下:

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

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

图4.2抢答违规流程图

4.3查询程序流程

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

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

图4.3查询程序流程图

4.4抢答时间调整

当遇到特殊情况需要延长、缩短抢答时间及回答时间是主持人可以通过调整按钮调整相应的时间。

调整抢答时间的程序如下:

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

 

5系统硬件设计

5.1调试步骤

(1)启动抢答器前抢答器的显示屏上显示FFF,表明抢答器处于准备就绪状态。

(2)确定抢答器是抢答时间及回答时间是否需要调整,如果要调整,主持人通过相应的调整按钮调整时间。

(3)主持人按开始抢答按钮,系统发出警告声,显示屏上出现抢答倒计时时间;各选手在规定的时间内按抢答按钮,系统将最先压抢答按钮的选手号码输出到显示屏上,并开始进入回答问题倒计时。

(4)选手在回答规定时间内完成回答,主持人按停止按钮,系统回到抢答初始准备状态;当回答时间剩余5秒时,系统提示报警声,。

5.2性能分析

本多路抢答器要求有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定,通过键盘扫描输出按键信息,再通过单片机将它转换成能在七段数码管上显示字型码。

当抢答完毕时,会在数码管上显示抢答者数字号码提示以表示抢答成功。

同时显示其分数,分数的加减可由裁判手动进行。

采用独立式键盘,可实现8路抢答。

在显示时使用的是七段数码管显示在本设计中根据实际情况采用的是动态显示方法。

并通过查表法,将其在数码管上显示出来,其中P1口为字型码输入端,P2口低6位为字选段输入端。

通过查表将字型码送给7段数码管显示的数字。

软件去抖动,如果"开始键"按下就向下执行,否者跳到开始。

采用倒计时程序,使其具有倒计时功能。

回答倒计时30秒。

抢答时间5秒。

采用发声警报(由于发生器不响,所以,用绿灯换了),起到报警作用。

 

6总结和体会

单片机课程设计是一门很实用,很难的设计。

这个设计用到了单片机,电路等方面的知识,通过这次课程设计,使我们对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。

完成本次课程设计的过程,是一个从无到有的过程,经历了兴奋、自信、失落、奋发、所悟、完成几个过程。

刚做做课程设计时,仔细阅读设计的题目和要求,以为没什么困难的,所用的知识书上都有。

可是当我们动手开始做的时候,才发现其中的算法,设计是那么繁琐。

经过一天的努力,毫无结果。

失落的心情油然而生。

于是,再到图书馆和网上查找资料,在经过借鉴很多类似的资料,文献后,总算是有点眉目了。

埋头苦干的过程是痛苦的,尤其是在思考算法和程序框架时,迷茫,烦躁,特别是当苦思出来一个结果,又被自己推翻,心痛的无法言绘。

在痛苦中挣扎,建立,推翻,参考别人的思路,建立,再次在推翻,在这不断循环中,终于最后完善了程序。

其中的煎熬是很痛苦的,深刻明白攻克自己“未知领域”的困难。

但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,不懂付出怎么能知道回报的快乐,一分耕耘一分收获,有付出才会有回报,就在这样的痛与快乐的交换中,我们学到了知识,学到了做人的道理。

通过这次的模拟实践,我们感觉到自己从课本上学到的理论知识和实践仍有很大的差距。

最少很多元器件根本不知道有什么功效,在仿真仪器中是什么代码。

有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。

我们遇到了不少问题,花费了很多的时间。

这让我们重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。

理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。

这次的课程设计,让我们学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。

最大的收获是:

对键盘,显示器,C51语言(虽然最后还是用汇编语言编写的,但是,我们也试着学用了C51)的应用有了深刻的了解。

参考文献

[1]张迎新。

《单片机初级教程》。

北京航天航空大学出版社2000年。

[2]康华光。

《电子技术基础(模拟部分)》。

第四版高等教育出版社1999年。

[3]喻宗泉。

《单片机原理与应用技术》。

西安电子科技大学出版社2005年。

[4]万光毅。

《单片机实验与实践教程》。

北京航天航空大学出版社2003年。

[5]张俊谟。

《单片机初级教程》。

北京航天航空大学出版社2000年。

 

附录1程序清单

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

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,

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

当前位置:首页 > 初中教育 > 英语

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

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