1 PWM 简介 PWM(Pulse Width Modulation,脉冲宽度调制)是按一定规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调制方式。 在控制系统中最常用的是矩形波 PWM 信号,在控制时需要调节 PWM 波占空比。如下图所示,占空比是指高电平持续时间在一个周期时间内的百分比。控制电机的转速时,占空比越大,速度越快,如果全为高电平,占空比为 100% 时,速度达到最快。 当用单片机 I/O 输出 PWM 信号时,可采用以下三种方法: - 利用软件延时。当高电平延时时间到时,对 I/O 口电平取反变成低电平,再延时;当低电平延时时间到时,对该 I/O 口电平取反;如此循环,就可得到 PWM 信号。
- 利用定时器。控制方法同上,只是利用单片机的定时器来定时进行高、低电平的翻转,而不用软件延时。
- 利用单片机自带的 PWM 控制器。
2 定时器的应用单片机的周期
- 时钟周期,也成为振荡周期,定义为时钟频率的倒数(单片机外接晶振的倒数,如 12MHz 晶振的时钟周期就是 1/12 us)。它是单片机中最基本、最小的时间单位。在一个时钟周期内,CPU 仅完成一个最基本的动作。
- 状态周期:时钟周期的 2 倍。
- 机器周期 T c y T_{cy}Tcy:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作。如取指令、存储器读/写等。机器周期由 12 个时钟周期( 6 个状态周期)组成。
- 指令周期:指 CPU 执行一条指令所需的时间。指令周期一般包含 1 ~ 4 个机器周期。
定时器/计数器本质
定时器/计数器的本质是加 1 计数器(16 位),有高 8 位和低 8 位 2 个寄存器组成。TMOD 是定时器/计数器的工作模式寄存器,确定工作方式和功能,TCON 是控制寄存器,控制 T0、T1 的启动和停止及设置溢出标志。 加 1 计数器输入的计数脉冲的来源: - 一个由系统的时钟振荡器输出脉冲经 12 分频后送来
- 一个由 T0 或 T1 引脚输入的外部脉冲源,每来一个脉冲计数器加 1。
当加到计数器全为 1 时,在输入一个脉冲就使计数器回零,且计数器的溢出使 TCON 寄存器中 TF0 或 TF1 置 1,向 CPU 发出中断请求。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。 定时器定时时间:计数值 N NN × 机器周期 T c y T_{cy}Tcy。
定时器初值
溢出时计数器的值减去计数初值才是加 1 计数器的计数值。 定时器一旦启动,它便在原来的数值上开始加 1 计数,若在程序开始时,没有设置 TH0 和 TL0,则默认是 0,假设时钟频率为 12MHz,12 个时钟周期为一个机器周期,那么此时机器周期就是 1 us,计满 TH0 和 TL0 就需要 2 16 − 1 2^{16} - 1216−1 个数,再来一个脉冲计数器溢出,随即向 CPU 申请中断,因此溢出一次共需 65536us,约 65.5ms。 如果想要定时 50 ms,那么就需先给 TH0 和 TL0 装入一个初值,在这个初值的基础上计 5000 个数后,定时器溢出,此时刚好就是 50ms 中断一次。当需要定时 1s 时,我们可以产生 20 次 50ms 的定时器中断后,便认为是 1s。 定时器初值计算方法
当用定时器的方式 1 时,设机器周期为 T c y T_{cy}Tcy,定时器产生一次中断的时间为 t tt,那么需要计数的个数为 N = t / T c y N = t / T_{cy}N=t/Tcy,装入 THX 和 TLX 中的数分别为: T H X = ( 65536 − N ) / 256 THX = (65536 - N) / 256THX=(65536−N)/256
T L X = ( 65536 − N ) % 256 TLX = (65536 - N) \% 256TLX=(65536−N)%256
|