八路抢答器的设计课程毕业设计.docx

上传人:b****4 文档编号:4075848 上传时间:2022-11-27 格式:DOCX 页数:24 大小:395.05KB
下载 相关 举报
八路抢答器的设计课程毕业设计.docx_第1页
第1页 / 共24页
八路抢答器的设计课程毕业设计.docx_第2页
第2页 / 共24页
八路抢答器的设计课程毕业设计.docx_第3页
第3页 / 共24页
八路抢答器的设计课程毕业设计.docx_第4页
第4页 / 共24页
八路抢答器的设计课程毕业设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

八路抢答器的设计课程毕业设计.docx

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

八路抢答器的设计课程毕业设计.docx

八路抢答器的设计课程毕业设计

物理与电子工程学院

 

《单片机原理与接口技术》

课程设计报告书

 

设计题目:

八路抢答器的设计

专业:

自动化

班级:

二班

学生姓名:

马光

学号:

20103412108

指导教师:

尹世忠

2013年12月16日

 

物理与电子工程学院课程设计任务书

专业:

自动化班级:

2班

学生姓名

马光

学号

2010341218

课程名称

单片机原理与接口技术

设计题目

八路抢答器的设计

设计目的、主要内容(参数、方法)及要求

设计目的:

巩固单片机原理与接口技术课程中所学的知识,提高学生的动手能力和创新能力,培养学生查阅资料和阅读文献的能力,培养学生初步的科研能力,为毕业设计奠定基础。

主要内容:

本课程设计主要是利用单片机原理与接口技术课程中所学的知识,完成一个知识竞赛中用到的8路抢答器的设计。

设计内容包括硬件电路原理图、显示程序设计、硬件和软件的综合调试。

设计要求:

1、以80C51系列单片机为核心器件,组成一个8路抢答器,能够供8个参赛队进行抢答。

2、在现有的单片机实验系统上完成硬件电路接线。

3、完成该课题的程序设计、提交程序设计框图及程序设计清单。

4、完成硬件与软件的综合调试,实现预定功能。

5、通过老师审核,提交课程设计报告。

工作量

2周时间,每天3学时,共计42学时

进度安排

第1-3天:

根据任务书的要求查阅相关资料。

阅读相关文献。

搞清楚本课题的设计内容,对本课题的设计有个初步的设想。

第4-5天:

完成本课题设计的基本设计方案,通过指导老师的审核。

第6-7天:

完成课题的硬件电路的设计,完成程序设计。

第8-9天:

进行调试。

第10-11天:

撰写课题设计报告书,并根据指导教师的意见进行修改。

第12天:

完成课程设计报告书。

第13天:

提交报告书。

第14天:

指导教师批阅课程设计报告书。

主要参考资料

1、韩志军,沈晋源,王振波.单片机应用系统设计[M]机械工业出版社,2005年

2、李全利.单片机原理与接口技术[M]高等教育出版社,2009年第二版

3、马淑兰.单片机技术及应用实例分析[M]西安电子科技大学出版社,2009年

4、自己查阅一些抢答器的设计实例以作参考。

指导教师签字

 

教研室主任签字

摘要

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。

作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。

 

本设计是以八路抢答为基本理念。

考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,扬声器发生提示。

同时系统能够实现:

在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。

关键字:

抢答器;竞赛;单片机

 

1设计任务与要求

1.1设计目的

巩固单片机原理与接口技术课程中所学的知识,提高学生的动手能力和创新能力,培养学生查阅资料和阅读文献的能力,培养学生初步的科研能力,为毕业设计奠定基础。

主要内容:

本课程设计主要是利用单片机原理与接口技术课程中所学的知识,完成一个知识竞赛中用到的8路抢答器的设计。

设计内容包括硬件电路原理图、显示程序设计、硬件和软件的综合调试。

1.2设计要求

(1)以80C51系列单片机为核心器件,组成一个8路抢答器,能够供8个参赛队进行抢答。

(2)在现有的单片机实验系统上完成硬件电路接线。

(3)完成该课题的程序设计、提交程序设计框图及程序设计清单。

(4)完成硬件与软件的综合调试,实现预定功能。

(5)通过老师审核,提交课程设计报告。

2总体设计思路

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

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

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

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

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

如果再次抢答必须由主持人再次操作“开始、停止”状态开关。

3硬件电路设计

3.1原理图的确定

单片机实现抢答的原理图

同抢答电路的接口电路

如图3-1-1

图3-1-1单片机实现抢答的原理图

3.2抢答器接口电路

参考电路如图3-1-1所示。

该电路完成两个功能:

一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。

如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。

3.3时序控制电路设计

时序控制电路是抢答器设计的关键,它要完成以下功能:

a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。

                    

b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作

3.4复位电路的设计

外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。

复位电路如图3-4-1,3-4-2所示:

复位电路原理图

图3-4-2复位电路图3-4-1复位电路

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

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

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

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

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

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

3.5晶振电路的设计

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

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

如图3-5-1所示

图3-5-1晶振电路原理图

3.6报警电路设计

报警电路用于报警,当遇到报警信号时,发出警报。

一般喇叭是一种电感性图5报警电路图。

8951驱动喇叭的信号为各种频率的脉冲。

因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。

如图3-6-1中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。

不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。

选手在设定的时间内抢答时,实现:

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

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

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

图3-6-1报警电路图

3.7选手抢答键(矩阵式键盘)

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

图3-7-1选手抢答键电路

3.8显示与显示驱动电路

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

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

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

 

图3-8-1显示与显示驱动电路

4软件设计

4.1系统主程序设计

主程序

设置抢答时间和回答问题时间

定时器及并行口初始化

将时间计数器及启动标志值1

开中断

采并行口数据为0吗?

启动标志=1吗?

判断抢答组号

报警电路发声

判断哪一组为抢答组

将抢答组号送显示

抢答时间到了吗?

输出响铃信号提示超时

继续抢答比赛吗?

系统返回

N

Y

Y

Y

N

Y

N

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

为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序。

如图4-1-1所示当时间设好了之后,主持人发布抢答命令按下P1.7按键,程序开

始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。

当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。

4.2程序清单

定时器T1时间初值:

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

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

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

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

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

MAIN:

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

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

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;一开始就运行定时器,以开始显示PPP.如果想重新计数,重置TH1/TL1就可以了

;查询程序

START:

MOVDATA0,#0FFH;初始化

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

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

JNBP3.3,INT0SUB

JNBP3.4,TZ1;倒计时调整

JBP3.0,NEXT;ddddddd

ACALLDELAY

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

SETBEX0;开放INT0

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

ACALLDISPLAY

JBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否

者跳过查询继续倒数(这里起到锁抢答

作用)

AJMPRECOUNT

ACCOUT:

MOVA,DATA0

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;显示PP和号数

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,73H

;"灭","1","2","3","4","5","6","7","8","9","灭","P"

DAT2:

DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H

;第一个为零,其他与上相同,因为十位如果为零显示熄灭

DELAY1:

MOV35H,#08H;加减时间延时(起到不会按下就加N个数)

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;INTT0中断服务程序

INTT0:

MOVDATA0,P1

CLREX0

RETI

END

5仿真调试

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

 

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

通过Proteus进行仿真,如仿真结果所示,按下开始后,数码管开始倒计时,仿真结果如图5-1-2所示。

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

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

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

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