首先你的先知道什么是PWM。PWM是一种脉宽调制技术。简单的说就是在一个周期内高电平所占用的时间,通过改变脉冲的周期可以调频,改变脉冲的宽度或占空比可以调节驱动上的电压。 第一种方法用单片机的定时器模拟出PWM。假如你用定时器延时100ms,在50ms之前某一个引脚为低电平,50ms之后该引脚为高电平,这样高电平占用的时间为1/2,此时该引脚就会产生50%的占空比信号。 程序如下: #include<reg52.h> unsigned chartimer1; sbit PWM=P1^1; void system_Ini() {TMOD|= 0x11; TH1 = 0xfe; //11.0592 TL1 = 0x33; TR1 =1; IE=0x8A; } main() { system_Ini() ;定时器初始化 while(1) { if(timer1>100) timer1=0; if(timer1<=30) pwm=0;//产生30%的占空比 else PWM=1; } } 另一种方法就是利用简单的延时产生PWM方波信号 #include<reg52.h> unsigned char count=0; sbit PWM_1=PI^1;//利用P1^1产生PWM void mian() {while(1) for(count=0;count<=100;count++) //让单片机记100个数 { If(count<=50){ PWM_1=1;}//前一半时间为高电平 else PWM_1=0//后一半时间为低电平这样就产生了50%的占空比 } PWM不仅能够控制小车速度还可以控制小灯的亮灭程度,朋友们可以去试试。水平有限,如果觉得对您有用请您推荐您的朋友关注我们,还请大神们轻喷。 |
|
来自: 昵称29273511 > 《待分类》