51单片机数字秒表设计报告论文Word下载.docx
《51单片机数字秒表设计报告论文Word下载.docx》由会员分享,可在线阅读,更多相关《51单片机数字秒表设计报告论文Word下载.docx(20页珍藏版)》请在冰点文库上搜索。
本设计是由硬件电路和软件程序两部分组成,硬件电路由AT89C51单片机、按键控制电路、数码显示电路、晶振电路以及复位电路组成,它使用元件少,电路结构简单,功能强大;
软件采用C语言程序设计,使用keil编译源程序,产生的可执行性文件能够让单片机快速执行。
该设计充分利用单片机内部资源,通过程序利用定时器中断服务程序对计时秒表开始、暂停、清零等操作进行处理,提高单片机的工作效率,使得系统能实现0~99秒的计时。
关键字:
51单片机;
秒表;
定时器;
中断服务程序
ABSTRACT
advancedelectroniccounter,moreapplicationinteachingequipment,timing,etc.,andadoptsdigitaldisplay,intuitive,easytoread,convenientfeatures,andmanyotheradvantages.Thisdesignisconsistsoftwoparts,hardwarecircuitandsoftwareprogram,thehardwarecircuitiscontrolledbyAT89C51,keycircuit,digitaldisplaycircuit,crystalscircuitandresetcircuit,itUSESlesscomponent,thecircuitstructureissimple,powerful;
SoftwareusingClanguageprogramdesign,usethekeilcompilersourcecode,canlettheenforceabilityfilemicrocontrollerrapidexecution.Thisdesignmakefulluseofthesinglechipmicrocomputerinternalresources,throughtheapplicationusingthetimerinterruptserviceroutinefortimingstopwatchstart,pause,resetoperationssuchasprocessing,improvetheworkefficiencyofthesinglechipmicrocomputersystemcanrealizethetimingof0~99seconds.
Keywords:
51singlechip,microcomputerAstopwatch,Thetimer,Interruptserviceroutin
第一章引言
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对于我们每个人来说都是很宝贵的,市场上出现的各式个样的钟表都很受消费者的欢迎和喜爱,钟表的数字化给人们生产生活带来了极大的方便,满足大家的需求,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等,所有这些,都是以钟表数字化为基础的。
本秒表设计就是利用单片机体积小、成本低、抗干扰能力强、面向控制、可以实现分机各分布式控制等优点,采用目前市场上性能价格比较高的MCS-52单片机设计而成的最小系统。
1.1秒表的概述
秒表是电器制造,电国,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、廷时器、定时器等的时间测试。
目前所使用的电秒表大多是指针式或集成电路型的,结构相对复杂、测试功能单一。
但我们这次设计的秒表比较简单,所以使用很简单。
1.2本设计任务
利用AT89C51单片机来制作一个手动计数器,在AT89C51单片机的P3.5管脚接一个轻触开关,作为手动计数的按钮,用单片机的P0.0-P0.7接两个共阳数码管,作为00-99计数的位显示。
(1)按下开始键后,开始计时。
(2)按下暂停键后,计时停止。
(3)按下清零键后,计时归零。
1.3系统主要功能
99秒计时器主要是用在精确计时方面。
比如:
学校里的校运会、答题倒计时等方面。
它通过一个按键来控制它的开和停,它能及时有效的记录瞬间时间。
而且它在我们生活中运用很广泛,希望我们做的这个计时器对以上方面有所帮助。
它也许比较简单,而且有可能达不到很多人的要求,但我相信通过我们过一步的学习,我们一定会制造出更好的系统,为社会大众服务。
第二章硬件设计
2.1总体方案的设计
数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。
本设计中用单片机和数码管组成数字秒表力求结构简单。
设计中包括硬件电路的设计和系统程序的设计。
硬件电路主要有主控制器、控制按钮与显示电路组成。
主控制器采用单片机AT89S52,显示电路采用两位共阳极数码管显示计时时间。
本设计利用AT89S52单片机的定时器,使其能精确计时。
利用中断系统使其实现启动和暂停的功能,P0口输出段码数据,P2.0~P2.1连上译码器作为位选,P3.2和P3.3接口的两个按钮分别实现启动和暂停功能。
设计的基本要求是正确性。
硬件电路按下图2-1进行设计。
图2-1硬件设计总框图
计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出1000次中断请求就对1s位(即最后一位)加1,1s位加到10就对10s位加1,以此类推,直到99s为止。
再看按键的处理。
两个按键采用中断的方法,设置外部中断0和外部中断1位脉冲边沿触发方式,这样一来每当按键按下时便会触发中断,从而实现启动和暂停。
2.2单片机的选择
本设计在选取单片机时,充分借鉴了许多成型产品使用单片机的经验。
并根据自己的实际情况,选用了ATMEL公司的AT89S52。
ATMEL公司的89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作、低廉的价格完全替代了87C51/62和8751/52,低电压、低功耗,有DIP、PLCC、QFP封装,是目前性能最好、价格最低、最受欢迎的单片机之一。
AT89S52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8XC52相同,其主要用于汇聚调整时的功能控制。
功能包括对汇聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,汇聚调整控制,汇聚测试图控制等。
AT89S52单片机采用40脚的DIP封装,如下图2-2所示。
图2-280C51引脚图
(1)主电源引脚Vss和Vcc
Vss接地
Vcc正常操作时为+5V接地,外接晶振引脚XTAL1和XTAL2
a、XTAL1内部振荡电路反相放大器的输出端,是外接晶体的一个引脚。
当采用外部振荡时,此引脚接地。
b、XTAL2内部振荡电路反相放大器的输出端,是外接晶体的的另一端。
当采用外部振荡时,此引脚接外部振荡源。
(2)控制或与其他电源复用引脚
a、RST/VPD当振荡器运行是,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。
b、ALE/PROG正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部存储器,ALE引脚以不变的频率(振荡器频率的1/6)周期性的发出正脉冲信号。
因此,它可以用作对外输出的时钟,或用于定时目的。
c、PSEN外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,PSEN在每个机器周期内两次有效。
d、EA/Vpp内部程序存储器和外部程序存储器选择端。
当EA/Vpp位高电平时,访问内部程序存储器,当EA/Vpp为低电平时,则访问外部程序存储器。
对于EPROM编程期间,此引脚上加21VEPROM编程电源(Vpp)。
(3)输入/输出引脚P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7。
a、P0口(P0.0~P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。
b、P1口(P1.0~P1.7)是一个带有内部上拉电阻的8位准双向I/O口。
能驱动四个LSTTL负载。
c、P2口(P2.0~P2.7)是一个带有内部上拉电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。
P2口可以驱动四个LSTTL负载。
d、P3口(P3.0~P3.7)是一个带有内部上拉电阻的8位准双向I/O口。
2.3各部分电路设计
2.3.1系统时钟电路的设计
80C52单片机内有一个高增益反相放大器,其频率范围为1.2MHz~12MHz,XTAL1和XTAL2分别为放大器的输入端和输出端。
时钟可以由内部方式或外部方式产生。
80C52内部方式时钟电路如图2-3(a)所示。
在XTAL1和XTAL2引脚上外接定时元件,就能构成自激振荡电路。
定时元件通常采用石英晶体和电容组成的并联谐振电路。
电容器C1和C2主要起频率微调作用,电容值可选取为30pF左右(外接晶体时)或40pF左右(外接陶瓷谐振器时)。
80C52外部方式时钟电路如图2-3(b)所示。
XTAL1接外部振荡器,XTAL2悬空。
对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。
图2-380C51单片机的时钟电路
2.3.2系统复位电路的设计
电路中C3、R15组成复位电路,该电路采用的是上电复位,即整个系统从新开始工作。
复位电路有很多种,分别可由不同的元件组成,可靠性也各有不同,本设计采用简单的上电复位。
如图2-4所示。
图2-4复位电路
2.3.3按键与按钮电路设计
本设计中只使用一个按键开关SET,来对时、分、秒进行调整。
SET还作为复位按钮,也可以进入省电(不显示LED数码管)和正常显示三种状态。
图2-5所示为按钮电路。
图2-5按钮电路
2.4显示电路的选择与设计
对于数字显示电路,通常采用液晶显示或数码管显示。
对于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;
对于具有驱动电路和单片机接口的液晶显示模块,一般多采用并行接口,对单片机的接口要求较高,占用资源多;
另外,AT89S52单片机本身没有专门的液晶驱动接口。
而数码管作为一种主动显示器件,具有亮度高、响应速度快、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或者远距离操作。
因此在本设计中,我们采用7段数码管作为显示介质。
数码管显示可以分为静态显示和动态显示两种。
由于本设计需要采用两位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂,所以采用动态显示。
驱动数码管采用动态显示。
动态驱动是将所有的数码管的8个显示笔画“a,b,c,d,e,f,g,dp”的同名端连在一起,另外每个数码管中的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控制显示。
P0口加上拉电阻,P0端口必须外接上拉电阻才能正常输出“0”和“1”电平,保证P1端口所接的LED数码管能够正常显示数字,和软件相配合来驱动数码管显示。
2.4.1数码管的内部结构
数码管的结构有单个数码管和集成数码管(即一个封装内至少有两个数码管集成在一起)两种,结构图如图7所示,其中(a)为数码管的引脚图,有共阴极和共阳极两种。
本设计采用共阳极数码管,其内部结构图如图(b)所示。
它们都是由基本的7个条状的发光二极管(LED)排列而成的,可实现数字“0-9”及少量字符的显示。
另外,为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,把这些发光二极管命名为“a、b、c、d、e、f、g、DP”,对应引脚如图2-6所示。
图2-6数码管的内部结构与引脚图
2.4.2数码管的外部结构
数码管的外部结构图,如图2-7所示。
图2-7数码管的外部结构图
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;
各位的公共阳极位选线由另外的I/O口线控制。
动态方式显示时,各数码管轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管并送出相应的段码,在另一时刻选通另一数码管,并送出相应的段码,依次规律循环,即可以使各位数码管显示将要显示的字符,虽然这些字符是在不同时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。
数码管显示总体框图如下图2-8所示。
图2-8数码管显示总体框图
2.5系统总体电路的设计
系统总体电路如下图2-9所示。
AT89S52单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。
开始键和暂停键使用了外部中断,所以需要连到单片机的P3.2和P3.3引脚上,这两个I/O口的第二功能是单片机的外部中断0端口和外部中断1端口。
显示电路由四位数码管组成,采用动态显示方式,因此有8位段控制和2位位控制,8位段控制位接P0口,P0.0~P0.7分别控制数码管的abcdefgdp显示,位控制分别接在P2.0和P2.1口实现位控制。
图2-9系统总体电路
第三章软件设计
3.1主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。
其中主程序是整个程序的主体。
可以对各个中断程序进行调用。
协调各个子程序之间的关系。
主程序主要是设置定时器大的工作模式,对定时器赋初值,开总中断、两个外部中断以及定时器溢出中断。
并设置外部中断为脉冲边沿触发方式。
其主程序执行流程见图3-1所示。
图3-1主程序流程图
3.2中断程序设计
本方案中用到了三个中断:
外部中断0、外部中断1和定时器T0溢出中断。
CPU在响应中断时,先处理高级中断,后处理低级中断,若有多个同级中断时,则应按自然优先顺序处理。
例如当CPU正在处理一个中断申请时,又出现了另一个优先级比它高的中断请求,这时,CPU就暂停对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。
待服务结束,再继续执行原来较低级的中断服务程序。
而当CPU为级别高的中断服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行编程是要注意中断的使用,避免出现中断的嵌套。
合理分配中断对本设计是很重要的。
(1)外部中断0服务程序
外部中断0服务程序结合外部P3.2键实现数字秒表的启动功能。
流程如下图3-2所示。
图3-2外部中断0服务程序框图
(2)外部中断1服务程序
外部中断1服务程序结合外部P3.3键实现数字秒表的停止功能。
流程图如下图3-3所示。
图3-3外部中断1服务程序框图
(3)定时器T0中断服务程序
当T0=1后,向CPU发出中断请求信号。
CPU跳转到定时中断程序执行。
当中断次数为1000时为1s。
具体流程如下:
定时器中断入口重置计数初值中断次数加1中断次数等于1000?
中断次数清零,1秒位加11秒位到10?
1秒位清零,10秒位加110秒位到10?
10秒位清零中断返回。
3.3程序清单
#include<
reg52.h>
sbitTR1=P3^5;
unsignedintdatatable[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//显示码值
unsignedinti,j,count;
voiddelay(unsignedintz)//延时程序
{
unsignedintx;
for(x=z;
x!
=0;
x--);
}
voidex0()interrupt0//外部中断0
TR0=1;
//开定时器,开始计数
voidex1()interrupt2//外部中断0
TR0=0;
//停止计数
}
voidtimer0()interrupt1//定时器T0溢出中断
TH0=0xfc;
//重装计数初值
TL0=0x18;
count++;
//溢出中断次数加一
if(count==1000)
{
count=0;
i++;
//溢出1000次,1s位加一
if(i==10)
{
i=0;
//1s位到10了,清零,10s位加一
j++;
if(j==10)
{
j=0;
//10s位到10了,清零
}
}
}
voidmain()
TMOD=0x01;
//设置定时器为模式1
EA=1;
//开中断
EX0=1;
EX1=1;
ET0=1;
IT0=1;
//设置外部中断位脉冲边沿触发方式
IT1=1;
while
(1)//数码显示
if(!
TR1)
i=0;
j=0;
TR0=0;
P0=0xff;
//消除鬼影
P2=0x02;
P0=table[i];
delay(10);
P2=0x01;
P0=table[j];
}
第四章系统调试
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析各种模拟器件和集成电路。
该软件的主要特点为:
实现了单片机仿真和SPICE电路仿真相结合的功能,支持目前主流单片机系统的仿真,提供了软件调试的功能,具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
在电子领域中起到了很大的作用,它的出现仿真不需要先焊接电路板,可以先仿真调试通过之后再焊接电路,节省了不少在硬件调试上花费的时间。
打开已经画好的ProteusDSN文件,双击图中的AT89S52芯片,就弹出一个窗口,在programfile项中通过路径选择在keil中生成hex文件,双击选中后确定,这样仿真图中的AT89C52芯片就已经读取了本设计中的hex文件,然后进行仿真。
在调试中遇到的问题:
1本设计电源是采用5V直流电源直接供电,故在硬件电板的焊接中直接采用5V电源供电。
2在对软件电路仿真时,电路的输出电压较低,致使电路软件不能达到预定效果。
经过检查,是引脚接错。
3在对各元器件的检查发现,由于硬件电路的焊接过程中的疏忽。
个别色环电阻阻值与要求有差别,阻碍了硬件电路的调试,经过仔细核对,排除了这些问题。
4对于电容器露在印制电路板面上多余引脚均需齐根剪去。
第五章总结
本设计的数字秒表是由AT89S52单片机、共阳极数码管和控制按键等器件组成的,设有两位计时显示。
计时精度能达到1s。
系统设计合理,线路简单,性能稳定、程序简单。
给出了较为详尽的电路设计方法。
本系统以单片机为核心,但仅单片机方面的知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软硬件结合,以作完善。
本系统主要由三章完成,第二章中,主要是硬件电路和其实现的功能,在本次设计中各部分都实现了其功能。
在第三章中,主要介绍的是软件实现过程的框图。
在第四章中,粗略地介绍了硬件和软件的调试,最终保证系统能够正常运行。
通过本次课程设计,我们复习巩固了以前所学的数字电路、单片机原理及接口技术等知识,加深了对各门课程间相互关系的理解,并成功使用了keil、Proteus两款软件,使理论知识系统化、实用化。
在整机联调阶段,由于焊接水平有限和部分零件的参数不匹配从而出现了很多问题(LED不显示数字、数字以乱码形式出现等等)。
所以我们认为在我们未来的生活或工作当中,无论做什么事情,都要有认真仔细的态度,以免造成不可挽回的损失。
同时在课程设计的过程中,我也发现了本系统的许多不足和可以改进的地方,虽然存在不足,但本设计开发的数字秒表仍有一定的使用价值。
参考文献
[1]李朝青.单片机原理及接口技术(第3版).北京:
北京航空航天大学出版社,2006
[2]赵建领.51系列单片机开发宝典.北京:
电子工业出版社,2007
[3]朱清慧,张凤蕊,翟天嵩,王志奎.Proteus教程-电子线路设计、制版与仿真.北京:
清华大学出版社,2008
[4]王幸之.AT89系列单片机原理与接口技术.北京:
航空航天大学出版社,2004
[5]李念强.单片机原理及应用.北京:
机械工业出版社,2007
[6]何桥.单片机原理及应用.北京:
中国铁道出版社,2004
[7]胡健.单片机原理及接口技术实践教程.北京:
机械工业出版社,2005
[8]朱宇光.单片机应用新技术教程.北京:
电子工业出版社,2000
[9]刘大茂.单片机原理及应用.上海:
上海交通大学出版社,2001
[10]马家辰.单片机原理及接口技术.哈尔滨:
哈尔滨工业大学出版社,2001
[11]李建忠.单片机原理及应用.西安:
西安电子科技大学出版社,2002
[12]杨将新.单片机程序设计及应用.北京:
电子工业出版社,2006