在很多工程应用中,需要使用到PWM波(脉宽调制),例如电机调速、温度控制调整功率等。本文讲述怎么利用单片机的一个定时器生成多路PWM波形。
一般的,PWM的周期t1是一个固定值,如1ms,10ms,100ms等,在一个周期中包含了高电平t2和低电平t3,它们的关系是t2+t3=t1。改变一个周期中高电平的时间,就能达到速度或者功率调整的目的。PWM适用于高速开关器件的控制,不适合于继电器等低速开关元件的控制,因为继电器等低速元件达不到如此快的开关速度。
PWM控制的关键是控制改变PWM的高电平时间t2,这个时间在其他子程序中由控制算法中进行修改,如PID控制算法。
图 1
在微处理器,如单片机中,实现一个定时器生成多路PWM的方法如下。
首先来看看用一个定时器实现一路PWM输出的方法:
>>定义一个时间基准刻度t,这个也是计时器中断周期,一般在程序中t不改变。PWM的周期、高低电平时间由若干个基准时间t组成;
>>定义一个全局计时变量n,n表示这段时间经过了多少个基准时间t;
>>定义一个全局计时变量n1,n1表示一个PWM的周期包含多少个基准时间t,n1=t1/t。一般在程序中n1,t1不改变。
>>定义一个全局计时变量n2,n2表示一个PWM周期中高电平包含多少个基准时间t,n2=t2/t。由于高电平的时间受其他算法控制改变的,n2也是随时在改变。
程序的流程如下:
①初始化定时器,定时器中断时间设置为t,如设置t为1ms或其他;
②初始化变量:n=0;//计时变量n清零
n1=t1/t;//一个PWM的周期t1包含了多少个基准时间t.
//假如设PWM周期为100ms,则n1=100;
n2=t2/t;//计算一个PWM中高电平时间t2由多少个基准时间//t组成。t2由其他控制算法改变。
③开始计时,打开定时器中断。定时器中断程序中n++;
当n
程序流程图如下:
图2
如果在同一个定时器中需要多路PWM,再定义多组类似的变量,按照图2 中流程处理即可。
上一篇:基于51单片机的DS18B20温控系统设计
下一篇:51单片机DS18B20温度传感四位数码管显示报警
推荐阅读
史海拾趣
在竞争激烈的电子市场中,品质是Deltron公司的生命线。公司始终坚持以客户为中心,注重产品质量和服务的提升。通过严格的质量控制体系和完善的售后服务,Deltron赢得了客户的信任和好评。同时,公司还积极参与行业标准的制定和修订工作,推动行业向更高水平发展。
随着全球环保意识的日益增强,电子行业也开始面临着越来越严格的环保要求。Ferroxcube公司作为行业领军企业,积极响应环保号召,开始研发更加环保的磁性元件。
经过长时间的研发和试验,公司成功推出了一款采用环保材料制成的新型磁芯。这款磁芯不仅性能优异,而且在使用寿命结束后可以方便地进行回收再利用,大大降低了对环境的污染。
这一创新产品一经推出,就受到了市场的热烈欢迎。许多环保意识强烈的客户纷纷选择使用Ferroxcube的环保磁芯,以支持绿色环保事业。这也使得Ferroxcube在环保领域的声誉大大提升,为公司赢得了更多的市场份额和客户认可。
在技术创新的基础上,Alpha 3 Manufacturing公司开始积极拓展市场。公司参加了多个国际电子展会,与全球客户建立了广泛的联系。同时,公司还加强了对市场的调研和分析,针对不同地区和客户的需求,推出了定制化的产品和服务。这些举措不仅提高了公司的市场份额,还进一步提升了公司的品牌知名度和影响力。
面对电子行业日益多样化的市场需求,FlexiPanel推出了定制化RF模块解决方案服务。公司拥有一支专业的技术团队,能够根据客户的具体需求,提供从需求分析、方案设计、样品制作到批量生产的全流程服务。这种灵活多样的服务模式不仅满足了客户对于个性化产品的需求,还帮助FlexiPanel在市场中建立了良好的口碑和品牌形象。
展恒电子始终坚持以品质为核心,严格把控产品质量。在与上海芯北电子科技有限公司的合作中,双方共同保证产品品质的一致性、兼容性和安全性。在合作期间,展恒电子成功向客户供应了数百万片芯片,并得到了客户的高度认可和信任。这种对品质的坚持和追求,使得展恒电子在电子行业中赢得了良好的声誉,也为公司的长期发展奠定了坚实的基础。
这五个故事从不同角度展示了展恒电子(Broadic)在电子行业中的发展历程和成就,体现了其在技术创新、市场拓展、品质保证等方面的实力和努力。通过不断努力和创新,展恒电子已经在电子行业中取得了显著的成果,并将继续为行业的发展贡献自己的力量。
随着电子行业的快速发展,Capar Components Corp意识到只有不断创新才能在市场中立足。于是,公司加大了对研发的投入,引进了一批高素质的技术人才。经过数年的努力,公司成功研发出了一种新型的高性能集成电路,这一创新不仅提升了产品的性能,还降低了生产成本,使公司在市场上获得了更大的竞争优势。
DS18B20为何显示I5字符?我就是按照下面电路接法。。DS18B20为何显示I5字符? DS18B20为何显示I5字符?我就是按照下面电路接法。。DS18B20为何显示I5字符?DS18B20为何显示I5字符?我就是按照下面电路接法。。DS18B20为何显示I5字符?… 查看全部问答∨ |
摘要:简要介绍了嵌入式实时操作系统WinCE环坑下驱动 程序的设计原理和CAN总线技术,并详细分析了依托PC/ 104总线的CAN适配卡底层驱动程序的设计与实现。… 查看全部问答∨ |
单片机工作电压要求在4.5V到5.5V之间,讨论下控制的方式 单片机工作电压要求在4.5V到5.5V之间,如果超过此范围单片机就停止工作,用硬件方式解决,大家讨论下有没有什么好的方式……… 查看全部问答∨ |
|
【Lattice技术问题】ISPlever调用RAM,反正出错 # ELAB2: Fatal Error: ELAB2_0036 Unresolved hierarchical reference to \"PUR_INST.PURNET\" from module \"mac_add_tb.UUT.u4.u1.ram1_0_0_0\" (module not found).# ELAB2: Last instance before error: /UUT/u4/u1/ram1_0_0_0# KERNEL: Error ...… 查看全部问答∨ |
|
我一直做上位机软件开发,VC又占其中的大多数时间。现在感觉嵌入式很重要,想找个人互补一下知识。 受一个帖子《你教我MFC,我教你英语,怎么样》的启发,想找个想学VC、却一直在做嵌入式开发的朋友,你教我嵌入式开发,我教你VC(Web开发我也做过一 ...… 查看全部问答∨ |
Ce6.0的usb同步连接,Ce提示连接成功,PC端activesync提示正在连接一会过后,下面自动断开 使用6.0自带模拟器的2410BSP,移植到自己的平台上了,但USB连接不上,usb定制的是serial功能。 开始是出现如下data abort: UsbFnMdd!UFN_Init: PDD has 5 endpoints UsbFnMdd!UFN_Init: PDD supports speeds 0x1 UsbFnMdd!CUfnBus::CreateChil ...… 查看全部问答∨ |
根据时序要求,我们设定VM/VDEN信号作LCD的ENAB信号,VCLK信号作LCD的NCLK信号。要想得到合适的VM和VCLK波形,就要正确设定寄存器的值,根据寄存器的值与VM和VCLK波形的关系,我们设定了如下关键寄存器的值: HSPW=10;HBPD=100;HFPD=47; VSPW=1;VBPD=37 ...… 查看全部问答∨ |
关闭看门狗是用 MOV #WDTPW+WDTHOLD,&WDTCTL 这句话的意思是将 HOLD置位吧? 那我用 bis #080H, &WDTCTL,这样可不可以呢? 还有,WDTPW究竟是个什么咚咚?… 查看全部问答∨ |