八路抢答器设计方案.docx
《八路抢答器设计方案.docx》由会员分享,可在线阅读,更多相关《八路抢答器设计方案.docx(18页珍藏版)》请在冰豆网上搜索。
![八路抢答器设计方案.docx](https://file1.bdocx.com/fileroot1/2023-5/28/185abf63-78bd-4a30-a229-2bcfb5a45140/185abf63-78bd-4a30-a229-2bcfb5a451401.gif)
八路抢答器设计方案
八路抢答器设计方案
3.1设计要点
根据控制系统的工作原理和执行装置,可以将系统设计分为硬件和软件两大部分。
硬件设计部分,包括编写电路原理图、合理选择元器件、焊接各个元器件,然后对硬件性能进行调试、测试,以达到设计要求。
软件设计部分,首先在设计之前完成系统总框图和确定各个功能模块,然后进行具体设计,包括各模块的流程图,选择合适的编程语言和软件应用程序,进行编程设计等;最后是通过软件对程序进行调试、测试,以及仿真,以达到性能的最优化。
下面是软硬件设计方法确定的。
软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用KeilC语言进行开发。
此编程工具相比汇编语言具有结构化、适用围大、可移植性好等特点。
本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,可以进行仿真测试,已达到设计功能要求。
为配合软件的灵活设计,硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。
硬件电路的设计最重要的选择用于控制的单片机,再确定与之配套的外围芯片,使所设计的系统既经济又高性能。
硬件电路设计可以在焊接元器件之前画出详细电路图,标出芯片的型号、器件参数值,根据电路图在仿真软件上进行调试,发现设计错误时立即修改,高效,准确地完成硬件设计。
3.2硬件设计
本系统采用单片机作为整个控制核心。
控制系统主要由:
显示模块、控制模块、报警模块、抢答模块组成。
工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理后,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。
当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。
若在25秒仍然无人抢答,蜂鸣器在最后5秒发出连续报警,提示抢答时间快要结束;若在30秒有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。
若在抢答过程中遇见特殊情况,主持人则可以通过时间加,时间减按键来进行时间调节。
若要开始新的一轮抢答,主持
人按下复位键再按开始键即可。
图3-1单片机抢答器设计方案
4设计原理及功能说明
4.1单片机控制原理
单片机(SCM)是单片微型计算机(SingleChipMicrocomputer)
的简称。
它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、
I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,
构成一个完整的微型计算机。
它的最大优点是体积小,可放在仪表部。
但存储量小,输入输出适配器简单,功能较低。
目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。
图4-1STC89C51单片机引脚图
单片机是美国STC公司最新推出的一种新型51核的单片机。
片含有Flash程序存储器、SRAM、UART、SPI、PWM等模块。
(1)STC89C51主要功能、性能参数如下:
(1)置标准51核,机器周期:
增强型为6时钟,普通型为12时钟;
(2)工作频率围:
0~40MHZ,相当于普通8051的0~80MHZ;
(3)STC89C51RC对应Flash空间:
4KB;
(4)部存储器(RAM):
512B;
(5)定时器计数器:
3个16位;
(6)通用异步通信口(UART)1个;
(7)中断源:
8个;
(8)有ISP(在系统可编程)\IAP(在应用可编程),无需专用编程器仿真器;
(9)通用I\O口:
32\36个;
(10)工作电压:
3.8~5.5V;
(11)外形封装:
40脚PDIP、44脚PLCC和PQFP等。
(2)STC89C51单片机的引脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1时”,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
(三)STC89C51单片机最小系统:
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。
电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。
STC89C51是片有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单、可靠。
用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图4-2所示,由于集
成度的限制,最小应用系统只能用作一些小型的控制单元
图4-2单片机最小系统原理框图
(1)时钟电路
STC89C51单片机的时钟信号通常有两种方式产生:
一是部时钟方
式,二是外部时钟方式。
部时钟方式如图4-3所示。
在STC89C51单片机部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机部产生时钟脉冲信号。
图中电容C1和C2的作用是稳定频率和快速起振,电容值在
5~30pF,典型值为30pF。
晶振CYS的振荡频率围在1.2~12MHz间选择,典型值为12MHz和6MHz。
图4-3STC89C51部时钟电路
⑵复位电路
当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路
的电容充放电来实现的。
只要Vcc的上升时间不超过1ms就可以实现自动上电复位。
除了上电复位外,有时还需要按键手动复位。
本设计就是用的按键手动复位。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST(9)端与电源Vcc接通而实现的。
按键手动复位电路见图4-4。
时钟频率用11.0592MHZ时C取10uF,R取10kQ。
图4-4STC89C51复位电路
(3)STC89C51中断技术概述
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。
这是由片的中断系统来实现的。
当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。
中断服务处理程序处理完中断服务请求后,再回到原来被
中止的程序之处(断点),继续执行被中断的主程序。
如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。
采用中断技术完全消除了单片机在查询方式中的等待现象,大提高了单片机的工作效率和实时性。
4.2抢答器原理
抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按
下开始抢答开关重新抢答。
主持人按下开始抢答按纽(P3.0),蜂鸣响
声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,
30秒有人抢答则开始60秒倒计时(60秒必须回答完问题)。
单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。
5单元电路的设计
5.1开始抢答电路
在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。
图5-1开始抢答电路
5.2选手抢答电路
89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。
图5-2选手抢答电路
5.3显示驱动电路
此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。
驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。
在+5V电压下接1k的电阻,保证正常压降。
图5-3显示驱动电路
6硬件调试
软件的设计与调试实行分模块实现的方法。
本设计软件调试中的分模块包括显示功能模块,调整时间功能模块,抢答功能模块以及报警功能模块。
各个独立模块功能调试成功后,将这些模块程序通过主程序合并在一起,最后再对合并后的总程序进行调试。
各软件模块首先要通过PC和仿真器进行软件调试,当仿真效果符合要求后在烧写进单片机看是否在实际电路板上正常工作。
本设计通过利用Proteus仿真,将所编写的程序用wave软件编译,所仿真原理图见附录1。
7总结
随着电子技术的飞速发展,基于单片机的控制系统已经广泛应用于工业、农业、电力、电子、智能楼宇等行业。
微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。
同时楼宇智能化的发展与成熟,也为基于单片机的照明控制系统的普及与应用奠定了坚实的基础。
多路数字抢答器在各种智力竞赛中经常用到。
在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。
为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。
一方面加深我们对所学习的知识的了解,巩固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。
积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。
控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。
具体以STC89C51单片机为系统工作核心,负责控制各个部分协调工作。
在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。
同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。
参考文献
[1]康华光,邹寿彬编.电子技术基础数字部分(第四版)[M].:
高等教育,2005
[2]自美编.电子线路设计实验测试(第二版)[M].:
电子工业,2001
[3]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].:
航空航天大学,1999年
[4]陆坤,奚大顺,之权等,电子设计技术[M].:
电子科技大学1997年[5]
[5]胡学海.单片机原理及应用系统设计[M].:
京电子工业,2005年
⑹林凌,刚,丁茹,小霞新型单片机接口器件与技术[M].:
电子科技大学,2005年
[7]朝青主编,《单片机原理与接口技术》.航天航空大学,1994年
[8]何立编,《单片机应用与设计》.航天航空大学,1990年
[9]邹逢兴编著,《计算机硬件技术基础实验教程》高等教育,1994年
[10]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].:
航
空航天大学,1999年
附录1:
总体原理仿真图
附录2:
元器件清单
序号
名称
型号规格
数量
1
万用板
9*15
1
2
单片机
STC89C51
1
3
四位一体数码管
共阴极
1
4
芯片插座
4P
1
5
晶振
12M
1
6
瓷片电容
30P
2
7
三极管
PNP
1
8
蜂鸣器
5V
1
9
自锁开关
5V
1
10
电阻
2.2K
1
11
电阻
10K
1
12
电解电容
10卩F
1
13
排阻
102
1
14
电源插座
5V
1
15
按键
14
16
导线
若干
17
锡焊
若干
18
电源线
USB
1
附录3:
实物图
附录4:
源程序
voidmain()
{
init();
if(k==0)//主持人按下开始键
{
Timer();
delay(10);
while(!
k);
while
(1)
{
dis();
m=0;
n=0;
if(second==10){beep=1;delay(500);beep=0;}
if(second==0){
TR0=0;n=1;
if(k==0)
{beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}
}
if(n==0)
{
if(k1==0){delay(5);if(k1==0);while(!
k1);t=1;}
elseif(k2==0){delay(5);if(k2==0);while(!
k2);t=2;}
elseif(k3==0){delay(5);if(k3==0);while(!
k2);t=3;}
elseif(k4==0){delay(5);if(k4==0);while(!
k2);t=4;}
elseif(k5==0){delay(5);if(k5==0);while(!
k2);t=5;}
elseif(k6==0){delay(5);if(k6==0);while(!
k2);t=6;}
elseif(k7==0){delay(5);if(k7==0);while(!
k2);t=7;}
elseif(k8==0){delay(5);if(k8==0);while(!
k2);t=8;}
elseif(k==0){delay(5);if(k==0);while(!
k);t=0;i=0;second=29;beep=1;delay(500);beep=0;TR0=1;}
}
if(a1==0)//选手1的分数
{second=score1;
dis();
if(m1==0)
{delay(5);if(m1==0);while(!
m1);beep=1;delay(100);beep=0;score1+=1;if(score1==99)score1=60;}
elseif(m2==0)
{delay(5);if(m2==0);while(!
m2);beep=1;delay(100);beep=0;score1-=1;if(score1==0)score1=60;}
dis();
}
elseif(a2==0)
{second=score2;
dis();
if(m1==0)
{delay(5);if(m1==0);while(!
m1);beep=1;delay(100);beep=0;sc
elseif(a3==0)
{second=score3;
dis();
if(m1==0)
{delay(5);if(m1==0);while(!
m1);beep=1;delay(100);beep=0;score3+=1;if(score3==99)score3=60;}
elseif(m2==0)
{delay(5);if(m2==0);while(!
m2);beep=1;delay(100);beep=0;sc
ore3-=1;if(score3==0)score3=60;}
second=score3;
dis();
}
elseif(a4==0)
{
elseif(a5==0)
{
second=score5;
dis();
if(m1==0)
{delay(5);if(m1==0);while(!
m1);beep=1;delay(100);beep=0;score5+=1;if(score5==99)score5=60;}
elseif(m2==0)
{delay(5);if(m2==0);while(!
m2);beep=1;delay(100);beep=0;sc
ore5-=1;if(score5==0)score5=60;}
second=score5;
dis();
}
elseif(a6==0)
{
elseif(a7==0)
{
second=score7;
dis();
if(m1==0)
{delay(5);if(m1==0);while(!
m1);beep=1;delay(100);beep=0;score7+=1;if(score7==99)score7=60;}
elseif(m2==0)
{delay(5);if(m2==0);while(!
m2);beep=1;delay(100);beep=0;sc
ore7-=1;if(score7==0)score7=60;}
second=score7;
dis();
}
elseif(a8==0)
{
if(k==0){i=0;t=0;second=29;beep=1;delay(500);beep=0;TR0=
1;}
while(!
k);
}
}
}
}
定时器子程序
voidTimer()
{
TMOD|=0x01;
TH0=0xd8;//初值55536,计数10000次,每次1US,总计10ms
TL0=0xf0;
IE=0x82;
TR0=1;
}
voidtim(void)interrupt1using1//为定时中断TR0
{
TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if(count==100)//100*10ms=1秒{
count=0;
second--;//秒减1
}
}
延时子程序
voiddelay(uintz)//延时函数
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
显示子程序
voiddisplay(ucharshiwei,gewei)//显示函数{
P2=0xfe;//打开显示时间十位的位选
PO=shiwei;〃显示十位
delay(5);
P2=Oxfd;//个位位选
PO=gewei;
delay(5);