51单片机产生PWM方法

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

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

相关推荐

单片机时钟设计详细教程

X1226具有时钟和日历的功能,时钟依赖时、分、秒寄存器来跟踪,日历依赖日期、星期、月和年寄存器来跟....

发表于 05-23 16:35 41次阅读
单片机时钟设计详细教程

详细介绍用51单片机解密任何红外遥控器

下面我们来说说本问利用51单片机软件解密的方法 首先大家看了我刚才贴出来的连接 应该知道了 编码无非....

发表于 05-23 16:01 27次阅读
详细介绍用51单片机解密任何红外遥控器

Microchip PIC24F32KA304超低功耗16位单片机技术讲解

这讲我们讲:Microchip PIC24F32KA304超低功耗16位单片机

的头像 亚德诺半导体(ADI)视频 发表于 05-23 15:47 18次阅读
Microchip PIC24F32KA304超低功耗16位单片机技术讲解

单片机USB-ISP下载线制作详细教程

现在的笔记本包括台式机都渐渐地舍弃了并口、串口;很多网友也跟我说,台式没有并口了,下载线没法用了,让....

发表于 05-23 14:57 22次阅读
单片机USB-ISP下载线制作详细教程

Microchip全新的PIC32MX3/4系列高性能低成本32位单片机

本视频介绍了Microchip全新的PIC32MX3/4系列高性能低成本32位单片机。该系列是对原有....

的头像 亚德诺半导体(ADI)视频 发表于 05-23 14:47 27次阅读
Microchip全新的PIC32MX3/4系列高性能低成本32位单片机

单片机的发展历程

单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个....

的头像 传感器技术 发表于 05-23 14:45 399次阅读
单片机的发展历程

PIC®单片机与LED驱动及控制相关外设介绍(上篇)

本课讲述PIC®单片机与LED驱动及控制相关外设介绍上篇

的头像 亚德诺半导体(ADI)视频 发表于 05-23 13:48 170次阅读
PIC®单片机与LED驱动及控制相关外设介绍(上篇)

51单片机资源扩展:扩展片外RAM

以前扩展RAM是用汇编语言访问存储器,好处是定位精准,指哪打哪,坏处就是:程序规模一大就有点难维护了....

的头像 21ic电子网 发表于 05-23 11:48 218次阅读
51单片机资源扩展:扩展片外RAM

STM32串口接收陀螺仪数据-2016-04-15

stm32f103串口接收MPU6050数据

发表于 05-23 10:24 11次阅读
STM32串口接收陀螺仪数据-2016-04-15

单片机应用程序综合实例——单片机与接口技术

单片机应用程序综合实例——单片机与接口技术

发表于 05-23 10:09 13次阅读
单片机应用程序综合实例——单片机与接口技术

掌握段式数码管的工作原理和如何通过动态驱动的方法设计电路以及程序

74HC138 是常用的3-8 线译码器, 即具有3 个输入端( 管脚1,2,3) 与8 个输出端(....

的头像 玩转单片机 发表于 05-23 09:34 111次阅读
掌握段式数码管的工作原理和如何通过动态驱动的方法设计电路以及程序

求助各位大神帮助,52单片机控制一个继电器的程序

发表于 05-22 20:19 307次阅读
求助各位大神帮助,52单片机控制一个继电器的程序

MCU单片机主流芯片公司有哪些_十大主流MCU单片机公司汇总

本文主要盘点了全球十家主流MCU单片机公司,分别有瑞萨电子、恩智浦、微芯科技、意法半导体、英飞凌、德....

发表于 05-22 16:44 165次阅读
MCU单片机主流芯片公司有哪些_十大主流MCU单片机公司汇总

51单片机寄存器功能一览表

本文主要详细介绍51单片机寄存器功能,首先介绍了51单片机引脚图及功能,其次阐述了51单片机寄存器功....

发表于 05-22 16:12 326次阅读
51单片机寄存器功能一览表

单片机C语言之串口通信协议

本文首先介绍了串口的基本结构,其次介绍了串口通信方式,最后详细介绍了单片机C语言之串口通信协议。

发表于 05-22 12:37 118次阅读
单片机C语言之串口通信协议

单片机外接键盘电路

键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。我们可以通过键盘输入....

的头像 玩转单片机 发表于 05-22 11:21 1198次阅读
单片机外接键盘电路

第一期·技术经验分享原创大赛

发表于 05-22 10:59 432次阅读
第一期·技术经验分享原创大赛

STM32控制oled SPI通信资料下载

STM32 控制oled SPI通信,测试可用

发表于 05-22 10:14 33次阅读
STM32控制oled SPI通信资料下载

基于单片机的集成运放主要参数测量系统设计论文报告下载

基于单片机的集成运放主要参数测量系统设计论文报告下载

发表于 05-22 10:00 27次阅读
基于单片机的集成运放主要参数测量系统设计论文报告下载

请问msp430fr4133上电复位完全正常,程序不能下载有哪些原因?

发表于 05-22 04:22 64次阅读
请问msp430fr4133上电复位完全正常,程序不能下载有哪些原因?

我现在要做稳压源,但是用430单片机采样时,端口烧坏了,请问怎么解决这个问题?

发表于 05-22 02:55 32次阅读
我现在要做稳压源,但是用430单片机采样时,端口烧坏了,请问怎么解决这个问题?

单片机技术研发太苦太累,值得去坚持吗?

发表于 05-21 16:56 221次阅读
单片机技术研发太苦太累,值得去坚持吗?

单片机常用PID滤波算法资料汇总

单片机常用PID滤波算法资料汇总

发表于 05-21 11:45 18次阅读
单片机常用PID滤波算法资料汇总

五大单片机全解析--51、AVR、PIC、MSP430、ARM

AVR和pic都是跟8051结构不同的8位单片机,因为结构不同,所以汇编指令也有所不同,而且区别于使....

的头像 畅学单片机 发表于 05-21 11:15 737次阅读
五大单片机全解析--51、AVR、PIC、MSP430、ARM

单片机外部中断程序下载

单片机外部中断程序和电路图,通过按键控制计数和清零操作

发表于 05-21 10:57 15次阅读
单片机外部中断程序下载

stc89c52与SIM900A制作可燃气体检测报警

发表于 05-20 17:02 221次阅读
stc89c52与SIM900A制作可燃气体检测报警

MCS-51单片机的基本知识

8051是MCS-51系列单片机的典型产品,其特性与我们实验的STC89C52RC完全相同,这里以8....

的头像 MCU开发加油站 发表于 05-20 10:51 872次阅读
MCS-51单片机的基本知识

430怎么复位_430软复位方法详解

最近在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运....

的头像 电子发烧友网工程师 发表于 05-20 10:04 434次阅读
430怎么复位_430软复位方法详解

解析安卓

发表于 05-19 14:59 631次阅读
解析安卓

MCS-51与中断有关的寄存器、中断入口地址及编号详解

MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CP....

的头像 陈翠 发表于 05-18 15:46 361次阅读
MCS-51与中断有关的寄存器、中断入口地址及编号详解

51单片机的中断体系结构_中断的响应过程

51单片机的中断系统十分重要,分为外部中断和定时器中断。本文主要详解51单片机的中断体系结构以及中断....

的头像 陈翠 发表于 05-18 15:28 205次阅读
51单片机的中断体系结构_中断的响应过程

一文读懂STM32f030c8t6单片机ADC模拟看门狗的使用

根据st官方手册提供描述不难看出,ADC模拟看门狗其实就是用户可以设置一个AD值上下限值,然后打开此....

发表于 05-18 15:04 86次阅读
一文读懂STM32f030c8t6单片机ADC模拟看门狗的使用

52单片机定时器0 定时器1 定时器2同时使用

发表于 05-18 12:14 498次阅读
52单片机定时器0 定时器1 定时器2同时使用

基于单片机的直流稳压电源设计的实验报告

这个是基于单片机的直流稳压电源设计的实验报告

发表于 05-18 10:30 27次阅读
基于单片机的直流稳压电源设计的实验报告

有些专业上的心里话,长辈都不懂,只能在论坛上问问大家

发表于 05-18 09:48 603次阅读
有些专业上的心里话,长辈都不懂,只能在论坛上问问大家

怎么把单片机显示到显示屏的数据实时发送到电脑串口上

发表于 05-18 09:38 257次阅读
怎么把单片机显示到显示屏的数据实时发送到电脑串口上

一种基于GPRS的单片机上网的解决方案

单片机 微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互....

发表于 05-18 02:37 139次阅读
一种基于GPRS的单片机上网的解决方案

PIC单片机之看门狗_看门狗定时器工作原理

PIC系列不同型号的单片机其,看门狗设置不同,下面是以PIC16F688单片机为例。如果配置字中的....

发表于 05-18 01:59 114次阅读
PIC单片机之看门狗_看门狗定时器工作原理

单片机的进制及其转换_单片机中进制转换知识

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处....

发表于 05-17 16:07 168次阅读
单片机的进制及其转换_单片机中进制转换知识

64位单片机有哪些_东芝64位单片机介绍

单片机主要用于一些控制领域,其外设和接口丰富,价格便宜,对运算能力要求不很高,虽然目前32位单片机已....

的头像 陈翠 发表于 05-17 15:47 264次阅读
64位单片机有哪些_东芝64位单片机介绍

51单片机红色板子配套例程资料下载

初学者用的红色板子实例,基于51单片机,LED,跑马灯,LCD数码管,蜂鸣器,看门狗,串口通讯等等

发表于 05-17 11:03 42次阅读
51单片机红色板子配套例程资料下载

PHILIPS 单片 16/32 位微控制器-LPC2131/2132/2134/2136/2138

单片机LPC21芯片中文资料

发表于 05-17 10:01 46次阅读
PHILIPS 单片 16/32 位微控制器-LPC2131/2132/2134/2136/2138

单片机at89s52和其他单片机比有什么优劣势

单片机at89s52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:8K....

的头像 陈翠 发表于 05-16 16:52 3068次阅读
单片机at89s52和其他单片机比有什么优劣势

16位单片机对AD9854控制的探讨

本文首先介绍了AD9854的优势和特点,其次介绍了AD9854高精度频率信号发生器的电路图,最后详细....

的头像 电子魔法师 发表于 05-16 16:16 316次阅读
16位单片机对AD9854控制的探讨

贸泽电子即日起备货Renesas Electronics的RX130系列32位单片机

最新半导体和电子元件的全球授权分销商贸泽电子 (Mouser Electronics) 即日起备货R....

发表于 05-16 15:52 36次阅读
贸泽电子即日起备货Renesas Electronics的RX130系列32位单片机

树莓派、Arduino、传统单片机开发板该如何选择

2015年贴片技术的不断普及,让面包板不再那么有用武之地,经济的发展也让现成的板卡价格降到了一个合理....

发表于 05-16 15:22 335次阅读
树莓派、Arduino、传统单片机开发板该如何选择

单片机相关的实用电子小软件例程

单片机相关的实用电子小软件例程

发表于 05-16 10:57 49次阅读
单片机相关的实用电子小软件例程

《基于单片机的直流电机控制》-孙源文电子版资料下载.pdf

《基于单片机的直流电机控制》-孙源文电子版资料下载.pdf

发表于 05-16 10:47 39次阅读
《基于单片机的直流电机控制》-孙源文电子版资料下载.pdf

51单片机LED1602液晶显示超声波测距程序+原理图

51单片机LED1602液晶显示超声波测距程序+原理图

发表于 05-16 10:42 43次阅读
51单片机LED1602液晶显示超声波测距程序+原理图

STC单片机下载程序问题汇总

1、选择单片机型号,必须和开发板上芯片型号一致,选错无法下载。2、选择串口号,我们用的是CH340芯....

的头像 单片机技术宅 发表于 05-16 09:53 534次阅读
STC单片机下载程序问题汇总

基于TMS320C2834x单片机的DC/DC变换器高效电源解决方案

这个参考设计是为用户设计的TMS3C21334微控制器。

发表于 05-16 08:59 30次阅读
基于TMS320C2834x单片机的DC/DC变换器高效电源解决方案

gsm模块如何与单片机通信?

本文首先介绍了51单片机与GSM模块实现通信的方法,其次介绍了gsm模块和单片机连接方法与注意事项,....

发表于 05-15 16:49 283次阅读
gsm模块如何与单片机通信?

51单片机多机通信原理

在多机通信中,主机必须要能对各个从机进行识别,在51系列单片机中可以通过SCON寄存器的SM2位来实....

的头像 玩转单片机 发表于 05-15 09:51 297次阅读
51单片机多机通信原理

51单片机好学还是PIC单片机好学?

本文首先分析了到底是51单片机好学还是PIC单片机好学,其次阐述了51单片机的概念和主要功能,最后介....

的头像 电子魔法师 发表于 05-15 09:05 1055次阅读
51单片机好学还是PIC单片机好学?

12条不可忽视的8位单片机的程序优化

使用 C 编程时,我们都习惯于对循环控制变量使用 int 类型,这对 8 位的单片机来说是一种极大的....

的头像 单片机精讲吴鉴鹰 发表于 05-14 17:45 513次阅读
12条不可忽视的8位单片机的程序优化

一文看懂rtc实时时钟和单片机时钟的区别

本文首先阐述了rtc实时时钟和单片机时钟的区别,其次介绍了单片机中时钟概念与单片机内外部时钟方式,最....

的头像 电子魔法师 发表于 05-14 15:48 2287次阅读
一文看懂rtc实时时钟和单片机时钟的区别

AT89S51系列单片机的特点(AT89S51引脚功能及应用电路)

本文首先介绍了AT89S51性能参数和AT89S51引脚功能,其次介绍了AT89S51系列单片机的特....

的头像 电子魔法师 发表于 05-14 11:58 4159次阅读
AT89S51系列单片机的特点(AT89S51引脚功能及应用电路)

单片机如何通过捕获来实现对红外遥控器解码

 随着家用电器、视听产品的普及,红外线遥控器已被广泛使用在各种类型的家电产品上(如遥控开关、智能开关....

的头像 玩转单片机 发表于 05-14 09:11 535次阅读
单片机如何通过捕获来实现对红外遥控器解码

STM32中的位带(bit-band)操作

位带别名区的字只有 LSB 有意义。另外,在访问位带别名区时,不管使用哪一种长度的数据传送指令(字/....

的头像 21ic电子网 发表于 05-13 09:28 221次阅读
STM32中的位带(bit-band)操作