单片机八路抢答器课设.docx
- 文档编号:9423038
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:22
- 大小:738.62KB
单片机八路抢答器课设.docx
《单片机八路抢答器课设.docx》由会员分享,可在线阅读,更多相关《单片机八路抢答器课设.docx(22页珍藏版)》请在冰点文库上搜索。
单片机八路抢答器课设
前言
1.1设计背景及意义
随着科学技术的发展和普及,各种各样的竞赛越来越多,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器使用频率低,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使抢答器损坏影响活动及时的开展,在各种竞赛中,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。
比赛中为了准确、公正、直观地判断出第一抢答者,采用单片机技术设计的抢答器与传统的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部。
第二,工作性能可靠,抗干扰能力优于传统抢答器,并能够解决以上提出的问题。
所以这次设计是一个实用的设计,具有创新性。
因此本次课设设计了八路抢答器。
1.2设计原理及结果
本次课设以80c51单片机作为主控核心,与数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计出来的八路抢答器具有倒计时和显示抢答选手号码的特点,复位电路可以使其开始新一轮的抢答。
本次课设用单片机控制整个系统,部分功能用软件编写来实现。
主持人复位后,选手进行抢答,倒计时开始,如果有选手按下抢答键,则数码管显示组号,接着抢答到的选手回答问题,由主持人负责加减分,回答对了加5分,错了减5分。
正文
2.1设计的目的和意义
通过本次设计,掌握80c51单片机的原理,了解简单八路抢答器组成原理,初步掌握八路抢答器的调整及测试方法,提高动手能力和排除故障的能力。
同时通过设计、调试,提高自己的动手能力,巩固已学的理论知识,建立逻辑数字电路的理论和实践的结合,通过协作提出论证设计方案,进行软、硬件调试,获得正确地运行结果,初步掌握单片机软、硬件开发方法。
了解八路抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时记数的各个单元电路。
初步掌握八路抢答器的调试及测试方法,提高动手能力和排除故障的能力。
八路抢答器的设计提高了比赛的公正、公平,节省了比赛成本,工作性能可靠,抗干扰能力高。
通过参考大量文献对八路抢答器的工作原理进行系统的介绍,通过资料的详细搜集,为我们更深刻的了解电子技术提供了很好的平台,使得我们更好的了解理论与实践相结合的重要性。
2.2目标与总体方案
2.2.1设计目标
1.实现8路功能抢答
2.具备回答时间倒计时功能
3.设置专用的主持人按钮,包括抢答按钮和停止答题按钮等
2.2.2总体方案
这次设计采用51系列单片机AT89C51作为控制核心,其片内带有4KflashROM,128的RAM,以及15根I/O口线能满足设计要求。
该系统可以完成运算控制、信号识别以及显示功能的实现。
利用单片机程序判断选手按键是否有效,但是选手违规抢答,利用简答程序显示,启动扬声器报警,告诉主持人有人违规操作,抢答无效。
给出相应的延时,选手按正常的操作抢答,软件倒计时,利用AT89S51移位寄存7段数码管,实现倒计时显示时间,到5秒相应时间提醒选手时间快到了,要及时作答,并启动扬声器。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:
1.可靠性好:
单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
2.单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
3.控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
这个设计方案可以看出,采用单片机,可靠性好,结构简单,具有显示出台号,倒计时功能等。
该模式充分体现了原有系统性能的改进,功能的扩展及其他同类系统的不同之处,性能上比较优越,在使用及其功能的实现上比较简洁,并且由于单片机具有优越性的高集成电路性,使其工作速度更快、效率更高。
另外80C51单片机采用12MHz的晶振,提高了信号的测量精度,从而减小了信号的输入输出产生不必要的误差。
其原理图如图1所示
图1
2.3硬件电路设计
2.3.1电路仿真图
其工作过程为:
接通电源后,主持人按复位键,抢答器处于禁止状态,定时器显示设定时间,主持人按开始键,抢答器开始工作,定时器倒计时,选手在定时时间内抢答时,抢答器完成,优先判断、编号锁存、编号显示、扬声器提示,主持人调整回答时间以60s为基础可以一次加减5s,调整好时间主持人按开始键,回答时间开始倒计时,选手回答,回答完毕,主持人按复位键等待下一轮抢答。
仿真电路图如图2所示。
图2
2.3.2时序电路设计
时序控制电路是抢答器设计的关键,他它主要完成以下功能:
1.主持人按开始键时,抢答电路和定时电路进入正常工作状态。
2.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。
2.3.3复位电路设计
外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到初始值,因为设计中功能有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位,复位电路如图3所示。
图3
2.3.4外部振荡电路
外部振荡电路单片机必须在AT80C51的驱动下才能工作,在单片机内部有一个时钟振荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部振荡电路如图4所示。
图4
2.3.5按钮输入电路设计
抢答器的输入按钮使用常开开关。
如图5所示。
图5
这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键中产生的“毛刺”现象就可以了。
这里采用最常用的方法即延时法,其原理是:
因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间后在判断此电平是否保持原状态,如果是则为有效按键,否则无效。
2.3.6报警电路设计
报警电路用于报警,当遇到报警信号时,发出报警。
一般喇叭是一种点感性,8951驱动喇叭的信号为各种频率的脉冲。
利用晶体管的高电流增益,以达到电路快速饱和的目的。
不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。
2.4软件设计
本系统由于较简单,程序内容相对较少,本着简单易懂的原则,所以采用C语言和汇编语言实现其软件的设计。
构思:
其主要工作是分析题意,制作程序流程图。
流程图的逻辑必须符合题意要求。
布局:
其主要工作是分配单片机资源,包括程序地址分配,片内储存单元分配。
如确定每个程序段起始地址,确定某一片内RAM单元作为数组指针等。
编写:
根据布局安排,将程序流程图转换为单片机指令。
做到在流程图各环节相应指令对应的同时,提高运用指令的技巧性。
修改:
对程序进行编译和试运行。
如果运行不正确的话,一定要找出其中的差异来。
要知道,编写程序就是不断的尝试错误,在调试中不断修改,提高程序的可靠性和程序结构的合理性。
系统采用结构化模块设计,从功能上看,主要包括:
主程序、电源检测程序、报警程序、控制程序等。
2.5主程序流程图
在正常工作的情况下,首先对控制系统进行初始化,然后进行键盘扫描,判断主持人是否按下了“开始抢答”按键,如果按键没有按下,则执行非法抢答查询子程序,判断是否有选手发生了抢答现象;如果“开始抢答”按键按下则执行倒计时子程序和显示子程序,并调用正常抢答处理子程序。
其中倒计时程序包括抢答倒计时和回答倒计时。
任何控制系统开始正常工作前都必须要进行初始化,在其它应用程序确定之后,本部分程序设计在于协调各部分程序之间的关系,以促使各部分程序之间有序运行,达到进一步优化程序设计的目的。
该智能抢答器的初始化子程序主要是两个定时器和两个外部中断的初始化。
主程序流程图如图6所示。
图6
2.6软硬件调试
硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时进行。
软件调试一般包括分块调试和联机调试两个阶段。
程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。
这时该 程序功能块已调试完毕,可去掉附加程序段。
其它程序功能块可按此法进行调试。
程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。
从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。
2.7protenus仿真图
绘制八路抢答器的仿真图步骤分以下三步:
1.查找所需要的元器件;
2.根据电路图进行连线;
3.C语言程序的编写。
仿真图的运行如图7所示。
图7
选手抢答和选手回答时间的加减如图8、图9、图10所示
图8
图9图10
2.8实物图
图11
2.9总结
单片机课程设计很快就结束了,此电路设计没有各组的计分装置,在比赛中还需要专人去计算分数,这是设计电路时的不足;在电路中增加回答时间的增加和减少,这样在比赛中便于调整回答时间。
本次设计的八路抢答器采用了通用的电子元器件,利AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来。
整个设计通过了软件和硬件上的调试、仿真。
我想这对于自己以后的学习和工作都会有很大的帮助的。
在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
对于单片机设计,主要是解决程序设计中的问题。
而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。
它才是一个设计的灵魂所在。
因此在整个设计过程中大部分时间是用在程序上面的。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。
因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。
致谢
在这次课程设计中查阅资料和搜集有关的文献,培养了自己的自学能力和动手能力。
并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。
在课程设计中我学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
把握重点、攻克难关,学到用到、活学活用。
但是,通过这次设计我也发现自己的很多不足之处。
在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。
而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力。
这次的课程设计中,遇到了不少问题,经过施老师和同学的耐心指导,查阅各种资料,最后基本都一一解决,在这短短的几周中,对之前单片机知识有了更深的认识,通过动手实践掌握的东西远比在课堂上听来的更加深刻,遇到问题通过与老师同学之间的讨论也拉近了与老师之间的距离,让我们感觉到了老师原来那么的和蔼可亲,平易近人,施老师在每次课程设计中都能很早的到达教室,一直的陪伴着我们,在此,向你表示衷心的感谢。
参考文献
[1]C程序设计,谭浩强,清华大学出版社,2005
[2]单片机原理及接口技术(第3版),李朝青,北京航空航天大学出版社,2002
[3]单片机系统设计与实例指导,冯育长,西安电子科技大学出版社,2007
[4]单片机课程设计实例指导,李光飞,北京航天航空大学出版社,2004
附录
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitk0=P1^0;/*数码管段选*/
sbitk1=P1^1;
sbitk2=P1^2;
sbitk3=P1^3;
sbitk4=P1^4;
sbitk5=P1^5;
sbitk6=P1^6;
sbitk7=P1^7;
sbitwela0=P2^0;/*数码管位选*/
sbitwela1=P2^2;
sbitwela2=P2^3;
sbitbeep=P2^4;/*蜂鸣器*/
sbitks=P3^0;/*开始计时*/
sbittz=P3^1;/*停止计时*/
sbitjiayi=P3^4;/*时间加1s*/
sbitjianyi=P3^5;/*时间减1s*/
sbitfw=P3^6;/*复位*/
ucharqiangdanum=0xff;
ucharcodetable[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharge=0,shi=0;
uintnum,time=30;
voiddisplay();/*显示函数*/
voidkys();/*设置按键函数*/
voidkys2();/*抢答按键函数*/
voiddelay(unsignedintz)/*延迟函数*/
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidintial()
{
TMOD=0X01;/*采用方式一,即十六位计数器*/
TH0=(65536-50000)/256;/*设置初始值,50ms中断一次*/
TL0=(65536-50000)%256;
EA=1;ET0=1;/*开启总中断源,定时器中断*/
}
main()
{
intial();/*初始化*/
while
(1)
{
display();/*显示函数*/
kys();
if(TR0==1)
{
kys2();
}
}
}
voidkys2()/*抢答按键函数*/
{
if(k0==0)/*开关0按下*/
{
delay(5);
if(k0==0)
{
qiangdanum=1;/*1号选手抢答成功,数码管显示1*/
beep=1;
delay(100);
beep=0;
TR0=0;
time=60;
}
}
if(k1==0)/*开关1按下*/
{
delay(5);
if(k1==0)
{
qiangdanum=2;/*2号选手抢答成功,数码管显示2*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
}
}
if(k2==0)/*开关2按下*/
{
delay(5);
if(k2==0)
{
qiangdanum=3;/*3号选手抢答成功,数码管显示3*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
if(k3==0)/*开关3按下*/
{
delay(5);
if(k3==0)
{
qiangdanum=4;/*4号选手抢答成功,数码管显示4*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
if(k4==0)/*开关4按下*/
{
delay(5);
if(k4==0)
{
qiangdanum=5;/*5号选手抢答成功,数码管显示5*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
if(k5==0)/*开关5按下*/
{
delay(5);
if(k5==0)
{
qiangdanum=6;/*6号选手抢答成功,数码管显示6*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
if(k6==0)/*开关6按下*/
{
delay(5);
if(k6==0)
{
qiangdanum=7;/*7号选手抢答成功,数码管显示7*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
if(k7==0)/*开关7按下*/
{
delay(5);
if(k7==0)
{
qiangdanum=8;/*8号选手抢答成功,数码管显示8*/
beep=1;
delay(100);
beep=0;
TR0=0;/*停止计数*/
time=60;
}
}
}
voidkys()/*设置按键函数*/
{
if(ks==0)
{
delay(5);
if(ks==0)
{
TR0=1;
}
}
if(tz==0)
{
delay(5);
if(tz==0)
TR0=0;
}
if(jiayi==0)
{
delay(5);
if(jiayi==0)
time++;
while(!
jiayi);
}
if(jianyi==0)
{
delay(5);
if(jianyi==0)
time--;
while(!
jianyi);
}
if(fw==0)
{
delay(5);
if(fw==0)
{
time=30;
qiangdanum=0xff;
}
}
}
voidtime0()interrupt1/*1秒定时函数,采用方式1重装*/
{
num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(num==20)
{
num=0;
time--;
if(time==0)/*30秒的倒计时*/
{
time=30;TR0=0;
}
}
}
voiddisplay(void)/*显示函数*/
{
shi=time/10;
ge=time%10;
P2=0xf7;/*显示倒计时*/
P0=table[ge];
delay(5);
P2=0xfb;
P0=table[shi];
delay(5);
P2=0xFe;/*显示选手号码*/
P0=table[qiangdanum];
delay(5);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 八路 抢答 器课设