【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

51单片机产生PWM方法

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

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

1 软件延时法

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

程序如下:

#include

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
好,很不错,好好学习下先,谢谢分享啊!

相关推荐

51单片机初级项目开发资料

下载地址,看原文:https://mp.weixin.qq.com/s/xzU1u2fmfwNc1CNyeEV
的头像 电子芯 发表于 01-17 19:57 20次 阅读
51单片机初级项目开发资料

如何使用Proteus软件进行单片机仿真教学

本文分析了传统的单片机教学中存在的诸多问题,提出了用Proteus 软件来进行单片机仿真教学的观点。....
发表于 01-17 17:24 17次 阅读
如何使用Proteus软件进行单片机仿真教学

如何使用Arduino进行网络互动产品创新设计

Arduino 是一款电子互动产品开发的软硬件平台, 有时也叫做“电子积木”。由于其有丰富的外围硬件....
发表于 01-17 17:24 14次 阅读
如何使用Arduino进行网络互动产品创新设计

【硬见小百科】单片机串行口介绍

串行口是单片机与外界进行信息交换的工具。 ■ 8051单片机的通信方式有两种: 并行通信:数据的各位....
的头像 云创硬见 发表于 01-17 17:20 41次 阅读
【硬见小百科】单片机串行口介绍

如何使用STC单片机进行SPWM步进电机的细分控制研究与实现

步进电动机控制方法多种多样,其驱动方式与运行性能关系极大。本文突破目前通用的D/A转换细分电路方式,....
发表于 01-17 16:58 12次 阅读
如何使用STC单片机进行SPWM步进电机的细分控制研究与实现

51单片机1s延时程序设计

原理,利用h,i,j,k循环指令消耗掉一定时间来达到延时,为什么利用循环延时的做法,在12M晶振延时....
发表于 01-17 16:09 23次 阅读
51单片机1s延时程序设计

单片机原理及应用技术李全利PDF第二版免费下载

本书系统地介绍了80C51 系列单片机的原理及应用技术。全书共9 章:第1 章绪论,第2 章80C5....
发表于 01-17 15:12 14次 阅读
单片机原理及应用技术李全利PDF第二版免费下载

MCS-51单片机智能反编译器应用程序免费下载

本文档的主要内容详细介绍的是MCS-51单片机智能反编译器应用程序免费下载。
发表于 01-17 14:32 8次 阅读
MCS-51单片机智能反编译器应用程序免费下载

用梯形图为单片机编程的应用程序免费下载

本文档的主要内容详细介绍的是用梯形图为单片机编程的应用程序免费下载。
发表于 01-17 11:52 12次 阅读
用梯形图为单片机编程的应用程序免费下载

40个经典单片机实验资料合集免费下载

本文档的主要内容详细介绍的是40个经典单片机实验资料合集免费下载主要内容包括了:1. 闪烁灯,2. ....
发表于 01-17 11:19 28次 阅读
40个经典单片机实验资料合集免费下载

51单片机及C语言入门PDF版教程免费下载

使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KE....
发表于 01-17 11:18 22次 阅读
51单片机及C语言入门PDF版教程免费下载

使用STC89C52单片机设计无线温度控制系统的资料免费下载

本文档的主要内容详细介绍的是使用STC89C52单片机设计无线温度控制系统的资料和提高变电运行供电可....
发表于 01-17 11:18 18次 阅读
使用STC89C52单片机设计无线温度控制系统的资料免费下载

AFIO时钟何时开启【自己的理解】

首先为什么要开启时钟?答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的【就像人...
发表于 01-17 10:23 129次 阅读
AFIO时钟何时开启【自己的理解】

基于STM32F103超声波测距功能的实现

在日常生活中离不开对距离的测量,就测量的手段来讲主要有两种测量方式,一种是直接测量法,另一种则为间接测量法。基于超声波的...
发表于 01-17 10:19 74次 阅读
基于STM32F103超声波测距功能的实现

单片机控制光藕(moc3063)驱动双向可控硅调温时不能得到有效控制

这几天搞电烙铁分档调温项目,在使用单片机控制光藕(moc3063)驱动双向可控硅调温时一直不能有效控制,如果用moc3022光藕驱动是没...
发表于 01-17 09:00 83次 阅读
单片机控制光藕(moc3063)驱动双向可控硅调温时不能得到有效控制

浅谈STC单片机特殊IO的用法

在正常情况下,51单片机在上电复位后,所有IO口默认都为高电平,都工作在准双向IO模式,但是STC1....
的头像 单片机技术宅 发表于 01-17 08:59 106次 阅读
浅谈STC单片机特殊IO的用法

如何使用单片机进行电子时钟的设计

系统采用AT89C51单片机,以汇编语言为基础,目的是设计一个可以用四位的数码显示管能够显示时、分的....
发表于 01-17 08:00 12次 阅读
如何使用单片机进行电子时钟的设计

MPC5554和5553微处理器揭秘实用单片机教材免费下载

本书向读者介绍MPC5554和MPC5553这两个基于Power架构的处理 器“详细讲过解内核结构、....
发表于 01-17 08:00 7次 阅读
MPC5554和5553微处理器揭秘实用单片机教材免费下载

STC8系列单片机技术参考手册免费下载

STC8系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速低功耗为目标的80....
发表于 01-17 08:00 5次 阅读
STC8系列单片机技术参考手册免费下载

请问如何通过外网给WIFI模块发送命令控制单片机

我手里有个WIFI模块,能够通过USART与单片机通信 WIFI模块还能设置成STA或者AP模式 电脑已经可以Ping通了模...
发表于 01-17 04:58 27次 阅读
请问如何通过外网给WIFI模块发送命令控制单片机

单片机开盖后没有型号,哪位高手能告诉一下这个标号具体是什么,万分感谢

单片机外面型号查不到,开盖后标号如图,哪位高手能给个是什么型号的,万分感谢...
发表于 01-16 18:45 60次 阅读
单片机开盖后没有型号,哪位高手能告诉一下这个标号具体是什么,万分感谢

444光立方教程

444光立方教程
发表于 01-16 18:13 12次 阅读
444光立方教程

如何使用STC89C52单片机进行智能电风扇设计

基于STC89C52 单片机设计电风扇的控制系统, 首先进行总体设计, 然后进行硬件电路设计与软件设....
发表于 01-16 17:18 46次 阅读
如何使用STC89C52单片机进行智能电风扇设计

51单片机串行口及存储器工作原理分析

MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外....
的头像 玩转单片机 发表于 01-16 17:00 170次 阅读
51单片机串行口及存储器工作原理分析

STC51单片机的IO配置问题解决方案

单片机IO的种种问题,你说的单片机IO被烧了,也许只是你妹用对而已,进来看完再下定论。
的头像 单片机技术宅 发表于 01-16 15:31 118次 阅读
STC51单片机的IO配置问题解决方案

如何使用单片机模拟读写24C01EEPROM数据

实验目的: 熟悉使用单片机模拟读写24C01EEPROM 1、首先向24C01EEPRO....
发表于 01-16 15:21 43次 阅读
如何使用单片机模拟读写24C01EEPROM数据

使用51单片机设计的电子钟程序和资料合集免费下载

本文档的主要内容详细介绍的是使用51单片机设计的电子钟程序和资料合集免费下载。
发表于 01-16 15:02 23次 阅读
使用51单片机设计的电子钟程序和资料合集免费下载

PIC微型中档单片机系列参考手册免费下载

本手册介绍了PIC16CXXX 系列单片机的架构和外设模块的操作,但并不涉及每个器件的具体细节。因此....
发表于 01-16 15:02 20次 阅读
PIC微型中档单片机系列参考手册免费下载

【硬见小百科】单片机的特殊功能寄存器

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。 特殊功能寄存....
的头像 云创硬见 发表于 01-16 13:45 80次 阅读
【硬见小百科】单片机的特殊功能寄存器

Keil实例教程之Keil工程文件的建立设置与目标文件的获得

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种....
发表于 01-16 11:43 22次 阅读
Keil实例教程之Keil工程文件的建立设置与目标文件的获得

YL-51单片机开发板电路原理图免费下载

本文档的主要内容详细介绍的是YL-51单片机开发板电路原理图免费下载。
发表于 01-16 11:43 18次 阅读
YL-51单片机开发板电路原理图免费下载

多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载

本文档的主要内容详细介绍的是多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载包括了:....
发表于 01-16 11:43 21次 阅读
多个单片机的应用实例包括简介电路图和PCB图及程序等资料免费下载

8051系列单片机汇编指令速查表资料合集免费下载

本文档的主要内容详细介绍的是8051系列单片机汇编指令速查表资料合集免费下载。说明: Ri, Rn ....
发表于 01-16 08:00 16次 阅读
8051系列单片机汇编指令速查表资料合集免费下载

23个单片机开发小工具合集免费下载

本文档的主要内容详细介绍的是23个单片机开发小工具合集免费下载主要内容包括了:音乐代码转换,一种实用....
发表于 01-16 08:00 88次 阅读
23个单片机开发小工具合集免费下载

stm32f407外部中断容易触发

我是刚刚学习stm32单片机的,在使用外部中断的时候遇到一个问题,单片机的IO口如果配置为输入模式,中断极其容易触发,手随便摸...
发表于 01-16 06:34 97次 阅读
stm32f407外部中断容易触发

交流BLDC无刷电机控制方案

最近在研究这个东西,开源的很多,而且都是低廉的8位单片机方案,但是做的很吊。不知道论坛里有没有大神搞过?求交流啊。...
发表于 01-16 05:18 37次 阅读
交流BLDC无刷电机控制方案

51飞卡单片机智能小车全套视频教程免费下载

下载地址: (224 Bytes )
发表于 01-16 02:42 48次 阅读
51飞卡单片机智能小车全套视频教程免费下载

请问GSM模块RTC后备电池如果不用的话是否可以去掉?

最近购买了原子的GSM模块,现在想自己画一块板子,先咨询问题如下: 1,RTC后备电池如果不用的话是否可以去掉?还有P6端...
发表于 01-15 22:01 21次 阅读
请问GSM模块RTC后备电池如果不用的话是否可以去掉?

如何选择合适的单片机常用单片机介绍

单片微型计算机简称单片机,是典型的嵌入式微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系....
发表于 01-15 17:18 66次 阅读
如何选择合适的单片机常用单片机介绍

单片机开发工程案例分析与解析的详细资料概述

设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管....
发表于 01-15 16:48 34次 阅读
单片机开发工程案例分析与解析的详细资料概述

使用单片机在电阻炉温度控制系统中的应用说明

传统的电阻炉温度控制系统在电阻炉启、停状态时,产生很大的冲击电流,对电阻炉设备及电网带来一系列问题并....
发表于 01-15 16:48 18次 阅读
使用单片机在电阻炉温度控制系统中的应用说明

如何使用单片机和串口进行SD卡读取平台的设计

随着现代电子技术的发展,各种存储设备的应用越来越广泛。其中以SD存储卡的应用最为广泛,但是由于在传统....
发表于 01-15 15:44 21次 阅读
如何使用单片机和串口进行SD卡读取平台的设计

单片机对19264液晶屏的驱动

首先说下19264屏 1926屏是由3个64*64 组成 64行 192列 其中192列 是6....
发表于 01-15 15:37 64次 阅读
单片机对19264液晶屏的驱动

单片机攻击的四大主要技术解析

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的....
发表于 01-15 15:29 79次 阅读
单片机攻击的四大主要技术解析

51单片机实时操作系统的基本结构与模式

说到实时操作系统,就不得不考虑重入问题。对于PC机这样的大内存处理器而言,这似乎并不是一个很麻烦的问....
发表于 01-15 15:25 66次 阅读
51单片机实时操作系统的基本结构与模式

如何使用C18编译器和MSSP模块进行SPI EEPROM与PIC18单片机的接口设计

Microchip Technology生产的25XXX系列串行EEPROM兼容SPI 通信标准,最....
发表于 01-15 14:45 20次 阅读
如何使用C18编译器和MSSP模块进行SPI EEPROM与PIC18单片机的接口设计

树莓派教程之从零开始学树莓派开发超好玩的智能小硬件制作书PDF

本书以实战开发为出发点,以Raspberry Pi应用开发为主线,通过Python开发简单的树莓派单....
发表于 01-15 10:06 46次 阅读
树莓派教程之从零开始学树莓派开发超好玩的智能小硬件制作书PDF

一个很不错的LED跑马灯程序免费下载

一个使用单片机设计的LED跑马灯程序资料免费下载,很不错。
发表于 01-15 08:00 31次 阅读
一个很不错的LED跑马灯程序免费下载

如何使用AD590设计嵌入式温度采集及显示系统

在本设计中采用TP.AD590为核心 ,与单片机相辅相成,实现温度的数字化显示。本系统的主要功能是对....
发表于 01-15 08:00 32次 阅读
如何使用AD590设计嵌入式温度采集及显示系统

HT45FH23A和HT45FH24A系列ASSP Flash型单片机数据手册免费下载

该系列单片机是具有 A/D 功能及 Holtek 低功耗架构的 8 位高性能精简指令集的 Flash....
发表于 01-15 08:00 19次 阅读
HT45FH23A和HT45FH24A系列ASSP Flash型单片机数据手册免费下载

HT45B0003和HT45B0005两线式高压收发器的数据手册免费下载

主机控制器系统控制多个联网子系统,如烟感器,水表,太阳能系统等。冗长的互连电缆的成本是主要因素。通过....
发表于 01-15 08:00 29次 阅读
HT45B0003和HT45B0005两线式高压收发器的数据手册免费下载

MCS51单片机的结构与原理及应用实例说明

典型单片机( MCS-51, AT89S51, PIC, Motorola, AVR )的性能,MC....
发表于 01-14 17:21 58次 阅读
MCS51单片机的结构与原理及应用实例说明

单片机教程之定时器和计数器原理及应用

  本文档的主要内容详细介绍的是单片机教程之定时器和计数器原理及应用主要内容包括了:定时器、计数器原....
发表于 01-14 17:20 43次 阅读
单片机教程之定时器和计数器原理及应用

硬件工程师的未来方向以及硬件设计的流程案例

发表于 01-14 16:34 0次 阅读
硬件工程师的未来方向以及硬件设计的流程案例

如何设计低功耗的单片机便携式系统详细设计方法说明

针对单片机便携式系统功耗要求低的特点,比较仝面的介绍了将单片机便携式系统如何设计成低功耗系统.主要从....
发表于 01-14 08:00 29次 阅读
如何设计低功耗的单片机便携式系统详细设计方法说明

电子钟全套资料合集免费下载

本文档的主要内容详细介绍的是如何设计电子钟 电子钟设计全套资料合集免费下载。
发表于 01-11 17:09 182次 阅读
电子钟全套资料合集免费下载

LY5A-L12单片机学习开发板电路原理图资料免费下载

本文档的主要内容详细介绍的是LY5A-L12单片机学习开发板电路原理图资料免费下载。
发表于 01-11 16:23 106次 阅读
LY5A-L12单片机学习开发板电路原理图资料免费下载

51单片机控制继电器的方式及原理

单片机控制继电器一般是两种方式:一是单片机-三极管(PNP)-继电器,二是单片机-光电耦合器-三极管....
发表于 01-11 15:51 242次 阅读
51单片机控制继电器的方式及原理

单片机P0口的内部结构及工作原理

当D端和CP/CLK端同时有信号输入后突然撤掉CP/CLK信号时,D的值将会被保存到(“锁”)在器件....
发表于 01-11 15:39 150次 阅读
单片机P0口的内部结构及工作原理

单片机低功耗设计实例合集(50例)

在嵌入式应用中,系统的功耗越来越受到人们的重视,这一点对于需要 电池 供电的便携式系统尤其明显。降低....
发表于 01-11 15:14 99次 阅读
单片机低功耗设计实例合集(50例)