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

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

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

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

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

一般的七段数码管有10个数据输入端,所以需要有相应的译码器对输送过来的编码后的数据进行译码操作,并且这种译码器的选择必须结合数码管是共阴还是共阳的情况而定。

2.2.3关于实现功能拓展的设计思路

(1)实验设计的基本要求中没有提到主持人实现清零后,数码管该显示什么,这样在设计过程中我们就可以有多重选择了,本设计中设计的是让主持人清零之后,数码管显示FFF。

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

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

2.3总体功能框图

下图所示为总体方框图。

其工作原理为:

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

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

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

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

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

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

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

2.4元器件清单

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

表2.4元器件清单

元件名称

型号

数量/个

用途

单片机

AT89C51

1

控制核心

晶振

12MHZ

晶振电路

电容

22uF

3

排阻

Respack-7

上位电阻

电阻

10k

复位电路

电源

+5v

提供电源

拨码开关

BUTTON

8

发出信号

数码管

7SEG-MPX4-CC-BLUE

显示电路

扬声器

SOUNDER

报警信号

LED

LED-RED

指示灯

3硬件设计

3.1元器件及其作用

在三位抢答器的设计中,我们主要用到了AT89C51型号单片机、晶振、电容、排阻、电阻、电源、拨码开关、7SEG-MPX4-CC-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;

//1号参赛选手

sbitK2=P1^1;

//2号参赛选手

sbitK3=P1^2;

//3号参赛选手

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;

//设T0(T1)为定时模式,由TR0(TR1)控制启动和停止,且T1工作于方式0,T0工作于方式1

TH0=(65536-2000)/256;

//初始化T0的高8位

TL0=(65536-2000)%256;

//初始化T0的低8位

TH1=(65536-2000)/256;

//初始化T1的高8位

TL1=(65536-2000)%256;

//初始化T1的低8位

ET0=1;

//允许T0中断

ET1=1;

//允许T1中断

EA=1;

//中断允许

P0=0;

voidKey_Scan(void)//开始键扫描

if(K0==0)

{

delay(10);

if(K0==0)

{

while(!

K0);

TR0=1;

//启动定时器T0

s=time;

tt=0;

flag=1;

//定义开始键按下

s_flag=1;

//定义抢答键按下

b_flag=1;

//定义嘟声响应标志位

num=0;

//数码显示管显示0

beep=1;

//定义扬声器不发声

rled=1;

//定义红灯不亮

fall_flag=0;

//清除违规标志位

K_startcountflag=0;

//调整开始位为0

K_timecountflag=0;

//调整开始时间为0

}

}

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

if(K1==0)//判断1号键是否按下

//延迟一段时间,判断是否为抖动

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;

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=0X77;

//第一位数码管显示"

A"

(表示抢答时间调整)

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)//抢答时间上限50s

time=20;

K_startcountflag=1;

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

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

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

if(K_timecount==0)

K_timecount);

datitime++;

if(datitime==60)//答题上限60s

datitime=30;

K_timecountflag=1;

//将答题时间标志位置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】康华光.电子技术基础-数字部分(第五版),高等教育出版,2006

【4】单片机课程设计指导书皮大能北京理工大学出版社2012.7

【5】8051单片机实践与应用吴金戎清华大学出版社2003.8

【6】基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社

【7】张大明单片微机控制应用技术实操指导书机械工业出版社

【8】单片机原理及应用张毅刚高等教育出版社2012.11

同组成员

姓名

学号

李翠武

1332140114

马春雷

1332140115

王明志

1332140117

设计题目

审阅项目

评价要素

分值

得分

文献查阅X1

查阅较高水平相关文献资料比较充分,对该领域研究现状和发展趋势把握准确,文献引用合理,格式规范。

20

设计内容X2

立论正确,能够提出一些具有创新意义的新命题、新方法。

内容完整,有较高学术水平或应用价值等。

30

科研能力X3

设计体现出作者具有较为扎实的基本理论和专业基础知识;

能够综合应用知识

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

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

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

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