四路抢答器设计.docx
《四路抢答器设计.docx》由会员分享,可在线阅读,更多相关《四路抢答器设计.docx(30页珍藏版)》请在冰豆网上搜索。
四路抢答器设计
EDA课程设计报告
题目:
四路抢答器
学院:
机械与电气工程学院
专业:
电气工程及其自动化
班级:
姓名:
学号:
指导教师:
教师职称:
2018
年
1
月
5
日
机械与电气工程学院EDA课程设计任务书
专业:
电气工程及其自动化年级:
B电气工程15-2姓名:
路志文学号:
**********
EDA课程设计题目
四路抢答器
EDA课程设计得任务、要求
一、设计任务
1.设计一个可容纳四组参赛得数字式抢答器,每组设一个按钮供抢答使用。
2.设置犯规电路,对提前抢答与超时答题(例如3分钟)得组别鸣笛示警。
3.设置一个计分电路,进行加分与减分;
二、设计要求
1.查找资料,根据要求得格式,以设计报告书得形式写出设计方案得全过程;
2.学习使用Protel软件,利用Protel完成原理图绘制;
3、学习使用Multisim软件,利用Multisim进行仿真验证(或实物验证)。
参考文献
[1]童诗白,华成英、模拟电子技术基础(第四版)[M]、北京:
高等教育出版社,2006、
[2]阎石、数字电子技术基础(第五版)[M]、北京:
高等教育出版社,2006、
[3]古良玲、电路仿真与电路板设计项目化教程(基于Multisim与Protel)[M]、北京:
机械工业出版社,2014、
[4]瞿德福、实用数字电路手册-(TTLCMOS)[M]、北京:
中国标准出版社,2013、
EDA课程设计工作进度计划
起讫日期
主要工作内容
2017、12、25-2018、12、25
选题、调研、收集资料
2017、12、26-2018、01、03
绘制原理图、调试运行
2018、01、04-2018、01、04
撰写设计报告书
2018、01、05-2018、01、05
EDA课程设计答辩
指导教师签名
指导教师:
年月日
教研室意见
负责人:
年月日
四路抢答器
路志文
摘要
随着我国经济与文化事业得发展有很多竞争场合需要有快速公正得抢答器、
该课题设计得就是一款多功能四路数字抢答器,它具有优先抢答、限时抢答、铃音提示、数字显示、系统报警等功能。
主要由抢答电路、定时电路、报警电路、时序电路组成。
其中抢答电路主要就是分辨出选手得按键顺序,锁存优先抢答者得编号,供译码显示电路使用,并封锁输入电路,禁止其她选手抢答;定时电路主要就是限定抢答时间,禁止选手超时抢答,抢答有效时间可以由问题得难易来设定。
确保了比赛得公平性,更便于选手操作,实现快速无误得抢答。
关键词:
四路抢答器计时报警
four-waybuzzer
luzhiwen
Abstract
Hastheverymanypetitionsituationalongwithourcountryeconomyandtheculturalestablishmentdevelopmenttoneedtohavefastfairviestoanswerfirst、
Soldierelectronviestoanswerfirst,ithasfirstviestoanswerfirst,reprimandstheby-pass,thetimelimitviestoanswerfirst,thebellsoundprompt,thenumeraldemonstrated,thesystemreportstothepoliceandsoonthefunctions、Mainlybyviestoanswerfirsttheelectriccircuit,thetimingcircuit,thealarmcircuit,thesequencecircuitposes、Inwhichviestoanswerfirsttheelectriccircuitmainlyisdistinguishescontestant'spressedkeyorder,thelocksavesfirsttheviingtoanswerfirstserialnumber,forthedecodingdisplaycircuituse,andblockstheinputcircuit,forbidsothercontestantstovietoanswerfirst;Thetimingcircuitmainlyisthedefinitionviestoanswerfirstthetime,forbidsthecontestantovertimetovietoanswerfirst,viestoanswerfirsttheworkinglifetobepossibletoestablishbythequestiondifficulty、Hasguaranteedthepetitionfairness,isadvantageousforthecontestanttooperate,realizationfastunmistakableviingtoanswerfirst、
Thisdesignelectriccircuitmainlyusedfirsttheencoder,thelatch,electronicprimarydevicesandsoon555timers、
Keywords:
four-waybuzzertimingcallthepolice
1设计目得
熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。
了解数字系统设计得基本原理思想与方法,学会科学分析与解决问题,有效得提高动手能力,独立分析问题、解决问题得能力,协调能力与创造性思维能力。
培养认真严谨得工作作风与实事求就是得工作态度,培养综合运行理论知识解决实际问题得能力。
2设计要求
设计一个可容纳四组参赛得数字式抢答器,每组设一个按钮供抢答使用。
设置犯规电路,对提前抢答与超时答题(例如3分钟)得组别鸣笛示警。
设置一个计分电路,进行加分与减分。
3设计任务
分析设计任务,电路应包括抢答,计分与报警三大主要部分。
当单片机定时器得中断循环二十次后开始报警,报警LED灯亮。
抢答电路要求在裁判按下抢答按钮后,选手开始抢答,并在一个选手抢答成功后现实哪个选手抢答成功且此时其她选手不能抢答,因此在单片机程序中设置while(!
k);与while(k6&k7&k8);作为逻辑语句,实现一个选手抢到后其她选手抢答无效。
调用voidkey()实现抢答与计分电路得功能,并通过voidSMG_Display就是每个选手得分数在数码管上显示出来。
在设计控制电路时,应正确处理各个信号之间得时序关系。
4设计方案
4、1硬件设计
4、1、1四路抢答器按键控制电路
图4、1四路抢答器按键控制电路
键盘就是单片机不可或缺得输入设备,就是实现人机对话得纽带,键盘按结构形式可以分为非编码键盘与编码键盘,前者用软件方式产生编码,而后者用硬件方式产生编码,在单片机中使用得都就是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘类型也多,如此次使用得独立式键盘,此键盘得特点就是使用了多少根I/O线就有多少个按键,由于此次我们使用了8根I/O线所以有8个按键、这种键盘各个按键比较少且各个按键相互独立,因此可以根据实际需要对键盘中得按键灵活编码。
CPU可以直接通过I/O线状态来获得按键得状态编码,虽然操作简便但就是会占用大量得I/O口线,因此只有当单片机各接口资源比较充裕时才可以选择这种键盘。
4、1、2数码管显示电路
图4、2数码管显示电路
电路可以清通过数码管显示晰直观得显现出个选手得得分情况,且结构简单易使用软件对其编程,数码管功率小消耗低,抗干扰能力强。
由p0、0-p0、7对其显示数码进行编程控制,由三极管控制各选手得记分板得工作与锁存状态,简单易操作。
4、1、3外部时钟脉冲电源电路
图4、3外部时钟脉冲电源电路
由晶振与电容,vcc构成简单得外部脉冲电源电路,此电路结构简单便于控制,且输出脉冲稳定,并将rst引脚与电路相连防止单片机突然断电时rom地址中得内容得丢失也可增加了复位得功能。
4、1、4四位电路抢答器
图4、4四位电路抢答器
当主持人按下抢答按键时,选手开始抢答,并有LED灯显示选手就是否抢答成功,在强大成功回答抢答则有开始进入加减法计分电路,显示选手分数,若抢答后未在规定时间内回答则报警灯亮,提示强大时间超时。
图4、5系统结构图
4、1、5PCB设计
图4、6PCB电路设计
在连接原理图得同时把元器件得封装做好,最后转化成PCB,再通过自动布线或者手动连线,确保各线之间无交接得地方。
4、2、软件设计
4、2、1软件仿真
如上图,此电路主要实现选手得抢答。
接通电源后,当主持人将开关拨到“清零”状态,抢答器处于禁止状态,定时器设定时间,主持人将抢答按钮按下允许抢答,选手开始抢答,在规定时间内完成抢答,优先判断,使用LED灯显示选手抢答。
图4、7抢电答路
4、2、1、1单片机外部脉冲电路
图4、8外部脉冲电路
单片机外部脉冲电路由两个30pf得电容与一个晶振组成,通过晶振得周期信号作为时钟脉冲,在rst处接电源,保障单片机突然断电时不会丢失在ROM中存储得数据信息。
4、2、1、2选手抢答开关电路
图4、9选手抢答开关电路
由裁判按下开关k1允许选手开始抢答,并在选手抢答成功后,各选手相对应得LED灯亮,显示某一选手抢答成功,然后定时器开始计时,若未在规定时间抢答完毕,报警灯亮。
4、2、1、3数码管电路
图4、10数码管电路
数码管得左下班引脚与p0、0-p0、7相连,并通过软件译码功能,最终显示各选手得分。
右下引脚与三极管相连,通过控制三极管得导通电压显示相应对手得分数
4、2、1、4加法记分电路
图4、11加法记分电路
在选手抢答成功后,三极管接通,抢答成功选手得相应记分数码管亮,在回答正确后,通过按键k6实现给p2、5一个低电平,有软件控制实现加法运算。
4、2、1、5减法记分电路
图4、12减法记分电路
在选手抢答成功后,三极管接通,抢答成功选手得相应记分数码管亮,在回答错误后,通过按键k7实现给p2、6一个低电平,有软件控制实现减法运算。
4、2、1、6延时报警电路
图4、13延时报警电路
若选手在抢答成功后没有在规定时间内对抢答得问题作出回答,在定时器得循环次数达到二十次时,由软件控制报警灯亮,提示选手回答超时。
4、2、2软件程序设计
本设计抢答器得程序采用得就是C程序设计,C语言得显著特点就是用二进制来编写程序,程序各个部分除了必要得信息交流之外相互独立,这种结构方式可使程序层析清晰,便于使用,维护以及调试。
C语言以函数得形式提供给用户得,这些函数可方便得调用,并具有多种循环,条件语句控制程序流向,从而使程序完全结构化,虽然C语言就是强类型语言,但它得语法比较灵活,允许程序编写有较大得灵活度。
本次课程设计得主程序包括时钟设计程序,定时器中断子程序,数码管显示程序,按键控制程序。
4、2、2、1选手抢答按键程序设计
voidkey()
{
if(K1==0)//裁判按下抢答按钮
{
delay(5);//延时防止按键抖动
if(K1==0)//判断裁判就是否真得按下抢答按钮
{
while(!
K1);//确保在k1按下时其她按键无法按下,防止误操作
cp++;//循坏结束后级k1松开后,cp增加一次
}
}
if(cp!
=0)
{
if(K2==0)//k2选手抢到了
{
delay(5);
if(K2==0)
{
while(!
K2);//在k2按下时不能进行其她按键操作
anjian1=1;//anjian1为抢答成功选手代码
L1=0;//k2选手得LED灯亮
LL=1;
TRO=1;//打开定时器0
while(K6&K7&K8);//允许适应加减法与清零操作按钮
}
}
4、2、2、2按键加减法记分器程序设计
if(anjian1==1)//选手1回答完毕
{
if(K6==0)//如果正确按下加分按钮
{
delay(5);//延时防止按键误操作
if(K6==0)//检测减法按键就是否被按下
{
while(!
K6);//按下后禁止其她按钮按下
aa++;//分数每次加一
if(aa==10)//如果加法加了10次
{aa=0;}//数值重置为0
}
}
if(K7==0)//如果按下了减法按键
{
delay(5);//延迟
if(K7==0)//检测减法就是否真得按下
{
while(!
K7);//减法按下后禁止按下其她按键
aa--;//分数每次减一
if(aa==-1)//如果分数减到-1
aa=9;//分数重置为9
}
}
}
4、2、2、3延时程序设计
voiddelay(uintz)
{
uintx,y;//定义变量x,y
for(x=z;x>0;x--)//如果x>0,x递减
for(y=110;y>0;y--);//如果y>0,y递减
}
4、2、2、4清零程序设计
else
anjian1=0;//如果没有人按下则anjian1为0
if(K8==0)//如果按下清零建k8
{
delay(5);//延时
if(K8==0)//检测k8就是否按下
{
cp=0;
anjian1=0;//令anjian1为
L1=L2=L3=L4=1;//一二三四号选手得等全灭
TR0=0;//关闭定时器0
LL=0;//设定LL为0
LED=1;//报警LED灯亮
}
4、2、2、5数码管程序设计
voidSMG_Display()
{
P0=0xff;//自动检测数码管
W1=1;//1号选手记分板亮
W2=0;//2号选手记分板不亮
W3=0;
W4=0;
delay
(1);//延迟
P0=temp[aa];//调用temp函数组,指示数码管得数码显示
delay
(2);//延时
4、2、2、6定时器程序设计
voidInit_interrupt()
{
TMOD=0x11;//定义定时器1与定时器0得功能与工作方式
TH0=(65536-50000)/256;//定义定时器0得时间范围
TL0=(65536-50000)%256;//定义定时器0得时间范围
TH1=(65536-50000)/256;//定义定时器1得时间范围
TL1=(65536-50000)%256;//定义定时器1得时间范围
EA=1;//允许CPU中断
ET0=1;//允许定时器0中断
TR0=1;//打开定时器0
ET1=1;//允许定时器1中断
TR1=1;//打开定时器1
}
总结
通过这次得课程设计作品得制作让我对单片机得理论有了更加深入得了解,同时在具体得制作过程中我们发现现在书本上得知识与实际得应用存在着不小得差距,书本上得知识很多都就是理想化后得结论,忽略了很多实际得因素,或者涉及得不全面,可在实际得应用时这些就是不能被忽略得,我们不得不考虑这方得问题,这让我们无法根据书上得理论就轻易得到预想中得结果,有时结果甚至很差别很大。
通过这次实践使我更深刻得体会到了理论联系实际得重要性,我们在今后得学习工作中会更加得注重实际,避免称为只会纸上谈兵得赵括。
课程设计贡献排序:
这次课程设计从最初得规划到后来得理论设计到最后得具体制作都就是我们两共同完成得,实在无法区分贡献排序。
各取50%吧。
课程改革建议:
我们强烈建议将这门课程得理论学习与实验部分合并成一门,以避免想我们这种情况得再次发生。
此次得设计其实也就是我们所学知识得一次综合应用,让我深深得认识到了学习单片机得作用,它我们专业中有着极大得作用,成品得电路也方便简单易于更改,但它得使用要求我们与之前得C语言得学习相结合起来,综合运用,学号对知识得灵活运用。
参考文献
[1]童诗白、华成英,模拟电子技术基础(第四版)[M]、北京:
高等教育出版社,2006、
[2]阎石,数字电子技术基础(第五版)[M]、北京:
高等教育出版社,2006、
[3]古良玲,电路仿真与电路板设计项目化教程(基于Multisim与Protel)[M]、北京:
机械工业出版社,2014、
[4]霍德福,实用数字电路手册-(TTLCMOS)[M],北京:
中国标准出版社,2013、
附录
附录一、原理电路图
附录二、PCB电路图
附录三、C语言程序清单
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitW1=P1^0;
sbitW2=P1^1;
sbitW3=P1^2;
sbitW4=P1^3;
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitK4=P2^3;
sbitK5=P2^4;
sbitK6=P2^5;
sbitK7=P2^6;
sbitK8=P2^7;
sbitL1=P1^4;
sbitL2=P1^5;
sbitL3=P1^6;
sbitL4=P1^7;
sbitLED=P3^0;
uchartemp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchartable[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharzdnum=0,zdnum1=0,zdnum2=0,zdnum3=0;
ucharaa=0;bb=0;cc=0;dd=0,cp=0;
ucharanjian1=0;
ucharLL=0;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidkey()
{
if(K1==0)
{
delay(5);
if(K1==0)
{
while(!
K1);
cp++;
}
}
if(cp!
=0)
{
if(K2==0)
{
delay(5);
if(K2==0)
{
while(!
K2);
anjian1=1;
L1=0;
LL=1;
TR0=1;
while(K6&K7&K8);
}
}
if(K3==0)
{
delay(5);
if(K3==0)
{
while(!
K3);
anjian1=2;
L2=0;
TR0=1;
LL=1;
while(K6&K7&K8);
}
}
if(K4==0)
{
delay(5);
if(K4==0)
{
while(!
K4);
anjian1=3;
L3=0;
TR0=1;
LL=1;
while(K6&K7&K8);
}
}
if(K5==0)
{
delay(5);
if(K5==0)
{
while(!
K5);
anjian1=4;
L4=0;
TR0=1;
LL=1;
while(K6&K7&K8);
}
}
}
if(anjian1==1)
{
if(K6==0)
{
delay(5);
if(K6==0)
{
while(!
K6);
aa++;
if(aa==10)
{aa=0;}
}
}
if(K7==0)
{
delay(5);
if(K7==0)
{
while(!
K7);
aa--;
if(aa==-1)
aa=9;
}
}
}
elseif(anjian1==2)
{
if(K6==0)
{
delay(5);
if(K6==0)
{
while(!
K6);
bb++;
if(bb==10)
{bb=0;}
}
}
if(K7==0)
{
delay(5);
if(K7==0)
{
while(!
K7);
bb--;
if(bb==-1)
bb=9;
}
}
}
elseif(anjian1==3)
{
if(K6==0)
{
delay(5);
if(K6==0)
{
while(!
K6);
cc++;
if(cc==10)
{cc=0;}
}
}
if(K7==0)
{
delay(5);
if(K7==0)
{
while(!
K7);
cc--;
if(cc==-1)
cc=9;
}
}
}
elseif(anjian1==4)
{
if(K6==0)
{
delay(5);
if(K6==0)
{
while(!
K6);
dd++;
if(dd==10)
{dd=0;}
}
}
if(K7==0)
{
delay(5);
if(K7==0)
{
while(!
K7);
dd--;
if(dd==-1)
dd=9;
}
}
}
else
anjian1=0;
if(K8==0)
{
delay(5);
if(K8==0)
{
cp=0;
anjian1=0;
L1=L2=L3=L4=1;
TR0=0;
LL=0;
LED=1;
}
}
}
voidSMG_Display()
{
P0=0xff;
W1=1;
W2=0;
W3=0;
W4=0;
delay
(1);
P0=