设计与开发

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

小编 2024-10-10 设计与开发 23 0

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

定时器/计数器的结构

定时器/计数器的实质是加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 。

学习笔记单片机的40个经典实验之27:6 位数显频率计数器

一、 实验任务

利用 AT89S51 单片机的 T0、T1 的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过 8 位动态数码管显示出来。要求能够对0-250KHZ 的信号频率进行准确计数,计数误差不超过±1HZ。

二、电路原理图

图 4.31.1

三、系统板上硬件连线

(1). 把“单片机系统”区域中的 P0.0-P0.7 与“动态数码显示”区域中的ABCDEFGH 端口用 8 芯排线连接。

(2). 把“单片机系统”区域中的 P2.0-P2.7 与“动态数码显示”区域中的S1S2S3S4S5S6S7S8 端口用 8 芯排线连接。

(3). 把“单片机系统”区域中的 P3.4(T0)端子用导线连接到“频率产生器”区域中的 WAVE 端子上。

四、程序设计内容

(1). 定时/计数器 T0 和 T1 的工作方式设置,由图可知,T0 是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的 T0,最大计数值为 fOSC/24,由于 fOSC=12MHz,因此:T0 的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以 T1 工作在定时状态下,每定时 1 秒中到,就停止 T0 的计数,而从 T0 的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。

(2). T1 工作在定时状态下,最大定时时间为 65ms,达不到 1 秒的定时,所以采用定时 50ms,共定时 20 次,即可完成 1 秒的定时功能。

五、C 语言源程序

#include <AT89X52.H>

unsigned char code

dispbit={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char code dispcode={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};

unsigned char temp[8];

unsigned char dispcount;

unsigned char T0count;

unsigned char timecount;

bit flag;

unsigned long x;

void main(void)

{

unsigned char i;

TMOD=0x15;

TH0=0;

TL0=0;

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

TR1=1;

TR0=1;

ET0=1;

ET1=1;

EA=1;

while(1)

{

if(flag==1)

{

flag=0;

x=T0count*65536+TH0*256+TL0;

for(i=0;i<8;i++)

{

temp[i]=0;

}

i=0;

while(x/10)

{

temp[i]=x%10;

x=x/10;

i++;

}

temp[i]=x;

for(i=0;i<6;i++)

{

dispbuf[i]=temp[i];

}

timecount=0;

T0count=0;

void t0(void) interrupt 1 using 0

{

T0count++;

}

void t1(void) interrupt 3 using 0

timecount++;

if(timecount==250)

{

TR0=0;

timecount=0;

flag=1;

}

P0=dispcode[dispbuf[dispcount]];

P2=dispbit[dispcount];

dispcount++;

if(dispcount==8)

{

dispcount=0;

相关问答

【51 单片机定时计数器 工作方式疑点单片机定时器/计数器的工...

[最佳回答]因为51单片机处理数据是按八位进行的,所以给定时器赋初值的时候,不能将一个数直接赋到T0中,而是将这个数先转化为一个十六进制数,将它的高两位数(也...

8951 单片机 定时 计时 计数器 有哪几种工作方式?

总共有4种工作方式,它们分别是:方式0:13位定时器/计数器,TH0的高8位,TL0的低5位方式1:16位定时器/计数器,TH0的高8位,TL0的低8位方式2:自动重装的8位...总...

单片机定时 / 计数器 和中断到底有什么用?

定时器用来计算时间,固定时间触发中断。计数器用来对引脚输入的信号下降沿进行计数。和中断相关,但不一定要开中断。可以单独用。定时器用来计算时间,固定...

什么是8051 单片机 定时 计数器 如何实现计时功能?

8051单片机的定时器计数器是一个用于计时的功能模块。它可以通过设置初始值和使能定时器来开始计时。定时器计数器会按照设定的时钟频率递增计数,当计数值达...

单片机 中, 定时 器/ 计数器 ,的计数初值是怎么计算得出的?(计数和 定时 计算方式是否不同?)--初学 单片机 ?

(2^16—计数初值)╳晶振周期╳12=定时时间(2^16—计数初值)╳1/(12╳10^6)╳12=10Ms=10*10^(-3)S计数初值=2^16—10^4=55536=D8F0HTH0=...

单片机 做数字频率计的特点?

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生...

定时 / 计数器 不知道 定时 时间,怎么计算计数初值啊,拜托了,...

[最佳回答]51系列单片的机器周期算法是(12/晶振)us,你使用12MHz晶振,那么机器周期就是12/12Hz=1us,那么定时器是16位2^16=65536,65536-x,其中x代表你需要定时...

用一个 单片机 中的两个 定时计数器 能不能同时用于计数?谢谢?

可以,设为计数模式就行了,TMOD=0x55;就可以实现两个计数器了。可以,设为计数模式就行了,TMOD=0x55;就可以实现两个计数器了。

c51 单片机 定时 器多长时间溢出?

51单片机定时器溢出时间取决于两个因素,第一是定时器的时钟源频率,单片机可以配置这个时钟源为主频的1倍或者是1/12;第二个是定时器的初值,定时器是在初值的...

定时 器/ 计数器 的工作方式有哪些?

8253定时/计数器有6种工作方式:方式0计数结束产生中断;方式1可编程的单拍负脉冲方式2分频脉冲发生器;方式3分频方波发生器方式4软件触发选通脉冲发生...

猜你喜欢