当前位置:首页 > 单片机 > 单片机
[导读] 一、PWMPulse Width Modulation脉冲宽度调制,简称PWM。PWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值,则需通过使用高

 一、PWM

Pulse Width Modulation脉冲宽度调制,简称PWM。

PWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值,则需通过使用高分辨率计数器,改变方波的占空比来对一个模拟信号的电平进行编码。

仍输出数字信号,因为满幅值的直流供电只有5V(1)和0V(0)两种。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的,连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,只要带宽足够,可以输出任意不大于最大电压值的模拟电压。

输出电压=(接通时间/脉冲时间)*最大电压值

12


二、51单片机的Timer

作者用的单片机是STC89C52,其内部有3个16位Timer,分别为T/C0,T/C1,T/C2,通过配置相关寄存器即可实现Timer的功能控制。

控制PWM需要用到定时器来生成不同占空比的波形,采用定时器中断的方式。

相关寄存器:

1.IE寄存器

名称 功能
0 EX0 外部中断0的中断允许位
1 ET0 Timer0的溢出中断允许位
2 EX1 外部中断1的中断允许位
3 ET1 Timer1的溢出中断允许位
4 ES 串行口中断允许位
5 ET2 Timer
6 - -
7 EA 中断允许总控制位

2. TCON寄存器

名称 功能
0 IT0 外部中断0的触发方式选择位。功能和IE1类似
1 IE0 外部中断0的中断请求标志位。功能和IE1类似
2 IT1 外部中断1的触发方式选择位。当IT1=1时,为下降沿触发方式,也就是从高到低的跳变会触发外部中断1。当IT1=0时,为低电平触发,也就是单片机检测到该引脚电平为低时,会触发外部中断1
3 IE1 外部中断1的中断请求标志位。当IE1=1的时候,表示外部中断1被触发,正在请求单片机处理中断事件。当单片机相应中断,处理中断事件时,该位由单片机自动清零
4 TR0 启动定时器/计数器0启动位,功能和TR1类似
5 TF0 定时器/计数器T0溢出中断请求标志位。功能和TF1类似.
6 TR1 启动定时器/计数器1启动位,TR=1启动计时,TR=0停止计时
7 TF1 定时器/计数器T1溢出中断请求标志位。当T1溢出时,该位自动置1。单片机响应相应中断时,系统自动清零TF1,也可以程序清零

3. TMOD寄存器

控制Timer0/1的工作方式

名称 功能
0 M0 工作方式选择位
1 M1 工作方式选择位
2 C/T 计数器模式和定时器模式选择位,C/T=1时,为计数器模式,C/T=0时,为定时器模式。C为counter的缩写,T为timer的缩写,这样方便理解
3 GATE T1(0)的启动源选择位,GATE=1时,用外部中断引脚INT1(INT0)上的高电平来启动T1(T0);GATE=0时,用TCON里的TR1(TR0)来启动T1(T0)。
4 M0 相似于0位
5 M1 相似于1位
6 C/T 相似于2位
7 GATE 相似于3位
M1 M0 工作方式
0 0 方式0,由TH1(TH0)的8位和TL1(TL0)的低5位组成一个13位定时器。
0 1 方式1,由TH1(TH0)的8位和TL1(TL0)的8位组成一个16位定时器。
1 0 方式2,TL1(TL0)溢出后,TH1(TH0)的数值自动填充到TL1(TL0)。
1 1 方式3,仅适用于T0,T0分成两个8位计数器,T1停止计数。

4. Timer0/1计数寄存器

TL0

TL1

TH0

TH1

当定时开启后,TL0(TL1)自动跟随机器周期加一。当TL0(TL1)满了后,自动清零同时向TH0(TH1)进一位,不需要手动操作.

而当TL0(TL1)和TH0(TH1)都满了以后,此时如果定时中断和总中断都已经打开,那么就会发生溢出中断,同时这两个寄存器清零

三、运用PWM完成呼吸灯

1. 硬件电路


2. 软件驱动

unsigned char PWM_COUNT; //计数

unsigned int HUXI_COUNT;    //占空比更新时间

unsigned char PWM_VLAUE;    //占空比比对值

bit direc_flag;             //占空比更新方向

 

void timer0_init()

{

    TMOD=0x02;          //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)

    TH0=0x47;               //定时器溢出值设置,每隔200us发起一次中断。

    TL0=0X47;

    TR0=1;                  //定时器0开始计时

    ET0=1;                  //开定时器0中断

    EA=1;                       //开总中断

    PWM_COUNT =0;

}

void time0() interrupt 1

{   

    PWM_COUNT++;

    HUXI_COUNT++;

    if(PWM_COUNT == PWM_VLAUE)      //判断是否到了点亮LED的时候

        LED = 1;                    //点亮LED

    if(PWM_COUNT == 10)             //当前周期结束

    {

        LED = 0;                    //熄灭LED

        PWM_COUNT = 0;              //重新计时

    }

    if((HUXI_COUNT == 600) && (direc_flag == 0))

    {                               //占空比增加10%

        HUXI_COUNT = 0;

        PWM_VLAUE++;

        if(PWM_VLAUE == 9)          //占空比更改方向

            direc_flag = 1; 

    }

    if((HUXI_COUNT == 600) && (direc_flag == 1))

    {                               //占空比减少10%

        HUXI_COUNT = 0;

        PWM_VLAUE--;

        if(PWM_VLAUE == 1)          //占空比更改方向

            direc_flag = 0; 

    }   

}

void main()

{

    HUXI_COUNT = 0;

    PWM_COUNT = 0;

    PWM_VLAUE = 5;

    direc_flag = 0;

    LED = 1;            //默认LED熄灭   

    timer0_init();      //定时器0初始化

    while(1);

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭