毕业设计八路抢答器的设计文档格式.docx

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

毕业设计八路抢答器的设计文档格式.docx

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

毕业设计八路抢答器的设计文档格式.docx

由于数字电路中基本单元电路的结构比较简单,而且又允许组件有较大的分散性,这就使我们不仅可把众多的基本单元做在同一块硅片上,同时又能达到大批量生产所需要的良率,便于高度集成化!

数字电路与数字电子技术已经广泛的应用于电视、雷达、通信、电子计算机、自动控制、航天等科学技术领域,与我们的生活联系越来越紧密,这就要求我们理论与实践相结合!

通过这次设计,我们要达到以下目的:

(1)结合书上所学的理论知识,和这次的物品联系起来!

(2)通过不同的途径大量的查阅不同的资料,进一步熟悉电子电路,最重要的就是要培养一种思维方式!

能解决一个问题的方式!

第一章抢答器的概述

1.实现的功能:

(1)可以同时供8名选手比赛,分别用8个按钮S0~S7表示;

(2)具有开始、暂停、复位的作用;

(3)具有锁存与显示的功能;

也就是选手按动按钮,会锁存相应的号码,扬声器发出声响提示,并在数码管上显示选手的号码和剩余的时间,抢答会实行优先锁存,优先抢答选手的编号一直保持到主持人按复位按钮;

(4)具有定时抢答的作用;

2.抢答器原理框图:

抢答器原理框图1

如图1所示,其工作原理为:

接通电源后,可以先设定时间,定时器显示设定时间;

主持人将开关置“开始”状态,宣布“开始”,抢答器开始工作,定时器倒计时,选手在设定的时间范围内抢答时,抢答器完成:

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

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

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

第二章C51单片机的功能简介

80C51单片机是Philips公司MC51系列单片机的一种8位单片机。

内部含有存储器是它最大的特点,用途十分广泛,特别是在于生产便携式商品,手提式仪器等方面,有着十分广泛的应用。

80C51单片机内部主要有以下部件:

80C51CPU、振荡电路、总线控制部件、中断控制部件、片内ROM、片内RAM、并行I/O接口、定时器和串行I/O接口

80C51单片机内部由CPU、4KB的ROM,256B的RAM,两个16位的定时/计数器T0和T1,4个8位的I/O端P0、P1、P2、P3,一个全双工串行I/O接口,5个中断源等组成。

单片微机内部最核心的部分是CPU,会产生各种控制信号是CPU的主要功能,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按它的功能可分为运算器和控制器两部分。

控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。

它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。

运算器由累加器ACC、算术逻辑器部件ALU、程序状态寄存器PSW,BCD码运算调整电路等构成。

下图2是C51的内部结构图

图2C51内部结构图

第三章硬件电路的设计

1.整体电路图

图3整体电路图

2.时钟电路模块

时钟电路是由一个晶体振荡器12MHZ和两个30pF的瓷片电容组成。

6MHz的晶振,其机器周期是2us。

12MHz的晶振,他的机器周期是1us,也就是说在执行同一条指令时用6MHz的晶振所用的时间是12MHz晶振的两倍。

为了提高整个系统的性能,我选择了12MHz的晶振。

电容器C1、C2起稳定振荡频率和快速起振的作用,电容值我选择了30pF。

内部振荡方式所得的时钟信号稳定性高。

时钟电路的作用是产生单片机工作所需的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。

单片机自身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。

其电路如图4:

图4时钟电路模块

3.复位电路模块

很多东西在运行时都需要复位,让他的状态处于一个正确的初始状态,并从这个状态开始工作。

电容在上接高电平,电阻在下接地,中间为RST。

这种复位电路为高电平复位。

其工作原理是:

通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,单片机开始正常工作。

其电路如图5所示:

图5复位电路

4.显示电路

在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般包括两种:

一种是静态显示,一种是动态显示。

其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;

动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。

下图6是4位七段数码管显示电路:

图6显示电路

5.键盘扫描电路

键盘是人与各种微机系统打交道的主要设备。

在文献和书籍中也可以找到关于键盘硬件电路的设计方法,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。

我们这里应采用软件去抖方法,即延时重复扫描法,延时法的原理为:

在检测到有按键下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;

同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而消除去抖的影响。

图7按键电路

6.发声电路

大家都知道,人类所能听到的声音的频率范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使蜂鸣器发出不同的声音。

图8蜂鸣器电路

第四章软件设计

软件任务分析环节是为软件设计做一个总体规划。

从软件的功能来看可分为两大类:

一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。

这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。

主程序清单:

OKEQU20H;

抢答开始标志位

RINGEQU22H;

响铃标志位

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;

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

;

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

START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;

未开始抢答时候显示FFF

JBP3.0,NEXT;

ddddddd

ACALLDELAY

去抖动,如果"

开始键"

按下就向下执行,否者跳到非法抢答查询

ACALLBARK;

按键发声

MOVA,R1

MOVR6,A;

送R1->

R6,因为R1中保存了抢答时间

SETBOK;

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

MOVR7,#01H;

读抢答键数据信号标志,这里表示只读一次有用信号

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

JNBP1.7,FALSE8

AJMPSTART

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

FALSE1:

MOVR3,#01H

AJMPERROR

FALSE2:

MOVR3,#02H

FALSE3:

MOVR3,#03H

FALSE4:

MOVR3,#04H

FALSE5:

MOVR3,#05H

FALSE6:

MOVR3,#06H

FALSE7:

MOVR3,#07H

FALSE8:

MOVR3,#08H

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

INT0SUB:

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

先在两个时间LED上显示R1

JNBP3.4,INC0;

P3.4为+1s键,如按下跳到INCO

JNBP3.5,DEC0;

P3.5为-1s键,如按下跳到DECO

JNBP3.1,BACK0;

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

INC0:

MOVA,R1

CJNEA,#63H,ADD0;

如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1

ADD0:

INCR1

DEC0:

JZSETR1;

如果R1为0,R1就置99,

DECR1

SETR1:

MOVR1,#63H

BACK0:

RETI

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

INT1SUB:

MOVA,R2

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

INC1:

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ADD1:

INCR2

DEC1:

JZSETR2

DECR2

SETR2:

MOVR2,#63H

BACK1:

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

REPEAT:

MOVA,R2;

使用锦囊时重新计时

MOVR6,A

COUNT:

MOVR0,#00H;

重置定时器中断次数

重置定时器

RECOUNT:

MOVA,R6;

R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

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向下运行

AJMPCHECK

FULL:

CJNEA,#14H,CHECK;

下面是1s的情况,响并显示号数并清R0,重新计

SETBRING

JZQUIT;

计时完毕

MOVR0,#00H

DECR6;

一秒标志减1

LARGER:

MOVA,R0

CJNEA,#14H,CHECK;

如果1s向下运行,否者跳到查"

停/显示"

计时一秒R6自动减1

CHECK:

JNBP3.1,QUIT;

如按下停止键退出

JNBOK,CHECKK;

只在回答倒计时才有效

AJMPNEXTT

CHECKK:

JNBP3.0,REPEAT;

判断是否使用锦囊

NEXTT:

ACALLDISPLAY

JBOK,ACCOUT;

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

AJMPRECOUNT

ACCOUT:

MOVA,36H

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6

JNBACC.6,TZ1

JNBACC.7,TZ2

TZ1:

JMPTRUE7

TZ2:

JMPTRUE8

QUIT:

CLROK;

如果按下了"

停止键"

执行的程序

=====正常抢答处理程序=====

TRUE1:

ACALLBARK

抢答时间R2送R6

MOVR3,#01H

CLROK;

因为答题的计时不再查询抢答,所以就锁了抢答

AJMPCOUNT

TRUE2:

ACALLBARK

MOVR3,#02H

TRUE3:

MOVR3,#03H

TRUE4:

MOVR3,#04H

TRUE5:

MOVR3,#05H

TRUE6:

MOVR3,#06H

TRUE7:

MOVR3,#07H

TRUE8:

MOVR3,#08H

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

ERROR:

MOVR0,#00H

MOVTL1,#0B0H

MOV34H,R3;

犯规号数暂存与(34H)

HERE:

CJNEA,#06H,FLASH;

0.3s向下运行->

灭并停响

MOVR4,#0AH

MOVR5,#0AH;

三灯全灭

AJMPCHECK1

FLASH:

CJNEA,#0CH,CHECK1;

下面是0.8s的情况,响并显示号数并清R0,重新计

MOVR3,34H;

取回号数

MOVR5,#0BH

MOVR4,#0BH;

显示FF和号数

CHECK1:

JNBP3.1,QUIT1

AJMPHERE

QUIT1:

CLRRING

=====显示程序=====

DISPLAY:

MOVDPTR,#DAT1;

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

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#0feH

MOVP0,A

ACALLDELAY2

MOVDPTR,#DAT2

MOVA,R5

MOVP2,#0fdH

MOVA,R4

MOVP2,#0fbH

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:

DJNZ35H,LOOP0

=====延时4236个机器周期(去抖动用到)=====

DELAY:

MOV32H,#12H

LOOP:

MOV33H,#0AFH

LOOP1:

DJNZ33H,LOOP1

DJNZ32H,LOOP

=====延时4236个机器周期(显示用到)=====

DELAY2:

MOV32H,#43H

LOOP3:

MOV33H,#1EH

MOVA,R7;

每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转到正常抢答处理

JNZAAAA1;

没读到有效数据时继续转到AAAA1

LOOP2:

DJNZ33H,LOOP2

DJNZ32H,LOOP3

=====读抢答按键数据口程序=====

由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口

然而在检测按键口时动态扫描要调用三次(4ms)延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号最低.

故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性

AAAA1:

MOVA,P1

CJNEA,#0FFH,AA1;

当不全为1时的数据为有效数据

AA0:

MOV36H,A;

将有效数据送到36H暂存

AJMPLOOP2

AA1:

DECR7

AJMPAA0

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

BARK:

SETBRING

CLRRING;

=====TO溢出中断(响铃程序)=====

T0INT:

MOVTH0,#0ECH

MOVTL0,#0FFH

JNBRING,OUT;

CPLP3.6;

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

OUT:

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

T1INT:

MOVTH1,#3CH

INCR0

RETI

EN

第五章设计总结

这次研究与设计的八路多功能抢答器采用了常见的电子元器件,使用了80C51单片机外围接口抢答器系统,采用了单片机的定时器/计数器定时计数原理与硬件和软件的有效结合。

通过对有关文献资料的调查和收集,理论与实践相结合,培养了我的自学能力和实践能力。

和以前被动接受知识到现在的主动寻求知识,这可以是一个很大的突破学习方法。

在设计过程中,由于时间限制和有限的能力,所以很多地方难免存在不足之处,硬件设计和软件设计的一些功能还没有被开发出来。

但在今后的工作中,我会严格要求自己,尽量追求完美。

这个设计通过了软件与硬件上的调试、仿真。

我想这在自己以后的学习和工作都会有很大的益处。

在这次设计中遇到了很多实际性的问题,在实际设计的过程中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

由于我没有选修单片机这门课程,所以单片机的知识给我造成了很大的困扰。

对于单片机设计,其硬件电路是相对而言比较简单的,主要是解决程序设计中的问题。

而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。

它才是一个设计的灵魂所在。

因此在整个设计过程中大部分时间是用在程序上面的。

很多子程序是可以借鉴书本上的,但怎样连接各个子程序才是关键的问题所在,这需要我们对单片机的结构很熟悉。

因此可以说单片机的设计是软件和硬件相

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

当前位置:首页 > 高中教育 > 语文

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

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