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

发布者:WiseThinker最新更新时间:2015-06-18 来源: 51hei关键字:51单片机  数字秒表 手机看文章 扫描二维码
随时随地手机看文章
   近年来随着科学技术的发展,单片机的应用正在不断走下面还深入。本文简单阐述了基于单片机的数字秒表的的设计。本设计的主要特点是计时精度达到0.01秒,是各种体育竞赛的必要设备之一。

   本设计的数字秒表采用AT89S52单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情.
 一   硬件设计
                    

 1、1   总体方案的设计

数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。本设计中用单片机和数码管组成数字秒,表力求结构简单。

设计中包括硬件电路的设计和系统程序的设计。硬件电路主要有主控制器、控制按钮与显示电路组成。主控制器采用单片机AT89S52,显示电路采用四位共阴极数码管显示计时时间。

本设计利用AT89S52单片机的定时器,使其能精确计时。利用中断系统使其实现启动和暂停的功能,P0口输出段码数据,P2.0~P2.2连上译码器作为位选,P3.2和P3.3接口的两个按钮分别实现启动和暂停功能。设计的基本要求是正确性。硬件电路按下图进行设计。

本地图片,请重新上传

      计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。

    再看按键的处理。两个按键采用中断的方法,设置外部中断0和外部中断1位脉冲边沿触发方式,这样一来每当按键按下时便会触发中断,从而实现启动和暂停。

1.2 单片机的选择

    本设计在选取单片机时,充分借鉴了许多成型产品使用单片机的经验。并根据自己的实际情况,选用了ATMEL公司的AT89S52。

    ATMEL公司的89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作、低廉的价格完全替代了87C51/62和8751/52,低电压、低功耗,有DIP、PLCC、QFP封装,是目前性能最好、价格最低、最受欢迎的单片机之一。

    AT89S52为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8XC52相同,其主要用于汇聚调整时的功能控制。功能包括对汇聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,汇聚调整控制,汇聚测试图控制等。

单片机外部结构

AT89S52单片机采用40脚的DIP封装,如下所示。

本地图片,请重新上传

(1)主电源引脚Vss和Vcc

a、 Vss接地

b、 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口。能驱动四个LSTTL负载

1.3 显示电路的选择与设计

对于数字显示电路,通常采用液晶显示或数码管显示。对于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;对于具有驱动电路和单片机接口的液晶显示模块,一般多采用并行接口,对单片机的接口要求较高,占用资源多;另外,AT89S52单片机本身没有专门的液晶驱动接口。而数码管作为一种主动显示器件,具有亮度高、响应速度快、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或者远距离操作。因此在本设计中,我们采用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分别控制数码管的a b c d e f g dp显示,位控制接在P2.0和P2.1两个口,在通过一个2—4译码器实现位控制。

 

本地图片,请重新上传 

二  软件设计

2.1主程序设计

本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的关系。

主程序主要是设置定时器大的工作模式,对定时器赋初值,开总中断、两个外部中断以及定时器溢出中断。并设置外部中断为脉冲边沿触发方式。

2.2中断程序设计

本方案中用到了三个中断:外部中断0、外部中断1和定时器T0溢出中断。CPU在响应中断时,先处理高级中断,后处理低级中断,若有多个同级中断时,则应按自然优先顺序处理。例如当CPU正在处理一个中断申请时,又出现了另一个优先级比它高的中断请求,这时,CPU就暂停对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的中断服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行编程是要注意中断的使用,避免出现中断的嵌套。合理分配中断对本设计是很重要的。

(1)外部中断0服务程序

外部中断0服务程序结合外部P3.2键实现数字秒表的启动功能。流程如下图所示。

本地图片,请重新上传

 
[page]
(2)外部中断1服务程序

外部中断1服务程序结合外部P3.3键实现数字秒表的停止功能。

流程图如下所示。

本地图片,请重新上传

(3)定时器T0中断服务程序

当T0一处后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程如下。

2.3程序清单

#include

unsigned int data table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //显示码值

unsigned int i,j,k,l,count;

void delay(unsigned int z)                                                //延时程序

{

unsigned int x,y;

for(x=z;x!=0;x--)

for(y=110;y!=0;y--);

}

void main()

{

TMOD=0x01;                                             //设置定时器为模式1

TH0=(65536-1000)/256;                                   //给定时器赋定时初值

TL0=(65536-1000)%256;                               

EA=1;                                                              //开中断

EX0=1;

EX1=1;

ET0=1;

IT0=1;                                      //设置外部中断位脉冲边沿触发方式

    IT1=1; 

while(1)                                                          // 数码显示

{

P2=0x03;

P0=table[i];

delay(1);

P2=0x02;

P0=table[j];

delay(1);    

P2=0x01;

P0=(table[k]+0x80);

delay(1);

P2=0x00;

P0=table[l];

delay(1);

};

}

void ex0() interrupt 0                                                  //外部中断0

{

TR0=1;                                           //开定时器,开始计数

}

void ex1() interrupt 2                                                  //外部中断0

{

TR0=0;                                                           //停止计数

}

void timer0() interrupt 1                                         //定时器T0溢出中断

{

TH0=(65536-1000)/256;                                         //重装计数初值

TL0=(65536-1000)%256;

count++;                                              //溢出中断次数加一

 

if(count==10)

{

count=0;

i++;                                          //溢出10次,0.01s位加一

if(i==10)

{

i=0;                               //0.01s位到10了,清零,0.1s位加一

j++;

if(j==10)

{

j=0;                              //0.1s位到10了,清零,1s位加一

k++;

if(k==10)

{

k=0;                          //1s位到10了,清零,10s位加一

l++;

}

}

}

}

}
关键字:51单片机  数字秒表 引用地址:基于51单片机的数字秒表的设计

上一篇:MSP430和AT89C51单片机4x4键盘C程序
下一篇:10秒的秒表程序,带暂停

推荐阅读最新更新时间:2024-03-16 14:04

51单片机内部特殊功能寄存器分析
1. Warning 280:’i’:unreferenced LOC al variable 说明局部变量i 在函数中未作任何的存取操作,解决方法消除函数中i 变量的宣告 2 Warning 206:’Mus IC 3’:missing function-prototype 说明Music3( )函数未作宣告或未作外部宣告所以无法给其他函数调用 解决方法将叙述void Music3(void)写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3(void),即作外部宣告 3 Compling :C:\8051\MANN.C Error:318: CAN ’t open file ‘beep.h’
[单片机]
51单片机之外部中断应用实例(电平触发、边沿触发)
硬件:STC89C52RC 开发工具:Keil uVision4 前言:8051是一款很经典的、历史悠久的单片机,作为一款入门级的单片机8051受到很多初学者的欢迎。89c52是8051系列的成员之一,拥有8K字节程序存储空间,512字节随机数据存储空间;I/O口控制端口、中断功能、定时器及串行接口。下面详细讲述外部中断功能的使用。 外部中断:单片机提供的系统紧急事件的输入控制。事件触发的方式包括输入信号的下降沿触发、低电平触发。当触发中断后,单片机会跳到某一个固定的地址去执行中断服务程序。 外部中断信号由INT0、INT1引脚传送进来,如图所示: 有关中断处理的相关控制寄存器如下: 计时计数器控制寄存器 TCO
[单片机]
<font color='red'>51单片机</font>之外部中断应用实例(电平触发、边沿触发)
51单片机 漩涡流水点阵
#include reg52.h typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; uchar image = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; uchar T0RH, T0RL;
[单片机]
51单片机PWM温控风扇源代码
51系列单片机代码如下: #include reg52.h //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du ={0x28,0xee,0x42,0x72,0xe5,0xa8,0x41,0x77,0x20,0xa0, 0x60,0
[单片机]
实验一:清零、移数、判断(80C51单片机汇编语言编程)
将片内30H~40H及片外0010H~0100H清零,然后将片内41H~47H的内容移到片外0041H~0047H,判断 1、若(0041H) 15,则求平方存放到0050H中,并将位00H置1 2、若(0041H)=15,则加15存放到0050H中,并将位01H置1 3、若(0041H) 15,则减15存放到0050H中,并将位02H置1 汇编程序: ORG 0000H;设置初始地址 MOV R0,#30H;对片内30H~40H清零 MOV R1,#11H CLR A CON1:MOV @R0,A INC R0 DJNZ R1,CON1 MOV
[单片机]
51单片机的直接寻址与间接寻址
指令中直接给出操作数地址(dir)的寻址方式称为直接寻址。寻址对象为:1 内部数据存储器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名称表示。 以寄存器中的内容为地址,该地址的内容为操作数的寻址方式称为寄存器间接寻址。能够进行寄存器间接寻址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄存器间接寻址的存储空间包括内部数据存储器和外部数据存储器。由于内部数据存储器共有128字节,因此用一字节的R0和R1可间接寻址整个空间。而外部数据存储器最大可达64K,仅R0或R1无法寻址整个空间,为此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同寻址64K字
[单片机]
51单片机-STC89C52系列学习第一篇之IO口学习
STC89C52系列单片机IO口有三种工作模式: 1、准双向口/弱上拉(标准8051输出模式) 2、开漏输出模式 3、输入模式 其中P1/P2/P3/P4上电复位后为传统的8051的IO口模式,而P0口上电后是开漏输出。 P0口作为IO口使用时需要加4.7K-10K的上拉电阻。 新增特殊功能寄存器的声明示例: sfr P4 = 0xe8; sbit P40 = 0xe8; sbit P41 = 0xe9; sbit P42 = 0xea; sbit P43 = 0xeb; sbit P44 = 0xec; sbit P45 = 0xed; sbit P46 = 0xee; 将寄存器P4的位全部置为1: P4 = 0xff; 单
[单片机]
基于89C51单片机的环境噪声测量仪
   1 引 言      环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关、学校等需要对环境噪声进行测量和控制的场合。 2 声压级的测量机理   人耳的听阈一般是20μPa,痛阈一般是200 Pa,其间相差107倍,这样宽广的声压范围很不易测量,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved