延迟使用8051定时器

时间:2023-04-10来源:电子产品世界

在这个项目中,我将讨论一下8051微控制器中的定时器,以及如何使用8051定时器生成一个延迟。

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

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

项目背后的原理

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

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

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

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的切换,有一定的时间延迟。

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

电路应用

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

这个系统用来产生方波。

在超声波模块应用中使用

关键词: 8051 微控制器 定时器 延时

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版