基于51单片机的数字抢答器.docx

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

基于51单片机的数字抢答器.docx

《基于51单片机的数字抢答器.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字抢答器.docx(16页珍藏版)》请在冰点文库上搜索。

基于51单片机的数字抢答器.docx

基于51单片机的数字抢答器

目录

1前言1

2方案论证与比较2

2.1方案一2

2.2方案二2

2.3方案论证与比较3

3系统设计4

3.1单元模块4

3.1.1STC89C52单片机控制部分4

3.1.2电源部分5

3.1.3十六位抢答键盘部分5

3.1.4四位数码管显示部分6

3.1.5抢答报警部分6

3.2电路参数的计算及元器件的选择7

4软件设计8

4.1软件设计原理及设计所用工具8

4.1.1制图软件:

protel99se8

4.1.2仿真软件:

Proteus8

4.1.3集成开发环境:

KeiluVision38

4.2程序设计总体框图9

4.3软件设计主要结构图9

4.4程序设计相关说明10

4.4.1倒计时模块10

4.4.2显示字程序模块10

4.4.3按键扫描程序模块11

4.4.4报警程序模块12

5结论13

附录一.设计原理图14

附录二.仿真电路15

附录三.程序16

1前言

抢答器是一种广泛应用于企事业单位和商业部门,为各种知识竞赛、文娱活动提供公正客观快速裁决的一种常用电子设备,也是一种逐渐成型的电子产品,但市面上所售抢答器价格一般较贵且多为小规模集成电路构成,其性能单一,工作起来不够理想。

因此,提高抢答器的性能,使其具有更强的功能,使用可靠方便已为抢答器发展的一个方向。

随着集成技术和计算机技术的发展,单片机作为其一个分支亦于20世纪80年代以来获得了飞速发展,各种新品不断涌现,使单片机的应用更加深入,灵活性也大大增强。

本设计是以MCS-51单片机——STC89C52RC单片机为核心的16路抢答器系统,它充分利用了单片机系统的优点,具有结构简单、功能强大、可靠性好、实用性强的特点。

抢答器的功能暂定如下:

①,能用软件设定抢答时限。

②,抢答开始,数码管的前两位自动倒计时(以秒为单位),数码管后两位显示无关序号“00”,倒计时记到零,如果没有人抢答,则蜂鸣器报警,报警时间长度自拟。

③,有人抢答以后倒计时停止计时,并且数码管后两位显示选手的组号,并且蜂鸣器报警,其余选手的抢答将无效。

④,主持人控制按键按下以后,显示复位,并显示倒计时的初值。

2方案论证与比较

2.1方案一

图2-1方案一的系统框图

2.2方案二

图2-2方案二的系统框图

2.3方案论证与比较

比较方案一和方案二,我们可以得出这样的结论:

用方案一是全数字电路的,可以用74LS148优先编码器为核心,采用555定时器作为秒脉冲产生电路,可以用74LS192等计数器作为计数,以供数码管显示,数码管也需要74LS48或者是C4511作为编码器等等,所构成的电路复杂,控制繁琐。

并且抢答按键也受到了优先编码器输入端口的限制,如果是用74LS148,那么输入按键就被限制到了8位,最多可以做8位抢答。

但是如果选择方案二,就可以轻松解决这个问题,51单片机提供的4组共计32位的I/O端口可以轻松扩展足够的按键,并且外接8255控制器,扩展并行I/O口,还可以用移位寄存器将扩展I/O口以提供足够过的按键。

同时整个方案简单明了,一目了然,针对抢答器的复位和报警还可以用单片机的中断系统,使单片机的执行效率大大提高。

3系统设计

3.1单元模块

3.1.1STC89C52单片机控制部分

图3-1STC89C52单片机控制部分

本次设计的控制器采用了STC89C52RC单片机:

K1、C10、R3连接到单片机RESET(9脚)构成复位电路,RESET:

复位信号端和后备电源输入端。

输入10ms以上高电平脉冲,单片机复位。

Y2晶振选用了11.0592MHZ,决定了系统的时钟周期,C9和C13用于帮助晶振起振。

由于本次采用的STC89C52RC自带8K程序存储器,而本次设计程序小于8K,所以31脚EA/VP接VCC,不允许从外部读程序。

P0口内部无上拉电阻,为增强其驱动能力,上接了上拉电阻。

3.1.2电源部分

图3-2直流稳压电源供电部分

本次设计电源部分采用,常用DC+5V电源电路,从外部接入8-10VAC/DC电压,通过电桥整流以及电容滤波后,进入7805,再次滤纹波后由DC_OUT接出,电压为+5V。

注意的是,由于7805的功耗较大,所以必须要加散热片。

加D6是为了防止电流反冲。

3.1.3十六位抢答键盘部分

图3-34X4扫描键盘

该4X4扫描键盘是在单片机中常用的键盘,用单片机的任意一组I/O口,就可以扩展这样的16个键盘。

本设计采用的是P1口,如果用到P0口扩展时间需要加上拉电阻。

对于扫描键盘的编程也比较简单,没有涉及到其他外接的控制器,也就不涉及硬件的时序等。

只需要对行(或列)进行扫描,然后用延时来防抖动就行。

再用查表方法可以查出对应的按键状态。

3.1.4四位数码管显示部分

图3-4四位数码管显示电路

显示部分采用共阳极的四位数码管显示。

软件设计时候,也需要对4位公共端进行扫描。

由于公共端是接高电平有效,而单片机复位在P0口加上拉电阻后,呈现的是高电平。

故最好在公共端加上非门,故可以用一个PNP的晶体管来代替非门。

这样就可以避免单片机复位以后数码管会误显示。

在软件设计时,用常用的动态显示方法编程。

3.1.5抢答报警部分

图3-5抢答器报警电路

报警电路采用的是有源蜂鸣器报警,采用9015驱动。

而用P3.5也就是定时器1的外部引脚控制,这样可以方便的利用定时器中断进行控制。

使软件设计时可以提高单片机的执行效率,同时也可以方便地进行控制报警的时间长短。

主持人开关K18接单片机的P3.3,也就是单片机的外部中断1,可以很好的利用单片机的外部中断,进行抢答复位。

3.2电路参数的计算及元器件的选择

电源部分:

D2、D3、D4、D5、D6均采用普通二极管1N4007;C5、C8分别采用1000uf和470uf,用来滤去较大的交流成分。

C6、C7均选104瓷片电容,用于滤除小纹波。

稳压芯片选7805,产生+5V直流电压。

报警电路部分:

为使驱动能力较大,选用了9015(PNP型三极管)利用其灌电流来驱动蜂鸣器,而没选用NPN型利用拉电流驱动。

其余部分均按其典型应用电路的参考参数选择元件。

4软件设计

4.1软件设计原理及设计所用工具

4.1.1制图软件:

protel99se

  Protel99SE系统是ProtelTechnology公司开发的基于Windows环境下的电路板设计软件。

采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。

4.1.2仿真软件:

Proteus  

Proteus的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

4.1.3集成开发环境:

KeiluVision3

  Keil软件是目前最流行开发MCS-51系列单片机的软件,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

4.2程序设计总体框图

4.3软件设计主要结构图

图4-1定时中断框图图4-2按键子程序框图

4.4程序设计相关说明

本程序主要包括了4个部分的程序模块:

倒计时模块,显示子程序模块,按键扫描程序模块,报警程序模块。

另外,主持人的复位/开始开关程序使用了外部中断1。

 

4.4.1倒计时模块

倒计时功能的完成用到了定时/计数器中断0,

倒计时程序如下:

voidtimeset()interrupt1

{

c--;//c值自减一

if(c==0)

{

time--;//time值自减一

c=10000;

}

}

程序初始值设置为time=10(定时10秒),c=10000,定时器为工作方式2(TMOD=0x22),定时器装入初值为0x9c。

当定时满是,c值自减一,当c值为零时,也就是一秒,time减一,这样就完成了倒计时的功能。

4.4.2显示字程序模块

此抢答器的设计用的是4位LED数码显示管显示倒计时和抢答队伍序号。

程序采用4位扫描显示的方法实现数码管的显示。

显示程序如下:

voiddisplay()

{

weicro=0xef;//I/O口初始状态

for(i=4;i>0;i--)

{

delay(10);//延时

weicro=_cror_(weicro,1);//右移循环,实现I/O状态循环

P0=weicro;

switch(weicro)//I/O口状态查询

{

case0xfe:

P2=table[num%10];break;

case0xfd:

P2=table[time/10];break;

case0xfb:

P2=table[time%10];break;

case0xf7:

P2=table[num/10];break;

}

}

}

本次设计使用了P0口作为显示扫描的位选信号,P2口作为显示码的输出。

根据人的视觉暂留效果,只要扫描时间不超过25MS,我们就能看到连续的,不闪烁的数字显示,从而实现4位LED数码管的扫描显示。

4.4.3按键扫描程序模块

此设计可实现16位抢答的功能,并可以在有人按下抢答键后,报警器报警3秒,同时按键锁定,不再响应后面的按键信息。

主持人按键具有开始和复位的功能,在主持人按下按键开始之前,抢答按键不会有响应。

抢答按键部分程序如下:

voidkey_num()

{

weicro=0xef;//I/O口状态初始化

if(flag0==1)

{

for(i=4;i>0;i--)

{

weicro=_cror_(weicro,1);//I/O状态右移循环

P1=weicro;//P1口赋状态值

for(j=16;j>0;j--)

{

if(P1==key_table[j])//I/O口状态查询(查表)

{

num=j;//键值赋值

flag0=0;

flag1=1;

}

}

}

}

}

程序利用P1口完成16个按键的扫描查询,并由查表得方式查询键值,赋给num,送入显示程序中处理显示。

程序中,flag0是按键锁定标志:

当flag0=1时,抢答按键可以响应;当flag0=0时,按键锁定,抢答键无响应。

flag1是报警器响铃标志,将在报警程序中介绍。

4.4.4报警程序模块

当倒计时结束(10秒)或者有抢答键按下时,报警器都会响铃3秒作为提示。

完成此部分功能的程序如下:

voidalarm()

{

if(flag1==1||time==0)//报警判断

{

flag0=0;

TR0=0;

TR1=1;

yes=0;//报警器开关开

}

}

voidtimer()interrupt3//定时/计数器中断1

{

d--;

if(d==0)

{

TR1=0;

flag1=0;

yes=1;//报警器开关关

time=10;

d=30000;

}

}

由按键程序中可以看到,当有抢答键按下时,flag1=1,或者在倒计时结束时,time=0,都将使得报警器判断成立,进入报警状态并锁定抢答键按键。

yes表示的是单片机的P3.5口的状态。

当yes=0时,报警电路的PNP管导通,报警器响。

程序利用了定时/计数器中断1来实现报警器的报警时间控制,时间为3秒。

当定时结束后,flag1=0,yes=1,退出报警模式,同时将倒计时复位(time=10)。

5结论

本设计是采用以STC89C52RC单片机为核心,用四位数码管和4X4扫描键盘为外围设备的数字抢答器。

最终,我们设计出的抢答器的可以实现的功能是:

①,能用软件设定抢答时限。

本设计中单片机复位时(或者主持人开关复位以后)设定的时限为10秒,具体的时间可以根据需要在软件中修改。

②,有人抢答以后倒计时停止计时,并且数码管后两位显示选手的组号,并且蜂鸣器短时报警三秒,其余选手的抢答将无效。

此后,必须由主持人开关复位,以进入新一轮的抢答。

③,主持人控制按键按下以后,显示复位,并显示倒计时的初值,进入了新一轮的抢答。

④,抢答开始,数码管的前两位自动倒计时(以秒为单位),倒计时到零,如果没有人抢答,则抢答器报警3秒,并复位到初始倒计时时间,并显示。

根据我们的设计,完全完成了预期的抢答器功能,在本设计过程中,重点是软件设计的合理规划。

其中,难点是4位数码管的动态显示,该动态显示时候,要求对四位数码管的前两位显示抢答倒计时,而后两位要显示抢答选手的组号,并且两者的显示必须要配合恰当。

我们采用两个定时器中断,和标志位(51单片机内部CPU自带的布尔处理机),解决了这个问题。

由于能力有限,本设计仍然存在着一些不足的地方。

通过本次设计,我们从中也收获了很多,培养了自己的工程意识和团队合作的精神,同时也要向在本次设计过程中给与我们帮助的老师和同学致以诚挚的谢意。

附录一.设计原理图

附录二.仿真电路

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

当前位置:首页 > 经管营销 > 经济市场

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

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