admin管理员组文章数量:1794759
超简单“手把手教你写PWM程序”(基于STC89C52)
文章目录
- 前言
- 一、学习前需要掌握哪些内容?
- 1.掌握单片机定时器的使用方法
- 2.掌握c语言基础
- 二、开始
- 1.基操来一下
- 2.重头戏
- 以下代码就是具体实现方案
- 所以我们只要调节Speed 的值就可以调节占空比了
- Speed的值应该比A小
- 总结
前言
学习单片机总要接触一些控制,比如电机调速,舵机驱动,步进电机驱动。这是必不可少需要用到一种控制机制———PWM(脉冲宽度调制)
提示:以下是本篇文章正文内容,下面案例可供参考
一、学习前需要掌握哪些内容? 1.掌握单片机定时器的使用方法 2.掌握c语言基础 二、开始 1.基操来一下代码如下(示例):
#include <reg52.h> 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 < A) { PWM = 1; //当Speed小于A时,PWM引脚输出高电平 } else { PWM = 0; //否则就输出0 } if(Speed>999) { Speed =999; } } 所以我们只要调节Speed 的值就可以调节占空比了 Speed的值应该比A小总结
main函数里面也比较简单
void main() { Time0Init(); while(1); }原理方面就介绍到这了 下篇写个蓝牙调速车的代码
版权声明:本文标题:超简单“手把手教你写PWM程序”(基于STC89C52) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686864921a112028.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论