历史上的今天
返回首页

历史上的今天

今天是:2025年08月18日(星期一)

正在发生

2021年08月18日 | 通过PWM做一个简单的呼吸灯

2021-08-18 来源:eefocus

PWM(脉冲宽度调制)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。


本例中我们通过MC9S12XS128微处理器来制作一个简单的呼吸灯,我们利用级联的PWM0和PWM1来做PWM的输出。


如下为本例中配置PWM所用到的寄存器简介:


PWMCTL寄存器

在这里插入图片描述

CON67=0时,6和7是独立的 8bit PWM通道

=1时,6和7级联为一个 16bit PWM通道

CON45=0时,4和5是独立的 8bit PWM通道

=1时,4和5级联为一个 16bit PWM通道

CON23=0时,2和3是独立的 8bit PWM通道

=1时,2和3级联为一个 16bit PWM通道

CON01=0时,0和1是独立的 8bit PWM通道

=1时,0和1级联为一个 16bit PWM通道

PSWAI =0时,在等待模式下允许时钟继续

=1时,在等待模式下禁止时钟输入

PFRZ=0时,在冻结模式下允许脉宽调制继续

=1时,在冻结模式下禁止时钟输入

(级联后由管脚号较大的决定电平极性,时钟信号源等等)


PWMPOL寄存器

在这里插入图片描述

PPOLn=0时,PWM在起始周期先为0再为1

=1时,PWM在起始周期先为1再为0


PWMPRCLK寄存器

在这里插入图片描述

PCKB[2:0]:时钟B的预分频位

在这里插入图片描述

PCKA[2:0]:时钟A的预分频位

在这里插入图片描述

PWMSCLA寄存器

在这里插入图片描述

Clock SA = Clock A / (2 * PWMSCLA)


PWMCLK寄存器

在这里插入图片描述

PCLK 7,6,3,2= 0时,Clock B作为PWM的时钟

=1时,Clock SB作为PWM的时钟

PCLK 5,4,1,0=0时,Clock A作为PWM的时钟

=1时,Clock SA作为PWM的时钟


PWMPERx寄存器

在这里插入图片描述

PWMx Period = Channel Clock Period x PWMPERx


PWMDTYx寄存器

在这里插入图片描述

PPOL x =0时,占空比 = [(PWMPERx-PWMDTYx)/PWMPERx] * 100%

PPOL x =1时,占空比 = [PWMDTYx / PWMPERx]*100%


PWME寄存器

在这里插入图片描述

PWMEx=0时,通道x禁止输出

PWMEx=1时,通道x允许输出


#include       

#include "derivative.h"      


#define LEDCPU     PORTB_PB1        //定义连接发光二级管的PORTB_PB1口数据寄存

                                   //为LED,写'0'亮,写'1' 灭

#define LEDCPU_dir DDRB_DDRB1       //定义连接发光二级管的PORTB_PB1口方向寄存器

                                   //为LEDCPU_dir,写'0'做输入口,写'1'做输出口



void INIT_PLL(void)       //busclock 32M

{   

   

   CLKSEL_PLLSEL=0; //总线时钟来源于晶振 

           

   PLLCTL_PLLON=0;  //先关闭PLL


   SYNR=0x40 | 0x03;

   REFDV=0x80 | 0x01;              

   POSTDIV=0x00;  //PLL配置为64MHz     


   PLLCTL_PLLON=1;  //打开PLL


   _asm(nop);         

   _asm(nop);

   while(!(CRGFLG_LOCK==1)); //确定PLL是否稳定LOCK=1 稳定,=0 不稳定  

   CLKSEL_PLLSEL =1;     //总线时钟来源于PLL        

}


void init_pwm(void) 

 {

  PWMCTL_CON01= 1;   //级联0号和1号通道形成16位PWM通道号,由PWM1输出

  PWMPOL_PPOL1= 1;   //通道01的极性为高电平有效

  PWMPRCLK = 0x55;   //A时钟和B时钟的分频系数为32,频率为1MHz

  PWMSCLA  =   25;   //SA时钟设置寄存器

                     //CLOCK SA=CLOCK A/(2*PWMSCLA)

                     //CLOCK SA=1M/2*25=20KHz

  PWMCLK =0x02;      //通道01用SA时钟作为时钟源

  PWMPER01  = 200;   //通道01的周期为100Hz 

  PWMDTY01  = 0;     //通道01的占空比为0%  

  PWME_PWME1 = 1;    //使能通道01

 }


void delay(void) 

{

    unsigned int i,j;

    for(i=0;i<20;i++)

      for(j=0;j<50000;j++);

}



void main(void) {

  DisableInterrupts;       //禁止所有中断打开

  INIT_PLL();              //初始化PLL模块

  init_pwm();              //初始化pwm模块

  LEDCPU_dir=1;            //设置连接发光二级管的PORTB_PB0口为输出口

  LEDCPU=1;                //初始化发光二极管为亮

  EnableInterrupts;        //允许所有中断打开


  for(;;) 

  {

      delay();

      PWMDTY01=20;     //占空比为10%

      delay();

      PWMDTY01=40;     //占空比为20%

      delay();

      PWMDTY01=60;     //占空比为30%

      delay();

      PWMDTY01=80;     //占空比为40%

      delay();

      PWMDTY01=100;     //占空比为50%

      delay();

      PWMDTY01=120;     //占空比为60%

      delay();

      PWMDTY01=140;     //占空比为70%

      delay();

      PWMDTY01=160;     //占空比为80%

      delay();

      PWMDTY01=180;     //占空比为90%

      delay();

      PWMDTY01=200;     //占空比为100%

      delay();

      PWMDTY01=180;     //占空比为90%

      delay();

      PWMDTY01=160;     //占空比为80%

      delay();

      PWMDTY01=140;     //占空比为70%

      delay();

      PWMDTY01=120;     //占空比为60%

      delay();

      PWMDTY01=100;     //占空比为50%

      delay();

      PWMDTY01=80;       //占空比为40%

      delay();

      PWMDTY01=60;      //占空比为30%

      delay();

      PWMDTY01=40;      //占空比为20%   

  }                     

}


将P1脚接到B口的任意一个管脚就可以看到所对应的LED做出呼吸灯一样的状态了


推荐阅读

史海拾趣

GSN Electronics公司的发展小趣事

GSN Electronics公司在电子行业中的发展可以追溯到多个方面,以下是五个关于其发展的故事,每个故事均基于事实进行描述:

1. 创立与初期发展

故事背景:GSN Electronics(深圳)有限公司成立于2012年11月27日,由GSN Electronics (Hong Kong) Limited全资控股,注册资本为100万元人民币,后增至当前规模。公司自成立以来,便专注于电子连接器和线束的生产经营,以及电子产品和电子零件的研发、批发、进出口及相关配套业务。初期,GSN Electronics凭借其专业技术和敏锐的市场洞察力,在深圳这一中国重要的电子产业聚集地迅速站稳脚跟。

发展亮点:公司通过不断优化产品结构和提升技术实力,逐步在电子行业中建立了自己的品牌影响力。

2. 技术创新与专利积累

故事背景:GSN Electronics深知技术创新是企业发展的核心驱动力。因此,公司不断加大研发投入,致力于新产品的开发和旧产品的升级换代。截至目前,公司已获得多项实用新型专利授权,如耐折弯的微型连接器、方便插入的电连接器、端口防水防尘结构的连接器等,这些专利技术的应用极大地提升了产品的竞争力和市场占有率。

发展亮点:技术创新和专利积累不仅巩固了GSN Electronics在电子连接器领域的领先地位,还为其拓展新市场、开发新客户提供了有力支持。

3. 市场拓展与国际认证

故事背景:随着公司实力的不断增强,GSN Electronics开始积极拓展国内外市场。公司通过参加各类行业展会、建立海外销售网络等方式,不断提升品牌知名度和市场占有率。同时,公司还积极申请并获得了多项国际认证,如IATF 16949和ISO 9001等,这些认证不仅证明了公司的产品质量和管理水平达到了国际标准,还为其进入高端市场提供了有力保障。

发展亮点:市场拓展和国际认证的成功实施,使GSN Electronics在电子行业中树立了良好的企业形象和品牌形象。

4. 团队建设与企业文化

故事背景:GSN Electronics深知人才是企业发展的根本。因此,公司一直注重团队建设和企业文化建设。公司拥有一支高素质的研发团队和销售团队,他们不仅具备丰富的专业知识和实践经验,还具备强烈的创新意识和团队精神。同时,公司还积极营造开放、包容、创新的企业文化氛围,鼓励员工勇于尝试、敢于创新。

FTCAP Fischer & Tausche Capacitor Group公司的发展小趣事

FTCAP Fischer & Tausche Capacitor Group公司的发展故事

故事一:德国制造的坚持

FTCAP Fischer & Tausche Capacitor Group自成立以来,始终坚守在德国本土进行电容器的生产和研发。这一决策源于公司对产品质量的不懈追求。在电子行业,德国制造以其精湛的工艺和严格的质量控制而闻名,FTCAP也不例外。通过缩短研发与生产之间的距离,FTCAP能够确保高效的生产流程和与客户的紧密协作,从而快速响应市场需求,提供高质量的产品。

故事二:多样化的产品线

FTCAP的产品线涵盖了从薄膜电容器到铝电解电容器的广泛范围,满足了不同行业对电容器的多样化需求。公司不仅生产标准规格的电容器,还根据客户的特定需求提供定制化的解决方案。这种灵活性和创新性使得FTCAP在竞争激烈的电子市场中脱颖而出,赢得了众多客户的信赖和好评。

故事三:技术创新与产品升级

近年来,FTCAP不断投入资源进行技术创新和产品升级。例如,公司推出的Enlight Energy Cap系列薄膜电容器,经过重新设计后,不仅性能更加优越,还增加了“Enlight”这一附加属性,进一步提升了产品的市场竞争力。此外,FTCAP还致力于提高电容器的能效和可靠性,以满足日益严格的环保和能效标准。

故事四:行业内的替代解决方案

凭借超过70年的电容器研发和生产经验,FTCAP在行业内建立了良好的声誉。当一些客户面临竞争对手产品无法满足其需求时,FTCAP能够提供定制化的电容器作为替代解决方案。这些定制产品不仅性能优越,而且能够完美匹配客户的设备和应用场景,帮助客户解决燃眉之急。

故事五:团队建设与企业文化

FTCAP的成功离不开其优秀的团队和独特的企业文化。公司注重员工的培训和发展,鼓励员工创新思维和团队合作。在FTCAP,员工们不仅拥有专业的技能和知识,还具备高度的责任感和使命感。他们共同努力,为公司的发展贡献自己的力量。此外,FTCAP还定期举办各种团建活动,增强员工之间的凝聚力和归属感,营造了一个和谐、积极的工作氛围。

EA Elektro-Automatik公司的发展小趣事

1974年,电子工程师Helmut Nolden先生在德国创立了EA Elektro-Automatik公司。初期,公司主要生产小型固定式和可调式电源,以满足工业、实验室和业余爱好者的需求。这些产品凭借稳定的性能和合理的价格,在市场上逐渐获得了认可。随着技术团队能力的逐渐提高和持续创新,EA Elektro-Automatik开始扩大产品线,满足更多客户的特定需求。

Gang Song Electronics Co Ltd公司的发展小趣事

并购完成后,GainSpan的技术与Telit的物联网平台实现了深度融合。Telit利用GainSpan的低功耗WiFi模组技术,推出了更加高效、节能的物联网解决方案。这些方案不仅降低了物联网设备的能耗,还延长了设备的使用寿命,提高了整体系统的稳定性和可靠性。同时,GainSpan的技术也为Telit的物联网平台带来了更多创新应用的可能性。

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业日益增长的定制化需求,Frolyt Condensers & Elements GmbH积极调整策略,提供从设计咨询到产品生产的全方位定制化服务。公司建立了一支专业的技术团队,能够根据客户的具体需求,快速响应并设计出符合要求的电容器产品。这种高度定制化的服务模式赢得了众多客户的信赖和好评,使得Frolyt在竞争激烈的市场中脱颖而出。

EDO Corp公司的发展小趣事

随着科技的不断进步,电子行业也在不断变化。Eclipse Magnetics深知,只有不断创新才能保持竞争力。因此,公司不断加大研发投入,积极探索新的技术方向。同时,公司还面临着来自全球竞争对手的挑战。然而,Eclipse Magnetics凭借其强大的研发实力和品牌影响力,始终保持着领先地位。

以上故事均基于Eclipse Magnetics在电子行业中的发展历程进行概括性描述,具体细节可能因实际情况而有所不同。

问答坊 | AI 解惑

求单电源高电压的运放的型号~~~

要求输出能达到80V~~~ 另外OPA452/453运放能不能使用单电源供电?…

查看全部问答>

求助,搞了几天,还是知道怎么让LPC2103进FIQ中断

    这是main.c,整个工程就是这一个源文件,在IAR下,怎么就是进不了FIQ中断,大侠帮我看一下,谢谢,搞了好几天了     目的是将P0.16设置为EINT0,然后EINT0设置为FIQ中断,由于只有一个FIQ,所以FIQ服务程序就随便写了几句 ...…

查看全部问答>

【藏书阁】电磁场数值分析

目录: 第一篇 有限差分法 第一章 有限差分法 第二篇 有限元法 第二章 有限元法的基本原理和实施 第三章 二维等参元有限元法 第四章 三维场中的有限元法 第五章 非线性场中的有限元法 第六章 时变场中的有限元法 第三篇 矩量法、模拟电 ...…

查看全部问答>

EasyArm1138学习笔记——目标篇

开发板:ZLG出品的EasyArm1138开发板(以前以100RMB购进的,现在有时间了,来学习下ARM) 开发软件:IAR Embedded Workbench 5.0 Kickstart 学习目标:主要是为了熟悉ARM的体系结构,不对外设做过多的涉足,所以基本的目标如下。 Ø&n ...…

查看全部问答>

STM32F103USB实现双接口(Keypad+Mouse)的问题!!

利用STM USB固件库 单独实现多端点HID传输、Mouse 或Keypad均没有任何问题! 在实现双接口设备时总线挂起!!!!! /* USB Configuration Descriptor */如下 /*   All Descriptors (Configuration, Interface, Endpoint, Class, Vendo ...…

查看全部问答>

使用UC3844驱动的电源,该如何修改?

220V交流输入24V4A输出的开关电源,空载和轻载时输出电压约为42V,电源本身发热厉害。电源为单端反击式,使用UC3844驱动,想改成轻载输出时也比较稳定的电源,输出功率有所下降也可以接受,输出滤波电容是35V的。   目前想减小UC3844震荡的 ...…

查看全部问答>

12887读数据问题

近日再用DS12887制作辉光管电子钟(52+12887+74HC595),在用protues做仿真。现在写数据是可以了,旁边的12887小框能读到写的数据。LED显示数据是通过数组来读取的,显示程序没有错,调节时间时能正确显示,但是到运行时显示却是6位都显示8,且一直 ...…

查看全部问答>

WEBENCH? Designer求助

本帖最后由 dontium 于 2015-1-23 11:39 编辑 哪位大神给传个WEBENCH? Designer的使用教程啥的啊,本人想设计 一个电源,就是不会用啊,希望大神不吝赐教啊 …

查看全部问答>

来请教蜂鸣器应用中碰到的一个棘手问题

如上图,在VLED和GND之间接上蜂鸣器,现在遇到自认为难以解释的现象,还请高人释惑!现象描述如下: 1、如果先将蜂鸣器接到电路板上的VLED和GND之间,然后24V开关电源上电,给电路板供电,则蜂鸣器正常鸣叫,且整个电路板正常工作; 2、如果24V ...…

查看全部问答>

给大家拜年了!

祝大家新的一年里有新的进步,有新的收获;同时祝愿我们的板块越来越红火! …

查看全部问答>