基于51的PWM波控制小车

关于PWM:
51单片机
电机只有转or不转,对应高or低电平,即对应1和0
基于51的PWM波控制小车
所以PWM实际上就是实现一定周期内控制高低电平转换来使电机转or不转
高电平就转,低电平就不转,如果这两者具有一定对应周期的话,那就可以实现控制电机的转速
PWM频率:每S信号从高电平回到低电平的次数
PWM占空比:高电平持续时间和低电平持续时间之比
基于51的PWM波控制小车
由于51是没有对应硬件的,所以要使用软件来模拟PWM,也就是要自己通过定时器来设置PWM的频率,通过中断函数来改变高低电平持续时间,从而实现占空比这个概念
例子分析:以100HZ的频率,占空比最大为256,使用定时器0产生PWM信号,分别调节小车左右两轮的前进速度。
基于51的PWM波控制小车
TL0的计算是这样来的:
首先确定
设置PWM频率=100HZ
所以周期时间=1/f=0.01s
溢出时间=0.01/256(八位重装)=0.0000390625s=39.0625us
所以所需溢出次数=39.0625/1.085(一个机器周期、定时器每加一次需要一个机器周期)=36
所以TL0=256-36=220
这样就确定好了对应PWM频率
基于51的PWM波控制小车
然后写中断函数,
确定
1、pwm_t表示周期(0-256的占空比调节)
当最大占空比为256的时候,完成一个周期,A、B端不使能
2、当设置左电机占空比为XX值,即是设置的值即为占空比,
这时候使能左电机端口(同理可得右边端口)
完成高低电平极性转化
(PS:这里对应电机使能端口要注意查看对应驱动的线路接口,eg:有些使能端加了跳线帽,跟VCC一起,使其本来就为高电平输出使能,所以在设置的时候,就要对应设置相反,总之是为了使其完成高低电平转换)
基于51的PWM波控制小车

其他相关设定:
基于51的PWM波控制小车
前进函数: (同理可以写
左转函数:右边电机正转,左边电机后转
后退函数:左右电机后转)
基于51的PWM波控制小车
主函数
基于51的PWM波控制小车