多路抢答器设计
课程设计任务书
学生姓名: 许文军 专业班级:电子科学与技术0901班 指导教师: 吴友宇 工作单位: 信息工程学院 题 目: 多路数字定时抢答器设计 初始条件:
本课程设计既可以选用集成电路:74LSl48,74LS279,74LS48,74LSl92,NE555,74LS00,74LSl21和其它器件等,实现八路定时抢答功能。又可以使用单片机系统构建多路数字定时抢答器。 要求用蜂鸣器和光电二极管作声光报警器件,工作电源Vcc为+5V。
要求完成的主要任务:(包括课程设计工作量及技术要求,以及说明书撰写等具体要求)
1、课程设计工作量:1周。
2、技术要求:
① 可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个抢答按钮,按钮的编号与选手的编号相对应。
②给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。 ③ 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其它选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。
④ 抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。当节目主持人启动“开始”键后,要求定时器立即进行减计时,并用显示器进行显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
⑤ 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
⑥ 如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。
⑦ 画出总体电路原理图。
3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。
时间安排:
1、年月
2、年
2、年 至 月日,方案选择和电路设计。
2、年日 至 月日,电路调试和设计说明书撰写。
3、年
课设答疑地点:鉴主14楼电子科学与技术实验室。
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
武汉理工大学《数字电路基础课程设计》课程设计说明书
目录
摘要 ..................................................... 2
1 绪论 ................................................... 3
2 设计任务及主要技术指标 ................................. 4
3 设计原理及单元模块设计 ................................. 5
3.1 设计原理及方法 .................................... 5
3.2 单元模块设计 ...................................... 5 3.2.1 AT89C51单片机硬件电路 ............................ 5
3.2.2 电路总设计图 .................................... 6
3.2.3单元模块设计 .................................... 6
3.2.3.1晶振复位及开始抢答电路 ........................ 6
3.2.3.2显示器与显示驱动电路 ......................... 7
3.2.3.3蜂鸣器音频输出电路 ........................... 8
4 硬件的安装与调试 ....................................... 9
4.1硬件的安装与调试 ................................... 9
4.2 功能测试表 ....................................... 11
5 结束语 ................................................ 13
参考文献 ................................................ 13
附录1 元件清单表 ....................................... 14
附录2 硬件电路图 ...................................... 13
附录3 程序清单 ........................................ 13
摘要
抢答器是竞赛问中一种常用的必备装置,本文控制系统主要由单片机应用电路、存储器接口电路、显示接口电路组成。其中单片机 AT89C51 是系统工作的核心, 抢答器在各种智力竞赛中使用最为频繁。本设计要求利用单片机实现一个八路抢答器,每一路抢答信号均由某一个或一组选手控制。其中只要有一路信号抢答成功,则可以发出声音并显示其组号,同时,其它各路选手不能抢答。
关键词:抢答器,AT89C51,单片机,信号
多路数字定时抢答器设计
1 绪论
单片机是一个技术性与实践性很强的课程,不但要求理论的学习,而且更重要的是加强实践的练习,本设计是由单片机AT89C51为主要芯片,所设计的八人智能抢答器。抢答器所实现的功能有以下几点
(1) 能容许 2-8 组进行抢答。
(2) 能显示抢答组号。
(3) 抢答和回答时间快要结束的时候能发出警报声。
(4) 能调整回答时间和抢答时间。
硬件系统设计
(1)主要由单片机最小工作电路、显示电路组成,和其它外围电路。基中单片机是各各电路的核心,起到组织控制的作用。
(2)硬件组成及所需元件:单片机采用 AT89C51。外围接上震荡电路,复位电路、数码管、按钮及扬声器。
(3)P3.0 和 P3.1 由裁判控制,分别是抢答停止和开始键。P1.0-P1.7
是 8 组抢答的输入口,P2.0--P2.2 口 为 数 码 管 的 段 选 口 , 位 选 口 用 的 是 P0.0--P0.6 口输出, P3.3--P3.6 为抢答和回答计时调整,并且能够给实现加1和减1等操作。
系统仿真还用到了 PROTUCE 软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.
多路数字定时抢答器设计
1 绪论
单片机是一个技术性与实践性很强的课程,不但要求理论的学习,而且更重
要的是加强实践的练习,本设计是由单片机AT89C51为主要芯片,所设计的八人智能抢答器。抢答器所实现的功能有以下几点
(1) 能容许 2-8 组进行抢答。
(2) 能显示抢答组号。
(3) 抢答和回答时间快要结束的时候能发出警报声。
(4) 能调整回答时间和抢答时间。
硬件系统设计
(1)主要由单片机最小工作电路、显示电路组成,和其它外围电路。基中单
片机是各各电路的核心,起到组织控制的作用。
(2)硬件组成及所需元件:单片机采用 AT89C51。外围接上震荡电路,复位
电路、数码管、按钮及扬声器。
(3)P3.0 和 P3.1 由裁判控制,分别是抢答停止和开始键。P1.0-P1.7
是 8 组抢答的输入口,P2.0--P2.2 口 为 数 码 管 的 段 选 口 , 位 选 口 用 的 是 P0.0--P0.6 口输出, P3.3--P3.6 为抢答和回答计时调整,并且能够给实现加1和减1等操作。
系统仿真还用到了 PROTUCE 软件,可通过仿真可以完全显示出所设计系
统的功能,对于程序的调试等有很大的帮助.
2 设计任务及主要技术指标
在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置
一台抢答器,通过数显、灯光或音响等多种手段指示出第一抢答者。本次设计具体要求:
① 可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个
抢答按钮,按钮的编号与选手的编号相对应。
②给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管
灭灯)和抢答的开始。
③ 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按
钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其它选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。
④ 抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如
30秒)。当节目主持人启动“开始”键后,要求定时器立即进行减计时,并用显示器进行显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
⑤ 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
⑥ 如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。
3 设计原理及单元模块设计
3.1 设计原理及方法
如图3.1所示为总体方框图。其工作原理为:接通电源后,主持人将开关拨
到"清除"状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始"状态,宣布"开始"抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器
显示剩余时间。如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。
图3.1 多路数字定时抢答器系统框图
3.2 单元模块设计
3.2.1 AT89C51单片机硬件电路
单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。
它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,AT89C51在我国非常流行,它最大的特点
是内部有可以多次重复编程的ROM,并且ROM可以直接用编程器来擦写,使用起来比较方便。本设计使用到的元器件包括:AT89C51芯片、数码LED显示器、七段LED数码管的译码。其中AT89C51是系统的核心,它主要负责控制各个部分的协调工作。在其外围接上复位电路,上拉电阻,数码管,按钮以及振荡器,P1.0-P1.7为抢答输入键接口,数码管段选P0口,位选P2口,蜂鸣器输出为P3.0口。
3.2.2 电路总设计图
图3.2 多路数字抢答器总设计图
如图3.2所示为多路数字抢答器总设计图,其中包括晶振复位及开始抢答电路、显示器与显示驱动电路和蜂鸣器音频输出电路三部分组成。
3.2.3单元模块设计
3.2.3.1晶振复位及开始抢答电路
晶振的频率为12MHZ,提供89C51的时钟脉冲使89C51工作,复位电路是单片机初始化,使单片机重新开始执行程序。当复位开关按下RST由低电平变为高电平,则程序从头开始执行,在此次课程设计电路中当一个问题结束主持人
后按下复位开关后进行下一题的准备。具体电路接法如图3.3所示,它包括左边的复位电路和右边的计时开始电路两部分。
图3.3 晶振复位及开始抢答电路电路图
3.2.3.2显示器与显示驱动电路
数码管的显示可以分为两种:静态显示和动态显示。静态显示的段选位和位选位均单独连接,因此占用的I/O接口多,无法扩展多个数码管。而数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划的同名端连在一起,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。本次设计电路包括显示和驱动,显示采用数码管,驱动用三极管PNP。数码管要显示正常抢答者编号和回答问题时间前时间倒计时,数码管采用动态显示。如图3.4所示,驱动电路PNP发射极接+5V电压,当基极为低电平是集电极为高电平则能驱动数码管使其显示数字。因为PNP是模拟器件而数码管为数字器件,PNP的集电极如果不接一个较大的电阻显示就会出问题。所以在PNP的集电极接了一个10千欧的电阻。
图3.4显示器和显示驱动电路示意图
3.2.3.3蜂鸣器音频输出电路
蜂鸣器是一种电子电路中常用的发声器件,蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。提供蜂鸣器发声所需要较高的电流,单片机的I/O口驱动能力有限,而我们知道三极管有电流放大的作用,在这里就是利用三极管放大电流来使蜂鸣器获得足够的驱动电流。
蜂鸣器音频输出电路的功能是用来报警,如图3.5所示,当遇到报警信号时,发出蜂鸣声,以此来提醒操作者。本电路通过控制不同频率的矩形脉冲来控制蜂鸣器发声。此次课程设计中只需要一些简单的提示声音,如有抢答违规,开始抢答,抢答时间结束和回答问题时间到的提示声音。本课程设计从P3.0口输出一个矩形脉冲来控制驱动器PNP集电极的高低电平时间来控制蜂鸣器的声音。
图3.5蜂鸣器输出电路示意图
4硬件的安装与调试
4.1 硬件的安装与调试
(1)在第一次焊完电路后,上电,数码管显示正常,但蜂鸣器不响,后来检查电路,发现是实物蜂鸣器与电路图上的型号不同,实物为有源蜂鸣器,而后修改; (2)由于电路准备较早,过一段时间检查,发现数码管c脚不亮,用万用表检查c脚接线也是通的,后来发现是数码管有问题,换掉后工作正常。 (3)最后检查完测试如下:
①当通上电后,数码管显示为30,如图4.1所示
图4.1 上电后实物显示图
②如图4.2所示。当主持人按下开始开关,蜂鸣器发出响声并且数码管显示开始递减计时。
图4.2 开始计时后实物示意图
如图4.3所示为第四个开关抢答成功。
③此时若有抢答器开关按下,倒计时结束,蜂鸣器发出响声显示开关编号,
图4.3 抢答成功实物显示图
④若在30s内无人抢答,则数码管继续递减计数直到显示为00如图4.4显示,
并发出提示音。
图4.4 无人抢答计时到00显示示意图
4.2 功能测试表
用K1-K8表示8位选手的抢答开关,Ka表示复位开关,Kb表示主持人控制开关,所有开关“1”表示该按键先按。Ya表示数码管对应选手编号显示,Yb表示倒计时显示,通过对实物测试的下表:
表4.1 多路抢答器功能测试表
K
Kb K1 K2 K3 K4 K5 K6 K7 K8 Ya Yb a
1 x x x x x x x x x x 30 0 0 x x x x x x x x x 30
倒计
0 1 1 x x x x x x x 0
时 倒计
0 1 x 1 x x x x x x 1
时 倒计
0 1 x x 1 x x x x x 2
时 倒计
0 1 x x x 1 x x x x 3
时 倒计
0 1 x x x x 1 x x x 4
时 倒计
0 1 x x x x x 1 x x 5
时 倒计
0 1 x x x x x x 1 x 6
时 倒计
0 1 x x x x x x x 1 7
时
5 结束语
这次课程设计让我充分理解了89C51芯片的工作原理,知道了抢答器的硬件和软件的实现过程,并且通过自己动手编写程序来控制抢答器的工作,我感到非常有成就感,也锻炼了我的编程能力。在刚开始编程的时候,我感到很茫然,不知道怎么样下手,但是通过自己的仔细的分析和同学的细心的指导,在认真分析了原来已有的代码后,和应有的硬件后,经过多次调试和测试终于成功感谢学校给我们这次机会,锻炼了我们的动手能力。通过这次课设让我明白了理论和实际操作之间差距,而且也让我很明确得意识到自己在数电上有很多的知识漏洞,以后应该多钻研一下。
参考文献
[1] 伍时和.数字电子技术基础.[M] . 北京:清华大学出版社,2008
[2] 王毓银.数字电路逻辑设计(第三版).[M].北京:高等教育出版社,2005
[3] 崔葛瑾.数字电路实验基础.[M].上海:同济大学出版社,2005
[4] 喻宗泉. 单片机原理与应用技术.[M].西安:西安电子科技大学出版社,2005
[5] 陈振官.数字电路及制作实例.[M].北京: 国防工业出版社 ,2006
13
附录1 元件清单表
14
附录2 硬件电路图
15
附录3 程序清单
#include
#define uint unsigned int
#define uchar unsigned char
sbit S0=P1^0;
sbit S1=P1^1;
sbit S2=P1^2;
sbit S3=P1^3;
sbit S4=P1^4;
sbit S5=P1^5;
sbit S6=P1^6;
sbit S7=P1^7;
sbit S8=P3^0;
sbit beep=P3^7;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar num0,num=30,xu;
bit flag1,flat2,flag2;
int flag3;
void delay(uint i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar num1,uchar num2)
{
uchar shi,ge;
shi=num2/10;
ge=num2%10;
P2=0xfe;
P0=table[num1];
delay(5);
P0=0x00;
P2=0xfb;
P0=table[shi];
delay(5);
P0=0x00;
P2=0xf7;
16
P0=table[ge];
delay(5);
P0=0x00;
}
void keyscan1()
{
if(S8==0)
{
delay(10);
if(S8==0)
{
while(!S8);
flag1=~flag1;
num=30;
xu=10;
flat2=0;
flag2=0;
flag3=500;
}
}
}
void keyscan2()
{
if(S0==0)
{
delay(10);
if(S0==0)
{
flat2=~flat2;
xu=0;
}
}
else if(S1==0)
{
delay(10);
if(S1==0)
{
TR0=0; beep=0; delay(500); beep=1; 17
flat2=~flat2;
xu=1;
TR0=0;
beep=0;
delay(500);
beep=1;
}
}
else if(S2==0)
{
delay(10);
if(S2==0)
{
flat2=~flat2;
xu=2;
}
}
else if(S3==0)
{
delay(10);
if(S3==0)
{
flat2=~flat2;
xu=3;
}
}
else if(S4==0)
{
delay(10);
if(S4==0)
{
flat2=~flat2;
xu=4;
TR0=0; beep=0; delay(500); beep=1; TR0=0; beep=0; delay(500); beep=1; TR0=0; beep=0;
delay(500);
beep=1;
}
}
else if(S5==0)
{
delay(10);
if(S5==0)
{
flat2=~flat2;
xu=5;
}
}
else if(S6==0)
{
delay(10);
if(S6==0)
{
flat2=~flat2;
xu=6;
}
}
else if(S7==0)
{
delay(10);
if(S7==0)
{
flat2=~flat2;
xu=7;
}
}
TR0=0; beep=0; delay(500); beep=1; TR0=0; beep=0; delay(500); beep=1; TR0=0; beep=0; delay(500); beep=1;
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
while(1)
{
keyscan1();
display(10,num);
if(flag1)
{
TR0=1;
keyscan2();
while(flat2)
{
TR0=0;
keyscan1();
display(xu,num);
}
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num0++;
if(num0==20)
{
num0=0;
num--;
if(num==0)
{
flat2=~flat2;
xu=10; } }
}
本科生课程设计成绩评定表
指导教师签字:
年 月 日