51单片机教程(十一)- 单片机定时器

发布于:2025-06-29 ⋅ 阅读:(17) ⋅ 点赞:(0)

11、单片机定时器

  • 项目目标

    • 通过定时器/计数器实现流水灯控制。
  • 知识要点

    • 定时器的结构。
    • TMOD和TCON;
    • 定时/计数器工作方式;
    • 定时/计数器编程步骤;

1、项目分析

  • 前面的流水灯的时间控制通过空循环语句来实现,定时不是很精确。本章通过用定时器来控制流水灯任务可以实现精确的时间控制。这就需要了解定时器的使用。定时器和计数器实质功能相同,本章利用LED灯二进制计数任务来掌握计数器的使用。

2、技术准备

1 背景

  • 从软件延时的缺点说起
    • 前面讲过的“用若干次空循环实现延时”的例子

    • 软件延时的缺点:

      • 延时过程中,CPU时间被占用,无法进行其他任务,导致系统效率降低。延时时间越长,该缺点便越明显,因此软件延时只适用于短暂延时,或简单项目。
    • 定时/计数器

      • 单片机中有多个小闹钟,可以实现延时,这些小闹钟就是“定时器”。

2 工作原理

  • 背景

    • LED闪烁使用【演示法】实现,一般情况下不会采用延时的方式实现,CPU在程序执行到delay函数过程中需要不断执行循环空语句,会占用的CPU资源;若单边机外设较多,导致无法监控到其他的外设的中断事件。

    • 常用方法是采用:中断法。
      请添加图片描述

  • 概念

    • 定时/计数器具有定时与计时的功能

      • 计数:指对外部脉冲信号进行技术,每来一个脉冲计数值加1;当产生的信号脉冲很有规律,则多少个脉冲就能知晓是过了多少秒,从而计数功能就可以演化为定时功能。

      • 定时:根据某个基准时钟,通过对基准时钟的计数来完成定时功能。

  • 作用

    • 产生所需频率的脉冲。如产生频率1000Hz,占空比为1:1的脉冲波。

    • 累加计数的功能,计数可在一段时间内记录信号A经整形后的脉冲个数。

      请添加图片描述

    • 频率测量的功能,测量脉冲宽度或在一定时间内测量脉冲的个数,从而推算出脉冲的频率。

    • 定时/计数器的功能,对时钟信号进行计数,也可用来倒计时,秒表,循环计数等。

  • 工作原理

    • 在定时方式1下,定时/计数器0的核心是一个16位宽的

    • 由计数脉冲触发的按递增规律(即累加方式)工作的循环累加计数器(TH0+TL0)。从预先设定的初始值开始,每来一个计数脉冲就加1,当加到计数器为全1时,再输入一个脉冲,就会发生溢出现象,计数器回零,同时产生溢出中断请求信号(TF0置1)。如果定时/计数器工作于定时模式,则表示定时时间已到。

  • 工作模式

    • 定时器可以工作在不同的模式下,常见的模式包括定时模式、计数模式和PWM模式。
      • 定时模式:定时器按照预设值进行计数,当计数器达到预设值时触发中断或产生脉冲信号。
      • 计数模式:定时器根据外部输入的脉冲信号进行计数,可以用于计数外部事件的频率或脉冲数量。
      • PWM模式:定时器可以生成脉冲宽度调制(PWM)信号,用于控制电机速度、LED亮度等。
  • 定时器与计数器
    请添加图片描述


  • 单片机晶振:12M
    • 时钟周期:1 / 12000000,机器周期:12 / 12000000
    • 定时20ms:次数 * 12 / 12000000 = 0.02,次数:20000.
      • 因为采用的定时模式1,将45536(65536 - 20000)化为十六进制装载到寄存器TH0和TL0中,45536 / 256=177,45536 % 256=244,将177转化为十六进制0XB1装载到TH0,将244转化为十六进制0XF4装载到TL0。

3 定时/计数器

  • 实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:
    • 软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。
    • 采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。
    • 采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。

4 定时器溢出

  • 什么是溢出?
    任何一个计数范围有限的系统,均存在溢出现象。系统的可表达数的个数,称为模。定时器溢出时会导致定时器溢出中断请求,和该中断是否使能无关。


网站公告

今日签到

点亮在社区的每一天
去签到