八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx

上传人:b****4 文档编号:16488910 上传时间:2022-11-24 格式:DOCX 页数:35 大小:417.22KB
下载 相关 举报
八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx_第1页
第1页 / 共35页
八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx_第2页
第2页 / 共35页
八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx_第3页
第3页 / 共35页
八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx_第4页
第4页 / 共35页
八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx

《八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。

八路数字抢答器 微机原理及接口技术课程设计Word格式文档下载.docx

进入下次抢答计时。

4、如果主持人未按"

键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"

键为止。

5、P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。

P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。

二.抢答器总体设计

1.1抢答器的工作原理

抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P1口接8个按键,提供选手抢答,P3.0-P3.5四个接四个按键,提供开始、结束、答题时间调整、枪答时间调整,加1、减1调整之用。

1.2抢答器的总体设计

倒计时方案方面利用MCS-51的内部的定时/计时器进行中断计时,配合软件延时实现倒计时。

该方案节省硬件成本,并且能够在定时器/计数器的使用、中断及程序设计方案方面得到锻炼与提高,显示方面采用穿行传输实现动态显示,该方案的硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,适用于单片机没有太多实时测控的任务场合

三.抢答器硬件电路设计

3.1芯片统计

名称

型号

数量

芯片

89C51

1

数码管

7SEG-MPX4-CC

按钮

BUTTON

15

电容

CAP

2

电解电容

CAP-ELEC

晶振

CRYSTAL

电阻

RES

8

喇叭

SPEAKER(DEVICE)

3.2硬件介绍

3.2.1芯片89C51

【1】

【2】

3.2.2数码管

其中DP为小数点【3】

数码管分共阳极和共阴极,都需要上拉电阻,以增加负载驱动能力。

共阳极则每位低电平有效,共阴极则每位高电平有效

单片机中共阳极段代码:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H0~7

DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH8~F

单片机中共阴极段代码:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H0~7

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H8~F

3.3电路设计

XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。

RST连接复位电路

P0口控制数码管段代码

P2口的低三位,控制数码管位选

P3口:

P3.0接开始按钮

P3.1接停止按钮

P3.2接抢答时间调整

P3.3接回答时间调整

P3.4接加1

P3.5接减1

P3.6接喇叭

3.3.1芯片电路

芯片电路如图3.1

图3.1

3.3.2复位电路

复位电路如图3.2

图3.2

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

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

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

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

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

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

3.3.3晶振电路

晶振电路设计如图3.3

图3.3

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

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

单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。

时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。

一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。

加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。

电容C1,C2的作用有两个:

一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。

3.3.4数码管电路

数码管电路如图3.4

图3.4

四.抢答器软件设计

4.1主程序设计

此程序的及时采用定时器T0和T1中断完成,其余状态循环调用显示子程序。

程序:

START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLDISPLAY;

未开始抢答时候显示FFF

JBP3.0,NEXT

ACALLDELAY

JBP3.0,NEXT;

去抖动,如果“开始”按下就向下执行,否则跳到非法抢答查询

ACALLBARK;

按键发声

MOVA,R1

MOVR6,A;

送R1->

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

SETBOK;

抢答标志位,勇于COUNT程序中半段是否查询抢答

MOVR7,#01H;

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

MOVR3,#0AH;

抢答只显示计时,灭号数

AJMPCOUNT;

进入倒计时程序,“查询有效抢答的程序”在COUNT里面

4.2显示子程序的设计

由于采用软件动态扫描实现数据显示,显示用十进制BCD码的数据对应段码存放在ROM表中。

显示时,先取出70H~75H某一地址中的数据,然后查得对应的显示段码从P0口输出。

P2口将对应的数码管选中,就能显示该地址单元的数据值。

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;

0、1、2、3、4、5、6、7、8、9、灭、F

4.3定时器T0、T1中断服务程序的设计

定时器T0用于响铃程序,定时器T1用于计时程序。

当答题剩余5秒种时P3.6口不断取反使喇叭发出一定频率的声音,提示选手

如图4.2

图4.2

程序

T0INT:

MOVTH0,#0ECH

MOVTL0,#0FFH

JNBRING,OUT

CPLP3.6;

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

OUT:

RETI

;

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

T1INT:

MOVTH1,#3CH

MOVTL1,#0B0H

INCR0

INT0SUB:

MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

现在两个时间LED上显示R1

JNBP3.4,INC0;

P3.4为+1S键,如按下跳到INC0

JNBP3.5,DEC0;

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

JNBP3.1,BACK0;

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

AJMPINT0SUB

INC0:

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:

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

INT1SUB:

MOVA,R2

MOVR5,A

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

AJMPINT1SUB

INC1:

CJNEA,#63H,ADD1

MOVR2,#00H

ADD1:

INCR2

DEC1:

JZSETR2

DECR2

SETR2:

MOVR2,#63H

BACK1:

4.4抢答处理程序的设计

当有选手第一个按下抢答器按扭时数码管显示选手号码,开始倒计时,并锁定抢答。

当在此选手之后再有选手按下按扭时无效,数码管不变。

REPEAT:

MOVA,R2;

使用锦囊时重新计时

MOVR6,A

CLRRING

COUNT:

MOVR0,#00H;

重置定时器中断次数

MOVTH1,#3CH

MOVTL1,#0B0H;

重置定时器

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,ACOUNT;

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

AJMPRECOUNT

ACOUNT:

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;

如果按下了“停止”执行的程序

AJMPSTART

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

TRUE1:

ACALLBARK

MOVA,R2

抢答时间R2送R6

MOVR3,#01H

CLROK;

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

AJMPCOUNT

TRUE2:

MOVR3,#02H

CLROK

TRUE3:

MOVR3,#03H

TRUE4:

MOVR3,#04H

TRUE5:

MOVR3,#05H

TRUE6:

MOVR3,#06H

TRUE7:

MOVR3,#07H

TRUE8:

MOVR3,#08H

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

ERROR:

MOVR0,#00H

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

AJMPHERE

QUIT1:

CLRRING

五.实验结果

5.1非法抢答

图5.1

如图5.1所示,1号非法抢答,被锁定,数码管显示1号号码,并且一亮一暗的跳动,并伴有警告声。

5.2抢答或回答时间时间修改

如下图5.2所示,程序运行后点击“抢答时间调整”或“回答时间调整”,数码管显示初始倒计时时间30s,然后点击“加1”或者“减1”按钮,可根据自己需求调整抢答或回答时间。

图5.2

5.3正常倒计时

图5.3

如图5.3所示,调整抢答时间为26s后,先按停止键,使数码管显示初始状态,接着按下“确定”键,这是会有蜂鸣声出现。

抢答倒计时从26s开始,在26s内需要开始抢答,在最后5秒的时候,会发出警报声。

若在26s内无人抢答,则如图5.4所示,回到初始状态。

图5.4

5.4回答时间

若有人抢答,在抢答键按下时,也会有蜂鸣声。

则在数码管的第一位显示抢答者的号码,而且最后两位显示答题时间倒计时,如图5.5

图5.5

此时,抢答区按键被锁,无人可以抢答。

回答时间完结后,又出现如图5.4的现象。

5.5复位

按下复位键后,程序恢复初始状态。

六.程序的优缺点

优点:

此程序,较为简单明了,电路连接也不复杂,元器件使用也少,在硬件方面节省了材料。

缺点:

此程序较过简洁,若有时间可以更加拓展一下,而且,动态扫描的显示方式需占用CPU较多的时间,适用于单片机没有太多实时测控的任务场合。

七.收获和体会

通过此次课程设计,更加加深了对于单片机的了解,包括功能,芯片实现方式、结构,有哪些特殊规定。

而且也明白了,虽然单片机的汇编语言虽然与微机很相似,但是也不尽相同,比如,微机中有比较代码CMP,而单片机中没有,又如寻址方式中,立即寻址方式,微机中如:

MOVA,10H而在单片机中为:

MOVA,#10H。

也知道了,复位电路,晶振电路的模样,且对CPU的89C51芯片有了更为深入的理解。

也明白了,根据情况的不同,数码管可分为共阴极和共阳极,不同情况编写段代码也是不同的。

还有一点就是,我知道了将C语言如何导入到单片机中,虽然此次实验,我并没有用到,但是在设计之初也有过尝试。

步骤如下:

1.下载KEIL软件,然后再下载VDM51.dll插件,使得keilC51文件夹中Bin文件夹中出现此文件,然后再粘贴到PROTEUS文件夹下的MODELS文件夹下。

2.然后打开keil软件,project->

newproject,建立工程在PROTEUS所产生的DSN文件的同一个文件夹下,然后选择自己在PROTEUS中所选用的芯片

3.新建->

保存为.C格式。

右击如图所示中的SOURCEGROUP,选ADDFILESTOGROUP‘sourcegroup’,,然后打开所设立的C文件,编辑后,用PROJECT->

BUILD进行调制。

然后打开project->

option……,点击target,改变晶振大小,然后点击output,选中CreateHEXfile

4.然后点击

中的第一第二个图标,生成.hex文件。

5.然后双击proteus中的芯片,从

中导入。

八.创新部分

在抢答还未开始的时候,若是抢答键按下,则锁定,并有蜂鸣声

还可以对抢答时间或者回答时间进行调整。

按下复位键后,所有的都恢复到初始状态

九.参考文献

1.《89C51引脚图及功能》窝中【狼】

2.《89C51》广州周立功单片机发展有限公司(从CSDN上下载下来)

3.《led数码管介绍》

4.《微机原理与接口技术》刘永华,王成端;

清华大学出版社;

2006年出版

5.《微机原理及应用课程设计指导书》陈秋妹,黄静;

浙江理工大学信息电子学院2009年12月

6.《单片机原理及应用》李全利,仲伟峰,许军;

2006年2月第一版

附录一

附录二

OKEQU20H

RINGEQU22H

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG0013H

AJMPINT1SUB

ORG001BH

AJMPT1INT

ORG0040H

MAIN:

MOVR1,#30;

初设抢答时间为30s

MOVR2,#60;

初设答题时间为60s

MOVTMOD,#11H;

设置定时器工作于方式1

MOVTH0,#0FH

MOVTL0,#0B1H;

越高发声频率越高,越尖

50ms为一次溢出中断

SETBEA

SETBET0

SETBET1

SETBEX0

SETBEX1;

允许4个中断,T0/T1/INT0/INT1

SETBTR1

SETBTR0;

一开始就运行定时器,以开始显示FFF,若要重新计数,重置TH1/TL1就行

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

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

当前位置:首页 > 自然科学 > 天文地理

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

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