title
收藏本站
联系站长
关于本站
首页 信息发布 产品宣传 论坛交流 学习文章 技术人生 项目源码 技术资料 人才收录
 今天是: 2010年7月10日 星期 六
欢迎光临!单片机群号:25930265(新) 71062262 21829895 64584393 26583231(只限加一群)  
热门文章推荐


当前位置:首页>>>单片机学习文章>> AVR单片机同时产生三路PWM的程序和P
AVR单片机同时产生三路PWM的程序和PWM转电压电流电路
作者:md9给他留言 [转载] 字体:
发表于:
2009-10-13 00:08:59

用ATmega8的T/C1和T/C2可以产生三路PWM 信号.  
快速PWM 的产生就是先设定一个TOP值再设定一个比较值,然后,计数器开始计数,比如保持输出1,计数到设定的比较值时,电平变为0,并维持,然后继续计数到TOP  
电平再变为1,如此重复循环.  
1.T/C1可以产生2路(OC1A即PB1 OC1B即PB2).T/C2产生一路(OC2即PB3).  
2.需要设定T/C1的寄存器有四个 TCCR1A TCCR1B(这两个寄存器一起决定了两路PWM信号的产生方式,频率和TOP值) OCR1A(此值/TOP就是占空比) OCR1B(设定第二路PWM的占空比)  
2.需要设定T/C2的寄存器有2个  TCCR2(同理,这个寄存器决定了第三路PWM信号的产生方式,频率和TOP值 ) OCR2(这个寄存器决定占空比)  

上面所述只能产生几个固定频率的PWM信号(占空比可以随便调),并且前两路的频率是一样的.如果想产生自己想要频率的PWM,需要用OCR1A 设定OCR1B的TOP值,由OCR1B产生PWM,此时OCR1A只能产生占空比50%的PWM.  
下面是我用ATmega8产生三路频率31.25K,占空比分别为1/3 1/2 2/3 PWM 的程序.      8M 
#include <avr/io.h>   
void main(void)  
{  
PORTB=0x00;  
DDRB=0x0E;  

// T/C1 初始化  
TCCR1A=0xA1;      
TCCR1B=0x09;    //匹配时清零,TOP:255,频率:8M/256=31.25K 
OCR1A=85;      //占空比:1/3  
OCR1B=128;    //占空比:1/2  
// T/C2 初始化  
TCCR2=0x69;    //匹配时清零,TOP:255,频率:31.25K  
OCR2=170;      //占空比:2/3  
while (1);  
}  转自深圳单片机交流网www.mcujl.com

PWM转成电压电路图其中G15A为地深圳单片机交流网

pwm转成电流电路

深圳单片机交流网


(本文引自www.mcujl.com/article.asp?conID=463)


---------------------------------------------------------------------------------------------------
[打印文章] [关闭本页] [返回顶部]
本网站部分资料转自网上,如有侵权请来信告明,我们会尽快删除  | 网站地图
Copyright @ 2007-2010 深圳单片机交流网.版权所有
网站创办者:詹长亮,周发辉,李林盛
网站支持:zcl843@163.com QQ:380476830 13723787271詹长亮