51单片机定时器计数器原理以及应用(方波、pwm、脉冲计数、高电平脉宽测量)

1.基本原理:http://www.51hei.com/bbs/dpj-103111-1.html

补充:

1.TMOD定时器/计数器工作方式寄存器

GATE=1时,定时器由INT和TR共同控制,用于测量脉宽;

2.TCON定时器/计数器控制寄存器

3.

 

2.应用示例:

2.1T0/T1控制外部引脚输出方波

1.设计思路:设置定时计数器工作在定时工作方式,在中断服务子程序中将需要输出方波信号的I/O引脚上的电平翻转即可。

2.仿真电路:

3.代码

2.2PWM波形输出

1.设计思路:51单片机可以使用一个定时计数器来控制产生波形的频率,用另外一个定时计数器来控制波形的占空波。

2.仿真原理图同1.

3.具体代码:

3.脉冲计数

1.设计思路:使用T0/T1进行计数时,当外部引脚上检查到一个脉冲信号之后让计数器加1,可以使T0/T1在计数溢出之后产生一个中断事件,然后在中断事件中进行检查再此次溢出之前进行了多少次计数,则可以得到对应的计数值。

2.peoteus仿真

3.代码:

   T0工作于计数方式,外部脉冲加在51单片机的T0(P3.5)引脚上,当检查到一个脉冲之后T0加1,由于T0的数据寄存器TH0和TL0的初始化值为0xFFFD,所以当检测到“0xFFFF – 0xFFFD = 0x0003”个计数脉冲之后溢出,触发T0计数器中断,在中断服务子程序中将一个连接到P1.7引脚上的发光二极管翻转 。

点击运行,每当点击K1三下之后,可以看到LED翻转。

4.脉冲宽度测量

1.设计思路:

操作步骤:设置GATE位和定时器的工作方式,监视外部中断引脚上的电平变化,当电平变为低的时候停止定时器。启动定时读取定时器对应的数据寄存器的内容。根据对应的工作频率计算出脉冲宽度。

2.proteus仿真

一个按键K1一端连接到GND,另外一端连接通过一个10K的电阻R3连接到VCC后同时连接到51单片机的P3.4(T0)引脚上,当该按键被按下时会在51单片机的外部定时器中断引脚上产生一个负脉冲信号。

 在initT0的T0初始化函数中,设置了GATE位,然后在外部中断0引脚(P3.2)变低的时候将T0关闭,读取TH0和TL0的值,再计算获得脉冲的宽度。

3.代码:

猜你喜欢

转载自blog.csdn.net/qq_39962651/article/details/81182289