超简单“手把手教你写PWM程序”(基于STC89C52) 您所在的位置:网站首页 plc实现pwm 超简单“手把手教你写PWM程序”(基于STC89C52)

超简单“手把手教你写PWM程序”(基于STC89C52)

2023-12-24 19:28| 来源: 网络整理| 查看: 265

文章目录 前言一、学习前需要掌握哪些内容?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 实验室设备网 版权所有