技术文档

单片机 脉冲计数器 定时器计数器综合应用实例讲解

小编 2025-07-03 技术文档 23 0

定时器计数器综合应用实例讲解

【例1】 编写定时器T0产生1秒的定时程序,通过P1.0口输出高、低电平均为1s的方波(假设单片机采用12MHz的晶振)。

分析如下:

12MHz的晶振,机器周期为1us,各种工作方式直接定时的最大定时时间分别为:

方式0: 2 13 =8192us=8.192ms

方式1: 2 16 =65536us=65.536ms

方式2、3: 2 8 =256us

编程思路:

任何一种方式都无法直接实现1s的定时,可以考虑采用方式1实现50ms定时中断,设置一变量对中断的次数进行计数,计数到20时即为1秒。

c语言源程序如下:

【例2】 脉冲宽度的检测:要求对外部输入的高电平脉冲持续的时间进行检测,即检测高电平脉冲宽度,将检测的脉宽以微秒为单位显示在数码管上(假设单片机的晶振频率为12MHz)。

脉宽检测系统电路如图5-8所示。

图5-8 脉冲宽度检测系统电路图

分析如下:

TMOD的GATE位为门控位,当GATE置1时,只有当对应的外部中断引脚

为1,且TRn置1时,定时器n才会启动定时(n=0或1)。利用该特点,可以检测

口脉冲高电平持续的时间,在信号的上升沿启动定时器,下降沿停止定时器。

在本实例中,采用T0的方式1定时功能对脉冲宽度进行测量,直接测量的最大值为65535,如果晶振为12MHz,则机器周期为1us,直接可检测的最大脉冲宽度为65.535ms。如果需要检测更宽的脉冲,可对定时器0溢出的次数进行计数,将溢出次数乘以65536,来计算。将外部中断设为下降沿触发,当检测到下降沿信号时,将进入外部中断处理程序,读取定时器的数值,此数值即为脉冲信号的宽度,通过数码管(关于数码管显示的知识参见8.3节)动态扫描显示检测的脉冲宽度值。

c源程序如下:

【例3】 单片机时钟:由6个数码管的动态扫描显示分别显示小时、分钟、秒,由四个按键对时间进行调节。数据调整采用移位的方式,根据移位键触发的次数去调节不同的时间对象,加1、减1键分别对时间进行加1和减1调整,清零键将时间清零。

单片机时钟系统电路如图5-9所示。

分析如下:

根据题目的功能要求,系统主要包括数码管动态扫描显示程序、按键检测调时程序、时间产生程序、系统初始化等程序模块。

➢ 时间产生的思路 :由定时器产生50毫秒定时中断,中断20次为1秒,当秒加到60时,秒清零,分钟加1,当分钟加到60分时,分钟清零,小时加1,当小时加到24时,小时清零。

➢ 按键检测调时思路 :设置时间变量setNum对移位按键的次数进行记录,默认为0,不进入调时状态,随着移位按键的触发,setNum值加1,程序根据setNum的值分别处于调节秒、分钟、小时状态,当setNum加到4时回到0。

➢ 数码管动态扫描显示思路 :将秒、分、时时间分别拆分出个位和十位数,通过查询数字显示的代码表,送至P0口,通过P2.0~P2.5动态扫描驱动对应的数码管显示。

图5-9 单片机时钟系统电路图

c源程序如下:

【例4】 单片机频率计:将外部脉冲从P3.5口输入,利用利用单片机的定时/计数器功能,计算脉冲频率并将频率值通过数码管进行显示。

频率计系统电路如图5-10所示。

分析如下:

频率是周期的倒数,即每秒钟产生的周期信号的个数。根据频率的定义,充分的利用单片机的定时/计数器资源,由定时器0实现1秒定时,定时器1则对外部脉冲个数进行计数,这样1秒钟内所计的脉冲个数即为输入信号的频率。

编程说明:

在8051单片机中有两个16位的定时/计数器,分别为T0和T1,在这里设置T0为工作方式1定时,T1为工作方式1计数,则TMOD=0x51。

计数脉冲由单片机的P3.5口输入,利用定时器0产生50毫秒定时,定时中断20次即为1秒钟,将单片机定时器1设为计数模式,由P3.5(T1)口输入外部计数脉冲,在1秒钟计数的脉冲信号数即为所测信号的频率,然后由数码管动态扫描显示对应的频率值。

图5-10 频率及系统电路图

c源程序如下:

单片机定时器计数器的结构以及和工作原理

定时器/计数器的结构

定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

定时器/计数器的工作原理

计数器输入的计数脉冲源

系统的时钟振荡器输出脉冲经12分频后产生;

T0或T1引脚输入的外部脉冲源。

计数过程

每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。

定时应用

用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。

计数运用

用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。

工作方式寄存器(TMOD)

GATE:门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时器/计数器工作;(即需要一个启动条件)

GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时器/计数器工作,即需要两个启动条件。

C/T :定时/计数模式选择位。

C/T =0为定时模式; C/T =1为计数模式。

M1M0:工作方式设置位。

计数器工作方式选择

M1 M0 工 作 方 式 功 能 说 明

0 0 方式0 13位计数器

0 1 方式1 16位计数器

1 0 方式2 自动重装8位计数器

1 1 方式3 定时器0:分成两个8位

定时器1:停止计数

定时器/计数器的控制

控制寄存器TCON

TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时器/计数器的启动和中断申请。其格式如下:

TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。TR1(TCON.6):T1起/停控制位。1:启动 0:停止

TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

TR0(TCON.4):T0起/停控制位。1:启动 0:停止

定时器/计数器的工作方式

方式0

方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

方式1

方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器 。

方式2

方式2为自动重装初值的8位计数方式。

在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。

方式3

方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。

工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。

相关问答

用51 单片机 写一个简单的 脉冲 计数程序-ZOL问答

这个将输入接到T0或T1的输入端(P3.4或P3.5)T0或T1设置为计数器模式,就可以了。你是要记频率吗,用T1和T0分别做定时和计数,定时一秒钟,就可以了读T0的数值了就...

单片机 的定时器资源是什么 计数器 ?

单片机的定时器资源是脉冲计数器51单片机外部脉冲计数原理:51单片机外部脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1。51单...

51 单片机 定时器和 计数器 的对 脉冲 有何要求?

定时器计数器是一个器件,两种功能如果对周期稳定的脉冲数数(计数),就叫定时器,比如单片机内部的机器周期脉冲如果对随机性脉冲数数,就叫计数器,比如外部...

51 单片机计数器 t0要 脉冲 吗?

51单片机计数器t0是一种特定的计时器,在使用过程中需要大量的脉冲来进行计数。计数器t0可以通过外部引脚组合的方式得到不同频率的脉冲来进行计数。但是也可以...

定时器在 单片机 中程序的运行过程 - yn4Wk5LPWx 的回答 - 懂得

我觉得是这样的,单片机的定时器,它的计数过程是相当于电脑里面一个后台运行的东东一样。在计数时单片机同时在执行其他程序,计数周期就是单片机的一...

51 单片机计数器 计数一个机器周期为一次吗?是一个机器周期吗?...

[回答]单片机计数器计的是外部输入脉冲的个数,脉冲的周期至少应该是机器周期的两倍,否则,不能正常计数.

MCS-51系列 单片机 定时/ 计数器 的定时功能和计数功能分别应用于什么场合?

定时器和计数器本质上讲都是计数器,定时器使用机器时钟做计数源,因为机器时钟是稳定性好,时钟数就是时间,所以叫定时器。当计数器用时,使用的是外部输入的脉...

【当80C51 单片机 晶振频率为12MHz时,时钟周期.机器周期各是多...

[最佳回答]1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒.2...

单片机 的定时器 计数器 工作原理是什么?_土巴兔装修问答

实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1。计数的脉冲如果来源于单片机内部的晶振,由于其周期极为准确,这时称为定时器。计数的脉冲如...

怎样用 单片机 做频率计?

你所谓2Hz~10KHz易实现也是基于这个道理。但这个也是理论情况。当你0.5s内刚好检测到一个脉冲,你认为这个时候是2Hz而不是2.5hz或者3.9hz?这中间存在一个测...

猜你喜欢