3八位竞赛抢答器课程设计报告Word文档下载推荐.docx

上传人:b****5 文档编号:16478382 上传时间:2022-11-24 格式:DOCX 页数:22 大小:114.62KB
下载 相关 举报
3八位竞赛抢答器课程设计报告Word文档下载推荐.docx_第1页
第1页 / 共22页
3八位竞赛抢答器课程设计报告Word文档下载推荐.docx_第2页
第2页 / 共22页
3八位竞赛抢答器课程设计报告Word文档下载推荐.docx_第3页
第3页 / 共22页
3八位竞赛抢答器课程设计报告Word文档下载推荐.docx_第4页
第4页 / 共22页
3八位竞赛抢答器课程设计报告Word文档下载推荐.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

3八位竞赛抢答器课程设计报告Word文档下载推荐.docx

《3八位竞赛抢答器课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《3八位竞赛抢答器课程设计报告Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。

3八位竞赛抢答器课程设计报告Word文档下载推荐.docx

这一功能可以通过基本的门电路来实现,把主持人和参赛选手接入的信号作为输入信号,通过门电路整合,使得到的输出信号来控制数据显示部分。

(2)设计要求中没有提到参赛选手提前抢答会造成犯规的这一功能,理论上会存在有参赛选手犯规的情况的发生,这样实际中增加一个抢答犯规的功能是有一定的必要性的,同样要实现这一功能,可以通过门电路的组合,收集主持人和参赛选手接入的信号,把输出信号接到一个报警装置上,实现当主持人还未发出开始抢答指令的时候,若有参赛选手抢答了,报警装置会报警的功能。

2.2总体功能框图

下图所示为总体方框图。

其工作原理为:

接通电源后,主持人将开关断开,抢答器处于禁止状态,定时器显示设定时间;

主持人将开关接通,宣布开始抢答器工作。

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

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

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

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

如果再次抢答必须由主持人再次操作状态开关。

2.2总体功能框图

2.3元器件清单

仿真图中所需要的各种元器件如表2.3

表2.3元器件清单

元件名称

型号

数量/个

用途

单片机

AT89C51

1

控制核心

晶振

12MHZ

晶振电路

电容

22uF

3

排阻

Respack8

上位电阻

电阻

10k

复位电路

电源

+5v

提供电源

拨码开关

BUTTON_1

13

发出信号

数码管

7SEG-MPX4-BLUE

显示电路

3硬件设计

3.1元器件及其作用

在八位抢答器的设计中,我主要用到了AT89C51型号单片机、晶振、电容、排阻、电阻、电源、拨码开关、7SEG-MPX4-BLUE数码管等元器件。

芯片是由ISIS7PROFESSIONAL仿真软件系统提供(AT89C51)。

它主要由CPU,存储器和管脚组成。

所谓排阻就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚。

其余引脚正常引出。

所以如果一个排阻是由n个电阻构成的,那么它就有n+1只引脚,一般来说,最左边的那个是公共引脚。

它在排阻上一般用一个色点标出来。

排阻一般应用在数字电路上,比如:

作为某个并行口的上拉或者下拉电阻用。

使用排阻比用若干只固定电阻更方便。

排阻有a型和b型的区别。

a型排阻的引脚总是奇数的。

它的左端有一个公共端(用白色的圆点表示),常见的排阻有4、7、8个电阻,所以引脚共有5或8或9个。

B型排阻的引脚总是偶数的。

它没有公共端,常见的排阻有4个电阻,所以引脚共有8个。

图3.1AT89C51单片机图示及引脚排列

3.2原理图设计

根据设计要求及用protues仿真软件做出八位竞赛抢答器电路图如下:

4软件设计

4.1软件设计思路

当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,持续时间0.5S左右。

参赛选手在设定的时间内进行抢答,抢答有效,定时器工作停止,显示器上显示选手的编号和抢答的时间并保持到主持人将系统清除为止。

如果定时时间已到,无人抢答,系统报警并禁止抢答。

4.2C语言源程序

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

chars;

ucharnum=0;

chartime=20;

//抢答时间

chardatitime=30;

//答题限时时间

uinttt,t1;

//T0,T1定时器定一秒时

bitflag,s_flag=1,b_flag,fall_flag;

//标志位

bitK_startcountflag,K_timecountflag;

//时间调整标志位

sbitK0=P3^0;

sbitbeep=P3^7;

//蜂鸣器

sbitrled=P3^1;

//指示灯

sbitK1=P1^0;

sbitK2=P1^1;

sbitK3=P1^2;

sbitK4=P1^3;

sbitK5=P1^4;

sbitK6=P1^5;

sbitK7=P1^6;

sbitK8=P1^7;

sbitK_Time=P3^2;

//答题计时键

sbitK_startcount=P3^3;

//开始抢答时间调整键

sbitK_timecount=P3^4;

//答题计时时间调整键

voiddelay(ucharms)

{

uchary;

for(;

ms>

0;

ms--)

for(y=120;

y>

y--);

}

ucharcodetabledu[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

ucharcodetablewe[]={0XFE,0XFD,0XFB,0XF7};

voidT0_Init(void)

TMOD=0X01;

TH0=(65536-2000)/256;

TL0=(65536-2000)%256;

TH1=(65536-2000)/256;

TL1=(65536-2000)%256;

ET0=1;

ET1=1;

EA=1;

P0=0;

voidKey_Scan(void)//开始键扫描

if(K0==0)

{

delay(10);

if(K0==0)

{

while(!

K0);

TR0=1;

s=time;

tt=0;

flag=1;

s_flag=1;

b_flag=1;

num=0;

beep=1;

rled=1;

fall_flag=0;

//清除违规标志位

K_startcountflag=0;

K_timecountflag=0;

}

}

voidScan(void)//八路热键扫描(哪个键先按下,哪个优先级最高)

if(K1==0)

if(K1==0)

K1);

num=1;

//数码管显示1号"

1"

TR0=0;

//关闭定时器0,时间停止

TR1=1;

//打开定时器1,使扬声器响一声

s_flag=0;

//关闭开始键标志位,使再按其他七个键不会响应

if(K2==0)//下面七个键的处理同上

if(K2==0)

K2);

num=2;

//重要

if(K3==0)

if(K3==0)

K3);

num=3;

if(K4==0)

if(K4==0)

K4);

num=4;

if(K5==0)

if(K5==0)

K5);

num=5;

if(K6==0)

if(K6==0)

K6);

num=6;

if(K7==0)

if(K7==0)

K7);

num=7;

if(K8==0)

if(K8==0)

K8);

num=8;

voiddisplay(void)

if(flag==1)//开始键按下,开始计时抢答

if(num!

=0)//如果有人抢答,则显示相应的几号

P0=tabledu[num];

//显示几号抢到了

P2=tablewe[0];

delay

(2);

P0=0;

P2=0XFF;

else//否则没人抢答,则前面不显示几号

P0=tabledu[s/10];

//下面为显示抢答倒计时

P2=tablewe[2];

delay

(2);

P0=0;

P2=0XFF;

P0=tabledu[s%10];

P2=tablewe[3];

else//如果开始键没有按下,则显示FFF(若有违规者,则显示违规号码及FF)或时间调整

if(fall_flag==1)//违规显示

if(num!

=0)

{

P0=tabledu[num];

//显示几号违规了

P2=tablewe[0];

delay

(2);

P0=0;

P2=0XFF;

P0=tabledu[15];

//下面显示FF,表示违规了

P2=tablewe[2];

//消隐

P2=tablewe[3];

}

else

else//没有人违规才显示调整时间

if(K_startcountflag==1)

P0=0X6D;

//第一位数码管显示"

5(S)"

(表示抢答时间调整)

P0=tabledu[time/10];

//下面显示调整的抢答时间

P0=tabledu[time%10];

elseif(K_timecountflag==1)

P0=0X07;

//第一位与第二位数码管合起来显示"

T"

表示答题时间调整

P0=0X31;

P2=tablewe[1];

P0=tabledu[datitime/10];

P0=tabledu[datitime%10];

else//否则显示FFF

}

}

voidTime_Scan(void)//调整时间键扫描

if(K_startcount==0)//抢答时间调整

if(K_startcount==0)

K_startcount);

time++;

if(time==50)

time=20;

K_startcountflag=1;

//将抢答时间标志位置1

//同时关闭答题时间标志位

if(K_timecount==0)//答题时间调整

if(K_timecount==0)

K_timecount);

datitime++;

if(datitime==60)

datitime=30;

K_timecountflag=1;

voidmain(void)

T0_Init();

while

(1)

Key_Scan();

//开始键扫描

if((flag==0)&

(s_flag==1))//当开始键没按下及没有人违规时才可进行时间调整

Time_Scan();

if((flag==1)&

(s_flag==0))//当开始键按下及有人抢答才进行开始回答计时倒计时

if(K_Time==0)

delay(10);

if(K_Time==0)

{

while(!

K_Time);

s=datitime;

TR0=1;

tt=0;

TR1=1;

}

(s_flag==1))//违规

Scan();

=0)//开始键没有按下时,有人按下了抢答器,则置违规标志位

fall_flag=1;

rled=0;

(s_flag==1))//如果开始键按下且抢答键没有人按下,则进行八路抢答键扫描

display();

//显示到数码管上

voidtimer0(void)interrupt1

//2ms

if(b_flag)//开始(START)键按下,嘟一声(长1秒),表示开始抢答

beep=~beep;

else

beep=1;

if(s<

5)//抢答时间快到报警,隔1秒响一声且红灯闪烁,响三声

if(s%2==0)

rled=0;

else

b_flag=0;

tt++;

if(tt==500)//1秒

tt=0;

s--;

b_flag=0;

//关闭开始键按下响一秒的嘟声

if(s==-1)

s=20;

flag=0;

//显示FFF

voidtimer1(void)interrupt3//定时器1处理有人按下抢答器嘟一声(长1秒)

beep=~beep;

t1++;

if(t1==500)

t1=0;

TR1=0;

5软件仿真调试

在软件硬件都已连接设计好以后,我们需要用Keil、preoteus软件对其进行仿真调试。

软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。

图5.1keil调试结果图

Keil、preoteus联调效果图

6总结

在这两周的单片机课程设计实训中,我通过对八位竞赛抢答器的设计学会了运用Keil、preoteus软件,并且对单片机这门课程有了更深一步的了解。

在短时间内学会一门电路设计软件看,并且要使用proteus实现电路的仿真,这些在我眼里都不是很容易完成的任务,但是最后我以及我们的小组均能在规定的时间之内学会proteus的基本操作,单独完成各自的设计,这与小组之间的合作是离不开的,在这里我也更要感谢我们指导老师对我们的谆谆教导!

八位竞赛抢答器这种类似的抢答器在日常生活中应该挺常见的,只是很多人忽视了这种小设计,但它确实在实际生活中有较为广泛地应用,可是即使我们生活中有见到过并且不以为然的东西,等到我们亲自来独立的完成这个作品的设计,分析以及仿真结果分析甚至连接实体电路时,也许就不会觉得那么容易的。

虽然这是一种简单的小设计,但却包含了很多我们刚刚所学过的电路知识,特别是数字电子技术的基础知识,这次课程设计不仅使我们温习了刚学过的知识,也使我们对电路的整体布局有了更深的学习。

在小组方案的设计过程中,我有参与到电路图的布局,新增功能的实现、电路的仿真等环节中。

在小组方案的确定和实际设计过程中,我懂得了团队的力量,小组成员之间相互讨论商量往往能得到更好的方案,能有效地减少思维上的误区,减少仿真过程中出现故障的几率。

通过此次课程设计,我认识到了自身知识储备的不足以及实践动手能力还有待提高,针对于本次设计的结果,我认为我所设计的方案虽然可以实现最基本的功能,但存在着一定的缺陷。

我也希望通过今后的努力学习,在单片机方面能有进一步的提高。

7参考文献

【1】伍时和,《数字电子技术基础》,清华大学出版社,2009

【2】贾秀美,《数字电路硬件设计实践》,高等教育出版社,2008

【3】康华光.

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

当前位置:首页 > 小学教育 > 小升初

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

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