首页 > 其他分享 >C51学习归纳11 --- PWM原理、应用案例

C51学习归纳11 --- PWM原理、应用案例

时间:2024-06-12 13:04:18浏览次数:9  
标签:11 Compare include C51 unsigned --- 占空比 PWM Speed

        本节进入到一个更加常用的环节PWM的产生与应用,日常生活中,电机的使用非常普及,如何控制转速?其实就可以应用我的PWM。

一、PWM的产生原理

       PWM(Pulse Width Modulation)即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速、开关电源等领域。

        我们在研究PWM的时候需要关注一下几个大的方面:1、频率:这个决定了电机的连贯性,因为,PWM调速的本质其实就是在一个周期之内,运行一部分时间,剩下时间不运行,借助运动的惯性保持一致运转的状态,所以如果频率太低就会卡顿;2、占空比:在一个周期里,占空比越大,代表运行时间更长,所以转速会更快;3、精度:精度其实就是占空比的最小值,越小代表越准确;

        那么PWM的产生原理是什么呢?其实就是设置一个标定值,然后利用定时器自增小于输出0,大于输出一。

二、使用PWM实现电机调速

#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"

sbit Motor=P1^0;

unsigned char Counter,Compare;	//计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;

void main()
{
	Timer0_Init();
	
	while(1)
	{
		KeyNum=Key();
		if(KeyNum==1)
		{
			Speed++;
			Speed%=4;
			if(Speed==0){Compare=0;}	//设置比较值,改变PWM占空比
			if(Speed==1){Compare=50;}
			if(Speed==2){Compare=75;}
			if(Speed==3){Compare=100;}
		}
		Nixie(1,Speed);
	}
}

void Timer0_Routine() interrupt 1
{
	TL0 = 0x9C;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	Counter++;
	Counter%=100;	//计数值变化范围限制在0~99
	if(Counter<Compare)	//计数值小于比较值
	{
		Motor=1;		//输出1
	}
	else				//计数值大于比较值
	{
		Motor=0;		//输出0
	}
}

        我们先看中断处理,每次进入中断,先重装计数器初值,随后对计数变量Counter加一,随后讲计数变量和用户设定的变量Compare对比,决定端口的输出。

        在我们的大循环中,每按一下按键一,速度提升一档,占空比从0-50%-75%-100%变化。

        数码管Nixie,独立键盘Key都是之前讲过的,可以回去看。

三、利用PWM思想实现呼吸灯效果

#include <REGX52.H>

sbit LED=P2^0;

void Delay(unsigned int t)
{
	while(t--);
}

void main()
{
	unsigned char Time,i;
	while(1)
	{
		for(Time=0;Time<100;Time++)		//改变亮灭时间,由暗到亮
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Delay(100-Time);		//延时100-Time
			}
		}
		for(Time=100;Time>0;Time--)		//改变亮灭时间,由亮到暗
		{
			for(i=0;i<20;i++)			//计次延时
			{
				LED=0;					//LED亮
				Delay(Time);			//延时Time
				LED=1;					//LED灭
				Delay(100-Time);		//延时100-Time
			}
		}
	}
}

        呼吸灯的原理和电机调速一样,亮一段时间,暗一段时间。亮的越久,视觉上的亮度越高。

        我们的函数的思想就是,每次循环亮的占比从0%升高到100%,然后再从100%降到0%结束。

标签:11,Compare,include,C51,unsigned,---,占空比,PWM,Speed
From: https://blog.csdn.net/SPIRITE_SYF/article/details/139479919

相关文章

  • FileCodeBox --一个文件快递柜
    介绍什么是FileCodeBox?以下内容摘至Github:匿名口令分享文本,文件,像拿快递一样取文件它的特点有什么?以下内容摘至Github:轻量简洁:Fastapi+Sqlite3+Vue2+ElementUI轻松上传:复制粘贴,拖拽选择多种类型:文本,文件防止爆破:错误次数限制防止滥用:IP限制上传次数口令分享:......
  • AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践
    系列篇章......
  • 工程数学 实验5-MATLAB最优化工具箱的使用
    (1)线性规划应用案例的求解1、基本要求通过一个农业生产计划优化安排的实例求解,培养学生解决实际线性规划问题的初步能力;熟悉线性规划的建模过程;掌握Matlab优化工具箱中线性规划函数的调用。2、主要内容某村计划在100公顷的土地上种植a、b、c三种农作物。可以提供的劳力、粪肥和......
  • CSCI-UA.0480-051: Parallel Computing
    CSCI-UA.0480-051:ParallelComputingFinalExam(May 15th,2023)Total:100 pointsProblem 1Supposewehavethe followingtwo DAGs. Each DAG represents a process. That is, DAG 1 is a process and DAG 2 is another process. The two DAG......
  • FreeRTOS学习笔记-基于stm32(14)内存管理
    一、FreeRTOS内存管理简介        FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候FreeRTOS内核在创建任务、队列、信号量的时候会动态的申请RAM。    我们在移植FreeRTOS时可以看到......
  • Ton 区块链的官方 类ERC20-Token 智能合约代码-Transfer部分解析
    作者:林冠宏/指尖下的幽灵。转载者,请:务必标明出处。掘金:https://juejin.im/user/1785262612681997GitHub:https://github.com/af913337456/出版的书籍:《1.0-区块链DApp开发实战》《2.0-区块链DApp开发:基于公链》Ton区块链的官方类ERC20-Token智能合约代码-Trans......
  • 【react】react-redux 使用指南
    React-Redux使用指南如下:一、引言React-Redux是为React框架设计的一个状态管理库,它基于Redux,但提供了更加便捷的方式来与React组件进行交互。通过React-Redux,你可以在整个应用程序中维护一个单一的数据源(即ReduxStore),并通过action和reducer来管理这个数据源......
  • 流畅的python--第十一章 符合 Python 风格的对象
    一个库或框架是否符合Python风格,要看它能不能让Python程序员以一种简单而自然的方式执行任务。——MartijnFaassenPython和JavaScript框架开发者得益于Python数据模型,自定义类型的行为可以像内置类型那样自然。实现如此自然的行为,靠的不是继承,而是鸭子类型:只需按照......
  • tree-cli 生成项目目录
    全局安装插件npminstall-gtree-cli基本使用#查看帮助tree--help#指定目录层级(深度)tree-l2#将结果输出到test.txt文件tree-l2-otest.txt#只输出目录-dtree-l2-otest.txt-d#忽略指定的目录或文件--ignoretreee-l2-otest.txt--ignore'n......
  • 中电金信:The Financial-Grade Digital Infrastructure
    01ProductIntroduction  TheFinancial-GradeDigitalInfrastructureisadigitally-enabledfoundationalframeworkdesignedforcriticalindustries,especiallythefinancialsector.Itfollowsasystematicengineeringmethodologytovalidate,customize,a......