基于单片机的8路抢答器的设计23431文档格式.docx

上传人:b****1 文档编号:13530207 上传时间:2022-10-11 格式:DOCX 页数:16 大小:122.06KB
下载 相关 举报
基于单片机的8路抢答器的设计23431文档格式.docx_第1页
第1页 / 共16页
基于单片机的8路抢答器的设计23431文档格式.docx_第2页
第2页 / 共16页
基于单片机的8路抢答器的设计23431文档格式.docx_第3页
第3页 / 共16页
基于单片机的8路抢答器的设计23431文档格式.docx_第4页
第4页 / 共16页
基于单片机的8路抢答器的设计23431文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于单片机的8路抢答器的设计23431文档格式.docx

《基于单片机的8路抢答器的设计23431文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的8路抢答器的设计23431文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

基于单片机的8路抢答器的设计23431文档格式.docx

于是,我想到了用单片机实现。

单片机体积小价格低,应用方便,稳定可靠。

单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。

由于单片机本身不具有软件编译测试的功能,我们需要借助其他软件编译,将编译好的程序“烧”入单片机内。

在实际电路设计中,需要先通过仿真软件测试电路以及编译的程序,检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作,能否准确的实现所设计的功能。

如果测试通过,电路仿真没有问题能完全实现功能的话就可以实际的做板子的焊接工作了。

在老师的指导下我选择了常用的单片机仿真软件proteus6.9以及keil进行仿真。

第三章硬件电路设计

3.1总体设计

根据抢答器的基本功能,可以设计出如下的单片机外围电路:

图3-1总体设计

如图3-1,P3.0为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器(用绿灯代替)输出为P3.6口。

P3.2为时间加1调整,P3.3为时间减1调整。

3.2外部振荡电路

图3-2外部振荡电路

一般选用石英晶体振荡器。

此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。

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

一是帮助振荡器起振;

二是对振荡器的频率进行微调。

C1,C2的典型值为30PF。

3.3复位电路的设计

单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:

图3-3复位电路

在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。

软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。

3.1.4显示电路的设计

显示电路使用了七段数码管7SEG-MPX4-CC,它是共阴极的,由高电平点亮。

图3-4阴极七段数码管

4.1.5按钮输入电路的设计

抢答器的输入按钮使用常开开关,

图3-5抢答按键

这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺”

现象就可以了。

这里采用最常用的方法即延时法,其的原理为:

因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。

3.1.6发声

这里能利用程序来控制单片机P3.6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。

第四章系统软件设计

4.1程序系统结构图

硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。

由功能分析得到以下的软件结构图:

图4-1软件系统结构图

4.2程序流程图

整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成。

定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.7取反,扬声器发声,改变定时器初值,可改变扬声器频率。

定时器程流程图如下:

图4-2响铃程序流程图

定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。

其流程图如下:

图4-3倒计时中断流程图

外部中断0用于调整倒计时时间,流程图如下:

图4-4调整抢答时间流程图

主程序协调三个中断一起工作,实现抢答功能,其流程图如下:

图4-5主程序流程图

附录:

程序代码:

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

ORG0000H

AJMPMAIN

ORG0003H

AJMPINT0SUB

ORG000BH

AJMPT0INT

ORG001BH

AJMPT1INT

OKEQU20H;

抢答开始标志位

RINGEQU22H;

响铃标志位

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

JBP3.0,NEXT

ACALLDELAY

JBP3.0,NEXT;

去抖动,如果"

开始键"

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

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

JNBP1.7,FALSE8

AJMPSTART

非法抢答处理程序:

FALSE1:

按键发声

MOVR3,#01H

AJMPERROR

FALSE2:

ACALLBARK

MOVR3,#02H

FALSE3:

MOVR3,#03H

FALSE4:

MOVR3,#04H

FALSE5:

MOVR3,#05H

FALSE6:

MOVR3,#06H

FALSE7:

MOVR3,#07H

FALSE8:

MOVR3,#08H

倒计时程序(包括有效抢答程序):

COUNT:

MOVR0,#00H;

重置定时器中断次数

MOVTH1,#3CH

MOVTL1,#0B0H;

重置定时器

RECOUNT:

MOVA,R6;

R6保存了倒计时的时间

MOVB,#0AH

DIVAB;

除十分出个位/十位

MOV30H,A;

十位存于(30H)

MOV31H,B;

个位存于(31H)

MOVR5,30H;

取十位

MOVR4,31H;

取个位

MOVA,R6

CLRC

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

LARGER:

MOVA,R0

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

停/显示"

DECR6;

计时一秒R6自动减1

CHECK:

JNBP3.1,QUIT;

如按下停止键退出

ACALLDISPLAY

JNBP1.0,TRUE1

JNBP1.1,TRUE2

JNBP1.2,TRUE3

JNBP1.3,TRUE4

JNBP1.4,TRUE5

JNBP1.5,TRUE6

JNBP1.6,TRUE7

JNBP1.7,TRUE8

AJMPRECOUNT

QUIT:

CLROK;

如果按下了"

停止键"

重新回到开始

ACALLBARK

AJMPSTART

正常抢答处理程序:

TRUE1:

MOVA,R2

MOVR6,A;

抢答时

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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