您的位置:小草阅读网抢答器课程设计报告八人抢答器课程设计,3,,八位竞赛抢答器课程设计报告,八位抢答器课程设计,四路抢答器课程设计 → 正文

八人抢答器课程设计,3,,八位竞赛抢答器课程设计报告,八位抢答器课程设计,四路抢答器课程设计

(可选一门商品类别) 3、 课程 网站建设(可选一门 课程 ... 所需时间约占总学时的50%: 3.撰写总结 报告 阶段 总结 报告 是学生对 课程设计 全...2.10 智力竞赛抢答器 一、设计要求...

黄 河 科 技 学 院 课 程 设 计 (论 文 ) 目 录 摘要.............................................................2 1 设计意义及要求 .................................................3 1.1 设计意义 ..................................................3 1.2 设计要求 ..................................................3 2 方案设计 .......................................................4 2.1 设计思路 ..................................................4 2.1.1 模块化设计框架图 .....................................4 2.1.2 各个模块的实现 .......................................4 2.1.3 关于实现功能拓展的设计思路 ...........................5 2.2 总体功能框图 ..............................................5 2.3 元器件清单 ................................................6 3 硬件设计 .......................................................7 3.1 元器件及其作用 ............................................7 3.2 原理图设计 ................................................8 4 软件设计 .......................................................9 4.1 软件设计思路 ..............................................9 4.2 C 语言源程序 .............................................10 5 软件仿真调试 ..................................................20 6 总结..........................................................21 7 参考文献 ......................................................22 -1- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 摘 要 数字技术作为当今世界上发展最快的一门科学,已被广泛地应用于计算 机、自动控制、电子测量仪表、通信等各个领域。例如,在生活中,很多关 于智力竞赛的电视节目的抢答环节就很好的应用了数字技术。

关于竞赛抢答器的设计,最重要的是完成当参赛选手们可以开始抢答后, 每次只可能有一个人抢答成功这一功能。本实验设计中,以八位竞赛抢答器 为例,从设计思路、方案的选择与论证、设计基本原理以及仿真结果等系统 的介绍这种抢答器实现相应功能的全部过程,并会在实现基本功能的基础上 实现部分的拓展功能。

关键字: 单片机、抢答器、89C51、C 语言 -2- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 八路竞赛抢答器设计 1 设计意义及要求 1.1 设计意义 在很多关于智力竞赛的电视节目上,经常会出现抢答环节,参赛选手们 在得到主持人发出的特定口令之后,都会争先恐后地按下抢答器,但每次抢 答环节只有可能产生一位抢答成功的选手,同时可以断定这位参赛选手肯定 是反应最快按下抢答器的。设计一个功能类似的八位抢答器不仅能够让大家 进一步了解这种抢答器的工作原理,而且还能在功能上提出一些好的想法和 思想,甚至可以实现部分新的功能,如果人们不断的进行具有创新性的设计 实验,也许过不久那些竞赛类的电视的抢答模式就会发生一定的改变和创新, 从而增加了节目的观赏性,进一步丰富大家的娱乐生活。 1.2 设计要求 1.以单片机为核心,设计一个八位竞赛抢答器:同时供八位选手或八个 代表队比赛,分别用 8 个按钮(1 号-8 号)表示。

2.设置一个系统清除和抢答器控制开关 S,开关有主持人控制。

3.抢答器具有锁存与显示功能,即选手按按钮,锁存相应的编号,并在 优先抢答器选手的编号一直保持主持人将系统清楚为止。

4.抢答器具有定时抢答功能且一次抢答的时间由主持人设定(如 30 秒) , 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声 响,持续时间 0.5S 左右。

5.参赛选手在设定的时间内进行抢答,抢答有效,定时器工作停止,显 示器上显示选手的编号和抢答的时间并保持到主持人将系统清除为止, 6.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答, 定时显示器上显示 00。 -3- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 2 方案设计 2.1 设计思路 2.1.1 模块化设计框架图 脉冲发 生器 开关控制数 据的输入 数据锁存 部分 数据编码 部分 数据显 示部分 图 2-1 模块化设计框架图 2.1.2 各个模块的实现 (1)脉冲发生器的实现 根据本实验的具体要求,锁存器需要有脉冲信号的输入,及需要有相应的 脉冲发生器。

(2)数据锁存部分的实现 实验设计要求是制作一个八位竞赛抢答器,需要对代表八位参赛选手的状 态( “0”或“1” )进行相应的锁存,为了电路的简化,应该采用 D 触发 器来实现锁存功能,则对于要实现对八位数据的锁存这一功能,可以使用两 块集成了四个 D 触发器的 74LS175 芯片。

(3)数据编码部分的实现 编码部分是对锁存的数据进行编码,由于只有八个参赛选手,故只需要用 八个不同的数字便可以代表所有的参赛选手,只要采用能对八位数据进行编 码并能有八种或八种以上的输出的编码器即可达到要求。

(4)数据显示部分的实现 对于这样的一个仅需要显示数字的设计,很容易联想到使用七段数码管来 -4- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 实现的数字的显示,而且七段数码管可以显示 16 种不同的输出,对于这种只 需要有不少于八种的输出的设计来说,七段数码管完全可以达到要求。一般 的七段数码管有 10 个数据输入端,所以需要有相应的译码器对输送过来的编 码后的数据进行译码操作,并且这种译码器的选择必须结合数码管是共阴还 是共阳的情况而定。 2.1.3 关于实现功能拓展的设计思路 (1)实验设计的基本要求中没有提到主持人实现清零后,数码管该显示 什么,这样在设计过程中我们就可以有多重选择了,本设计中设计的是让主 持人清零之后,数码管显示 F FF。

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

(2)设计要求中没有提到参赛选手提前抢答会造成犯规的这一功能,理 论上会存在有参赛选手犯规的情况的发生,这样实际中增加一个抢答犯规的 功能是有一定的必要性的,同样要实现这一功能,可以通过门电路的组合, 收集主持人和参赛选手接入的信号,把输出信号接到一个报警装置上,实现 当主持人还未发出开始抢答指令的时候,若有参赛选手抢答了,报警装置会 报警的功能。 2.2 总体功能框图 下图所示为总体方框图。其工作原理为:接通电源后,主持人将开关断 开,抢答器处于禁止状态,定时器显示设定时间;主持人将开关接通,宣布 开始抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内 抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一 轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次 抢答必须由主持人再次操作状态开关。 -5- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 抢答按钮 编码电路 锁存电路 译码电路 显示电路 主持人控 制开关 控制电路 报警电路 秒脉冲 定时电路 译码电路 显示电路 2.2 总体功能框图 2.3 元器件清单 仿真图中所需要的各种元器件如表 2.3 表 2.3 元器件清单 元件名称 单片机 晶振 电容 排阻 电阻 电源 拨码开关 数码管 型号 AT89C51 12MHZ 22uF Respack8 10k +5v BUTTON_1 7SEG-MPX4-BLUE 数量/个 1 1 3 1 1 3 13 1 用途 控制核心 晶振电路 晶振电路 上位电阻 复位电路 提供电源 发出信号 显示电路 -6- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 3 硬件设计 3.1 元器件及其作用 在八位抢答器的设计中,我主要用到了 AT89C51 型号单片机、晶振、电 容、排阻、电阻、电源、拨码开关、7SEG-MPX4-BLUE 数码管等元器件。芯片是 由 ISIS 7 PROFESSIONAL 仿真软件系统提供(AT89C51) 。它主要由 CPU,存储器和管脚组 成。所谓排阻就是若干个参数完全相同的电阻,它们的一个引脚都连到一起, 作为公共引脚。其余引脚正常引出。所以如果一个排阻是由 n 个电阻构成的, 那么它就有 n+1 只引脚,一般来说,最左边的那个是公共引脚。它在排阻上 一般用一个色点标出来。排阻一般应用在数字电路上,比如:作为某个并行 口的上拉或者下拉电阻用。使用排阻比用若干只固定电阻更方便。

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

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

B 型排阻的引脚总是偶数的。它没有公共端,常见的排阻有 4 个电阻, 所以引脚共有 8 个。 图 3.1 AT89C51 单片机图示及引脚排列 -7- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 3.2 原理图设计 根据设计要求及用 protues 仿真软件做出八位竞赛抢答器电路图如下: -8- 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 4 软件设计 4.1 软件设计思路 当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂 的声响, 持续时间 0.5S 左右。参赛选手在设定的时间内进行抢答, 抢答有效, 定时器工作停止,显示器上显示选手的编号和抢答的时间并保持到主持人将 系统清除为止。如果定时时间已到,无人抢答,系统报警并禁止抢答。 程序初始化 准备状态,显示 FFF Y 按键发声 倒计时开始 按键发声 倒计时显示 N 显示法规号码 N 非法抢答? 开始键按下? 倒计时大于 5s? Y N 停止键按下? Y 提醒发声 Y 倒计时结束? N 停止键按下? Y N N 抢答键按下? Y 按键发声 显示抢答号,剩余时间 Y 停止键按下? -9- N 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 4.2 C 语言源程序 #include<reg52.h>

#define uchar unsigned char #define uint unsigned int char s;

uchar num=0;

char time=20;

//抢答时间 char datitime=30;

//答题限时时间 uint tt,t1;

//T0,T1 定时器定一秒时 bit flag,s_flag=1,b_flag,fall_flag;

//标志位 bit K_startcountflag,K_timecountflag;

//时间调整标志位 sbit K0=P3^0;

sbit beep=P3^7;

//蜂鸣器 sbit rled=P3^1;

//指示灯 sbit K1=P1^0;

sbit K2=P1^1;

sbit K3=P1^2;

sbit K4=P1^3;

sbit K5=P1^4;

sbit K6=P1^5;

sbit K7=P1^6;

sbit K8=P1^7;

sbit K_Time=P3^2;

//答题计时键 sbit K_startcount=P3^3;

//开始抢答时间调整键 sbit K_timecount=P3^4;

//答题计时时间调整键 void delay(uchar ms) { uchar y;

for(;ms>0;ms--) for(y=120;y>0;y--);

} uchar code tabledu[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 };

uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7};

void T0_Init(void) { TMOD=0X01;

TH0=(65536-2000)/256;

TL0=(65536-2000)%256;

TH1=(65536-2000)/256; - 10 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) TL1=(65536-2000)%256;

ET0=1;

ET1=1;

EA=1;

P0=0;

} void Key_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;

} } } void Scan(void) //八路热键扫描(哪个键先按下,哪个优先级最高) { if(K1==0) { delay(10);

if(K1==0) { while(!K1);

num=1;

//数码管显示 1 号"1"

TR0=0;

//关闭定时器 0,时间停止 TR1=1;

//打开定时器 1,使扬声器响一声 s_flag=0;

//关闭开始键标志位,使再按其他七个键不会响应 } } if(K2==0) //下面七个键的处理同上 { - 11 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) delay(10);

if(K2==0) { while(!K2);

num=2;

TR0=0;

TR1=1;

s_flag=0;

//重要 } } if(K3==0) { delay(10);

if(K3==0) { while(!K3);

num=3;

TR0=0;

TR1=1;

s_flag=0;

} } if(K4==0) { delay(10);

if(K4==0) { while(!K4);

num=4;

TR0=0;

TR1=1;

s_flag=0;

} } if(K5==0) { delay(10);

if(K5==0) { while(!K5);

num=5;

TR0=0;

TR1=1;

s_flag=0;

} - 12 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) } if(K6==0) { delay(10);

if(K6==0) { while(!K6);

num=6;

TR0=0;

TR1=1;

s_flag=0;

} } if(K7==0) { delay(10);

if(K7==0) { while(!K7);

num=7;

TR0=0;

TR1=1;

s_flag=0;

} } if(K8==0) { delay(10);

if(K8==0) { while(!K8);

num=8;

TR0=0;

TR1=1;

s_flag=0;

} } } void display(void) { if(flag==1) //开始键按下,开始计时抢答 { if(num!=0) //如果有人抢答,则显示相应的几号 { P0=tabledu[num];

//显示几号抢到了 - 13 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) P2=tablewe[0];

delay(2);

P0=0;

P2=0XFF;

} else //否则没人抢答,则前面不显示几号 { P0=0;

P2=0XFF;

} P0=tabledu[s/10];

//下面为显示抢答倒计时 P2=tablewe[2];

delay(2);

P0=0;

P2=0XFF;

P0=tabledu[s%10];

P2=tablewe[3];

delay(2);

P2=0XFF;

P0=0;

} else //如果开始键没有按下,则显示 F FF(若有违规者,则显示违规号码及 FF) 或时间调整 { if(fall_flag==1) //违规显示 { if(num!=0) { P0=tabledu[num];

//显示几号违规了 P2=tablewe[0];

delay(2);

P0=0;

P2=0XFF;

P0=tabledu[15];

P2=tablewe[2];

delay(2);

P0=0;

//消隐 P2=0XFF;

P0=tabledu[15];

P2=tablewe[3];

delay(2);

P0=0;

P2=0XFF;

} - 14 - //下面显示 FF,表示违规了 黄 河 科 技 学 院 课 程 设 计 (论 文 ) else { P0=0;

P2=0XFF;

} } else //没有人违规才显示调整时间 { if(K_startcountflag==1) { P0=0X6D;

//第一位数码管显示"5(S)"(表示抢答时间调整) P2=tablewe[0];

delay(2);

P0=0;

P2=0XFF;

P0=tabledu[time/10];

//下面显示调整的抢答时间 P2=tablewe[2];

delay(2);

P0=0;

P2=0XFF;

P0=tabledu[time%10];

P2=tablewe[3];

delay(2);

P0=0;

P2=0XFF;

} else if(K_timecountflag==1) { P0=0X07;

// 第一位与第二位数码管合起来显示 "T", 表示答题时间 调整 P2=tablewe[0];

delay(2);

P0=0;

P2=0XFF;

P0=0X31;

P2=tablewe[1];

delay(2);

P0=0;

P2=0XFF;

P0=tabledu[datitime/10];

P2=tablewe[2];

delay(2);

P0=0; - 15 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) P2=0XFF;

P0=tabledu[datitime%10];

P2=tablewe[3];

delay(2);

P0=0;

P2=0XFF;

} else //否则显示 F FF { P0=tabledu[15];

P2=tablewe[0];

delay(2);

P0=0;

P0=tabledu[15];

P2=tablewe[2];

delay(2);

P0=0;

//消隐 P2=0XFF;

P0=tabledu[15];

P2=tablewe[3];

delay(2);

P0=0;

P2=0XFF;

} } } } void Time_Scan(void) //调整时间键扫描 { if(K_startcount==0) //抢答时间调整 { delay(10);

if(K_startcount==0) { while(!K_startcount);

time++;

if(time==50) { time=20;

} K_startcountflag=1;

//将抢答时间标志位置 1 K_timecountflag=0;

//同时关闭答题时间标志位 } } - 16 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) if(K_timecount==0) //答题时间调整 { delay(10);

if(K_timecount==0) { while(!K_timecount);

datitime++;

if(datitime==60) { datitime=30;

} K_timecountflag=1;

K_startcountflag=0;

} } } void main(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;

} } } if((flag==0)&(s_flag==1)) //违规 { - 17 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) Scan();

if(num!=0) //开始键没有按下时,有人按下了抢答器,则置违规标志位 { fall_flag=1;

rled=0;

} } if((flag==1)&(s_flag==1)) // 如果开始键按下且抢答键没有人按下 , 则进行 八路抢答键扫描 { Scan();

} display();

//显示到数码管上 } } void timer0(void) interrupt 1 { TH0=(65536-2000)/256;

//2ms TL0=(65536-2000)%256;

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

} else beep=1;

if(s<5) //抢答时间快到报警,隔 1 秒响一声且红灯闪烁,响三声 { if(s%2==0) { b_flag=1;

rled=0;

} else { b_flag=0;

rled=1;

} } tt++;

if(tt==500) //1 秒 { tt=0;

s--;

b_flag=0;

//关闭开始键按下响一秒的嘟声 if(s==-1) - 18 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) { s=20;

TR0=0;

flag=0;

//显示 F FF s_flag=1;

num=0;

rled=1;

} } } void timer1(void) interrupt 3 { TH1=(65536-2000)/256;

TL1=(65536-2000)%256;

beep=~beep;

t1++;

if(t1==500) { t1=0;

TR1=0;

} } //定时器 1 处理有人按下抢答器嘟一声(长 1 秒) - 19 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 5 软件仿真调试 在软件硬件都已连接设计好以后,我们需要用 Keil、preoteus 软件对 其进行仿真调试。软件调试是通过对程序的编译、连接、执行来发现程序中 存在的语法错误与逻辑错误并加以排除纠正的过程。 图 5.1 keil 调试结果图 Keil、preoteus 联调效果图 - 20 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 6 总结 在这两周的单片机课程设计实训中,我通过对八位竞赛抢答器的设计学 会了运用 Keil、 preoteus 软件, 并且对单片机这门课程有了更深一步的了解。

在短时间内学会一门电路设计软件看,并且要使用 proteus 实现电路的仿真, 这些在我眼里都不是很容易完成的任务,但是最后我以及我们的小组均能在 规定的时间之内学会 proteus 的基本操作,单独完成各自的设计,这与小组 之间的合作是离不开的,在这里我也更要感谢我们指导老师对我们的谆谆教 导! 八位竞赛抢答器这种类似的抢答器在日常生活中应该挺常见的,只是很 多人忽视了这种小设计,但它确实在实际生活中有较为广泛地应用,可是即 使我们生活中有见到过并且不以为然的东西,等到我们亲自来独立的完成这 个作品的设计,分析以及仿真结果分析甚至连接实体电路时,也许就不会觉 得那么容易的。虽然这是一种简单的小设计,但却包含了很多我们刚刚所学 过的电路知识,特别是数字电子技术的基础知识,这次课程设计不仅使我们 温习了刚学过的知识,也使我们对电路的整体布局有了更深的学习。

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

通过此次课程设计,我认识到了自身知识储备的不足以及实践动手能力 还有待提高,针对于本次设计的结果,我认为我所设计的方案虽然可以实现 最基本的功能,但存在着一定的缺陷。我也希望通过今后的努力学习,在单 片机方面能有进一步的提高。 - 21 - 黄 河 科 技 学 院 课 程 设 计 (论 文 ) 7 参考文献 【1】伍时和, 《数字电子技术基础》 ,清华大学出版社,2009 【2】贾秀美, 《数字电路硬件设计实践》 ,高等教育出版社,2008 【3】康华光.电子技术基础-数字部分(第五版) ,高等教育出版,2006 【4】单片机课程设计指导书 皮大能 北京理工大学出版社 2012.7 【5】8051 单片机实践与应用 吴金戎 清华大学出版社 2003.8 【6】基于 Proteus 的单片机系统设计与仿真实例 蒋辉平 机械工业出版社 【7】张大明 单片微机控制应用技术实操指导书 机械工业出版社 【8】单片机原理及应用 张毅刚 高等教育出版社 2012.11 - 22 -

八人治理竞赛抢答器课程设计报告_信息与通信_工程科技_专业资料 暂无评价 | 0人阅读 | 0次下载 | 举报文档 八人治理竞赛抢答器课程设计报告_信息与通信_工程科技_专业资料.课...

此课程设计课题要求设计一个可供八个参赛组或参赛队员竞赛使用的抢答器,每 组需设一... MOV R3,#02H AJMP ERROR FALSE3: MOV R3,#03H AJMP ERROR FALSE4: MOV R3...

2.课程设计任务书由指导教师照大纲要求填写,内容要全面.3.课程设计报告由参加本学... 用中小规模集成芯片设计并制作智力竞赛抢答器,具体要求如下: 1、数字抢答器应具有...

推荐文章