基于52单片机的数字秒表设计Word文件下载.doc
《基于52单片机的数字秒表设计Word文件下载.doc》由会员分享,可在线阅读,更多相关《基于52单片机的数字秒表设计Word文件下载.doc(17页珍藏版)》请在冰豆网上搜索。
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
单片机
控制开关
四位数码管
位控制
在硬件电路中,利用AT89S52单片机的定时器作精确的定时,利用数码管对其进行显示;
控制按钮利用外部中断0使其实现启动、外部中断1使其实现暂停的功能,设置中断为边沿触发方式,P0口输出段码数据,P2.0~P2.1连上译码器作为位选;
计时器采用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封装,其引脚图如下所示。
P1.0VCC
P1.1P0.0
P1.2P0.1
P1.3P0.2
P1.4P0.3
P1.5P0.4
P1.6P0.5
P1.7P0.6
RST/VPDP0.7
P3.0RXDEA/VPP
P3.1TXDALE/PROG
P3.2INT0PSEN
P3.3INT1P2.7
P3.4T0P2.6
P3.5T1P2.5
P3.6WRP2.4
P3.7RDP2.3
P2.2
XTAL2
XTAL1P2.1
VSSP2.0
1.3显示电路的设计
对于数字显示电路而言,通常采用LCD显示或LED显示。
对于一般的段式LCD,需要专门的驱动电路,而且可视性差;
对于具有驱动电路和单片机接口的LCD显示模块,一般多采用并行接口,对单片机的接口要求较高,占用资源多;
另外,AT89S52单片机本身没有专门的LCD驱动接口。
而LED数码管作为一种主动显示器件,具有结构简单、亮度高、响应速度快、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或者远距离操作。
因此在本设计中,我们采用7段数码管作为显示介质。
数码管显示可以分为静态显示和动态显示两种。
由于本设计需要采用四位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂,所以采用动态显示。
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常各位数码管的段选线相应并联在一起,由一个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译码器实现位控制。
系统总体电路如下图所示
第二章软件设计
待硬件电路接线完成后,通常可先编写简单的测试程序对硬件电路进行测试,排除硬件电路设计中存在的错误。
然后根据设计任务的要求确定系统程序的整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,并画出各程序模块的流程图,根据流程图逐一编写程序,最后将各个模块连接成完整的程序。
2.1主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。
其中主程序是整个程序的主体。
可以对各个中断程序进行调用。
协调各个子程序之间的关系。
主程序主要是设置定时器的工作模式,对定时器赋初值,开总中断、两个外部中断以及定时器溢出中断。
并设置外部中断为脉冲边沿触发方式。
2.2中断程序设计
中断是通过硬件来改变CPU的运行方向的。
计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。
中断之后所执行的相应的处理程序通常称之为中断服务或中断处理子程序,原来正常运行的程序称为主程序。
调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为中断的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。
本方案中用到了三个中断:
外部中断0、外部中断1和定时器T0溢出中断。
按CPU在响应中断时的处理顺序,先处理高级中断,后处理低级中断,若有多个同级中断时,则应按自然优先顺序处理。
(1)外部中断0服务程序
外部中断0服务程序结合外部P3.2键实现数字秒表的启动功能。
流程如下图所示。
外部中断0入口
启动定时器T0
TR0=1
中断返回
(2)外部中断1服务程序
外部中断1服务程序结合外部P3.3键实现数字秒表的停止功能。
流程图如下