基于52单片机的数字秒表设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

摘要在单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,使单片机得到了广泛的应用,从小的电子产品到大型的工业控制,单片机都起到了举足轻重的作用。单片机小的系统结构可谓是具有可编程硬件的一个缩影,对我们学习和研究微机系统具有重大意义。本文对当前数字秒表开发与设计进行比较和分析最终确定采用AT89S52单片机实现数字秒表的设计。本设计以AT89S52单片机为核心,采用7位LED数码管显示以及外部中断电路来实现数字秒表的基本功能。本文简单介绍了其系统组成,重点讨论了其硬软件的实现过程,并对其计时精度进行了确定,使其达到0.01秒,并能实现0~99.99秒的计时。最后通过对硬件系统的仿真观察其实际运行情况,给我们以直观的认识。关键字:单片机数字秒表中断定时目录第一章硬件设计------------------------------------------------------1.1总体方案的设计----------------------------------------------1.2单片机的选择-------------------------------------------------1.3显示电路的设计----------------------------------------------1.4系统总体电路的设计----------------------------------------第二章软件设计-------------------------------------------------------2.1主程序设计-----------------------------------------------------2.2中断程序设计--------------------------------------------------2.3程序清单--------------------------------------------------------第三章系统调试-------------------------------------------------------3.1程序编译--------------------------------------------------------3.2程序仿真--------------------------------------------------------第四章结束语----------------------------------------------------------参考文献------------------------------------------------------------------第一章硬件设计1.1总体方案的设计硬件电路的设计要遵循以下原则:(1)在性价比满足应用系统要求的基础上,选择更可靠、更熟悉的单片机,缩短研制周期。(2)尽可能选择较成熟的典型应用电路,以提高系统的可靠性。(3)单片机内部的资源与外部扩展资源应在满足应用系统设计要求的基础上留有余地,为进一步升级和扩展其功能提供方便。(4)应充分结合软件方案统筹考虑硬件结构,通常硬件功能较完善,其相应的软件就简单,但硬件成本较高;而硬件功能略低,其相应的软件就复杂。实际中应尽量以软件替代硬件来降低成本。(5)整个系统的相关器件应尽可能做到性能匹配,如电平、速度的匹配等。(6)充分考虑整个系统的抗干扰设计,如选择具有抗干扰设计的单片机并充分筛选芯片与器件,在电路中采取隔离和屏蔽措施等。根据以上原则,通过分析与比对,我们选用较熟悉的具有内部程序存储器的AT89S52单片机作为主控电路,选用四位共阴极的7段数码管作为显示电路来组成硬件电路。其基本原理图如下所示在硬件电路中,利用AT89S52单片机的定时器作精确的定时,利用数码管对其进行显示;控制按钮利用外部中断0使其实现启动、外部中断1使其实现暂停的功能,设置中断为边沿触发方式,P0口输出段码数据,P2.0~P2.1连上译AT89S52单片机控制开关四位数码管位控制码器作为位选;计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。1.2单片机的选择本设计在选取单片机时,在充分查阅资料并对各种单片机有一个初步了解的基础上选用了ATMEL公司的AT89S52。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,它支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52单片机采用40脚的DIP封装,其引脚图如下所示。1.3显示电路的设计对于数字显示电路而言,通常采用LCD显示或LED显示。对于一般的段式LCD,需要专门的驱动电路,而且可视性差;对于具有驱动电路和单片机接口的LCD显示模块,一般多采用并行接口,对单片机的接口要求较高,占用资源多;另外,AT89S52单片机本身没有专门的LCD驱动接口。而LED数码管作为一种主动显示器件,具有结构简单、亮度高、响应速度快、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或者远距离操作。因此在本设计中,我们采用7段数码管作为显示介质。数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用四位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂,所以采用动态显示。P1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RST/VPDP0.7P3.0RXDEA/VPPP3.1TXDALE/PROGP3.2INT0PSENP3.3INT1P2.7P3.4T0P2.6P3.5T1P2.5P3.6WRP2.4P3.7RDP2.3P2.2XTAL2XTAL1P2.1VSSP2.0动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管并送出相应的段码,在另一时刻选通另一数码管,并送出相应的段码,依次规律循环,即可以使各位数码管显示将要显示的字符,虽然这些字符是在不同时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。显示电路如下图所示1.4系统总体电路的设计系统采用AT89S52单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。开始键和暂停键使用了外部中断,所以需要连到单片机的P3.2和P3.3引脚上,这两个I/O口的第二功能是单片机的外部中断0端口和外部中断1端口。显示电路由四位数码管组成,采用动态显示方式,因此有8位段控制和4位位控制,8位段接控制接P0口,P0.0~P0.7分别控制数码管的abcdefgdp显示,位控制接在P2.0和P2.1两个口,在通过一个2—4译码器实现位控制。系统总体电路如下图所示AT89S52段驱动位驱动四位数码管XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89S52A2Y04B3Y15Y26E1Y37U2:A74LS139234567891RP1RESPACK-8第二章软件设计待硬件电路接线完成后,通常可先编写简单的测试程序对硬件电路进行测试,排除硬件电路设计中存在的错误。然后根据设计任务的要求确定系统程序的整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,并画出各程序模块的流程图,根据流程图逐一编写程序,最后将各个模块连接成完整的程序。2.1主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的关系。主程序主要是设置定时器的工作模式,对定时器赋初值,开总中断、两个外部中断以及定时器溢出中断。并设置外部中断为脉冲边沿触发方式。2.2中断程序设计中断是通过硬件来改变CPU的运行方向的。计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。中断之后所执行的相应的处理程序通常称之为中断服务或中断处理子程序,原来正常运行的程序称为主程序。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为中断的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。本方案中用到了三个中断:外部中断0、外部中断1和定时器T0溢出中断。按CPU在响应中断时的处理顺序,先处理高级中断,后处理低级中断,若有多个同级中断时,则应按自然优先顺序处理。(1)外部中断0服务程序外部中断0服务程序结合外部P3.2键实现数字秒表的启动功能。流程如下图所示。(2)外部中断1服务程序外部中断1服务程序结合外部P3.3键实现数字秒表的停止功能。流程图如下所示。外部中断0入口启动定时器T0TR0=1中断返回(3)定时器T0中断服务程序当T0溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程图如下。外部中断1入口停止计时TR1=0中断返回定时器中断入口重装计数初值中断次数加1中断次数到10?中断次数清零,0.01秒位加一0.01秒位到10?0.01秒位清零,0.1秒位加一0.1秒位到10?0.1秒位清零,1秒位加一1秒位到10?1秒位清零,10秒位加一10秒位到10?10秒位清零中断返回2.3程序清单#includereg52.hunsignedintdatatable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示码值unsignedinti,j,k,l,count;voiddelay(unsignedintz)//延时程序{unsignedintx,y;for(x=z;x!=0;x--)for(y=110;y!=0;y--);}voidmain(){TMOD=0x01;//

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功