基于C单片机的多路数字定时抢答器设计.docx
- 文档编号:8619293
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:31
- 大小:610.88KB
基于C单片机的多路数字定时抢答器设计.docx
《基于C单片机的多路数字定时抢答器设计.docx》由会员分享,可在线阅读,更多相关《基于C单片机的多路数字定时抢答器设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于C单片机的多路数字定时抢答器设计
课程设计任务书
学生姓名:
XXX专业班级:
电子科学与技术1302班
指导教师:
XX工作单位:
信息工程学院
题目:
多路数字定时抢答器设计
初始条件:
本课程设计既可以选用集成电路:
74LSl48,74LS279,74LS48,74LSl92,NE555,74LS00,74LSl21和其它器件等,实现八路定时抢答功能。
又可以使用单片机系统构建多路数字定时抢答器。
要求用蜂鸣器和光电二极管作声光报警器件,工作电源Vcc为+5V。
要求完成的主要任务:
(包括课程设计工作量及技术要求,以及说明书撰写等具体要求)
1、课程设计工作量:
1周。
2、技术要求:
可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个抢答按钮,按钮的编号与选手的编号相对应。
给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。
抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。
此外,要封锁输入电路,禁止其它选手抢答。
优先抢答选手的编号一直保持到主持人将系统清零为止。
抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。
当节目主持人启动“开始”键后,要求定时器立即进行减计时,并用显示器进行显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。
画出总体电路原理图。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:
1、2015年6月29日集中,作课设具体实施计划与课程设计报告格式的要求说明。
2、2015年6月30日至2015年7月1日,方案选择和电路设计。
3、2015年7月2日至2015年7月3日,电路调试和设计说明书撰写。
4、2015年7月4日上交课程设计成果及报告,同时进行答辩。
课设答疑地点:
鉴主14楼电子科学与技术实验室。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
在现实社会中,各种竞赛都要应用到抢答器。
因此,抢答器成为了我们生活中必不可少的一种竞赛辅助工具。
本次课设所要做的便是一种简易而使用的“八路数字定时抢答器”,可以满足基本的抢答功能。
抢答器主要有抢答电路、定时电路、驱动电路、显示电路、总控制电路组成。
结合功能实现的难易程度和经济成本,本课设采用单片机来完成。
单片机具有强大的“I/O”口,并且电路设计简单,编程方便且可改写,完全足以完成课设要求。
关键词:
八路数字定时抢答器;单片机;编程;I/O
多路数字定时抢答器设计
1设计任务
1.1设计基本要求
可同时供8名选手(或代表队)参赛,其编号分别是0到7,各用一个抢答按钮,按
钮的编号与选手的编号相对应。
给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢
答的开始。
抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答按钮,编号立
即锁存,并在LED数码管上显示出选手的编号,同时扬声器给出音响提示。
此外,
要封锁输入电路,禁止其它选手抢答。
优先抢答选手的编号一直保持到主持人将系
统清零为止。
1.2设计扩展
抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(如30秒)。
当节
目主持人启动“开始”键后,要求定时器立即进行减计时,并用显示器进行显示,
同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选
手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统进行短暂的报
警,并封锁输入电路,禁止选手超时后抢答,定时显示器上显示00。
画出总体电路原理图。
2设计方案的选取
2.1方案一
图1方案一原理框图
方案一,主要采用逻辑电路来完成。
抢答电路有八个独立按键代表八个人的抢答;八D锁存器将抢答电路的信息进行锁存,并送入编码电路中进行编译;译码电路是采用三八译码器,做数码管的驱动电路;译码显示采用七段共阴或者共阳数码管显示“0-8”数值;脉冲产生电路的主要作用是产生秒脉冲,用于定时电路的秒进位;主持人通过对八D锁存器的使能端的控制来控制抢答的与否;定时电路采用集成芯片74LS192来达到定时作用;集成单稳态触发器可以产生固定时间的脉冲信号,可以用于报警电路0.5秒的报警时间。
此方案,所用芯片较多,各模块电路之间要进行连接,比较麻烦,完成度极低。
2.2方案二
报警电路
单片机(80C52)
显示电路
→→
控制
电路
定时
电路
↓↓
图2方案二原理框图
方案二是用单片机来完成。
单片机一共有40个引脚,其中28个“I/O”口,强大的“I/O”口足以完成一个简易抢答器。
报警电路采用蜂鸣器来做报警信号的产生;显示电路采用二位七段共阳数码管显示定时时间和抢答者的序号;定时电路采用按键来控制计时加和减;控制电路主要为控制抢答的开始和单片机复位功能。
各电路之间的交流主要由软件来完成。
此方案,所用芯片集成度高,电路所需芯片较少,电路连接简单,成本较低。
但,对软件编程功底要求很高。
综上所述,采用第二种方案来完成本课设
3主要元件介绍
3.180C52RC单片机芯片介绍
3.1.1芯片简介
80C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本。
80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
8051片内有ROM,无须外接外存储器和373,更能体现“单片”的简练。
3.1.2芯片引脚图
80C52单片机芯片引脚图见图3:
图380C52的单片机引脚图
3.1.3芯片主要引脚介绍
①并行I/O接口P0X:
当作为通用的I/O口时,P0口的引脚以“开漏”的方式输出,
所以必需外加上拉电阻。
当作为外部程序或数据存储器的数据/地址总线时,内部控
制信号为高电平,P0口的引脚可以在数据/地址总线的作用下实现上拉,不需要外加
上拉电阻。
②P1X:
具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。
作为专用功能引脚,相应的口锁存器必须为1状态。
③P2X:
具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使用。
作为外部程序或数据存储器的高地址总线。
④P3X:
具有内部的上拉功能,可作为准双向口(用作输入时引脚被拉成高电平)使
用。
作为专用功能引脚,相应的口锁存器必须为1状态。
⑤EA/VPP:
访问程序存储器控制信号,当其为低电平时,对ROM的读操作限定在外
部的程序存储器,当其为高电平时,对ROM的读操作是从内部存储器开始的,并可
延至外部程序存储器。
⑥ALE/PROG:
编程脉冲
⑦PSEN:
外部程序存储器读选通信号,在读外部ROM时PSEN是低电平有效,以实现
对ROM的读操作。
⑧RST/VPD:
复位信号,当输入信号延续2个周期以上的高电平有效,用以完成单片
机复位初始化操作。
⑨XTAL:
时钟晶振输入端
3.274HC573芯片介绍
3.2.1芯片简介
74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。
当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至输出被关闭时,新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
3.2.2芯片引脚图
其引脚D0—D7与Q0—Q7为输出端;OE为使能端,只有在其为低电平是,芯片才能正常工作;LE为输入使能端,只有在其高电平下,芯片才能正常使能。
74HC573引脚图见图4
图474HC573引脚图
3.2.3芯片真值表
CE端输入低电平,LE端输入高电平时,74HC573芯片才能正常使能工作。
真值表见表1:
输入
输出
CE
LE
D
Q
H
X
X
Z
L
L
X
不变
L
H
L
L
L
H
H
H
表174HC573真值表
3.3四位七段数码管介绍
3.3.1引脚图
四位七段数码管引脚图见图5:
图5四位七段数码管引脚图
1-6脚依次是eddpcg4,12-7脚依次是1af23b
3.3.2真值表
四位七段数码管真值表见表2:
显示十进制数
二进制数码
对应十六进制码
dp
g
f
e
d
c
b
a
0
0
0
1
1
1
1
1
1
C0H
1
0
0
0
0
0
1
1
0
F9H
2
0
1
0
1
1
0
1
1
A4H
3
0
1
0
0
1
1
1
1
B0H
4
0
1
1
0
0
1
1
0
99H
5
0
1
1
0
1
1
0
1
92H
6
0
1
1
1
1
1
0
1
82H
7
0
0
0
0
0
1
1
1
F8H
8
0
1
1
1
1
1
1
1
80H
9
0
1
1
1
1
1
1
1
90H
表2四位七段数码管真值表
4设计原理阐述
4.1抢答电路
抢答电路采用八个弹片按键做抢答按钮,从S1-S8分别依次接入单片机的P2.7-P2.0引脚。
当按下按键是,表示抢答,低电平有效,将有效信号传入对应的单片机引脚中,进行软件烧写。
当有效信息传入单片机时,单片机对其他按键进行封锁,不容许其抢答,只锁存有效抢答按键。
抢答电路图见图6:
图6抢答电路
4.2时钟电路设计原理
CPU的定时精确工作需要一个晶振振荡器产生稳定的时钟脉冲来控制89C52。
因此时钟电路采用11.0592MHZ的晶振来产生时钟脉冲,分别接入89C52的XTAL1引脚和XTAL2引脚。
时钟电路见图7:
图7时钟电路图
4.3单片机复位电路
复位是单片机的一个重要部件,可以将单片机工作状态恢复到上点之前。
接在89C52的RST引脚。
单片机复位电路见图8:
图8单片机复位电路
4.4报警电路
报警电路是本次课设的重点要求,当有人抢答时,会发出提示声音,或者没有开始抢答和抢答无效时会发出报警声音。
接在89C52的P1.7引脚上。
报警电路见图9:
图9报警电路
4.5显示电路
显示电路采用四位共阳数码管来显示倒计时的时间和抢答者的序号。
通过74HC573做驱动芯片来驱动控制数码管的显示。
其引脚接在89C52的P0.0-P0.7引脚上。
显示电路见图10:
图10显示电路图
4.6开始、计时加减电路
S11位开始按键,当,S11按下时,抢答开始。
S9和S10位定时设置按键。
S9位计时键按键S10位计时加按键。
S9-S11依次接入89C52的P3.5-P3,7引脚。
开始、计时加减电路见图11:
图11开始、计时加减电路图
5软件设计
5.1软件设计思想
本抢答器的软件系统主要包括以下几个部分:
①主程序:
主程序的功能主要是完成各寄存器单元的初始化,对89C52单片机接口电路的初始化,
内部定时器的初始化,中断的初始化及调用显示程序。
②对开始抢答的处理:
当主持人按下开始按键是,程序部分采用中断方式进行处理。
在中断处理程
序中完成相应操作,修改计时单元的数据发出计时提示声音。
③按键扫描程序:
主要用于各按键的扫描,检测那一个按键发出有效信号。
④显示程序:
采用动态扫描显示,显示倒计时时间和抢答者的序号。
5.2软件逻辑框图
软件逻辑框图见图12:
图12软件逻辑框图
6实物图
实物正面图见图12:
图12实物正面图
实物背面焊接图见图13:
图13实物背面焊接图
7总结体会
经过正确的硬件设计与焊接、软件正确调试,成功的实现了本课设的所有要求。
八人一起抢答,每一次只有一个人或者无人为有效抢答,不存在多人抢答有效。
数码管显示倒计时和抢答者序号也为正确数字。
此系统操作简单可靠,简易而准确。
实为一次成功的课设。
通过本次的课程设计,锻炼了我的硬件和软件能力。
从设计硬件开始,利用Multisim软件画出仿真电路图,通过上网查阅资料和翻阅书籍,充分了解89C52单片机芯片各个引脚的功能,确定每一个电路应接入什么引脚,确保自己设计的电路图是可行的。
在到软件烧写,用keil软件进行C语言的编程,利用模块化将程序的难度降低。
在这一次的课设中,遇到了很多的问题。
首先就是硬件问题,刚开始采用逻辑电路来完成这一次的课设,当因为自己设计的逻辑电路太过复杂,经过焊接调试之后,多次进行寻找错误,当最终还是以失败告终。
因此不得不重新选择用单片机来完成这一次的课设。
在焊接单片机时几乎没有遇到多少问题,硬件焊接一次性成功。
但是软件也是出了一些问题,在数码管显示上和抢答按键上都出现了问题。
经过自己一遍又一遍的调试,终于成功解决了所有问题。
可以说,这一次的课设让我收获很大,从硬件设计到软件烧写,都锻炼了我的能力,为自己以后更好的学习单片机以及其他东西打下了坚实的基础。
参考文献
[1]伍时和.数字电子技术基础.清华大学出版社.2009
[2]宋学松、李冬明、崔长胜.手把手教你学51单片机.清华大学出版社.2014
[3]郭天祥.51单片机C语言教程.电子工业出版社2013
[4]康华光、陈大钦、张林.电子技术基础.华中科技大学出版社。
2002
[5]谢自美.电子线路设计.华中科技大学出版社.2010
[6]孙梅生.电子技术基础课程设计.高等教育出版社.2012
附录1整体电路图
附录2元件清单
序号
名称
型号
数量
1
51芯片
STC89C52RC
1
2
芯片底座
40引脚
1
3
复位按键
4脚直插
13
4
蜂鸣器
有源5V
1
5
四位共阳数码管
LG5641BH
1
6
锁存器
74HC573
2
7
芯片底座
20脚
2
8
三极管
NPN8050
1
9
三极管
NPN9012
4
10
瓷片电容
30PF直插
5
11
晶振
11.0592MHZ
1
12
电解电容
10uF/25V
1
13
排阻
10K*8
1
14
电阻
100Ω、10KΩ直插
各10
15
排针
2.45MM
1
附录3软件程序
//Responder.c
#include
#defineLED_DATA_PORTP0//0亮,共阳数码管
#defineADJUST0//抢答器处于调整状态
#defineANSWER1//抢答状态//单片机IO口位声明,51单片机可以对IO的每一位或Px八位单独进行读写操作
sbitcom4=P1^1;//1亮
sbitcom3=P1^0;
sbitkey1=P2^1;
sbitkey2=P2^3;
sbitkey3=P2^5;
sbitkey4=P2^7;
sbitkey5=P2^0;
sbitkey6=P2^2;
sbitkey7=P2^4;
sbitkey8=P2^6;
sbitkey9=P3^5;//倒计时减
sbitkey10=P3^6;//倒计时加
sbitkey11=P3^7;//清零端,控制端
sbitbeep=P1^7;//1响
unsignedcharnum1=0,time=15;//num1是用来辅助定时器计数,累计时间到一秒,time为倒计时
unsignedcharshi=0,ge=0;//倒计时time的十位和个位
unsignedcharresult=0;//抢答结果
unsignedcharstate=ADJUST;//抢答器状态,初始为调整状态
unsignedcharflag=0;//结束标识,状态标识,0复位,没有有效信号;1有人抢答,结束抢答过程;2时间到,无人抢答,结束抢答过程
constunsignedcharledNum[]=
{//0123456789ABCDEF不显示-0(18)H(19)h(20)C(21)0(22)n(23)
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
};
voidDelay(unsignedintt)
{
while(--t);
}//延时函数,n毫秒
voidDelay_ms(unsignedintn)
{
unsignedinti,j;
for(i=n;i>0;i--)
for(j=110;j>0;j--);
}
//开始声音
voidSoundStart(void)
{
beep=1;
Delay_ms(200);
beep=0;
}
//报警声音
voidSoundWarning(void)
{
unsignedchari;
for(i=0;i<20;i++)//报警声音
{
beep=1;
Delay_ms(i);
beep=0;
Delay_ms(20-i);
}
}
//结束声音
voidSoundOver(void)
{
unsignedchari;
for(i=0;i<80;i++)
{
beep=1;
Delay(100);
beep=0;
Delay(100);
}
}
//按键扫描,扫描K1-K8
unsignedcharKeyScan_8(void)
{
unsignedcharnum=0;
if(key1==0)
{
Delay_ms(10);
if(key1==0)
{
num=1;
Delay_ms(10);
while(!
key1);
returnnum;
}
}
if(key2==0)
{
Delay_ms(10);
if(key2==0)
{
num=2;
Delay_ms(10);
while(!
key2);
returnnum;
}
}
if(key3==0)
{
Delay_ms(10);
if(key3==0)
{
num=3;
Delay_ms(10);
while(!
key3);
returnnum;
}
}
if(key4==0)
{
Delay_ms(10);
if(key4==0)
{
num=4;
Delay_ms(10);
while(!
key4);
returnnum;
}
}
if(key5==0)
{
Delay_ms(10);
if(key5==0)
{
num=5;
Delay_ms(10);
while(!
key5);
returnnum;
}
}
if(key6==0)
{
Delay_ms(10);
if(key6==0)
{
num=6;
Delay_ms(10);
while(!
key6);
returnnum;
}
}
if(key7==0)
{
Delay_ms(10);
if(key7==0)
{
num=7;
Delay_ms(10);
while(!
key7);
returnnum;
}
}
if(key8==0)
{
Delay_ms(10);
if(key8==0)
{
num=8;
Delay_ms(10);
while(!
key8);
returnnum;
}
}
returnnum;
}
//按键扫描函数为控制开关
unsignedcharKeyScan_3(void)
{
unsignedcharnum=0;
if(key9==0)
{
Delay_ms(10);
if(key9==0)
{
num=9;
while(!
key9);
returnnum;
}
}
if(key10==0)
{
Delay_ms(10);
if(key10==0)
{
num=10;
while(!
key10);
returnnum;
}
}
if(key11==0)
{
Delay_ms(10);
if(key11==0)
{
num=11;
while(!
key11);
returnnum;
}
}
returnnum;
}
//按键扫描,只扫描控制端清零端
unsignedcharKe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 路数 定时 抢答 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)