抢答器报告.docx
《抢答器报告.docx》由会员分享,可在线阅读,更多相关《抢答器报告.docx(16页珍藏版)》请在冰豆网上搜索。
抢答器报告
课程设计报告
设计题目:
八路抢答器
1.引言...........................................2
2.设计任务及要求..................................................................3
2.1设计任务.........................................3
2.2设计要求.........................................3
3.系统总体设计......................................................................3
3.1方案论证.........................................3
3.2系统构造框图设计及说明...........................3
4.软、硬件设计.......................................................................4
4.1系统硬件设计....................................4
4.2系统软件设计....................................4
5.安装与调试...........................................................................6
5.1安装调试过程......................................6
5.2调试与故障分析....................................6
6.结论、收获、体会................................................................7
7.参考文献................................................................................8
8.附录............................................9
引言
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
本设计是以八路抢答器为根本理念。
考虑到依需设定时间来作为抢答的依据,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件结合起来,使得系统能够正确地进展计时,同时使数码管能够正确地显示时间。
用按钮开关来控制抢答开场和复位和选手的抢答。
同时系统能够实现:
在抢答中,只有抢答开场后抢答才有效,如果在开场抢答前抢答为无效;抢答限定时间课设可在1-99s设定;可以显示是哪位选手有效抢答,先对应的选手号的指示灯也会跟着亮起来,抢答时间以倒计时的方式显示,其中有有人抢答时,并抢答成功时,那么其他的选手再抢答就会无效;假设时间倒计时到00s时都没任何人抢答,那么此时不管哪位选手再抢答都会无效;此时只有通过复位开关复位,这样才能进展下一轮的抢答。
同时也可以重新设定强大时间。
这次的课程设计主要是要对单片机的使用,以及结合一些芯片的使用,也就是对单片机这门课的稳固和应用,通过这次实践来帮助我们更好的掌握这门课。
2.设计任务与要求
2.1任务:
基于单片机设计一个八路抢答器
2.2要求:
〔1〕设计出硬件电路;
〔2〕设计出软件编程方法,并写出源代码;
〔3〕用protues进展仿真;
〔4〕报告格式按照规定完成,构造要符合逻辑。
3.系统总体设计
3.1方案论证:
该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比拟成熟,应用起来方便、简单并且单片机周围的辅助电路也比拟少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进展功能的扩X和更改。
MCS-51单片机特点如下:
〔1〕可靠性好:
单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩大。
〔2〕控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
3.2系统构造框图〔图1-1〕设计及说明:
图1-1
4.1系统硬件设计.
如图1-2所示为硬件电路。
其工作原理为:
接通电源后,主持人按下“复位〞开关,抢答器处于制止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开场〞状态,宣布“开场〞抢答器工作。
定时器倒计时。
选手在定时时间内抢答时,抢答器完成:
优先判断、编号锁存、编号显示。
当一轮抢答之后,定时器停顿、制止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作"开场、复位"状态开关。
图1-2
4.2系统软件设计
为了能够到达抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开场抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P2.2按键,程序开场翻开定时中断开场倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。
当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。
主程序流程图:
图1-3
5.1安装与调试
制作PCB电路板流程:
打印PCB——裁剪覆铜板——预处理覆铜板〔打磨〕——转印PCB——腐蚀电路板——电路板钻孔——电路板预处理〔打磨、清洗、涂松香〕——焊接电子元件。
表1器件选型方案的详细清单
器件名称
规格型号
数量
主要芯片
AT89C51
1
极性电容
0.1uF
1
电阻
10k排阻
2
电容
30PF
2
晶振
12MHZ
1
按钮
12
共阴4位7段数码管
SMGSM410561K
1
5.2调试与故障分析:
(1)开机:
按电源开关,显示屏左边的"复位"指示灯亮,数码管显示0-00。
(2)设定"抢答"倒计时时间
(3)设定"答题"倒计时时间
(4)测试各组抢答按键
在调试的过程中发现有人按下的时候会不稳定,后来发现是有些是没去抖动的原因,后来就修改了。
(5)启动抢答倒计时,开场抢答
"0-00"状态下,当主持人宣布抢答开场时,马上按一下"抢答"键,屏幕显示所设定的抢答倒计时时间并开场倒计时。
倒计时到0以后,同时显示屏返回"0-00"待命状态。
在"抢答"倒计时中,如果有参赛组抢答,仪器屏幕立即显示该组的组别号。
需要返回"0-00"待命状态,按"复位"键即可。
。
(7)提前复位倒计时
"抢答"的倒计时时间,需要提前退出,只要按一下"复位"键,即可返回到"0-00"待命状态。
(8)在程序完成的时候开场在验证程序的时候发现倒计时时间到还能继续抢答,后面经过调程序,发现导致这个原因是因为在倒计时时间到的时候没有把允许抢答标志位关了,经过修改就解决了这个问题。
6.结论、收获、体会
通过调试,结果完全符合抢答器设计要求。
这次课程设计教师给我们安排了一个比拟长的时间,可以说是比拟充裕的。
虽然如此,我还是很用心的做设计,利用了这段时间时间在宿舍思考本次的课程设计,一开场不知怎么下手,虽然这些知识以前都有接触过,但也只是分局部来接触,而这次的设计是要对前面几次实验的一个综合。
也翻阅了一些资料,并自己事先编写好了程序,在实验课上把自己写的程序烧进去芯片里面,发现不行,那些数字闪动得非常厉害,自己检查了好久好久,但还是发现不了问题,之后问了同学,才知是我把段码搞错了,我用的是共阴位选,但数据表的段码我却用了共阳的段码,所以不能在数码管上正常显示。
通过运用单片机设计八路抢答器课程设计,发现自己的很多缺乏,自己知识的很多漏洞,看到了自己的实践经历还是比拟缺乏,理论联系实际的能力还急需提高。
在这个过程中,我也曾经因为实践经历的缺乏失落过,也曾经仿真成功而热情高涨。
对软件的使用比拟不熟悉,在这段时间加强了学习,对自己选用的芯片原理进展仿真画图,一开场对芯片的功能不太明白,有些东西都看不太明白,都是通过自己一个个来慢慢琢磨,把仿真图画了出来,然后把写好的程序导入芯片,进展仿真,当看到程序正常运行的那一刻,心中真是有几分的喜悦。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
虽然这只是一次的较简单的课程制作〔八路抢答器〕,可是平心而论,也消耗了我不少的心血。
通过这次课程设计,我想说:
为完成这次课程设计我们确实花时间了,和同学们相互帮助,大学里几年的相处还赶不上这几天来的实践,我感觉我和同学们之间的距离更加近了。
软硬件都成功时我们的心中就不免兴奋,不免冲动。
以前种种艰辛这时就变成了最甜美的回忆!
这次学习给我留下了深刻的印象,使我受益匪浅。
而且对于论文的总体构思也有了很多经历,相信自己经过这一次的训练与学习,对于今后会更加努力,做得最好。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
7.参考文献
(1)彭伟,?
c语言程序设计100例?
电子工业
(2)邵晓根,?
微机原理与接口技术?
,中国电力
(3)冯博琴,?
微型计算机原理及接口技术?
,清华大学
(4)艾德才,?
微型计算机原理与接口技术?
,高等教育
(5)沈美明,?
IBM-PC汇编语言程序设计?
,清华大学
(6)薛栋梁,?
单片机原理及应用?
,中国水利水电,2001
(7)谢筑森,X辉等,?
单片机开发与典型应用设计?
,中国科学技术大学,
8.附录
1.主程序:
#include
sbitkai=P2^2;
sbitting=P2^3;
sbithao1=P1^0;
sbithao2=P1^1;
sbithao3=P1^2;
sbithao4=P1^3;
sbithao5=P1^4;
sbithao6=P1^5;
sbithao7=P1^6;
sbithao8=P1^7;
sbitLE1=P2^1;
sbitLE2=P2^0;
sbitP2_6=P2^6;
sbitP2_7=P2^7;
sbitkey1=P2^4;
sbitkey2=P2^5;
sbitK1=P2^5;
sbitK2=P2^4;
unsignedcharcodeTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
charhao,a,num,shi,ge,aa=10,qiangda,c,d;
voidxianshi();
voiddelay(intx);
voidkey_ts();
voidkeyscan();
voidxuanshou();
main()
{
TMOD=0X01;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
P2_6=0;
while
(1)
{
key_ts();
keyscan();
if(qiangda==1)
{
xuanshou();
}
xianshi();
}
}
voidkeyscan()//启动/复位
{
if(kai==0)
{
delay(5);
if(kai==0)
{
while(!
kai);
{
TR0=1;//开中断
qiangda=1;
xuanshou();
P2_7=0;
P2_6=1;
P3=0xff;
}
}
}
if(ting==0)
{
delay(5);
if(ting==0)
{
while(!
ting)
{
num=c;
hao=0;
TR0=0;
qiangda=0;
P2_6=0;
P2_7=1;
P3=0xff;
}
}
}
}
voidxuanshou()//选手号函数
{
if(hao==0&&hao1==0)
{delay(5);
if(hao1==0)
{while(hao1==0)
{P2_6=1;
P2_7=1;
hao=1;
TR0=0;
P3=0xfe;
}
}
}
if(hao==0&&hao2==0)
{delay(5);
if(hao2==0)
{while(hao2==0)
{P2_6=1;
P2_7=1;
hao=2;
TR0=0;
P3=0xfd;
}
}
}
if(hao==0&&hao3==0)
{delay(5);
if(hao3==0)
{while(hao3==0)
{P2_6=1;
P2_7=1;
hao=3;
TR0=0;
P3=0xfb;
}
}
}
if(hao==0&&hao4==0)
{delay(5);
if(hao4==0)
{while(hao4==0)
{P2_6=1;
P2_7=1;
hao=4;
TR0=0;
P3=0xf7;
}
}
}
if(hao==0&&hao5==0)
{delay(5);
if(hao5==0)
{while(hao5==0)
{P2_6=1;
P2_7=1;
hao=5;
TR0=0;
P3=0xef;
}
}
}
if(hao==0&&hao6==0)
{delay(5);
if(hao6==0)
{while(hao6==0)
{P2_6=1;
P2_7=1;
hao=6;
TR0=0;
P3=0xdf;
}
}
}
if(hao==0&&hao7==0)
{delay(5);
if(hao7==0)
{while(hao7==0)
{P2_6=1;
P2_7=1;
hao=7;
TR0=0;
P3=0xbf;
}
}
}
if(hao==0&&hao8==0)
{delay(5);
if(hao8==0)
{while(hao8==0)
{P2_6=1;
P2_7=1;
hao=8;
TR0=0;
P3=0x7f;
}
}
}
}
voidtimer0(void)interrupt1//定时器中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)
{
a=0;
num--;
if(num<=0)
{
num=0;
TR0=0;
qiangda=0;
}
}
}
voidxianshi()//显示函数开场
{
shi=num/10;
ge=num%10;
P0=0xff;
LE1=1;
P0=0xfe;
LE1=0;
P0=0;
LE2=1;
P0=TAB[hao];
LE2=0;
delay(5);
P0=0xff;
LE1=1;
P0=0xfd;
LE1=0;
P0=0;
LE2=1;
P0=TAB[aa];
LE2=0;
delay(5);
P0=0xff;
LE1=1;
P0=0xfb;
LE1=0;
P0=0;
LE2=1;
P0=TAB[shi];
LE2=0;
delay(5);
P0=0xff;
LE1=1;
P0=0xf7;
LE1=0;
P0=0;
LE2=1;
P0=TAB[ge];
LE2=0;
delay(5);
}
voiddelay(intx)//延时函数开场
{
inti,j;
for(i=0;ifor(j=0;j<120;j++);
}
voidkey_ts()//调时子程序
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while
(1)
{
if(kai==0)
{
while(kai==0);
num++;
}
if(ting==0)
{
while(ting==0);
num--;
}
if(key2==0)
break;
c=num;
xianshi();
}
}
}
}
2.protel电路原理图和PCB电路图:
电路原理图
PCB电路图