基于单片机的八路抢答器的设计毕业设计.docx
- 文档编号:6875527
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:27
- 大小:803.05KB
基于单片机的八路抢答器的设计毕业设计.docx
《基于单片机的八路抢答器的设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的八路抢答器的设计毕业设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机的八路抢答器的设计毕业设计
毕业综合训练
课题名称基于单片机的八路抢答器的设计
学院信息工程学院
毕业综合训练任务书
学院信息工程学院专业机电一体化年级2011级
题目基于单片机的八路抢答器的设计
1.毕业综合训练任务及要求(根据题目性质对学生提出具体要求)
抢答器能容纳8名选手,并且给出相应的编号为1、2、3、4、5、6、7、8,为每名选手设置一个按键;设置一个给工作人员清零的开关,以便能开始新的一轮的抢答;用LED数码管显示获得优先抢答的选手的编号,一直保持到工作人员清零或1分钟倒记时答题时间结束为止;用LED数码管显示有效抢答后的1分钟到记时答题时间;用喇叭发声指示有效抢答及答题时间的结束;秒信号不必考虑时间精度,可利用试验仪上所提供的连续脉冲(方波)。
2.毕业综合训练的原始资料及依据(包括做调研的背景,研究条件、应用环境等)
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。
现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。
本课题利用STC89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和选手号码。
用开关做键盘输出,扬声器发生提示。
3.主要参考资料、文献
[1]C程序设计,谭浩强,清华大学出版社,2005
[2]单片机原理及接口技术(第3版),李朝青,北京航空航天大学出版社,2002
[3]单片机系统设计与实例指导,冯育长,西安电子科技大学出版社,2007
[4]单片机课程设计实例指导,李光飞,北京航天航空大学出版社,2004
[5]单片微型计算机原理及应用(第二版),鲍小南,浙江大学出版社,2012
[6]单片机高级教程(第一版),何立民,北京航空航天大学出版社,2001
[7]基于C语言C8051F系列微控制器原理及应用,张培仁,清华大学出版社,2009
指导教师
2013年11月1日
指导教师评语
建议成绩:
优良中及格不及格
指导教师签字
年月日
最终评定成绩:
优良中及格不及格
院长签章
年月日
目录
一、绪论4
(一)数字抢答器的概述4
(二)设计要求及目的4
二、硬件电路设计4
(一)总体原理图5
(二)时钟频率电路的设计5
(三)复位电路的设计6
(四)显示电路的设计6
(五)键盘扫描电路的设计7
(六)发声8
(七)系统复位8
三、系统软件设计9
(一)系统原理图9
(二)程序流程图9
(三)程序10
四、焊接调试过程与问题分析15
(一)焊接15
1、检测各元件15
2、对PCB板进行排版及连线16
3、焊接的问题及解决16
4、焊接的技巧和注意事项17
(二)调试17
1、系统的调试17
2、具体调试18
3、调试实物图18
五、总结19
参考文献20
一、绪论
(一)数字抢答器的概述
单片机把我们带入了智能化的电子领域,许多繁琐的系统若由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。
若把经典的电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。
而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。
本设计就是基于单片机设计抢答系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。
单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
(二)设计要求及目的
1、设计一个可供8人进行的抢答器。
2、系统设置复位按钮,按动后,重新开始抢答。
3、抢答器开始时数码管显示序号0,选手抢答实行优先显示,优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答后显示优先抢答者序号,同时发出音响。
,并且不出现其他抢答者的序号。
4、抢答器具有定时抢答功能,且一次抢答的时间有主持人设定,本抢答器的时间设定为60秒,当主持人启动“开始”开关后,定时器开始减计时,同时蜂鸣器有短暂的声响。
5、设定的抢答时间内,选手可以抢答,这时定时器停止工作,显示器上显示选手的号码和抢答时间。
并保持到主持人按复位键。
6、当设定的时间到,而无人抢答时,本次抢答无效,扬声器报警发出声音,并禁止抢答。
定时器上显示00。
二、硬件电路设计
为使硬件电路设计尽可能合理,应注意以下几方面:
1、尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若干普通芯片,随着生产工艺的提高,新型芯片的的价格不断下降,并不一定比若干普通芯片价格的总和高。
2、留有设计余地。
在设计硬件电路时,要考虑到将来修改扩展的方便。
因为很少有一锤定音的电路设计,如果现在不留余地,将来可能要为一点小小的修改或扩展而被迫进行全面返工。
3、程序空间,选用片内程序空间足够大的单片机,本设计采用AT89C51单片机。
4、I/O端口,在样机研制出来后进行现场试用时,往往会发现一些被忽视的问题,而这些问题不是靠单纯的软件措施来解决的。
如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。
如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用的时候就派上用场了。
(一)总体原理图
图1
(二)时钟频率电路的设计
单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
图2外部振荡源电路
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,常用fosc表示。
如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。
(三)复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图3所示:
图3复位电路
值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到了倒计时时间的记忆功能,该功能的实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。
软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
(四)显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
图4
(五)键盘扫描电路的设计
键盘是人与微机系统打交道的主要设备。
关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。
站在系统监控软件设计的立场上来看,仅仅完成键盘扫描,读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象。
在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘。
图5独立键盘
它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。
其次就是消除在按键过程中产生的“毛刺”
现象。
这里采用最常用的方法,即延时重复扫描法,延时法的原理为:
因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
(六)发声
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
图6
(七)系统复位
使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。
从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。
硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。
上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。
硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。
但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视。
软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行。
对各专用寄存器的复位操作是容易的,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成。
而对中断激活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。
有的编程人员用020000(LJMP0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,就是这类错误的典型代表。
软件复位是使用软件陷阱和软件看门狗后必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应。
由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志的重要性。
三、系统软件设计
软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。
(一)系统原理图
图7
(二)程序流程图
在本设计中包括了以下八个主要的程序:
主程序,非法抢答序,抢答时间调整程序,回答时间调整程序,倒计时程序,正常抢答处理程序,犯规处理程序,显示及发声程序。
主流程图如图8、图9、图10所示:
图8
图9
(三)程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitrst=P3^7;
sbitspeaker=P3^6;//报警
sbitstart=P3^4;
ucharcount=0;//用于产生1秒的时间
uchardsy_time=0x3c;//用于显示抢答时间
uchardsy_buffer[]={0,0,0};//显示缓冲
ucharcodeleddata[]=//共阴数码管的段码
{
0x3F,//"0"
0x06,//"1"
0x5B,//"2"
0x4F,//"3"
0x66,//"4"
0x6D,//"5"
0x7D,//"6"
0x07,//"7"
0x7F,//"8"
0x6F,//"9"
};
ucharcodestate[]=//抢答时的8种按键情况
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//
//延时
//
voidDelayMS(uintms)
{
uchart;
while(ms--)
for(t=0;t<120;t++);
}
//
//报警
//
voidspeak(void)
{
uchari=10;
while(i--)
{
speaker=~speaker;
DelayMS
(2);
}}
//
//主程序
//
voidmain()
{//初始化
uchari,m=0x04;
P0=0xff;
P1=0x00;
P2=0x00;
P3=0xb7;
TMOD=0x01;//选择工作方式
TH0=0x3c;//定时器T0初始值的高八位
TL0=0xaf;//定时器T0初始值的低八位
IE=0x83;//开总中断,定时器中断,外部中断0
while
(1)
{
if(rst==0)//系统复位
{
dsy_buffer[0]=0;
TR0=0;
dsy_time=0x3c;
}
if(dsy_time==0x00)//在设定的时间到,而无人抢答时关闭定时器中断
{
TR0=0;//关闭定时器中断
P1=0x00;//禁止抢答
}
for(i=0;i<3;i++)//用数码管显示抢答序号和抢答时间
{
P2=m;
m=_cror_(m,1);//循环移位实现数码管的动态显示
dsy_buffer[2]=dsy_time%10;//抢答时间的个位
dsy_buffer[1]=dsy_time/10;//抢答时间的十位
P0=leddata[dsy_buffer[i]];//数码管显示抢答者的序号和抢答时间
DelayMS(5);
}
m=0x04;//实现下轮的循环显示
for(i=0;i<8;i++)
{
if(P1==state[i])//判断有按键按下
{
DelayMS(10);//延时防止按键抖动引起的误操作
if(P1<=state[i])//再次判断有按键按下
{
dsy_buffer[0]=i+1;
P1=0x00;//通过硬件实现优先抢答
TR0=0;//关闭定时器0
speak();
}
}
}
}
}
//
//实现定时时间1s
//
voidkey_inter()interrupt1
{
TH0=0x3c;//50MS初始值
TL0=0xaf;//50MS初始值
if(++count==20)
{
count=0;
dsy_time--;//实现计数器的减法计数
}
}
//
//抢答开始
//
voidstart_inter()interrupt0
{
P1=0xff;
TR0=1;//定时器0开始计数
speak();
}
图10
四、焊接调试过程与问题分析
(一)焊接
1、检测各元件
用万用表检查、了解元件。
(1)一般电阻
电阻的阻值是可以根据电阻上的色环判断:
四环电阻阻值等于前两位对应的数值乘上第三位对应的倍率,第四位为误差范围;五环电阻阻值等于前三位对应的数值乘上第四位对应的倍率,第五位为误差范围。
图11电阻R0为五环型
色环颜色:
棕黑黑棕棕
阻值=100×10²=1000Ω
误差为±1%
实测阻值为992Ω图11电阻R0
本实验R1用两个R0的电阻并联成
图12电阻R2为四环型
色环颜色:
绿棕红金
阻值=51×10²=5100Ω=5.1kΩ
误差为±5%
实测阻值为5.02kΩ图12电阻R2
(2)光敏电阻
A、在光照情况下,测量光敏电阻的阻值,即为光敏电阻的亮阻;
B、在遮光情况下,测量光敏电阻的阻值,即为光敏电阻的暗阻;
(3)发光二极管
发光二极管有两个接线柱,一个长的一个短的,长端为正极,短端为负极。
可以利用万用表测量两种接法时的电阻值,可知道当正极接到长端,负极接到短端的时候,发光二极管的阻值比较小,此即是二极管的单向导通特性。
(4)可变电阻
可变电阻有三个引脚,它的接法和滑动变阻器的接法一样,有三端接入式和两端接入式,本实验采用两端接入式比较简单。
采用两端接入时,其中一端必须接在中间的那个引脚上,另外一个在剩余的两个引脚中,可以任选一个(两者的区别是,滑动头的转动方向不一样)。
选择好引脚后,可以将其接在万用表上,测其阻值的大小,转动滑动头,看顺时针转动时阻值是增加还是减小,这样做对调试电路时有好处,可以知道自己旋转的方向是增加电阻还是减小电阻。
(5)蜂鸣器
本实验所用的蜂鸣器和平时看到的扬声器、耳机等发声器件有微小的差别,它里边多了一个振荡器,输入电流时振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
可以尝试的将其正负极接上电源,可看到只有正负极接入正确时,蜂鸣器才会发声。
也可根据蜂鸣器上的引线长度按来判断正负极(长正短负)。
所以在实验室中要把蜂鸣器的正负极接正确。
(6)三极管
三极管有两种,一种是PNP管,一种是NPN管,本实验用的是PNP管。
三极管有三个引脚,分别是基极(b),发射极(e),集电极(c)。
本实验所用的三极管判断极点的方法是,面对有型号标记的一面,然后看着三个引脚,从左到右依次是,发射极(e),基极(b),集电极(c)。
接线时三个极端不能接错,否则三极管就没有起到作用。
图13三极管符号、管脚排列
集电极和基极之间形成集电结,发射极和基极之间形成发射结,三极管起放大作用的条件,发射结正向偏置,集电结反向偏置。
正向偏置时必须达到正向偏置电压,即为导通,否则,为截止状态。
2、对PCB板进行排版及连线
本实验所用的面包板的内部链接在破坏背面的绝缘胶带的情况下,可以揭开胶带看其内部线路的构造,以防不知道内部线路差错电路。
当然最好的办法是用测试电路在插孔上来回实验,猜想验证其内部构造。
(1)首先了解面包板在连线和焊接的注意事项。
(2)了解实验原件及器材后,按照原理图在面包板上连接电路;
(3)焊接要注意,电子电路在焊接时,应遵循的规则。
3、焊接的问题及解决
一般来说,造成硬件问题的首要问题就是焊接了,也就是说焊接的好与坏直接响产品的正常运行。
造成焊接质量不高的常见原因是:
(1)焊锡用量过多,形成焊点的锡堆积;焊锡过少,不足以包裹焊点。
(2)冷焊。
焊接时烙铁温度过低或加热时间不足,焊锡未完全熔化、浸润、焊锡表面不光亮(不光滑),有细小裂纹(如同豆腐渣一样)。
(3)夹松香焊接,焊锡与元器件或印刷板之间夹杂着一层松香,造成电连接不良。
若夹杂加热不足的松香,则焊点下有一层黄褐色松香膜;若加热温度太高,则焊点下有一层碳化松香的黑色膜。
对于有加热不足的松香膜的情况,可以用烙铁进行补焊。
对于已形成黑膜的,则要"吃"净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。
(4)焊锡连桥。
指焊锡量过多,造成元器件的焊点之间短路。
这在对超小元器件及细小印刷电路板进行焊接时要尤为注意。
(5)焊剂过量,焊点明围松香残渣很多。
当少量松香残留时,可以用电烙铁再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。
(6)焊点表面的焊锡形成尖锐的突尖。
这多是由于加热温度不足或焊剂过少,以及烙铁离开焊点时角度不当浩成的内。
最小系统的电路不工作,首先应该确认电源电压是否正常。
用电压表测量接地引脚跟电源引脚之间的电压,看是否符合电源电压,常用的是5V左右。
接下来就是检测复位引脚的电压是否正常,EA引脚的电压要正常为5V左右。
4、焊接的技巧和注意事项
(1)焊锡之前应该先插上电烙铁的插头,给电烙铁加热。
(2)焊接时,焊锡与电路板、电烙铁与电路板的夹角最好成45度,这样焊锡与电烙铁夹角成90度。
(3)焊接时,焊锡与电烙铁接触时间不要太长,以免焊锡过多或是造成漏锡;也不要过短,以免造成虚焊。
(4)元件的腿尽量要直,而且不要伸出太长,以1毫米为好,多余的可以剪掉。
(5)焊完时,焊锡最好呈圆滑的圆锥状,而且还要有金属光泽。
(二)调试
1、系统的调试
系统调试包括硬件调试和软件调试,而且两者是密不可分的。
我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。
硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。
这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
软件调试一般包括分块调试和联机调试两个阶段。
程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。
这时该程序功能块已调试完毕,可去掉附加程序段。
其它程序功能块可按此法进行调试。
程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。
从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。
在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。
在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。
系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。
2、具体调试
(1)具有清零装置和抢答控制,可由主持人操纵避免有人在主持人说“开始”前提前抢答违反规则。
(2)具有定时功能,在60秒内无人抢答表示所有参赛选手获参赛队对本题弃权。
(3)60秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。
(4)显示抢答时间,按一下减一秒,按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s~60s。
(5)主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设60s抢答时间),如有选手抢答,会有提示音,并会显示其号数,只有第一个按抢答的选手有效。
(6)如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。
我遇到的问题:
有时候在自己创建的元器件的管脚上无法实现连线。
分析回答:
应该是管脚的间距太小了。
因为在ISIS中,每个元器件的管脚都要占据一块区域(就像自己的保护区一样,不容别人随意侵犯),该区域会排斥
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 八路 抢答 设计 毕业设计