超简单“手把手教你写PWM程序”(基于STC89C52) | 您所在的位置:网站首页 › plc实现pwm › 超简单“手把手教你写PWM程序”(基于STC89C52) |
文章目录
前言一、学习前需要掌握哪些内容?1.掌握单片机定时器的使用方法2.掌握c语言基础
二、开始1.基操来一下2.重头戏以下代码就是具体实现方案
所以我们只要调节Speed 的值就可以调节占空比了Speed的值应该比A小
总结
前言
学习单片机总要接触一些控制,比如电机调速,舵机驱动,步进电机驱动。这是必不可少需要用到一种控制机制———PWM(脉冲宽度调制) 提示:以下是本篇文章正文内容,下面案例可供参考 一、学习前需要掌握哪些内容? 1.掌握单片机定时器的使用方法 2.掌握c语言基础 二、开始 1.基操来一下代码如下(示例): #include typedef unsigned int u16; typedef unsigned char u8; //声明变量 sbit PWM = P1^0; //定义PWM输出口 2.重头戏 以下代码就是具体实现方案代码如下(示例): u16 A = 0; //定义变量 u16 Speed; void Time0Init() //初始化定时器 { TMOD|=0x01; //配置定时器1 TH0 = (65536-1000)/256; //配置1ms定时 TL0 = (65536-1000)%256; TR0 = 1; ET0 = 1; //打开定时器中断 EA = 1; //打开总中断 } //中断里面就是PWM具体实现的代码 void time()interrupt 1 { TH0 = (65536-1000)/256; //配置1ms定时 TL0 = (65536-1000)%256; A++; //A开始计数,每1毫秒加一 if(A > 1000) //A计数到1000就清零,也就是说每经过1s就是一个 { //PWM周期,所以频率是1Hz A = 0; } //该Speed出场了,speed作为比较器跟A比较,通过调Speed来调节占空比 if(Speed PWM = 0; //否则就输出0 } if(Speed>999) { Speed =999; } } 所以我们只要调节Speed 的值就可以调节占空比了 Speed的值应该比A小 总结main函数里面也比较简单 void main() { Time0Init(); while(1); }原理方面就介绍到这了 下篇写个蓝牙调速车的代码 |
CopyRight 2018-2019 实验室设备网 版权所有 |