新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 延迟使用8051定时器

延迟使用8051定时器

作者:时间:2023-04-10来源:电子产品世界收藏

在这个项目中,我将讨论一下中的,以及如何使用生成一个延迟。

本文引用地址:http://www.eepw.com.cn/article/202304/445432.htm

时间延迟的产生是嵌入式系统中最重要的概念。大多数情况下,我们需要在任何应用中的两个动作之间产生精确的时间延迟。我们可以使用像LOOPs这样的技术或使用内置的延迟函数来产生时间延迟。

但这些都不是产生时间延迟的精确方法,因此我们将使用来产生精确的时间延迟。这个概念类似于时间延迟继电器的概念。

项目背后的原理

大多数的控制器都有内置的定时器。这些定时器不仅用于产生时间延迟,而且还用于计数目的。当一个动作或事件发生时,计数器的值会递增1。

另一方面,定时器被用来产生延迟。中的定时器是由SFRs(特殊功能寄存器)控制的。不同操作模式下的定时器是由特殊功能寄存器配置的。

这个项目的主要原理是在特殊功能寄存器的帮助下,用计时器产生一个延迟。

Delay using 8051 Timers Image 1

使用8051定时器的 图像1

Delay using 8051 Timers Image 2

使用8051定时器的 图片2

电路图 

尽管外部元件(除了振荡器)在产生延迟方面没有什么作用,但我还是做了一个简单的电路,我将用1秒的延迟来闪烁一个LED,这个延迟将在8051定时器的帮助下产生。

Delay using 8051 Timers Circuit Diagram

使用8051定时器的电路图所需元件

AT89C51单片机

8051编程器

编程电缆

LED

330Ω 电阻器

2 - 10KΩ 电阻器

10μF/16V 电容

2 - 33pF 电容

11.0592MHz晶体

按钮 

电路设计

这个电路的主要部件是AT89C51控制器。8051微控制器的复位电路是由一个按钮、一个10KΩ电阻和一个10μF电容组成的。

一个11.0592MHz的uartz晶体和两个33pF的陶瓷电容组成了8051微控制器的振荡器电路,并连接到第18和19脚。

最后,一个LED通过一个330Ω的电阻连接到P2.0上,以显示时间延迟。

8051定时器 寄存器描述

TMOD 寄存器

TMOD Register

上位数(TMOD.7至TMOD.4)用于配置定时器1,下位数(TMOD.3至TMOD.0)用于配置定时器0。

GATE:如果该引脚为高电平,那么当微控制器的相应INT引脚出现中断时,相应的定时器就会被激活。

C/T:该引脚用于选择定时器或计数器。如果该引脚为高电平,则作为一个计数器来计算外部事件。如果该引脚为低电平,则作为定时器使用,产生时间延迟。

M1和M0:这些位用于选择不同的定时器模式。

M1 and M0 Bits

M1和M0位

13位定时器:该模式使用高字节的8位和低字节的其余5位。在这种模式下,定时器的值从0000H到1FFFH。

16位定时器:这种模式最常用于产生时间延迟。在这种模式下,所有的16位都用于定时器,值从0000H到FFFH不等。

如果数值XXXXH被加载到定时器寄存器中,那么产生的时间延迟等于[(FFFH-XXXXH+1)*(一个时钟脉冲的周期)]。

一个时钟脉冲的时间周期等于1.085μs的11.0592MHz频率。

8位自动重新加载: 在这种模式下,初始值被加载到高字节,同样的值被加载到低字节。计时器的值从00H到FFH。该模式用于设置串行通信的波特率。

分割模式: 在这种模式下,定时器被分成两个8位定时器。这些8位定时器可以从00H到FFH计数。这种模式用于我们需要额外的8位定时器或计数器的应用中。

TCON寄存器

这是一个特殊功能的寄存器,用于控制定时器的运行。在这个寄存器中,只有上面的几位是用来控制定时器的,其余的位是用来控制中断的。

TCON Register

TF1: 该位在定时器1溢出时被自动设置为1。

TR1:该位用于启用定时器1。该引脚必须为高电平才能启用定时器1。

TF0:当定时器0溢出时自动设置为1。

TR0:在此位上置1,以启用定时器0。

使用8051定时器产生精确延时的步骤

为了准确地产生时间延迟、用定时器的时钟周期来划分时间延迟。

NNNN=时间延迟/1.085μs

从65536中减去结果值。

MMMM=65536-NNN

将差值转换为十六进制形式。

MMMMd=XXYYh

将此值加载到定时器寄存器中。

TH=XXh

TL=YYh

产生1ms延迟的延迟函数

为了产生1ms的延迟,使用上述步骤的计算方法如下。

NNNN=1ms/1.085μs≈922。

MMMM = 65536-922 = 64614

64614的十六进制=FC66h

用0xFC加载TH,用0x66加载TL

下面的函数将使用8051定时器0产生一个1ms的延迟。

使用定时器进行LED闪烁的代码

为了演示使用8051定时器的延迟功能,我将闪烁一个周期为2秒的LED,即LED将被打开1秒和关闭1秒。

如何操作?

首先将程序刻录到AT89C51控制器上

按照电路图的要求进行连接

打开电源,现在你可以观察到LED的切换,有一定的时间延迟。

如果你把输出连接到示波器,你可以观察到方波。

电路应用

在嵌入式系统应用中,我们需要精确的时间延迟。

这个系统用来产生方波。

在超声波模块应用中使用



评论


相关推荐

技术专区

关闭