大学毕设论文八路抢答器课程设计说明书.docx
- 文档编号:27627154
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:34
- 大小:3.35MB
大学毕设论文八路抢答器课程设计说明书.docx
《大学毕设论文八路抢答器课程设计说明书.docx》由会员分享,可在线阅读,更多相关《大学毕设论文八路抢答器课程设计说明书.docx(34页珍藏版)》请在冰豆网上搜索。
大学毕设论文八路抢答器课程设计说明书
单片机课程设计
题目:
八路抢答器
院别:
机电学院
专业:
机电工程
摘要
本课程设计主要由硬件部分和软件部分组成。
硬件部分中,STC89C52是核心,时钟电路、复位电路、显示电路以及电源电路等为辅助部分;软件部分是用汇编语言编程,用Keil软件来编译、调试的。
本设计是以八路抢答为基本理念。
将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,蜂鸣器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,抢答限定时间为30s和回答问题的时间为10s;可以显示是哪位选手有效抢答;抢答时间和回答问题时间倒记时显示,倒计时时间到蜂鸣器将响起提醒主持人;按键锁定,在有效状态下,按键无效非法。
关键词
单片机;数码管;抢答器;八路抢答器
前言
目前,抢答器已经作为一种必不可少的工具广泛应用于各种智力和知识竞赛场合,但一般的抢答器可靠性低,使用寿命短,介于这些不方便因素,此次设计提出了用STC89C52单片机为核心控制元件,设计一个简易的八路抢答器。
本次设计的系统实用性强、判断精确、操作简单。
在学习了《数字电子技术》和《单片机原理及应用》这两门课程之后,该课程设计加深对理论知识的理解,学习理论知识在实际中的应用,培养动手能力和解决问题的能力。
熟悉Keil及Ptoteus软件的调试和仿真。
通过实践提高对数字电路、单片机的认识。
启发我们的思维,锻炼团结互助的精神。
一、系统的主要功能、作用以及主要技术性能指标
1.1系统主要功能
1.1.1抢答功能
当主持人按下开始抢答按键后,八路按键中任一路按键首先按下都将闭锁其他各路按键,抢答成功,通过单片机程序处理后在数码管上显示抢答者的分组号。
1.1.2限时抢答
设定抢答时间30s(可调整),当主持人按下抢答按键后,30s内抢答有效,抢答时间已过,报警并封锁各路按键,抢答无效。
1.1.3限时答题
设定答题时间10s(可调整),当抢答者按下答题按键后开始倒计时,数码管显示剩余时间,剩余时间为0则发出报警信号。
1.1.4显示功能
在数码管上可显示抢答时间倒计时、答题倒计时及抢答成功者的分组号。
1.2作用
抢答器是一个机关学校开展智力竞赛活动必不可少的设备,其广泛应用于学校、教育部门、企业事业工会组织、俱乐部等单位组织举办各种知识、技术竞赛及文娱活动时作抢答工具使用。
1.3主要技术性能指标
(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。
(3)抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始答题"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间1秒。
(5)参赛选手在设定的时间内进行抢答,抢答有效,显示器上显示选手的编号和答题的时间,并保持到主持人将系统清除为止。
二、总体设计
2.1系统整体方案设计
该抢答器以STC89C52单片机为控制核心,其他外围电路包括复位电路、时钟电路、报警电路、LED显示电路、抢答按键等。
利用C语言编程,使其实现复位、定时和报警的功能。
通过按键扫描输出按键信息,并通过单片机将它转化为在七段数码上显示的字符型。
单片机的P1口为8组抢答按键的输入口,P0.0~P0.7为双位数码管的段选口,P2.0~P2.7为一位数码管的段选口,P3.0~P3.1为双位数码管的位选口,P3.2为一位数码管的位选口。
P3.7和P3.4分别实现时间调整的加1和减1功能;P3.6为报警电路的控制口。
2.2工作原理
接通电源后,主持人将系统复位"清零",抢答器处于禁止状态,编号显示为零,定时器显示设定时间“30”秒;主持人按下“开始"按钮,宣布"开始",抢答器开始工作。
双位数码管“30”秒开始倒计时,扬声器给出声响提示。
选手在定时时间内抢答时,抢答器完成:
优先判断、编号锁存、编号显示、扬声器提示。
当一轮抢答之后,单位数码管显示抢答选手编号,双位数码管显示回答时间“10”秒,并禁止二次抢答。
主持人按下回答倒计时“开始”,双位数码管开始“10”秒倒计时,倒计时时间到,蜂鸣器发出报警信号,主持人停止选手答题并按下“复位”按键停止系统工作。
如果再次抢答必须由主持人再次操作“开始”状态开关。
2.3组成原理框图
图2.3.1组成原理框图
三、系统设计
3.1接口电路设计
3.1.1时钟电路设计
MCS-51的时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电路;另外一种为外部方式.本论文根据实际需要和简便,采用内部振荡方式.MCS-51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端.这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成一个自激振荡器.MCS-51虽然有内部振荡电路,但要形成时钟,必须外接元件所以实际构成的振荡时钟电路.外接晶体以及电容C1和C2构成并联谐振电路接在放大器的反馈回路中,对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度的稳定性。
晶体频率可在1.2MHz~12MHz之间任选,电容C1和C2的典型值在20pF~100pF之间选择,考虑到本系统对于外接晶体的频率稳定性要求不高,所以采取比较廉价的11.0592MH晶振,根据调试电容选择30pF。
如图3.1.1所示
图3.1.1晶振电路图
3.1.2独立式按键键盘设计
键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。
因此可以根据实际需要对键盘中的按键灵活的编码。
最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。
独立式按键键盘:
用于输入高低电平,八位选手抢答时高低电平发生变化,如图3.1.2所示。
图3.1.2独立按键接线图
3.1.3数码管显示部分设计
LED动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段a-dp同名端并联在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制,CPU的字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了,在轮流点亮扫描过程中,每位显示器的点亮时间表是极为短暂的,但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非间时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
抢答器倒计时显示电路:
有一个双位数码管和一个单位数码管组成,双位数码管显示30s倒计时,单位数码管显示成功抢答选手编号,如图3.1.3所示。
图3.1.3选手抢答成功显示号码图
3.1.4蜂鸣器电路设计
利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇叭就能发出一定频率的声音,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声,有选手抢答成功,使蜂鸣器发出声音,如图3.1.4所示。
图3.1.4蜂鸣器接线电路图
根据上述对抢答器系统各个部分的电路设计,设计的完整系统电路图如图3.1.5所示:
图3.1.5完整系统仿真电路图
3.2程序设计
系统程序分为主程序、子程序两部分
3.2.1主程序
图3.2.1主程序流程框图
主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘等工作。
程序流程如图3.2.1所示,对单片机进行初始化,包括设置堆栈、倒计时30S设置、定时器T0设置,外部中断设置,键盘扫描设置,初始化状态时显示00。
3.2.2倒计时30s子程序
图3.2.2定时器T0中断子程序框图
当程序开始进入这个子程序,开始进行初始化,然后进行倒计时的设置,设置为30S倒计时,等待主持人按下“开始”键。
开始倒计时,检测有没有键按下,若有,单位数码管显示号码,双位数码管显示“10”秒;若没有,继续倒计时并显示,倒计时计完为止,中断退出,返回到中断入口处。
3.2.3倒计时10s子程序
图3.2.3倒计时10s子程序框图
当程序开始进入这个子程序,开始进行初始化,然后进行倒计时的设置,设置为10S倒计时,等待主持人按下“开始”键。
开始倒计时,倒计时时间到,中断退出,返回到中断入口处。
3.2.5选手按键程序
图3.2.5键盘扫描程序框图
键盘扫描时先判断是否允许扫描,是的话允许键盘扫描,否的话即不允许键盘扫描。
不允许扫描就返回调用,结束该程序。
允许扫描时开始扫描P1口看有没有选手按下答题键,按下时此口变为低电平0,如果没有选手按键,则继续扫描,倒计时30秒结束后无键按下,则结束此循环,等待主持人重新按下“开始”键才重新开始循环。
3.2.6数码管显示程序
图3.2.6显示子程序框图
进入显示子程序先把选手的号码显示于单位数码管,然后是选手的答题时间十秒钟倒计时显示在双位数码管,个位显示在双位数码管的第一位上,十位显示在双位数码管的第二位上,同时等待倒计时开始,若开始数码管上显示的数字则开始进行减计算,进行倒计时至到结束或等待中断。
3.3硬件调试
硬件调试的调试比较困难。
因为是调试所以先不能对元件进行焊接,只能把各个元件用导线连接起来。
调试的整体过程是:
各个系统逐个调试,各部分调试成功后再进行组装后的整体调试。
调试过程包括:
1.显示部分的调试
问题:
数码管的显示不稳定,不停的闪烁。
分析:
没有考虑到干扰及环境的制约。
解决方案:
采用电容滤波尽可能去除纹波和干扰。
2.显示部分的调试
问题:
数码管显示数据不齐全
分析:
程序编制存在问题。
解决方案:
使用程序编制软件KeiL与仿真软件Protues进行程序的检查与仿真。
3.控制部分的调试
问题:
按下电源按键后电路无任何反应。
分析:
焊接电路可能存在短路。
解决方案:
使用万用表检测,发现短路部分,使用烙铁使短路部分断开。
4.控制部分的调试
问题:
按下电源按键后数据显示有时正常有时又不正常。
分析:
按键接触不良。
解决方案:
使用万用表检测,发现按键按下后不稳定,更换质量更好的按键。
5.声音部分的调试
问题:
按下电源按键后,蜂鸣器在程序的运行下无反应。
分析:
蜂鸣器焊接不良或正负极接反。
解决方案:
检查蜂鸣器的焊接,若焊接不良或正负极接反将其焊接正常。
3.4KeiL调试
启动Keil软件,选择“Project”菜单下的“NewProject”命令,输入项目的文件名,选择存储路径,点击“保存”按钮。
在“SelectDevice”窗口中选择“Atmel”下的“STC89C52”芯片,单击“确定”按钮。
展开“ProjectWorkspace”窗口中的“Target1”,右击“Target1”,选择“OptionsforTarget’Target1’”,选择“Target”选项在Keil(MHZ)右边输入“12m”。
选择“Debug”选项,选择“UseKeilMonitor-51Driver”。
单击“Settings”按钮,串口选择“COM1”,波特率选择“38400”,单击“OK”按钮。
右击“SourceGroup1”,选择“AddfilestoGroup‘SourceGroup1’,在文件类型中选择“AsmSourcefile”,找到将要编译的程序,单击“ADD”按钮,然后再单击“CLOSE”按钮。
单击“Rebuildalltargetfiles”,在“Build”窗口中观察编译结果,根据提示修改程序,直到没有错误出现。
3.5开发板调试
根据程序的设计在开发板上分别连接好各个端口的连接线,用串口线把计算机和试验箱的仿真头连接好。
单击Keil软件上的“Start/StopDebugSession”按钮,再单击“RUN”按钮,运行程序。
观察试验箱上出现的效果,分析程序的对错,直到调试出正确的结果。
图4.3开发板
四、设计总结
单片机课程设计是学习单片机的一个重要环节。
本次课程设计加深了我们对所学理论知识的理解,并能将其熟练应用,做到理论与实际相结合。
我们小组此次的课题是八路抢答器。
针对八路抢答器,我们小组通过上网查阅各种类似的设计,查找相关的知识,确定基本设计方案,通过仿真验证方案的可行性,并根据我们所设计好的电路到赛格电子商城去购买原材料。
采购完原材料后,我们就要开始根据我们的电路进行电路板的焊接。
电路的焊接考虑的方面很多,不仅要注意到元件的排版,还要考虑元件的正负极以及各个引脚的含义。
在小组的通力合作下,我们很快的就把电路焊接好,接下来的任务就是将写好的程序下载到芯片中了。
按键电路的设计是本设计任务的一个难点,一点要注意考虑按键的“抖动”效应。
根据实际情况,选用独立式键盘并采用“软件”的方式来消除按键的“抖动”效应。
通过这次课程设计,我们明白学习是一个不断积累的过程,在工作、生活中都应该不断地学习,努力的提高自己的知识和综合素质。
知识必须通过应用才能实现其价值。
有些东西以为学会了,但真正到用的时候才是真的学会了。
这次的课程设计是累并快乐着,此次课程设计让我们学到了很多课内学不到的东西,比如独立思考解决问题,出现差错时的随机应变能力以及与人合作共同提高的能力,都让我们受益匪浅。
总体来说,通过这次课程设计学习,让我们对各种电路都有了大概的了解,也学会了常用绘图软件的使用,在平时的理论学习中遇到的问题都一一解决,加深了我们对专业的了解,为以后的学习打下了好的开端。
参考文献
1、徐爱钧主编单片机原理实用教程电子工业出版社
2、阎石主编数字电子技术基本教程清华大学出版社
3、郭天祥主编51单片机C语言教程电子工业出版社
附录
1、C语言编码程序如下
/*单片机课程《八路抢答器》c语言程序设计*/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitwela1=P3^0;//定义倒计时位选
sbitwela2=P3^1;
sbitwela_hao=P3^2;//定义号码位选
sbitset=P3^3;//定义号码时间设置按键
sbitanswer=P3^4;//定义回答倒计时开始
sbitclear=P3^5;//定义系统清除位
sbitbuzzer=P3^6;//定义蜂鸣器
sbithost=P3^7;//定义开始位
sbitkey1=P1^0;//定义按键
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitkey5=P1^4;
sbitkey6=P1^5;
sbitkey7=P1^6;
sbitkey8=P1^7;
ucharhao,shu,shu1,shu2,shi,ge,t0,t1,start,flag;
intjia;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voidinit();/*初始函数申明*/
voiddisplay(ucharshi,ucharge,ucharhao);
voiddelay(uintz);
voidkeyscan1();
voidkeyscan();
voidmain()
{
init();
while
(1)
{
buzzer=0;
display(shi,ge,hao);
if(set==0)
{
delay(5);
if(set==0)
{
jia=-jia;
TR0=0;
TR1=0;
buzzer=1;
delay(10);
while(!
set);
buzzer=0;
}
}
if(jia<0)
{
keyscan1();
shi=shu/10;
ge=shu%10;
display(shi,ge,hao);
}
if(jia>0){
display(shi,ge,hao);
buzzer=0;
if(host==0)//主持人
{
delay(5);
if(host==0)
{
flag=1;
start=1;
buzzer=1;
delay(5);
while(!
host);
}
}
if(clear==0)//系统清除
{
delay(5);
if(clear==0)
{
TR0=0;
TR1=0;
shu1=10;
shu=shu2;
hao=0;
delay(5);
start=3;
buzzer=1;
delay(5);
while(!
clear);
TR0=0;//给0关闭倒计时30s程序
TR1=0;//给0关闭倒计时10s程序
shi=0;
ge=0;
}
}
if(flag==1)
{
if(start==0)//选手按下,显示倒计时10秒
{
wela1=1;
wela2=1;
delay
(1);
TR0=0;
display(shi,ge,hao);
delay
(1);
if(answer==0)
{
delay(5);
if(answer==0)
{
TR0=0;
TR1=1;
buzzer=1;
delay(5);
while(!
answer);
}
}
}
if(start==1)//主持人按下,抢答倒计时30秒
{
wela1=1;
wela2=1;
delay
(1);
TR0=1;
TR1=0;
display(shi,ge,hao);
delay
(1);
keyscan();
}
}
}
}
}
voidinit()/*初始化*/
{
wela1=1;//关掉倒计时位选
wela2=1;
shi=0;
ge=0;
t0=0;
t1=0;
flag=0;
shu=30;//抢答倒计时时间
shu1=10;//回答倒计时时间
shu2=30;
wela_hao=0;
hao=0;
jia=1;
buzzer=0;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=0;
TR1=0;
}
voiddisplay(ucharshi,ucharge,ucharhao)/*数码管动态扫描*/
{
P0=table[shi];
wela1=1;
wela2=0;
delay(5);
P0=table[ge];
wela1=0;
wela2=1;
delay(5);
wela_hao=0;
P2=table[hao];
delay(5);
}
voidkeyscan1()
{
if(host==0)
{
delay(5);
if(host==0)
{
shu=shu+1;
shu2=shu;
buzzer=1;
delay(5);
while(!
host);
buzzer=0;
}
}
if(answer==0)
{
delay(5);
if(answer==0)
{
shu=shu-1;
shu2=shu;
buzzer=1;
delay(5);
while(!
answer);
buzzer=0;
}
}
}
voidkeyscan()/*按键扫描函数*/
{
if(key1==0)
{
delay(5);
if(key1==0)
{
hao=1;
P2=table[hao];
start=0;
TR0=0;
shi=1;
ge=0;
TR0=0;
buzzer=1;
delay(5);
while(!
key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
hao=2;
P2=table[hao];
start=0;
TR0=0;
shi=1;
ge=0;
buzzer=1;
delay(5);
while(!
key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
hao=3;
P2=table[hao];
start=0;
TR0=0;
shi=1;
ge=0;
buzzer=1;
delay(5);
while(!
key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
hao=4;
P2=table[hao];
start=0;
TR0=0;
shi=1;
ge=0;
buzzer=1;
delay(5);
while(!
key4);
}
}
if(key5==0)
{
delay(5);
if(key5==0)
{
hao=5;
P2=table[hao];
start=0;
TR0=0;
shi=1;
ge=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 论文 八路 抢答 课程设计 说明书