华东交通大学单片机课程设计.docx
- 文档编号:23251648
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:31
- 大小:1.08MB
华东交通大学单片机课程设计.docx
《华东交通大学单片机课程设计.docx》由会员分享,可在线阅读,更多相关《华东交通大学单片机课程设计.docx(31页珍藏版)》请在冰豆网上搜索。
华东交通大学单片机课程设计
单片机原理及接口技术
课程设计报告
课题:
8路抢答器设计
学院:
轨道交通学院
专业:
交通设备信息工程
班级:
姓名:
成员:
学号:
指导老师:
卢毓俊
2014年1月
任务书
课题:
8路抢答器设计
一、设计任务
设计一个可供8组同时使用的抢答器。
1.设计系统的硬件和软件设计。
2.要求显示抢答的结果,并有45s的答题时间显示。
二、基本要求
1、设计系统的硬件和软件设计;
2、撰写课程设计报告。
3、课程设计报告由封面、设计任务书、目录、摘要、正文、参考文献、附录等部分组成。
4、封面可自行设计,应包含课程设计名称及设计题目、专业、班级、姓名、指导老师、设计日期等内容。
5、正文是设计报告的核心部分。
应包含以下内容:
(1)概述所做课题的意义、本人所做的工作及系统的主要功能;
(2)硬件电路设计及描述;(3)软件设计流程图及描述;(4)源程序代码(要有注释);(5)体会和建议等。
摘要
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本文设计出以AT89C51单片机为核心的八路抢答器,采用了数字显示器直接指示,自动锁存显示结果,并自动复位的设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,充分利用了单片机系统结构简单、功能强大、可靠性好、实用性强的特点。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用
AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;
有45s的答题时间显示;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒计时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:
抢答器单片机LED数码显示管计时
目录
1.概述1
2.方案比较2
2.1方案A2
2.2方案B3
3.硬件设计4
3.1原理图的确定4
3.2抢答器电路4
3.3时序控制电路设计5
3.4复位电路的设计5
3.5晶振电路的设计6
3.6报警电路设计7
3.7选手抢答键(矩阵式键盘)7
3.8显示与显示驱动电路8
4.程序设计8
4.1系统主程序设计8
4.2显示抢答违规流程10
4.3抢答成功流程图10
4.4程序清单10
5.调试结果11
6.元件清单12
7.小结13
参考文献14
附录一15
附录二23
8路抢答器设计
摘要:
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;
有45s的答题时间显示;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒计时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:
抢答器单片机LED数码显示管计时
1.概述
单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。
通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。
根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和存储器扩展设计、接口技术应用设计。
其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。
存储器扩展设计要求学生掌握常用半导体芯片与单片机的接口,如EPROM存储器用作外部程序存储器时与单片机的连接关系,SRAM存储器用作外部数据存储器时与单片机的连接关系,E2PROM存储器用作外部程序/数据存储器时与单片机的连接关系。
能合理分配和使用单片机的内部和外部存储器,编程实现正常的读写功能。
本文设计出以AT89C51单片机为核心的八路抢答器,采用了数字显示器直接指示,自动锁存显示结果,并自动复位的设计思想,它能根据不同的抢答输入信号,经过单片机的控制处理并产生不同的与输入信号相对应的输出信号,最后通过LED数码管显示相应的路数,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,充分利用了单片机系统结构简单、功能强大、可靠性好、实用性强的特点。
2.方案比较
2.1方案A
该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:
<1>可靠性好:
单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
<3>控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
其原理框图如下:
2.2方案B
根据PLC智能抢答器的控制要求,应用程序采用一体化结构。
通过PLC控制程序来实现整体的运行,系统仅需要少量的按钮和接口,一般的PLC配置都可运行。
该系统本着简单易懂、可靠性强、适应性强等方面进行设计。
在抢答时只需按动按钮即可数码管在系统程序的控制下自动显示组号以及倒计时时间。
安全、可靠、省时、省力、价格便宜。
控制软件应用GXDeveloper编程软件,采用梯形图语言编写,工作系统自动控制流程框图(如下图),根据系统控制要求,进行针对性设计,要充分保证系统的安全,保证整个系统的运行安全可靠。
自动条件下,必须复位在满足自动条件下才能进行自动程序,当中充分应用各个过程的互锁来保证系统的安全。
如下图,有主程序和若干子程序组成,其整体设计工作系统自动控制流程图如下图所示:
考虑到我们课程设计的目的之一是让我们更加熟悉单片机的汇编语言和结构规则,以及综合各种因素,我们选择了方案A作为我们的实验方案。
3.硬件设计
3.1原理图的确定
单片机实现抢答的原理图:
抢答电路的接口电路
3.2抢答器电路
参考电路如上图所示。
该电路完成两个功能:
一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。
如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
3.3时序控制电路设计
时序控制电路是抢答器设计的关键,它要完成以下功能:
A.主持人将控制开关拨到“开始”位置时,扬声器发声,抢答器电路和定时电路进入正确抢答工作状态。
B.当参赛选手按下抢答键时,扬声器发声,抢答电路和定时电路停止工作。
3.4复位电路的设计
外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。
复位电路如下图所示:
复位电路原理图
该复位电路采用上电自动复位和手动复位两种复位方式,图中网络标号所指9连接到单片机的复位引脚。
要实现复位只需在,51系列单片机的RESET引脚上加上5ms的高电平就可以了。
上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。
这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。
通常若采用12MHz的晶振时,复位元件参数为22μF的电解电容和10kΩ的电阻。
按钮复位电路是通过按下复位按钮
时,电源对RESET端维持两个机器周期的高电平实现复位的。
3.5晶振电路的设计
MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。
本设计中采用内部时钟方式。
单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。
时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。
一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。
加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。
电容C1,C2的作用有两个:
一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。
晶振电路的设计如图2-2所示:
晶振电路原理图
3.6报警电路设计
报警电路用于报警,当遇到报警信号时,发出警报。
一般喇叭是一种电感性图5报警电路图。
8951驱动喇叭的信号为各种频率的脉冲。
因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。
在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。
不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。
选手在设定的时间内抢答时,实现:
优先判断、编号锁存、编号显示、扬声器提示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次作"清除"和"开始"状态开关。
报警电路图
3.7选手抢答键(矩阵式键盘)
AT89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。
3.8显示与显示驱动电路
此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态
显示。
驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。
在+5V电压下接10k的电阻,保证正常压降。
4.程序设计
4.1系统主程序设计
为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P1.7按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。
当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。
系统主程序流程
4.2显示抢答违规流程
4.3抢答成功流程图
4.4程序清单
详见附录一。
5.调试结果
试验的程序通过Keil软件编译,产生HEX文件如图4-1所示:
程序在Keil软件上编译结果
通过Proteus进行仿真,如仿真结果所示,按下开始后,数码管开始倒计时,仿真结果如图4-2所示。
Proteus仿真的结果
当有选手按下按扭时,数码管显示选手号码并开始倒计时,如下图所示
Proteus仿真的结果
6.元件清单
元件名称
数量
备注
10kΩ电阻
8只
10µF电容
1只
30pF电容
2只
12MHZ晶振
1个
AT89C51单片机芯片
1个
开关按钮
15个
报警器
1个
7SEG-MPX4-CC数码显示管
1个
7.小结
经过将近一周的单片机课程设计,终于完成了八路抢答器的设计,虽然没有完全达到设计要求,但还是收获良多。
通过这次课程设计,使我更进一步地熟悉了单片机芯片的工作原理和其具体的使用方法。
单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,这锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
还有了解了课程设计的一般步骤,和设计中应注意的问题。
设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
下面我对整个设计的过程做一下简单的总结。
第一,接到任务以后进行选题。
选题是设计的开端,选择恰当的、感兴趣的题目,这对于整个设计是否能够顺利进行关系极大。
好比走路,这开始的第一步是具有决定意义的,第一步迈向何方,需要慎重考虑。
否则,就可能走许多弯路、费许多周折,甚至南辕北辙,难以到达目的地。
因此,选题时一定要考虑好了。
第二,题目确定后就是找资料了。
查资料是做设计的前期准备工作,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。
第三,通过上面的过程,已经积累了不少资料,对所选的题目也大概有了一些了解,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。
第四,有了研究方向,就应该动手实现了。
其实以前的三步都是为这一步作的铺垫。
通过这次设计,我对数字电路设计中的逻辑关系等有了一定的认识,对以前学的数字电路又有了一定的新认识,温习了以前学的知识,就像人们常说的温故而知新嘛,但在设计的过程中,遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容。
在这次设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,所以在这里非常感谢帮助我的同学。
在此要感谢卢毓俊老师,感谢老师给我这样的机会锻炼。
在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。
虽然这个项目还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。
参考文献
[1]吴亦峰、陈德为.单片机原理与接口技术.北京:
电子工业出版社.2005.
[2]周润景、张丽娜.基于PROTEUS的电路及单片机仿真.北京:
航空航天大学出版社.2007.
[3]胡耀辉、朱朝华等.单片机系统开发实例经典.北京:
冶金工业出版社.2006.
[4]张迎新.单片机初级教程.北京:
航空航天大学出版社.2007.
附录一
源程序:
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
DATA0EQU36H;抢答按键口数据存放地址
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#30;初设抢答时间为30s
MOVR2,#45;初设答题时间为45s
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示PPP.如果想重新计数,重置TH1/TL1就可以了
;查询程序
START:
MOVDATA0,#0FFH;初始化
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示PPP
JNBP3.3,INT0SUB
JNBP3.4,TZ1;倒计时调整
JBP3.0,NEXT;ddddddd
ACALLDELAY
JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
SETBEX0;开放INT0
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答(在使用锦囊时用作判断是抢答倒计时还是回答倒计时)
MOVR3,#0AH;抢答只显示计时,灭号数
AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,TZ1
JNBP1.7,TZ2
AJMPSTART
TZ1:
JMPFALSE7
TZ2:
JMPFALSE8
;非法抢答处理程序
FALSE1:
ACALLBARK;按键发声
MOVR3,#01H
AJMPERROR
FALSE2:
ACALLBARK
MOVR3,#02H
AJMPERROR
FALSE3:
ACALLBARK
MOVR3,#03H
AJMPERROR
FALSE4:
ACALLBARK
MOVR3,#04H
AJMPERROR
FALSE5:
ACALLBARK
MOVR3,#05H
AJMPERROR
FALSE6:
ACALLBARK
MOVR3,#06H
AJMPERROR
FALSE7:
ACALLBARK
MOVR3,#07H
AJMPERROR
FALSE8:
ACALLBARK
MOVR3,#08H
AJMPERROR
;INT0(抢答时间R1调整程序)
INT0SUB:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO
JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO
JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。
MOVR1,#00H
ACALLDELAY1
AJMPINT0SUB
ADD0:
INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99,
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:
MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:
RETI
;INT1(回答时间R2调整程序)
INT1SUB:
MOVA,R2
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.4,INC1
JNBP3.5,DEC1
JNBP3.1,BACK1
AJMPINT1SUB
INC1:
MOVA,R2
CJNEA,#63H,ADD1
MOVR2,#00H
ACALLDELAY1
AJMPINT1SUB
ADD1:
INCR2
ACALLDELAY1
AJMPINT1SUB
DEC1:
MOVA,R2
JZSETR2
DECR2
ACALLDELAY1
AJMPINT1SUB
SETR2:
MOVR2,#63H
ACALLDELAY1
AJMPINT1SUB
BACK1:
RETI
;倒计时程序(抢答倒计时和回答倒计时都跳到改程序)
COUNT:
MOVR0,#00H;重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H;重置定时器
RECOUNT:
MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6
MOVB,#0AH
DIVAB;除十分出个位/十位
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
SUBBA,#07H
JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒
MOVA,R0
CJNEA,#0AH,FULL;1s中0.5s向下运行
CLRRING
AJMPCHECK
FULL:
CJNEA,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计
SETBRING
MOVA,R6
JZQUIT;计时完毕
MOVR0,#00H
DECR6;一秒标志减1
AJMPCHECK
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP3.1,QUIT;如按下停止键退出
ACALLDISPLAY
JBOK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华东 交通大学 单片机 课程设计