资料介绍
PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对vwin
电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。
首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果。我们先来看三组不同的脉冲信号,如图所示。
这是一个周期是 10ms,即频率是 100Hz 的波形,但是每个周期内,高低电平脉冲宽度各不相同,这就是 PWM 的本质。在这里大家要记住一个概念,叫做“占空比”。占空比是指高电平的时间占整个周期的比例。比如第一部分波形的占空比是 40%,第二部分波形占空比是 60%,第三部分波形占空比是 80%,这就是 PWM 的解释。
那为何它能对模拟电路进行控制呢?大家想一想,我们数字电路里,只有 0 和 1 两种状态,比如我们第 2 章学会的点亮 LED 小灯那个程序,当我们写一个 LED = 0;小灯就会长亮,当我们写一个 LED = 1;小灯就会灭掉。当我们让小灯亮和灭间隔运行的时候,小灯是闪烁。
如果我们把这个间隔不断的减小,减小到我们的肉眼分辨不出来,也就是 100Hz 以上的频率,这个时候小灯表现出来的现象就是既保持亮的状态,但亮度又没有 LED = 0;时的亮度高。那我们不断改变时间参数,让 LED = 0;的时间大于或者小于 LED = 1;的时间,会发现亮度都不一样,这就是模拟电路的感觉了,不再是纯粹的 0 和 1,还有亮度不断变化。大家会发现,如果我们用 100Hz 的信号,如图 10-1 所示,假如高电平熄灭小灯,低电平点亮小灯的话,第一部分波形熄灭 4ms,点亮 6ms,亮度最高,第二部分熄灭 6ms,点亮 4ms,亮度次之,第三部分熄灭 8ms,点亮 2ms,亮度最低。那么用程序验证一下我们的理论,我们用定时器T0 定时改变 P0.0 的输出来实现 PWM,与纯定时不同的是,这里我们每周期内都要重载两次定时器初值,即用两个不同的初值来控制高低电平的不同持续时间。为了使亮度的变化更加明显,程序中使用的占空比差距更大。
#include
sbit PWMOUT = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char HighRH = 0; //高电平重载值的高字节
unsigned char HighRL = 0; //高电平重载值的低字节
unsigned char LowRH = 0; //低电平重载值的高字节
unsigned char LowRL = 0; //低电平重载值的低字节
void ConfigPWM(unsigned int fr, unsigned char dc);
void ClosePWM();
void main(){
unsigned int i;
EA = 1; //开总中断
ENLED = 0; //使能独立 LED
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1){
ConfigPWM(100, 10); //频率 100Hz,占空比 10%
for (i=0; i40000; i );
ClosePWM();
ConfigPWM(100, 40); //频率 100Hz,占空比 40%
for (i=0; i40000; i );
ClosePWM();
ConfigPWM(100, 90); //频率 100Hz,占空比 90%
for (i=0; i40000; i );
ClosePWM(); //关闭 PWM,相当于占空比 100%
for (i=0; i40000; i );
}
}
/* 配置并启动 PWM,fr-频率,dc-占空比 */
void ConfigPWM(unsigned int fr, unsigned char dc){
unsigned int high, low;
unsigned long tmp;
tmp = (11059200/12) / fr; //计算一个周期所需的计数值
high = (tmp*dc) / 100; //计算高电平所需的计数值
low = tmp - high; //计算低电平所需的计数值
high = 65536 - high 12; //计算高电平的重载值并补偿中断延时
low = 65536 - low 12;//计算低电平的重载值并补偿中断延时
HighRH = (unsigned char)(high>>8); //高电平重载值拆分为高低字节
HighRL = (unsigned char)high;
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 基于单片机直流PWM调速控制设计
- 单片机软件模拟PWM调光程序下载 62次下载
- 单片机 PWM控制端口与硬件PWM融合资料下载
- PWM控制技术的资料介绍 66次下载
- 实现STC单片机PWM输出的程序免费下载 81次下载
- PWM控制的基本原理和控制方法等资料详细说明 44次下载
- PWM的控制技术学习教程免费下载 586次下载
- 单片机的PWM控制技术学习课件免费下载 29次下载
- 使用51单片机输出PWM波形的程序免费下载
- 使用单片机PWM实现电压输出的程序免费下载
- 51单片机的PWM程序详解和仿真资料免费下载
- 使用51单片机进行PWM的程序和讲解免费下载
- 单片机模拟pwm调速或调光的程序资料免费下载
- 51单片机的PWM程序资料免费下载 74次下载
- 基于单片机用PWM实现直流电机调整的基本方法 1016次下载
- PWM控制技术的基本原理和特点 940次阅读
- PWM控制的基本原理和主要优势 948次阅读
- 基于51单片机的PWM调速 2799次阅读
- 单片机的最小系统及基本原理 1.6w次阅读
- 51单片机实现PWM输出功能的两种方法解析 2.1w次阅读
- 探析单片机中PWM的原理与控制程序 3117次阅读
- 基于51单片机直流电机PWM调速程序 4.8w次阅读
- 基于AT89C51单片机直流电机PWM调速程序分享 1.6w次阅读
- 浅析单片机中PWM的基本概念和基本原理 1.1w次阅读
- 如何基于51单片机利用定时器的实现PWM的方法详细概述 3.3w次阅读
- 基于AVR单片机的PWM功能设计 2790次阅读
- 遥控接收机信号控制单片机接收pwm信号的IO口 1.3w次阅读
- 单片机pwm控制基本原理详解 15.5w次阅读
- 机器人设计中利用51单片机输出PWM波的方法 4288次阅读
- pwm双极性调制电路图_单极性与双极性PWM模式介绍 5.1w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多