51单片机产生PWM方法

玩转单片机 2018-03-16 14:21 次阅读

89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器产生两种方法。下面将逐一介绍。

1 软件延时法

利用软件延时函数,控制电平持续的时间,达到模拟pwm的效果。

程序如下:

#include<reg52.h>

sbit pwm=P1^0;

main()

{

while(1)

{

pwm=1;

delayus(60);//置高电平后延时60us,占空比60%

pwm=0;

delayus(40);

}

}

void delayus(uint x)

{

while(x--);

}

proteus软件仿真结果如下:

可见,用这种延时函数的方法就能简单地模拟出pwm输出。但是这种方法的缺点也相当明显。当程序除了要输出pwm波还要执行其他操作比如键盘扫描、显示等操作时,需要占用CPU一定的机器周期,这样就会影响pwm的准确度。现在很少会用到这种方法,接下来要介绍的是比较常用的方法。

2 定时器产生pwm

这种方法利用了定时器溢出中断,在中断服务程序改变电平的高低,在程序较复杂、多操作时仍能输出较准确的pwm波形。

2.1 注意事项

2.2.1中断服务程序的内容。

一般来说中断服务程序只完成改变标志位、转换高低电平的功能,如果中断服务程序中有太多的操作会影响pwm波的输出,尤其是除法、取余、浮点数运算会占用大量的机器周期,应在中断外完成运算。

2.2.2定时器装入初值的问题。

装入初值不能太接近于定时器的溢出值。如我们使用定时器方式1,最多能计65536个数,假设我们转入的初值为65534,那么定时器计两个数就会进入中断,这样会使程序紊乱而其他功能无法正常地执行,所以一般要留50-100个数的裕量。

2.2   定时器工作方式

在定时器工作方式的选择上,可以选择定时器的工作方式0、1、2都可以,本文采用的是工作方式1,即16位定时器,这样可以获得较宽的调频范围。

2.3   定时器初值的计算

设占空比为α,频率为f

产生高电平时装入定时器高8位的值应为

产生高电平时装入定时器低8位的值应为

显然,产生低电平时的公式只要把α换成(1-α)就行了。

然而在51单片机中,浮点数运算需要消耗cpu很长的时间,为了提高程序效率,通常用100倍的占空比来计算。同时,要注意数据类型,避免超出范围,影响计算结果。关于C51的乘除法问题,可以看以下这篇文章(点击阅读原文直接进入):

http://blog.163.com/ssou_1985/blog/static/295320362010311102232210/

修改后的公式如下:

a为100倍占空比,fr为0.01倍频率

TH0 = (65535-a*100/fr)/256;  //高位初值

TL0 = (65535-a*100/fr)%256;  

同样,低电平的公式只需把a换成(100-a)即可。

2.4 例程

本例程采用定时器T0在工作方式1下产生一路PWM,用独立键盘控制频率、占空比的加减,频率可调范围100Hz-10kHz,占空比0-100%(均为理论值,实际值略低)

部分代码如下:

注:T0_H , T0_L , T1_H , T1_L 均用于暂时存储初值,进入中断服务程序后直接给寄存器TH0、TL0赋值,避免了在中断中计算。

注:flag为pwm输出标志,flag=1输出高电平,flag=0输出低电平

完整的代码请到我的网盘下载(已失效)

http://yunpan.cn/QzKaWM8VesFyc

2.5 软件仿真结果

2.5.1频率为100Hz

a.占空比约15%

b.占空比95%

2.5.2 频率为10KHz

a.占空比15%

b.占空比90%

原文标题:51单片机产生PWM方法

文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

hts2017
好,很不错,好好学习下先,谢谢分享啊!

相关推荐

一种基于单片机的智能化模拟信号预处理系统设计详解

由传感器输出的模拟信号一般要作放大、衰减、滤波等预处理之后,才能送入ADC进行模/数转换。在自动控....

发表于 08-21 09:23 13次 阅读
一种基于单片机的智能化模拟信号预处理系统设计详解

单片机IO口的输出模式详细分析

IO也叫GPIO,即通用输入输出端口,主要有一下几种模式,普通输入,模拟输入,开漏输出,推挽输出,另....

的头像 畅学单片机 发表于 08-20 18:35 154次 阅读
单片机IO口的输出模式详细分析

如何利用单片机设计智能家居系统中的上位机?

在实际应用中,MSComm控件对于一问一答式的通信,效果还是可以的,所以用于单模块的通信测试问题不大....

发表于 08-20 17:09 47次 阅读
如何利用单片机设计智能家居系统中的上位机?

利用SH79F085单片机的电子秤设计方案

在硬件电路设计方面,中颖电子开发的SH79F085内置20位Σ-Δ模数转换器(ADC)和1~200倍....

发表于 08-20 17:04 42次 阅读
利用SH79F085单片机的电子秤设计方案

以STC12C4052AD单片机为控制核心的教室灯光控制系统设计

整个系统由中央控制电路、2×4按键电路、光敏传感电路、继电器驱动电路、时钟电路、液晶显示电路六个模块....

发表于 08-20 16:59 45次 阅读
以STC12C4052AD单片机为控制核心的教室灯光控制系统设计

以PICl6F7x单片机为主控芯片的读卡器系统设计

RC522主要的状态指示寄存器包括ComIrqReg、Er-rorReg、Status2Reg和FI....

发表于 08-20 16:54 52次 阅读
以PICl6F7x单片机为主控芯片的读卡器系统设计

以P89V51单片机为核心控制系统的电力线载波远程温湿控制系统设计

P89V51是PHILIPS生产的高性能、低功耗的8位微控制器。它具有64 KB的Flash,1 K....

发表于 08-20 16:48 43次 阅读
以P89V51单片机为核心控制系统的电力线载波远程温湿控制系统设计

使用51单片机设计计数器的程序和电路图的详细资料免费下载

本文档的主要内容详细介绍的是使用51单片机设计计数器的程序和电路图的详细资料免费下载。

发表于 08-20 08:00 19次 阅读
使用51单片机设计计数器的程序和电路图的详细资料免费下载

使用51单片机设计的带农历的万年历资料合集包括程序免费下载

本文档的主要内容详细介绍的是使用51单片机设计的带农历的万年历资料合集包括程序免费下载.

发表于 08-20 08:00 14次 阅读
使用51单片机设计的带农历的万年历资料合集包括程序免费下载

YL-291单元电子电路模块使用说明书详细中文资料免费下载

本手册向您介绍亚龙 YL-291 的基本功能和操作方法。具体的电路

发表于 08-20 08:00 19次 阅读
YL-291单元电子电路模块使用说明书详细中文资料免费下载

PCB布线需要考虑哪些注意事项?PCB布线规则和抗干扰的一些原则

在电子系统设计中,为了少走弯路和节省时间,应充分考虑并满足抗干扰性 的要求,避免在设计完成后再去进行....

发表于 08-20 08:00 21次 阅读
PCB布线需要考虑哪些注意事项?PCB布线规则和抗干扰的一些原则

MSP430单片机的开发及应用实例详细中文资料概述

MSP430是德州公司新开发的一类具有16位总线的带FLASH的单片机,由于其性价比和集成度高,受到....

发表于 08-20 08:00 12次 阅读
MSP430单片机的开发及应用实例详细中文资料概述

请问采样保持芯片的筛选表中红色标注的0.01%采集时间指的是什么?

论坛里的大神们,小弟想问一下,采样保持芯片的筛选表中(即下图中)红色标注的0.01%采集时间指的是什么?是表征采样保持芯片的捕捉...

发表于 08-20 06:49 40次 阅读
请问采样保持芯片的筛选表中红色标注的0.01%采集时间指的是什么?

用串口控制PWM信号的输出

我想用串口控制PWM信号的输出,比如说:我单片机收到一个数据,我就调整占空比,收到另外一个数据,又调整占空比这样。不知道...

发表于 08-19 12:57 215次 阅读
用串口控制PWM信号的输出

51单片机CPU结构各部件的原理详细分析

一、 51单片机串行口工作原理 MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P....

的头像 玩转单片机 发表于 08-18 10:39 204次 阅读
51单片机CPU结构各部件的原理详细分析

以FPGA为核心控制的电子设计竞赛电路板设计和实现

大学生电子竞赛题目以模拟电子、数字电子、可编程逻辑器件及单片机技术为核心, 涉及电子仪器仪表、通信、....

发表于 08-18 10:03 104次 阅读
以FPGA为核心控制的电子设计竞赛电路板设计和实现

51单片机 AD采集正弦波 加串口发送

发表于 08-18 01:04 39次 阅读
51单片机 AD采集正弦波 加串口发送

单片机的40个实验教程让你快速学会单片机的应用详细资料免费下载

如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以....

发表于 08-17 17:24 94次 阅读
单片机的40个实验教程让你快速学会单片机的应用详细资料免费下载

单片机分类及汇总大全的详细资料免费下载

经典的: 1、MCS-51系列Intel公司生产 2、61单片机 3、AVR单片机 4、MSP 43....

发表于 08-17 17:24 101次 阅读
单片机分类及汇总大全的详细资料免费下载

以C8051F020单片机为系统控制器件的实时检测和记录车辆散热系统动态参数电路设计

该散热系统参数测试电路由上位微型计算机和下位单片机控制系统组成。图1是车辆散热系统参数测点示意图。该....

发表于 08-17 17:07 95次 阅读
以C8051F020单片机为系统控制器件的实时检测和记录车辆散热系统动态参数电路设计

以AT89C51单片机为智能单元的全自动太阳跟踪系统设计

AT89C51单片机通过P2口输出控制脉冲信号,P2.0~P2.3为一路,P2.4~P2.7为一路,....

发表于 08-17 17:03 77次 阅读
以AT89C51单片机为智能单元的全自动太阳跟踪系统设计

以AT89C51单片机为控制器的LED显示屏控制电路设计

控制电路由AT89C51单片机作控制器,显示屏由4个16×16点阵LED模块组成,每个16×16点阵....

发表于 08-17 17:00 67次 阅读
以AT89C51单片机为控制器的LED显示屏控制电路设计

以MCS-51单片机为核心的测控系统软时钟优化设计

随着微电脑的广泛应用,以MCS-51单片机为核心的微机测控系统已随处可见。为满足用户要求,这些系统通....

发表于 08-17 16:56 243次 阅读
以MCS-51单片机为核心的测控系统软时钟优化设计

在航模无刷电调中SH79F168单片机主控芯片有什么应用?

SH79F169片内集成了三通道6路PWM端口,可分别独立配置为PWM输出或者IO输出。将PWM01....

发表于 08-17 16:49 59次 阅读
在航模无刷电调中SH79F168单片机主控芯片有什么应用?

硬件工程师(工作地点:北京)

岗位职责: 根据产品功能描述,设计实现方案,制作智能健身硬件的原型机,并进行调试和优化。 任职要求: 1、学历专业不限...

发表于 08-17 13:38 334次 阅读
硬件工程师(工作地点:北京)

半自动洗衣机改全自动教程

刚到福州,住进了一个套房,虽然有洗衣机,但是是半自动的,每次洗衣服很烦,就跟房东商量一下,然后就有了....

的头像 39度创意研究所 发表于 08-17 10:23 477次 阅读
半自动洗衣机改全自动教程

意法半导体发布即插即用的无线充电套件,为可穿戴设备和物联网设备带来超小体积充电器

中国,2018年8月16日——即插即用的无线充电器开发套件(STEVAL-ISB045V1)让用户用节省空间的20mm直径线圈,快速开发最...

发表于 08-17 09:58 469次 阅读
意法半导体发布即插即用的无线充电套件,为可穿戴设备和物联网设备带来超小体积充电器

单片机原理与应用及C51程序设计(第三版)PPT电子教材详细资料免费下载

单片机原理与应用及C51程序设计(第三版)是清华大学出版社的教材课件,包含各章节PPT、电路图、程序....

发表于 08-17 08:00 46次 阅读
单片机原理与应用及C51程序设计(第三版)PPT电子教材详细资料免费下载

《51单片机C语言学习之道》电子教程资料合集

书本资料,该书由清华大学出版,包含 各章节详细课件(共11章节) 及基本电路图(常用芯片、程序控制等....

发表于 08-17 08:00 36次 阅读
《51单片机C语言学习之道》电子教程资料合集

如何以STM32F334单片机设计降压型DC-DC可调压开关电源

 相对于传统的线性稳压电源,开关电源具有效率高、输出功率大、体积小、重量轻、成本低等优点。随着电子元....

发表于 08-17 08:00 46次 阅读
如何以STM32F334单片机设计降压型DC-DC可调压开关电源

请问有没有CC2530的例程可以实现4个针脚输出的无线最小单片机系统

准备做一个可以实现4个针脚输出的无线最小单片机系统,设想使用CC2530,完成后,使用电脑连接SmartRF05 EB板对其进行控制...

发表于 08-17 07:14 61次 阅读
请问有没有CC2530的例程可以实现4个针脚输出的无线最小单片机系统

请问TM4C的JTAG口与单片机怎么连接?

我用的XDS100V2,JTAG与单片机怎么连接?我是这么设计的,ICDI-RST与单片机RESET连接。    &nbs...

发表于 08-17 06:49 64次 阅读
请问TM4C的JTAG口与单片机怎么连接?

以MSP430F449单片机为控制系统核心的悬挂运动控制系统设计

根据设计要求和方案选择,本系统主要由3个模块电路组成:步进电机控制模块、红外传感和人机交互模块。电机....

发表于 08-16 17:44 91次 阅读
以MSP430F449单片机为控制系统核心的悬挂运动控制系统设计

浅析51单片机IO口的四种使用方法

传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管....

的头像 玩转单片机 发表于 08-16 17:43 194次 阅读
浅析51单片机IO口的四种使用方法

以STC89C52单片机为核心的电子密码锁设计

图2中U1为STC89C52是个系统的核心,编写的程序以二进制的文件导入其中;U2为AT24C02,....

发表于 08-16 17:38 112次 阅读
以STC89C52单片机为核心的电子密码锁设计

以单片机为主控制器的垃圾分类计量收费设备控制装置设计

非接触式IC卡又称射频卡,与接触式IC卡相比,解决了无源和免接触的问题,具有可靠性高、操作方便的优点....

发表于 08-16 17:27 77次 阅读
以单片机为主控制器的垃圾分类计量收费设备控制装置设计

请问单片机串口如何接收上位机不断发送的数据帧并将该帧的有效数据提取出来?

各位大虾:本人菜鸟请教一个问题,单片机如何接送串口不断发送的数据帧,并将该帧的有效数据提取出来,请赐教一个完整程序。 注...

发表于 08-16 17:19 128次 阅读
请问单片机串口如何接收上位机不断发送的数据帧并将该帧的有效数据提取出来?

SYSCLK时钟源三个来源:HSI RC、HSE OSC、PLL

ARM公司只生产内核标准,不生产芯片。ST、TI这样的公司从ARM公司那里购买内核,然后外加自己的总....

的头像 电子发烧友网 发表于 08-16 10:11 281次 阅读
SYSCLK时钟源三个来源:HSI RC、HSE OSC、PLL

请问单片机进入休眠状态前gpio引脚怎么处理?

最近在做微功率无线通信的项目,那肯定得低功耗了,那么在单片机进入休眠前 gpio 引脚该怎么处理呢? 分 以下几种情况: 1.&...

发表于 08-16 07:46 336次 阅读
请问单片机进入休眠状态前gpio引脚怎么处理?

对于51单片机和arm9开发板串口通信问题的分析

[table] [tr][td]        距离毕设的时间还剩20天左右,这几天一直忙着做毕设,今天终于将51单片...

发表于 08-16 01:53 23次 阅读
对于51单片机和arm9开发板串口通信问题的分析

智能无人驾驶汽车的计算机控制系统详细介绍和要求及设计资料概述

智能无人驾驶汽车是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,对车辆的操作实质上....

发表于 08-15 17:56 45次 阅读
智能无人驾驶汽车的计算机控制系统详细介绍和要求及设计资料概述

以AT89C2051单片机为控制核心的数字温度计设计

由AT89C2051构成的温度计主要由三部分组成:DSl8B20温度传感器、单片机AT89C2051....

发表于 08-15 17:20 61次 阅读
以AT89C2051单片机为控制核心的数字温度计设计

以AT89S51单片机为主控芯片的密码锁设计

密码锁主控部分电源需要用5 V 直流电源供电, 其电路图如图2 所示。它可以把频率为50 Hz、有效....

发表于 08-15 17:16 65次 阅读
以AT89S51单片机为主控芯片的密码锁设计

以89C51单片机为核心控制器件的液体点滴速度监控系统设计

液体点滴速度控制系统对于大型医院来说是一套能够提高效率和服务质量的控制设备,特别是远程监控功能能使护....

发表于 08-15 17:12 73次 阅读
以89C51单片机为核心控制器件的液体点滴速度监控系统设计

以C8051F023单片机为控制核心的OLED显示方案设计

VGG12864G内置128×64 bits的显示存储器,用于存储显示数据,图5为RAM的地址结构。....

发表于 08-15 17:06 69次 阅读
以C8051F023单片机为控制核心的OLED显示方案设计

在汽车的动力总成系统中单片机有什么应用?

当前,全球汽车工业面临的重要课题是如何不断地降低汽车油耗、减少排放以及进一步提高其驾驶性能。要做到这....

发表于 08-15 17:03 227次 阅读
在汽车的动力总成系统中单片机有什么应用?

四路控制开关程序的详细资料免费下载

本文档的主要内容详细介绍的是四路控制开关程序的详细资料免费下载

发表于 08-15 16:38 39次 阅读
四路控制开关程序的详细资料免费下载

STC8系列单片机技术参考数据手册和详细资料免费下载

STC8系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的8....

发表于 08-15 16:38 43次 阅读
STC8系列单片机技术参考数据手册和详细资料免费下载

51单片机C语言Keil的详细入门教程资料免费下载

学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有众多种类的单片机....

发表于 08-15 08:00 71次 阅读
51单片机C语言Keil的详细入门教程资料免费下载

30例51单片机汇编实例程序的详细资料免费下载

第一例,了解单片机及单片机的控制原理和DX516 的用法,控制一个LED 灯的亮和灭 本章学习内容....

发表于 08-15 08:00 44次 阅读
30例51单片机汇编实例程序的详细资料免费下载

新概念51单片机C语言教程郭天祥版电子教材免费下载

全书分为勾5篇,入门篇、内外部资源操作篇、提高篇、实战篇和拓展篇特别按照初学者所遇到的问题和需求路径....

发表于 08-14 19:33 71次 阅读
新概念51单片机C语言教程郭天祥版电子教材免费下载

以C8051F020单片机为控制核心的人机交互系统设计

该LCM 的FS1 引脚用于控制显示字符的字体。FS1 为高时,LCD 显示6×8 字符;FS1 为....

发表于 08-14 17:25 85次 阅读
以C8051F020单片机为控制核心的人机交互系统设计

为提高单片机开发系统稳定性和可扩展性的C8051F 单片机实验系统设计

FPGA 即现场可编程门阵列, 它是作为专用集成电路(ASIC) 领域中的一种半定制电路, 既解决了....

发表于 08-14 17:21 60次 阅读
为提高单片机开发系统稳定性和可扩展性的C8051F 单片机实验系统设计

如何制作一个用单片机驱动的LED旋转球?

如何制作一个用单片机驱动的LED旋转球?

的头像 39度创意研究所 发表于 08-14 17:12 338次 阅读
如何制作一个用单片机驱动的LED旋转球?

单片机开发板典型应用案例106个经典案例资料合集包括程序

本文档的主要内容详细介绍的是单片机开发板典型应用案例106个经典案例资料合集包括程序案例包括了:点亮....

发表于 08-14 08:00 65次 阅读
单片机开发板典型应用案例106个经典案例资料合集包括程序

怎么编写一个最简单的单片机程序?

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“Kei....

的头像 畅学单片机 发表于 08-13 17:56 435次 阅读
怎么编写一个最简单的单片机程序?

以SPCE061A单片机为核心的红外测温计设计

SPCE061A是台湾凌阳公司生产的性价比很高的一款十六位单片机,使用它可以非常方便的实现控制和语音....

发表于 08-13 17:29 67次 阅读
以SPCE061A单片机为核心的红外测温计设计

物联网全栈教程-从云端到设备(十三)所需软件的详细资料免费下载

 硬件是实现设备功能的躯壳,软件才是设备的灵魂!今天就教你安装一下编写单片机程序需要的软件,并示范一....

发表于 08-13 16:49 40次 阅读
物联网全栈教程-从云端到设备(十三)所需软件的详细资料免费下载

物联网全栈教程从云端到设备(十二)设备端的开发详细资料免费下载

经过前面的铺垫,你已经学会了在linkDevelop 上新建一个项目,然后通过使用MQTT 电....

发表于 08-13 16:49 39次 阅读
物联网全栈教程从云端到设备(十二)设备端的开发详细资料免费下载

物联网全栈教程从云端到设备(1到11)资料免费下载

使用NB-IOT 技术做一个小的模块,可以直接接到挖掘机的电器盒里,那么我们就可以制作几百个几千个这....

发表于 08-13 16:48 48次 阅读
物联网全栈教程从云端到设备(1到11)资料免费下载