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

相关推荐

基于单片机控制的DC-DC变换电路

  1、系统方案设计   1.1、方案设计   本方案采用单片机为主设计测控电路。通过对DC-DC直流转换器输出电流进行监测...

发表于 10-18 16:50 8次 阅读
基于单片机控制的DC-DC变换电路

基于STC12C5A60S2的双向DC-DC变换器的系统设计

  我们生活中使用的 DC/DC 变换器都只能从单一方向进行工作,其最根本原因是 功率较大的开关管(像 MOSFT,IGBT)...

发表于 10-18 16:50 10次 阅读
基于STC12C5A60S2的双向DC-DC变换器的系统设计

基于AD574的太阳能电池监测系统

  太阳能电池   太阳能电池又称为“太阳能芯片”或“光电池”,是一种利用太阳光直接发电的光电半导体薄片。它只要被满足...

发表于 10-18 16:46 6次 阅读
基于AD574的太阳能电池监测系统

基于LTC6803的电动车锂电池管理系统设计

  近年来,我国的雾霾天气越发严重,而雾霾的罪魁祸首之一就是汽车燃油尾气,研究和发展太阳能、风能等新型清洁能源成为汽车工...

发表于 10-18 16:42 5次 阅读
基于LTC6803的电动车锂电池管理系统设计

基于XL6009升压芯片的LED闪光灯电源设计

  1、系统方案   本系统由输入直流电源经过开关型升压电路转换,输出12V电压,为恒流源电路提供工作电压。通过按键控制单...

发表于 10-18 16:37 4次 阅读
基于XL6009升压芯片的LED闪光灯电源设计

基于PIC18F6585的智能型漏电继电器设计

    漏电继电器是一种可在被保护线路漏电电流达到设定值后切断被保护线路供电电源的保护装置,在电力系统中起着非常重...

发表于 10-18 16:11 7次 阅读
基于PIC18F6585的智能型漏电继电器设计

基于使用STM32F103单片机,实现64Mbit单对单通信

简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。ARM主控芯片....

发表于 10-18 15:19 22次 阅读
基于使用STM32F103单片机,实现64Mbit单对单通信

基于51单片机对1602液晶板的并行操作

TX-1C板操作并行模式的1602液晶液晶第1,2脚是gnd和vcc第3脚是对比度调节第4脚是数据/....

发表于 10-18 14:59 14次 阅读
基于51单片机对1602液晶板的并行操作

应广单片机系列——基本应用程序框架

注:本文是作者以前发表在其个人博客,现在发布到电子发烧友专栏单片机工程师面对一种新单片机时,最希望的....

的头像 聚丰开发 发表于 10-18 12:49 25次 阅读
应广单片机系列——基本应用程序框架

如何使用51单片机实现超声波测距数码管显示包括原理图资料免费下载

本文档的主要内容详细介绍的是如何使用51单片机实现超声波测距数码管显示包括原理图资料免费下载。

发表于 10-18 11:31 12次 阅读
如何使用51单片机实现超声波测距数码管显示包括原理图资料免费下载

使用单片机实现串口超声波的示例程序详细资料免费下载

本文档的主要内容详细介绍的是使用单片机实现串口超声波的示例程序详细资料免费下载。

发表于 10-18 11:06 16次 阅读
使用单片机实现串口超声波的示例程序详细资料免费下载

使用51单片机超声波测距系统LCD1602显示的详细资料合集免费下载

本文档的主要内容详细介绍的是使用51单片机实现超声波测距系统LCD1602显示的详细资料合集免费下载....

发表于 10-18 11:06 11次 阅读
使用51单片机超声波测距系统LCD1602显示的详细资料合集免费下载

如何使用51单片机的超声波模块实现液位控制设计的详细资料合集

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反....

发表于 10-18 11:06 10次 阅读
如何使用51单片机的超声波模块实现液位控制设计的详细资料合集

AltiumDesigner09/18之51单片机初级项目教程第三期

直播入口: 主题简介及亮点: 1、AD09、AD18实操演示。2、视频中通过基础入门级51单片机开发系统为例进行教学,课程与...

发表于 10-18 10:44 109次 阅读
AltiumDesigner09/18之51单片机初级项目教程第三期

labview控制摄像头实时采集图像的程序怎么改成通过单片机控制摄像头在labview上显示?

这只是一个labview控制摄像头实时采集图像的程序,我想把它改成通过单片机控制摄像头在labview上显示该怎么改? ...

发表于 10-18 10:16 2次 阅读
labview控制摄像头实时采集图像的程序怎么改成通过单片机控制摄像头在labview上显示?

如何进行LED高速旋转显示屏的设计详细资料免费下载

本设计利用高速旋转中控制LED的亮灭,进行字符或图形的显示,控制器采用廉价的89C51单片机,完成显....

发表于 10-18 09:45 11次 阅读
如何进行LED高速旋转显示屏的设计详细资料免费下载

HR7P201 8位单片机集成电路芯片的数据手册免费下载

本文档的主要内容详细介绍的是HR7P201 8位单片机集成电路芯片的数据手册免费下载。

发表于 10-18 09:45 20次 阅读
HR7P201 8位单片机集成电路芯片的数据手册免费下载

单片机有哪些常用算法?吴鉴鹰总结的单片机常用算法资料免费下载

算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数....

发表于 10-18 09:45 12次 阅读
单片机有哪些常用算法?吴鉴鹰总结的单片机常用算法资料免费下载

金沙滩51单片机教材,一等奖书籍

发表于 10-18 08:39 1次 阅读
金沙滩51单片机教材,一等奖书籍

51单片机原理图和PCB

发表于 10-17 20:12 3次 阅读
51单片机原理图和PCB

基于单片机学习的条件和学习步骤简述

单片机是大专学校电类专业的一门普通课,有些学校甚至把它列为选修课,在众多课程中,没有显出它有多么重要....

发表于 10-17 16:57 50次 阅读
基于单片机学习的条件和学习步骤简述

STM32和51单片机使用教程之实例说明资料免费下载

本文档的主要内容详细介绍的是STM32和51单片机使用教程之实例说明资料免费下载包括了:51单片机1....

发表于 10-17 16:53 19次 阅读
STM32和51单片机使用教程之实例说明资料免费下载

基于单片机EEPROM解析

我们板子上使用的这个器件是 24C02,是一个容量大小是 2Kbits,也就是 256 个字节的 E....

发表于 10-17 16:46 49次 阅读
基于单片机EEPROM解析

做单片机的朋友你可千万先把电源弄好!

说一个我获得的教训,老板的一个朋友委托我们给他做一个小型控制器,因为要求的工期比较急,没时间做线路板....

的头像 嵌入式资讯精选 发表于 10-17 08:56 147次 阅读
做单片机的朋友你可千万先把电源弄好!

最新版STC单片机烧录软件stc-isp-15xx-v6.86O免费下载

本文档的主要内容详细介绍的是最新版STC单片机烧录软件stc-isp-15xx-v6.86O免费下载....

发表于 10-17 08:00 21次 阅读
最新版STC单片机烧录软件stc-isp-15xx-v6.86O免费下载

WSD setup V705 ADUC8XX单片机的下载软件应用程序免费下载

本文档的主要内容详细介绍的是WSD setup V705 ADUC8XX单片机的下载软件应用程序免费....

发表于 10-17 08:00 17次 阅读
WSD setup V705 ADUC8XX单片机的下载软件应用程序免费下载

如何使用N76E003单片机点亮LED的2个方法详细说明

本文档的主要内容详细介绍的是如何使用N76E003单片机点亮LED的2个方法详细说明。新唐N76E0....

发表于 10-17 08:00 22次 阅读
如何使用N76E003单片机点亮LED的2个方法详细说明

应广单片机系列——高速I2C接口

经过一段时间的慎重考虑,在诸多朋友的支持下,决定在接下来的日子里,会尽可能多的写一些关于应广多核单片....

的头像 聚丰开发 发表于 10-16 18:45 135次 阅读
应广单片机系列——高速I2C接口

GAIP-5201低耗高速CMOS工艺制造的8位单片机详细数据手册免费下载

GAIP-5201 是采用低耗高速CMOS 工艺制造的8 位单片机,它内部包含一个1024*13-b....

发表于 10-16 17:35 28次 阅读
GAIP-5201低耗高速CMOS工艺制造的8位单片机详细数据手册免费下载

AVR单片机教程之AVR软件、工具、M16的基础知识资料免费下载

本文档的主要内容详细介绍的是AVR单片机教程之AVR软件、工具、M16的基础知识资料免费下载,第一步....

发表于 10-16 16:55 32次 阅读
AVR单片机教程之AVR软件、工具、M16的基础知识资料免费下载

怎样通过UART进行标准IO?

在工程的ASF\sam\utils\syscalls\gcc\syscalls.c文件中,ASF已经....

发表于 10-16 16:25 36次 阅读
怎样通过UART进行标准IO?

如何使用单片机C8051F410进行精确信号模拟电路设计的

针对某型检测设备使用中存在的工作点不稳定问题,基于C8051F410 单片机,采用PWM 调制技术和....

发表于 10-16 10:34 31次 阅读
如何使用单片机C8051F410进行精确信号模拟电路设计的

如何使用AVR单片机的直流无刷电机智能控制系统设计

分析目前直流无刷电机控制器的现状,设计了一种直流无刷电机通用的控制系统,通过开关选择有位置传感器或者....

发表于 10-16 10:33 39次 阅读
如何使用AVR单片机的直流无刷电机智能控制系统设计

基于单片机80C196KB和可编程逻辑器件EPM7128SLC在采集显示系统中的设计

该系统中待采集显示电压信号共16路,动态电压范围为-22~+27 V。由于这些电压信号变化频率较低,....

发表于 10-15 17:08 52次 阅读
基于单片机80C196KB和可编程逻辑器件EPM7128SLC在采集显示系统中的设计

单片机教程之模数转换AD与数模转换DA的详细资料介绍

模拟量:任何两个数字之间都有无限个中间值,所以称之为连续变化的量,也就是模拟量。 数字量:数字间有....

发表于 10-15 08:00 37次 阅读
单片机教程之模数转换AD与数模转换DA的详细资料介绍

51单片机时钟周期换算实用工具免费下载

本文档的主要内容详细介绍的是51单片机时钟周期换算实用工具免费下载

发表于 10-15 08:00 24次 阅读
51单片机时钟周期换算实用工具免费下载

如何使用AT89C52设计一个空气加湿器

本设计是基于单片机对数字信号的高敏感和可控性、湿度传感器可以产生模拟信号,和A/D模拟数字转换芯片的....

发表于 10-15 08:00 46次 阅读
如何使用AT89C52设计一个空气加湿器

51单片机串口初值和波特率计算器应用程序免费下载

本文档的主要内容详细介绍的是51单片机串口初值和波特率计算器应用程序免费下载。

发表于 10-15 08:00 33次 阅读
51单片机串口初值和波特率计算器应用程序免费下载

单片机与PC串口通信的程序及电路图详解

单片机与pc串口通信程序及电路图

的头像 畅学单片机 发表于 10-14 10:28 376次 阅读
单片机与PC串口通信的程序及电路图详解

中国的MCU正在逆袭的道路上走得越来越好

早期的微控制器是将一个计算机集成到一个芯片中,实现嵌入式应用,故称单片机。微处理器和单片机从上个世纪....

发表于 10-13 11:22 339次 阅读
中国的MCU正在逆袭的道路上走得越来越好

80C51单片机串行通信基础知识工作方式和数据传输速率及应用的概述

并行通信:数据的各位同时送出。传送距离:小于30米。 串行通信:数据的各位逐位送出,只需一对传送线....

发表于 10-12 17:17 62次 阅读
80C51单片机串行通信基础知识工作方式和数据传输速率及应用的概述

80C51单片机汇编语言程序设计总结资料免费下载

序设计语言分:机器语言、汇编语言和中高级语言 1.机器语言:硬件识别,二进制,无需翻译、直接执行,....

发表于 10-12 17:17 73次 阅读
80C51单片机汇编语言程序设计总结资料免费下载

如何进行单片机的安装详细方法电路图和程序资料免费下载

单片机技术自发展以来已走过了近20年的发展路程 。单片机技术的发展以微处理器(MPU)技术及超大规模....

发表于 10-12 16:44 46次 阅读
如何进行单片机的安装详细方法电路图和程序资料免费下载

使用Proteus软件构建虚拟实验室有没有可能?

介绍了Proteus 软件以及基于Proteus 进行单片机系统开发的过程, 并在Proteus 环....

发表于 10-12 16:44 50次 阅读
使用Proteus软件构建虚拟实验室有没有可能?

单片机晶振不起振的40个原因分析

单片机晶振不起振原因分析遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?(1) P....

发表于 10-12 16:06 134次 阅读
单片机晶振不起振的40个原因分析

基于STM32定时器实现毫秒延时函数

STM32定时器包含基本定时器、通用定时器和高级定时器,其中TIM6和TIM7是STM32当中的基本....

发表于 10-12 15:54 94次 阅读
基于STM32定时器实现毫秒延时函数

RS485接口程序和基于RS485实现的PC机与单片机串行通信控制系统资料

RS232虽然应用很广泛,但因为它推出较早,在现代网络通信中已经暴露出明显的缺点。比如以下几点:1)....

发表于 10-12 14:43 75次 阅读
RS485接口程序和基于RS485实现的PC机与单片机串行通信控制系统资料

单片机教程之单片机的历史,选型基础知识和发展趋势资料免费下载

目前生产单片机的厂商主要有Intel公司、Motorola公司、 Philips公司、ATMEL公司....

发表于 10-12 08:00 78次 阅读
单片机教程之单片机的历史,选型基础知识和发展趋势资料免费下载

什么是DSP?DSP的原理是怎么样的?DSP技术概述

1.什么是DSP?(1)数字信号处理(Digital Signal Processing —DSP)....

发表于 10-12 08:00 66次 阅读
什么是DSP?DSP的原理是怎么样的?DSP技术概述

ATMEL公司8051构架单片机Protel元件库的详细资料免费下载

本文档的主要内容详细介绍的是ATMEL公司8051构架单片机Protel元件库的详细资料免费下载。

发表于 10-12 08:00 29次 阅读
ATMEL公司8051构架单片机Protel元件库的详细资料免费下载

基于高性能8位AVR® RISC CPU,其灵活的低功耗架构提供了三种休眠模式

贸泽电子 (Mouser Electronics) 即日起开始分销Microchip Technol....

发表于 10-11 10:32 79次 阅读
基于高性能8位AVR® RISC CPU,其灵活的低功耗架构提供了三种休眠模式

浅析基于51单片机嵌入式软件和硬件的同步仿真

这样就可以使用TFTP向Mini Web卡仿真系统传递网页文件,使用IE浏览Mini Web卡仿真系....

的头像 沈丹 发表于 10-11 09:12 329次 阅读
浅析基于51单片机嵌入式软件和硬件的同步仿真

如何使用使用单片机DS18B20进行LED显示的程序免费下载

本文档的主要内容详细介绍的是如何使用使用单片机DS18B20进行LED显示的程序免费下载。

发表于 10-11 08:00 41次 阅读
如何使用使用单片机DS18B20进行LED显示的程序免费下载

使用单片机AT24C04进行LED显示的程序免费下载

本文档的主要内容详细介绍的是使用单片机AT24C04进行LED显示的程序资料免费下载。

发表于 10-11 08:00 39次 阅读
使用单片机AT24C04进行LED显示的程序免费下载

如何使用单片机设计红外防盗报警器详细毕业设计免费下载

本系统采用了热释电红外传感器,它的制作简单、成本低、安装比较方便,而且防盗性能比较稳定,抗干扰能力强....

发表于 10-11 08:00 42次 阅读
如何使用单片机设计红外防盗报警器详细毕业设计免费下载

51单片机应用广泛的真正原因是什么?

今天告诉你们一个秘密,为什么我们学的是51单片机,为什么在中国无论是工程师还是大学教师还是大学生都喜....

的头像 玩转单片机 发表于 10-10 17:41 649次 阅读
51单片机应用广泛的真正原因是什么?

智能锁的5大优点及4大类型

智能锁区别于一般的机械锁,具有自动电子感应锁定系统,他会自动感应到门处于关闭状态时,系统将自动上锁。....

发表于 10-10 10:37 177次 阅读
智能锁的5大优点及4大类型

STM32F030F4单片机的出厂程序详细资料免费下载

本文档的主要内容详细介绍的是STM32F030F4单片机的出厂程序详细资料免费下载。

发表于 10-10 08:00 49次 阅读
STM32F030F4单片机的出厂程序详细资料免费下载

浅析51单片机最小系统排阻作用

一些精密排阻采用四位数字加一个字母的标示方法(或者只有四位数字)。前三位数字分别表示阻值的百位、十位....

的头像 玩转单片机 发表于 10-09 17:17 321次 阅读
浅析51单片机最小系统排阻作用

单片机的光交箱硬件框图详细资料免费下载

本文档的主要内容详细介绍的是单片机的光交箱硬件框图详细资料免费下载。

发表于 10-09 08:00 34次 阅读
单片机的光交箱硬件框图详细资料免费下载