电工之家_电工基础知识学习网站
当前位置:电工之家 > 电工知识 > 单片机 > 正文

单片机没有PWM外设也可以做可调占空比

时间:2018-12-12 09:21 来源:电工之家

利用单片机的PWM片上资源可以很方便的输出PWM波形和调节其占空比,所谓占空比就是在一个周期内高电平所占的比例,如下图所示:

单片机没有PWM外设也可以做可调占空比
占空比=T1/T×100%,如果单片机没有PWM片上资源可通过普通GPIO和定时器配合输出不同占空比的方波。分两种情况介绍。
1.不带有比较功能的情况
如果单片机没有PWM功能,又没有比较功能,那就通过定时器输出。定时器输出方波的原理时,定时翻转GPIO口的输出状态,要想改变占空比,那就去改变定时器输出高电平的时间,针对不同的占空比计算出定时器所需要的初值,每次加载定时器初值。下图时51单片机的定时器寄存器含义。
单片机没有PWM外设也可以做可调占空比
2.单片机带有比较功能
如果单片机带有比较功能,让单片机工作在比较功能下,可以通过设置比较功能的阈值来改变GPIO口的翻转实现占空比的可调。这种方法需要根据不同的占空比,计算出所对应的比较器阈值,达到设定值后GPIO口就改变当前的电平状态,即实现了不同的占空比的输出。
一般来说单片机的CCP功能是绑在一起的,即Capture(捕获),Compare(比较),PWM(脉宽调制)等功能。没有PWM功能也就没有比较功能。所以没有CCP功能的单片机一般使用定时器输出可变占空比的方波。

占空比可调的PWM
这个占空比其实也很容易改变,只需要我们改变高低电平的时间,如果你不想这么做,可以往单片机上加一个电位器,在我们旋转电位器的时候,把对应的电压传给单片机,单片机再通过不同的电压改变不同的时间,以此来达到调节占空比的目的。
如果需要PWM功能,但你用的MCU恰好又没有,最简单的办法就是换一个,一般来说,连PWM功能都没的MCU性能都一般。确实不想换,就想玩玩,其实也不难,就是用代码控制IO的电平而已:
例如要在端口D1输出占空比30%,频率为1KHz的方波,可以这样:

do

portd.1=0

waitus 700

portd.1=1

waitus 300

loop

当然了,前提是waitus要够准。

看过《单片机没有PWM外设也可以做可调占空比》的人还看了以下文章
有什么语言可以玩单片机 有什么语言可以玩单片机
目前大部分单片机都可采用C语言和汇编语言,部分高级单片机如DSP,可采用C++进行面向对象的编程。 1、汇编语言。 采用汇编语言进行编程,优点是会对单片机的架构理解的比较透彻,软件运行速度较快,可控性比较高。缺点是不同单片机的汇编指令不同,可移植性...
从事单片机相关工作需要的技能 从事单片机相关工作需要的技能
一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。 如果想更好的从事单片机相关工作: 1、必须熟悉C语言。目前基本上所有的单片机的开发环境都支持C语言编程。 2、...
单片机实现任意一个流水灯亮灭的C语言程序 单片机实现任意一个流水灯亮灭的C语言程序
单片机使用简单基础的51单片机。利用单片机P3.0~P3.2 三个I0口,假如外部电源给LED供电,IO口就输出低电平时(0),LED灯就会亮,IO口输出高电平,LED就会灭。假如是单片机IO口给led供电(如果使用P0口需要使用上拉电阻),IO口就输出低电平时(0),LED灯就...
单片机系统中的晶振电路图 单片机系统中的晶振电路图
晶体振荡器作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。图中的只有两个引脚,应该是无源晶振,没有正负之分。而有源晶振有四个引脚,有正负之分。 比如单片机系统中的晶振电路 51单片机芯片内部有一个用来构建振荡器的...
什么叫单片机 什么叫单片机
所谓单片机是应工业自动化控制、通信、家电等领域的需要将累加器、指令寄存器、指令译码器、总线(数据线、地址线、控制线)、总线控制器、程序存储器(RAM、ROM)、标志寄存器、I/O外设接口等集成在一个硅片上的大规模集成电路,即单片机的核心中央处理器CP...