抢答器的设计.docx

上传人:b****4 文档编号:5670033 上传时间:2023-05-08 格式:DOCX 页数:15 大小:97.09KB
下载 相关 举报
抢答器的设计.docx_第1页
第1页 / 共15页
抢答器的设计.docx_第2页
第2页 / 共15页
抢答器的设计.docx_第3页
第3页 / 共15页
抢答器的设计.docx_第4页
第4页 / 共15页
抢答器的设计.docx_第5页
第5页 / 共15页
抢答器的设计.docx_第6页
第6页 / 共15页
抢答器的设计.docx_第7页
第7页 / 共15页
抢答器的设计.docx_第8页
第8页 / 共15页
抢答器的设计.docx_第9页
第9页 / 共15页
抢答器的设计.docx_第10页
第10页 / 共15页
抢答器的设计.docx_第11页
第11页 / 共15页
抢答器的设计.docx_第12页
第12页 / 共15页
抢答器的设计.docx_第13页
第13页 / 共15页
抢答器的设计.docx_第14页
第14页 / 共15页
抢答器的设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

抢答器的设计.docx

《抢答器的设计.docx》由会员分享,可在线阅读,更多相关《抢答器的设计.docx(15页珍藏版)》请在冰点文库上搜索。

抢答器的设计.docx

抢答器的设计

设计题目:

抢答器的设计

设计目的:

设计一种利用微电脑芯片作为核心部件进行逻辑控制及信号产生的单片机技术设计的9路多功能智力竞赛抢答器。

设计目标:

了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。

任务下达时间:

2010年3月1日

任务完成时间:

2010年3月1日

指导教师评语:

 

年月日

设计成绩:

摘要:

抢答器在我们的日常生活中是很常见的,特别是在一些知识竞赛和一些益智性的电视节目中抢答器的作用更是不容忽视。

能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。

现在设计一种利用微电脑芯片作为核心部件进行逻辑控制及信号产生的单片机技术设计的9路多功能智力竞赛抢答器。

关键词:

PLC;单片机;抢答器;设计

引言

在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。

为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。

1.方案论证

抢答器是将键盘部分、单片机部分、锁存显示部分按指示的3个单元电路相接。

这样就将整个硬件部分连接起来组成一个整体电路。

抢答器由主体电路和扩展电路两部分组成。

主体电路完成基本的抢答功能;扩展电路完成定时抢答的功能。

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

接通电源时,节目主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯,定时显示器显示设定的时间,当节目主持人宣布“抢答开始”,同时将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,定时器倒计时。

当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。

2.硬件详细设计

2.1单片机电路引脚各部分连接及功能

1)本设计采用Atmel公司生产的单片机AT89C2051实现主要功能,AT89C2051的功能与80C51功能相似。

AT89C205的各引脚功能情况为:

2)P1口(P110~P117)8个引脚:

P117为最高位,P110为最低位。

在AT89C2051不带片外存储器时,P1口可作为通用I/O口使用,

3)P110~P117:

用于传送CPU的输入/输出数据。

这时输出数据可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;

4)P37引脚外接电阻、放大管以及扬声器;

5)RST复位线,外接电容、电阻,使AT89C2051处于复位工作状态

6)TXD:

串行口数据发送;

7)RXD:

串行口数据接收;

8)XMT1和XMT2外接石英晶体和微调电容,为片内振荡电路输入线,用来连接AT89C2051片内OSC的定时反馈网络。

9)INT0/INT1:

外部中断0/1输入;

10)T/C1,T/C0:

定时器/计数器1/0的外部输入。

2.2单片机的锁存显示部分

1)锁存部分:

采用串行→并行8位输出锁存移位寄存器74LS595要显示字符,把这个字符转换成相应的字形码,然后通过串行口发送到74LS595,74LS595把串行口接收到的数据变为并行输出加到数码管上(提供a~dp的驱动)。

本设计采用的是共阳极8段数码管显示器。

2)显示部分:

采用动态扫描4位LED显示接口电路,LED动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段a~dp同名端并联在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制,CPU的字段输出口送出字形码时,所有显示器由于同名端并联接收到相同的字形码,但究竟哪个显示器亮,则取决于COM端,这一端是由I/O控制的,可以自行决定何时显示哪一位。

在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,尽管实际上各位显示器并非同时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

3.硬件详细设计

3.1单片机内部程序信号流程

单片机AT89C2051内部程序信号流程如图1所示。

首先主持人按下复位按钮,单片机进行片内内部扫描的同时主持人可以调节抢答时间和允许答题时间,在整定的时间当中如果没有调节抢答时间,则抢答器工作为设置的默认抢答时间值,同时在主持人未按下抢答按钮的时候有选手抢答则此时单片机发出一个选手犯规信号送入扬声器,只有主持人允许后,选手才能开始抢答。

与此同时单片机开始定时并送出一个信号到数字集成电路显示抢答时间,当中如果有选手抢答则送入一个信号到扬声器并显示选手号,同时单片机开始对选手回答问题定时,时间到则对选手报警,在之前允许抢答时间到也发出报警信号。

到主持人发出下一次抢答信号。

图1 单片机内部程序信号流程图

4.PROTUCE软件仿真

系统仿真还用到了PROTUCE软件,仿真如图2、图3所示。

可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.

系统仿真时首先要在使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行PROTUCE仿真。

首先要新建一个文档是

DNS型的找出需要的器件,可以使用搜索功能。

接着把各个器件放到合适的位置都要放到蓝色框内。

然后根据自己的设计要求连线。

等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在programfile后选择要添加文件,文件要求必须是HEX文件。

然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。

图2六号抢答到时时的显示图

图3倒计时到30秒时的显示图

5.课程设计体会

本设计是以实际电路作为最终形式,该电路允许9人同时参赛(可扩展),并显示剩余答题时间与剩余允许抢答时间及抢答选手号,有状态显示电路及报警电路。

功能相当齐全,在以后还可扩展功能。

如自动控制记分器进行记分,并通过串行口与PC机通信,用PC机统计选手得分情况,完全实现智能化和公正,减小人为因素的影响。

通过运用我所学习的模拟电子技术、数字电子技术和通信电子线路等关于电子技术的课程中的理论知识来完成此项设计。

但在设计的过程中,我遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容,并且通过查阅书籍和相关文献资料来提高独立分析能力和解决实际问题的能力;掌握并熟练运用相关软件进行操作;熟悉常用电子器件的类型、特征和功能,并本着合理采选用的原则进行选用;进一步熟悉电子仪器的正确使用。

在此我要感谢我的指导老师,感谢老师给我这样的锻炼机会。

在整个设计过程中我懂得了许多东西,不仅培养了我独立工作的能力,树立了对自己工作能力的信心,相信这次设计对今后的工作有非常重要的影响,而且还大大提高了我的动手能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。

通过这次设计我最大的收获是我学到了许多新的知识。

这次的设计就到此结束了,愿这个小小的抢答器可以发出它的功能!

6.参考文献

[1]沈文斌.嵌入式硬件系统设计与开发实例详解[M].北京:

电子工业出版社,2005.

[2]张鑫.单片机原理及应用[M].北京:

电子工业出版社,2005.

[3]潘永雄.电子线路CAD实用教程[M].2版.西安:

西安电子科技大学出版社,2005.

[4]张齐.单片机应用系统设计技术———基于C语言编程[M].北京:

电子工业出版社,2004.

[5]杨元挺.电子技术技能训练[M].北京:

高等教育出版社,2002.

[6]丁元杰.弹片微机原理及应用[M].北京:

机械工业出版社,2001.

 

系统提示信息

 

7程序清单:

OKEQU20H;抢答开始标志位;将P1口与P2口互换,P3.0-P1.0,P3.1-P1.7

RINGEQU22H;响铃标志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

;===============-

;单片机抢答器主程序设计

;================

MAIN:

MOVR1,#0FH;初设抢答时间为15s

MOVR2,#0AH;初设答题时间为10s

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

JBP1.0,NEXT;ddddddd

ACALLDELAY

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

ACALLBARK;按键发声

MOVA,R1

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

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

MOVR3,0AH;抢答只显示计时,灭号数

AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:

JNBP1.1,FALSE1

JNBP1.2,FALSE2

JNBP1.3,FALSE3

JNBP1.4,FALSE4

JNBP1.5,FALSE5

JNBP1.6,FALSE6

AJMPSTART

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

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

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

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

JNBP1.7,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,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:

JNBP1.7,QUIT;如按下停止键退出

ACALLDISPLAY

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

AJMPRECOUNT

ACCOUT:

JNBP1.1,TRUE1

JNBP1.2,TRUE2

JNBP1.3,TRUE3

JNBP1.4,TRUE4

JNBP1.5,TRUE5

JNBP1.6,TRUE5

AJMPRECOUNT

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

;=====犯规抢答程序=====

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:

JNBP1.7,QUIT1

ACALLDISPLAY

AJMPHERE

QUIT1:

CLRRING

CLROK

AJMPSTART

;=====单片机抢答器显示程序=====

DISPLAY:

MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#01H

MOVP0,A

ACALLDELAY

MOVDPTR,#DAT2

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#02H

MOVP0,A

ACALLDELAY

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#04H

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

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

当前位置:首页 > 农林牧渔 > 林学

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

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