网站压缩,微信crm,深圳注册公司地址可以是住宅吗,wordpress的开发文档1.PWM:脉冲宽度调制,它是通过一系列脉冲宽度进行调制#xff0c;等效出所需要的波形#xff08;包含形状以及幅值#xff09;。对模拟信号电平进行数字编码。也就是说通过调节占空比的变化来调节信号、能量等的变化#xff0c;占空比就是指在一个周期内#xff0c;信号处于…1.PWM:脉冲宽度调制,它是通过一系列脉冲宽度进行调制等效出所需要的波形包含形状以及幅值。对模拟信号电平进行数字编码。也就是说通过调节占空比的变化来调节信号、能量等的变化占空比就是指在一个周期内信号处于高电平的时间占据整个信号周期的百分比。例如方波的占空比就是50%.
占空比简单来说一个周期内高电平占据时长的百分比。
2.场景举例手机信号灯呼吸机警报灯。
3.代码例子控制PWM占空比来控制sg90舵机的转动角度 #include reg52.h #includeintrins.h int cnt 0; //cnt要定为全局变量 sbit sg90_con P1^1; //定义sg90的管脚 int jiaodu; //定义一个舵机转动的角度 void Time0Init() { //1.配置定时器0工作模式位16位计时 TMOD 0x01; //2.给初值定一个10ms出来 TL0 0x33; //设置定时初值 TH0 0xFE; //设置定时初值 //3.开始计时 TR0 1; TF0 0; //4.打开定时器中断 ET0 1; //5.打开总中断EA EA 1; } void Delay300ms() //11.0592MHz { unsigned char i, j, k; //_nop_(); //这个地方报错是因为缺少一个头文件#includeintrins.h 添加即可不添加可以把_nop_();注释掉用到再添加 i 3; j 26; k 223; do { do { while (--k); } while (--j); } while (--i); } void Delay2000ms() //11.0592MHz { unsigned char i, j, k; _nop_(); i 15; j 2; k 235; do { do { while (--k); } while (--j); } while (--i); } void main() { Delay300ms();//让硬件稳定一下 Time0Init();//初始化定时器 jiaodu 1;//初始化角度0度0.5ms,高电平 cnt 0; sg90_con 1;//一开始从高电平开始 //每个两秒切换一下角度 while(1){ jiaodu 3;//90度 cnt 0; Delay2000ms(); jiaodu 1;//0度 cnt 0; Delay2000ms(); } } //封装一个中断函数 void Time0Handler() interrupt 1 { cnt;//统计爆表次数,cnt等于1的时候爆表了一次 //重新给初值 TL0 0x33; TH0 0xFE; sg90_con 1; //控制PWM波 if(cnt jiaodu){ //cnt 决定舵机转动的角度 sg90_con 1; }else{ sg90_con 0; } if(cnt 40){//cnt爆表了40次经过了20ms cnt 0;//当经过了20ms,重新让cnt从0开始计算下一次的20ms. } } 4.舵机图