前言.docx
- 文档编号:26346021
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:22
- 大小:248.14KB
前言.docx
《前言.docx》由会员分享,可在线阅读,更多相关《前言.docx(22页珍藏版)》请在冰豆网上搜索。
前言
绪论
本设计是十六路智力抢答器。
使用51系列单片机,编写应用程序来实现智力抢答功能。
硬件设计使用的是51系列单片机中的AT89S51。
硬件设计利用其中断控制程序进行抢答部分的处理,通过使用8259A中断控制器的控制去申请单片机内部的中断,以达到显示抢答的目的。
软件设计利用中断系统的基本构成原理编写中断服务程序,其信号由按键电路提供,由CPU响应中断,并输出响应。
用到了中断处理模块、定时器模块、显示时间模块、显示组号模块、报警模块等。
抢答器的基本工作原理是当主持人按下开始按钮后参赛选手才能抢答,通过程序的限制使得违规抢答无法实现。
当有人抢答时,引起系统中断,数码管显示抢得人的号码,并伴有提示音,当主持人按下停止键时,抢答结束。
第1章系统方案的分析论证
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。
现在大多数抢答器均使用单片机(如MCS-51型)和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。
本课题利用89C51单片机及外围接口实现的抢答系统,将软、硬件有机地结合起来,使得系统能够可靠地进行运行,同时使数码管能够正确地显示选手号码。
用开关做键盘输出,扬声器发生提示。
系统达到要求:
在抢答中,只有开始后抢答才有效,无法违规抢答,可以显示是哪位选手有效抢答,正确按键后有音乐提示;按键锁定,在有效状态下,按键无效非法。
抢答器原理:
该抢答器供最多十六人的抢答比赛使用。
每个选手的座位前安装一只抢答按钮开关。
主持人的座位前安装一只复原按钮开关、一只蜂鸣器、一个开始按钮和一个停止按钮。
初始状态时数码管显示FF,每当主持人口头发出允许抢答的号令并按下开始按钮之后,哪个队先按下座位上的按钮开关,就可用抢得回答的权利,同时伴有短暂的声音提示和数码管显示。
但当主持人没有按下开始按钮时,任何队伍的抢答是无效的,不会有任何反应。
回答结束时,主持人按下停止按钮,结束本轮抢答。
第2章抢答器的硬件电路设计
2.1电路原理图
如图2-1,P0.4为开始抢答,P0.5为停止,数码管段选P2口,位选是P0.0和P0.1口,蜂鸣器输出为P0.6口。
图2-1系统原理图
工作过程:
该16路竞赛抢答器,每组受控于一个抢答器健开关,电平跳变表示抢答有效。
当单片机上电初始化时,先对系统初始化,设置相应的控制字,初始化各个芯片后,等待开始键的按下,开始键不按下,系统始终处于初始状态,数码管显示FF,且任何抢答键都无效。
当开始键按下后,各个抢答键开始可以抢答,抢答是根据中断响应控制的,当一人抢答成功时,单片机会接收到中断,配合中断控制器8259A的使用,调取相应的中断程序,数码管会显示相应的号码,并伴有短暂的提示音。
回答结束后,停止键按下,系统回到初始化状态,等待下一次抢答的开始。
2.2时钟频率电路的设计
单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
图2-2外部振荡源电路
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,常用fosc表示。
如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs。
2.3复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图4所示:
图2-3复位电路
值得注意的是,在设计当中使用到了硬件复位功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值。
2.4显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
数码管的显示可以分为两种:
静态显示和动态显示。
静态显示的段选位和位选位均单独连接,因此占用的I/O接口多,无法扩展多个数码管。
而数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划的同名端连在一起,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
本次设计电路包括显示和驱动,显示采用数码管。
数码管要显示抢答者编号,数码管采用动态显示。
图2-4显示电路
2.516路抢答电路的设计
键盘是人与微机系统打交道的主要设备。
关于键盘硬件电路的设计方法也可以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相应的键盘扫描程序。
但本次设计是基于单片机中断的抢答器,所以传统的键盘扫描并不能满足要求,而51单片机只有两个中断,不能满足16路中断的要求,所以配合中断控制器8259A来实现中断的扩展。
图2-5-1抢答电路
在实时性要求较高的单片机系统,都需要用到其中断系统的功能。
但MCS-51单片机系统提供给用户可用作不同用途的外部中断源却仍只有两个,如果要为用户提供更多用途的中断源,需要给单片机扩展外部中断源。
对中断源的扩展,可以采用并行输入接口结合软件查询方式来来实现,但这种方法需要在中断服务程序中通过并行输入接口将各个扩展外部中断源申请中断的状态读入内部寄存器,以便查询确定该次中断是由哪个扩展外部中断源申请而引起,从而转到为该中断源服务的相应程序执行。
此方法虽然硬件简单,软件也易于编写,但对各扩展外部中断源的优先级高低也是由查询顺序确定的,不容易改变外部中断的优先级别。
为了解决这个缺点,可以采用8259A可编程中断控制器接口实现对MCS-51单片机外部中断源扩展的方法。
这种方法运用8259A中断管理方式,容易实现对中断源的管理,8259A主要针对微型计算机的中断源管理,要在单片机系统中使用,还存在着一些需要认真考虑和解决的问题。
但8259A的接口信号与MCS-51单片机不完全兼容,因此要利用8259A实现MCS-51单片机外部中断源的扩展时就必须考虑解决它们之间的兼容问题。
根据上述讨论的需要解决的问题,实现将一片8259A与MCS-51单片机连接以把单片机的一个外部中断源扩展为8个外部中断源的方法如图2-5-2所示。
图2-5-2中,将8259A的INT信号经反相后连接到MCS-51单片机的INTO以满足MCS-51单片机对外部中断申请触发方式的要求。
将8259A的INT信号与MCS-51单片机的信号经图2中所示的电路后连接到8259A的INTA,以通过读操作产生8259A需要的INTA信号,即在MCS-51单片机CPU进入INTA的中断服务程序后,通过三次读操作以产生8259A需要的两个INTA信号。
MCS-51单片机根据在第二个负信号期间8259A取得的中断服务程序入口地址而跳转到相应的服务程序分支去执行,执行完后中断返回。
为了解决上面提及的第三个问题,将紧急的外部事件通过MCS-51单片机的申请中断并设置为高级别,而将不太紧急且紧急程度差别不大的外部事件通过8259A由MCS-51单片机的指令申请中断并设置为低级别。
通过硬件、软件的合理设计解决了上述讨论的三个问题。
还有就是消除在按键过程中产生的“毛刺”现象。
这里采用最常用的方法,即延时重复扫描法,延时法的原理为:
因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
图2-5-2AT89C51与8259A的接口电路图
2.6发声电路
通过控制单片机引脚的电平的高低可以控制蜂鸣器发声,我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。
但本次设计由于比较简单,只有一个地方用到声音,所以就不用复杂的程序,只是发出简单的声音即可。
图2-6发声电路
2.7系统复位
使CPU进入初始状态,从0000H地址开始执行程序的过程叫系统复位。
从实现系统复位的方法来看,系统复位可分为硬件复位和软件复位。
硬件复位必须通过CPU外部的硬件电路给CPU的RESET端加上足够时间的高电位才能实现。
上电复位,人工按钮复位和硬件看门狗复位均为硬件复位。
硬件复位后,各专用寄存器的状态均被初始化,且对片内通用寄存器的内容没有影响。
图2-7复位电路
第3章抢答器的软件设计
3.1主程序系统结构图
如图3-1所示为总体原理框图。
其工作原理为:
接通电源后,主持人未按下开始开关,抢答器处于禁止状态,编号显示器显示FF,主持人将开关置“开始”状态,宣布“开始”抢答器工作。
选手开始抢答,抢答器完成:
优先判断、编号显示、扬声器提示。
当一轮抢答之后,按下停止键,禁止二次抢答。
如果再次抢答必须由主持人再次操作开始开关。
图3-1总体原理框图
3.2程序流程图
在本设计中包括了以下四个主要的程序:
主程序;正常抢答处理中断子程序;显示及发声程序。
主程序图如图3-2-1所示,正常抢答处理中断子程序图如图3-2-2所示。
N
Y
Y
N
图3-2-1主程序图
Y
N
图3-2-2中断子程序
第4章系统源程序
P0.4为开始抢答,P0.5为停止,数码管段选P2口,位选是P0.0和P0.1口,蜂鸣器输出为P0.6口。
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0
ORG0013H
AJMPINT1
主程序MAIN:
MOVIE,#00H;关闭所有中断
MOVDPTR,#FEFBH;送初始化控制字ICW1
MOVA,#12H
MOVX@DPTR,A
MOVDPTR,#FFFBH;送初始化控制字ICW2
MOVA,#00H
MOVX@DPTR,A
MOVDPTR,#FEF7H;送初始化控制字ICW1
MOVA,#12H
MOVX@DPTR,A
MOVDPTR,#FFF7H;送初始化控制字ICW2
MOVA,#00H
MOVX@DPTR,A
准备START:
MOVR6,#0BH;
MOVR5,#0BH;
ACALLDISPLAY
JNBP0.4,DELAY
JNBP0.4,KAI
AJMPSTART
开始程序KAI:
SETBEA
SETBEX0
SETBEX1
SETBIT0
SETBIT1
ACALLTING
RET
停止程序TING:
JNBP0.5,DELAY
JNBP0.5,START
AJMPTING
RET
终端子程序0INT0:
CLREA
PUSHPSW
PUSHACC
SETBEA
MOVDPTR,#1H
MOVXA,@DPTR;发第一个应答信号,
MOVXA,@DPTR;发第二个应答信号,读取中断向量
ANDA,#07H;得到中断号
MOVDPTR,#TABLE0;跳转表0的入口送DPTR
MOVB,#03H;由于长跳转指令LJMP占用3个字节,各中断服务入口地
DECA;址相距3字节
MULAB;
JMP@A+DPTR;根据中断号,执行相应的子程序
CLREA
POPACC
POPPSW
RETI
跳转表0TABLE0:
LJMPIR1
LJMPIR2
LJMPIR3
LJMPIR4
LJMPIR5
LJMPIR6
LJMPIR7
LJMPIR8
IR1:
MOVR6,#00H
MOVR5,#01H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR2:
MOVR6,#00H
MOVR5,#02H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR3:
MOVR6,#00H
MOVR5,#03H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR4:
MOVR6,#00H
MOVR5,#04H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR5:
MOVR6,#00H
MOVR5,#05H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR6:
MOVR6,#00H
MOVR5,#06H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR7:
MOVR6,#00H
MOVR5,#07H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR8:
MOVR6,#00H
MOVR5,#08H
ACALLDISPLAY
LJMPOVER
ACALLTING
终端子程序1INT1:
CLREA
PUSHPSW
PUSHACC
SETBEA
MOVDPTR,#1H
MOVXA,@DPTR;发第一个应答信号,
MOVXA,@DPTR;发第二个应答信号,读取中断向量
ANDA,#07H;得到中断号
MOVDPTR,#TABLE1;跳转表0的入口送DPTR
MOVB,#03H;由于长跳转指令LJMP占用3个字节,各中断服务入口地
DECA;址相距3字节
MULAB;
JMP@A+DPTR;根据中断号,执行相应的子程序
CLREA
POPACC
POPPSW
RETI
跳转表1TABLE1:
LJMPIR9
LJMPIR10
LJMPIR11
LJMPIR12
LJMPIR13
LJMPIR14
LJMPIR15
LJMPIR16
IR9:
MOVR6,#00H
MOVR5,#09H
ACALLDISPLAY
ACALLTING
LJMPOVER
IR10:
MOVR6,#01H
MOVR5,#00H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR11:
MOVR6,#01H
MOVR5,#01H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR12:
MOVR6,#01H
MOVR5,#02H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR13:
MOVR6,#01H
MOVR5,#03H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR14:
MOVR6,#01H
MOVR5,#04H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR15:
MOVR6,#01H
MOVR5,#05H
ACALLDISPLAY
LJMPOVER
ACALLTING
IR16:
MOVR6,#01H
MOVR5,#06H
ACALLDISPLAY
LJMPOVER
ACALLTING
OVER:
MOVDPTR,#0H;送中断结束命令EOI
MOVA,#20H
MOVX@DPTR,A
RET
显示程序DISPLAY:
MOVDPTR,#DAT
MOVA,R6
MOVCA,@A+DPTR
MOVP2,A
SETBP0.0
ACALLDELAY
CLRP0.0
MOVA,R5
MOVCA,@A+DPTR
MOVP2,A
SETBP0.1
ACALLDELAY
CLRP0.1
DAT:
DB3FH,06H,5BH,4FH,66H,6DH,
7DH,07H,7FH,6FH,00H,71H
延时DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
RET
发声BARK:
CLRP0.6
ACALLDELAY
SETBP0.6
RET
第5章课程设计小结
经过将近两个星期的不停地检测和修改,终于把最终的电路图完成了。
经过了这次课程设计,大大地提高了我的动手能力以及分析问题的能力,在老师热心的指导下,解决了很多问题,从中也学到了很多书本上所没有学到的知识。
这次课程设计,让我学到了很多有用的知识和能力,这对以后的学习和工作都将是非常有益的。
通过此次课程设计,我重新认识到了对书本上的知识要独立运用的道理。
在抢答器设计过程中,发现了很多细节性的问题,也出现了很多错误,经过和同学们研究、商讨最后都解决,感觉团队协作能力是非常有必要的!
通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识和汇编语言的编程,也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。
参考文献
[1]单片机课程设计实例指导,李光飞,北京航天航空大学出版社,2004
[2]单片机原理及接口技术(第3版),李朝青,北京航空航天大学出版社,2002
[3]单片机系统设计与实例指导,冯育长,西安电子科技大学出版社,2007
[4]艾庆生,王卫东,王明秋.单片机最简连线抢答器[J].电子制作,2000,(07)
[5]梁超,肖静,邱志诚.一款基于单片机技术的电子抢答器[J].机电工程技术,2005,(01)
致谢
经过自己不断的努力以及各位指导老师的耐心指导和热情帮助,本设计已经基本完成。
在这段时间里,各位老师严谨的治学态度和热忱的工作作风令我十分钦佩,他们的指导使我受益非浅。
同时实验室的开放也为我的设计提供了实习场地。
在此对指导老师和实验室的老师表示深深的感谢。
通过这次课程设计,深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了我的学习成果。
虽然在这次的课程设计中对于知识的运用和衔接还不是很熟练,但是我将在以后的学习中继续努力、不断完善。
这将近两个星期的课程设计是对过去所学知识的系统提高和扩充的过程,为今后的学习打下了良好的基础。
当然由于自身水平有限,设计中一定存在很多不足之处,敬请老师对我提出批评与指正。
附录:
电路原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 前言