单片机八路抢答器课程设计.docx
《单片机八路抢答器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机八路抢答器课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
单片机八路抢答器课程设计
一课程设计的目的和要求.........................2
二AT89C51简介.................................2
三总体设计.....................................6
四硬件电路设计.................................7
五软件设计.....................................10
六编写程序.....................................11
七仿真调试.....................................12
八总结.........................................12
九参考文献....................................13
附录原理及电路总框图...........................14
一、课程设计的目的和要求
单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。
通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。
根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和存储器扩展设计、接口技术应用设计。
其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。
存储器扩展设计要求学生掌握常用半导体芯片与单片机的接口,如EPROM存储器用作外部程序存储器时与单片机的连接关系,SRAM存储器用作外部数据存储器时与单片机的连接关系,E2PROM存储器用作外部程序/数据存储器时与单片机的连接关系。
能合理分配和使用单片机的内部和外部存储器,编程实现正常的读写功能。
设计目的
在进行智力竞赛时,为了具有一种反应准确显示方便的抢答装置,下面设计了一种带有定时功能的多路抢答器。
设计任务与要求:
1、八路抢答,各用一个抢答按钮;
2、设置一个控制开关,该开关由主持人控制;
3、具有数据锁存和显示功能,抢答开始后若有选手按动抢答按钮,编号立即锁存,此外,要封锁输入电路,禁止其他选手抢答。
优先抢答选手的编号一直保持到系统清零为止;
4、当主持人按下“开始”按钮,抢答开始。
5、当某一路抢答成功时,在数码管上显示成功信息和该路的号数;
二、AT89C51简介
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash
存储单元,功能强大AT89C51单片机(图3-1)可为您提供
许多高性价比的应用场
合,可灵活应用于各种控制领域。
主要性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器
·1000次擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式图3-1AT89C51单片机
功能特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
引脚功能说明
·Vcc:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上
拉电阻。
在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
·P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
FIash编程和程序校验期间,P1接收低8位地址。
·P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表3-1所示:
表3-1P3口的第二功能
端口引脚
第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2
(外中断0)
P3.3
(外中断1)
P3.4T0(定时/计数器0外部输入)
P3.5T1(定时/计数器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·ALE/
:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的l/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
·
:
程序储存允许(
)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次
有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的
信号
不出现。
·EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
·XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
·XTAL2:
振荡器反相放大器的输出端。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
二、总体设计
(一)设计思路
该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:
<1>可靠性好:
单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
<3>控制功能强:
单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
其原理框图如下:
如图所示为电路框图。
其工作原理为:
接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。
选手抢答时,抢答器完成:
优先判断、编号锁存、编号显示,对应选手灯亮。
当一轮抢答之后,禁止二次抢答。
如果再次抢答必须由主持人再次操作“开始、停止”状态开关。
(二)抢答器的工作原理
抢答器的工作原理是利用单片机,用一个共阳极LED数码管来显示,用P0口作为数码管的八个段选,P2口接8个按键,提供选手抢答,P3.0按键,为主持人开始按键,P1口灯亮。
抢答功能:
通过八路按键配合程序来实现抢答功能。
当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示。
三、硬件电路设计
1.原理图的确定
单片机实现抢答的原理图:
抢答电路的接口电路
2.抢答器电路
参考电路如上图所示。
该电路完成两个功能:
一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。
如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
3.时序控制电路设计
时序控制电路是抢答器设计的关键,它要完成以下功能:
a.主持人将控制开关拨到"开始"位置时,抢答电路和定时电路进人正常抢答工作状态。
b.当参赛选手按动抢答键时,数码管显示,灯号亮。
4.晶振电路的设计
MSC-51单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。
本设计中采用内部时钟方式。
单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。
时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。
一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。
加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。
电容C1,C2的作用有两个:
一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。
晶振电路的设计如图2-2所示:
晶振电路原理图
5、复位电路
在单片机工作过程中,由于某种原因使单片机陷入“死机”状态,或根据需要采用强制手段使程序重新开始执行等等,需要采用按钮开关复位方式。
当按钮开关S按下时,+5V电源通过S接入电阻构成的电路网络,设计时使电阻上的分压达到高电平的阀值,就可以使单片机复位。
因为我们按动按钮开关使其闭合的时间远远大于单片机复位所用的时间。
通常把上电自动复位电路和按钮开关复位电路综合在一起,这样既可以在每一次电源接通时系统复位,也可以满足强制复位的要求。
6.选手抢答键(矩阵式键盘)
AT89C51的P2口做一个为选手抢答的输入按键引脚,P2.0至P2.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P2口8个端口的电平变化从P2口输入,经单片机处理后从P0输出由数码管显示抢答者编号。
7.显示与显示驱动电路
此电路包括显示和驱动,显示采用数码管,驱动用P2口,违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。
驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。
在+5V电压下接10k的电阻,保证正常压降。
四、软件设计
为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P3.0按键,程序开始运行,然后调用键盘扫描子程序,编写键盘扫描程序。
当在扫描到有人按下了答题键,马上跳出扫描、调用显示程序、封锁键盘。
五、编写程序
#include
#defineucharunsignedchar
sbitge=P3^5;
sbitshi=P3^4;
sbitL1=P2^3;
sbitL2=P2^2;
sbitL3=P2^1;
sbitL4=P2^0;
sbitrst=P3^0;
uchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};
uchardis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
main()
{
uchari,temp;
while
(1)
{
ge=1;
shi=0;
while(P0==0xff)
{
P2=0xdf;
for(i=0;i<=1;i++)
{
if(L1==0){P0=table[(i)*4+1];P1=dis[(i)*4];};
if(L2==0){P0=table[(i)*4+2];P1=dis[(i)*4+1];};
if(L3==0){P0=table[(i)*4+3];P1=dis[(i)*4+2];};
if(L4==0){P0=table[(i)*4+4];P1=dis[(i)*4+3];};
temp=P2;
temp=temp|0x0f;
temp=temp>>1;
temp=temp|0x8f;
P2=temp;
}
}
if(rst==0){P0=0xff;P1=0xff;};
}
}
六、仿真调试
Proteus仿真的结果
通过仿真结果证实,该方案可行。
该设计方案同过51系列单片机的P0口作为段选输出,用P0口作为位选输出,动态扫描LED显示管,显示键号,并通过接在P1口灯显示键号。
P2口接选手按键,控制抢答。
本设计实现简单。
六、总结
经过一周的单片机课程设计,终于完成了八路抢答器的设计,虽然没有完全达到设计要求,但还是收获良多。
通过这次课程设计,使我更进一步地熟悉了单片机芯片的工作原理和其具体的使用方法。
单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,这锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
还有了解了课程设计的一般步骤,和设计中应注意的问题。
设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
下面我对整个设计的过程做一下简单的总结。
第一,接到任务以后进行选题。
选题是设计的开端,选择恰当的、感兴趣的题目,这对于整个设计是否能够顺利进行关系极大。
好比走路,这开始的第一步是具有决定意义的,第一步迈向何方,需要慎重考虑。
否则,就可能走许多弯路、费许多周折,甚至南辕北辙,难以到达目的地。
因此,选;题时一定要考虑好了。
第二,题目确定后就是找资料了。
查资料是做设计的前期准备工作,好的开端就相当于成功了一半,到图书馆、书店、资料室去虽说是比较原始的方式,但也有可取之处的。
总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。
第三,通过上面的过程,已经积累了不少资料,对所选的题目也大概有了一些了解,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。
第四,有了研究方向,就应该动手实现了。
其实以前的三步都是为这一步作的铺垫。
通过这次设计,我对数字电路设计中的逻辑关系等有了一定的认识,对以前学的数字电路又有了一定的新认识,温习了以前学的知识,就像人们常说的温故而知新嘛,但在设计的过程中,遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容。
在这次设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法我们更好的理解知识,所以在这里非常感谢帮助我的同学。
在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。
在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。
而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。
虽然这个项目还不是很完善,但是在设计过程中所学到的东西是这次设计的最大收获和财富,使我终身受益。
七、参考文献
主要参考资料
《单片机原理及应用》张毅刚,高等教育出版社;
附录
原理及电路总框图: