首 页 学 苑 例 子 工 具 下 载 商 城 论 坛
     
 

   我们在使用AVR的时候其PWM是一个很重要的功能,但是往往无从下手,这里提供一个JAMESKING提供的简单例子供参考。

   使用FASTAVR的朋友们是否感到FASTAVR很多语句没有说明呢,或者感到没有实例无法下手?我也有这种感觉,所以慢慢来添加FASTAVR的例子,以下是这个程序,无论编译还是仿真还是实物测试均通过了的:

'//////////////////////////////////////////////////////////
'/这个程序用于测试FASTAVR的PWM输出功能是否正常,,这个程序
'/可以通过修改变成PWM脉宽调速的基本程序
'/语言:FASTAVR4.1.3
'/作者:JAMESKING
'/参考程序:www.mikrocontroller.net Forum
'/编译及使用情况:通过编译,没有错误;通过试验板测试,采用
'/TEK公司的TDS220数字存储示波器分别观测两通道波形,完全正常
'//////////////////////////////////////////////////////////

$Device= m8                                                '
$Stack = 125                                               '
$Clock = 11.0592                                           '
$Source=On                                                 '以上这四句话我就不解释了,大家都知道
$Timer1=PWM, 10, Pwm1A=Normal,Pwm1B=Normal,Prescale=64     '设置timer1为10位PWM,PWM输出为同相方式,预分频为64(10位方式可以更改为8、9位方式,
                                                           '因为我使用了Mega8,所以有两个PWM输出端口,并且两个端口可以同时输出占空比完全不同的
                                                           'PWM波形),并且,可以根据芯片的不同采用不同的分频比。
Pwm1A=1020                                                  'PWM端口1A占空比设置为1020/1023,设置的参数可以更改为变量,设置的参数须配合PWM的位数
Pwm1B=1000                                                  'PWM端口1B占空比设置为1000/1023,设置的参数可以更改为变量,设置的参数须配合PWM的位数
Set DDRB.1                                                 '置PWM1A为输出口
Set DDRB.2                                                 '置PWM1B为输出口
Start Timer1                                               '启动定时期T1(就是启动PWM),输出PWM波形

End

 

有了PWM1的输出了,如果还嫌不够,那么需要使用PWM2了,呵呵如果你很“贪心”,那么下面的程序可以满足你的“贪心”:
'////////////////////////////////////////////////////////////
'/这个程序用于测试FASTAVR的PWM2输出功能是否正常,,这个程序//
'/可以通过修改变成PWM2脉宽调速的基本程序                   //
'/语言:FASTAVR4.1.3                                       //
'/作者:JAMESKING                                          //
'/参考程序:FastBW用户手册(61页黑白版本)                 //
'/编译及使用情况:通过编译,没有错误;通过试验板测试,采用 //
'/TEK公司的TDS220数字存储示波器分别观测通道波形,完全正常  //
'/                                                         //
'////////////////////////////////////////////////////////////

$Device= m8                                                
$Stack = 125                                               
$Clock = 11.0592                                           
$Source=On                                                 '以上这四句话我就不解释了,大家都知道
$Timer2=PWM, 8,Normal,Prescale=32     '设置timer2为8位PWM,PWM输出为同相方式,预分频为32(8位方式可以不可更改,
                                                           '因为我使用了Mega8,所以Timer2可以作为PWM输出端口,请注意设置Normal的时候与Timer1有很大不同)

Pwm2=200                                                  'PWM端口2占空比设置为200,设置的参数可以更改为变量,设置的参数须配合PWM的位数,这里最高不可超过255
Set DDRB.3                                                 '置PWM2为输出口
Start Timer2                                               '启动定时期T2(就是启动PWM),输出PWM坡形

End

  感谢JAMESKING提供的资料!

 
 

链接:

 

周立功  AVR单片机DIY 21IC社区 正强单片坊 电子资料城
双龙电子 ICCAVR 力源信息 www.atmel.com 电子之城
华强电子世界 AVR与虚拟仪器 美信中国 www.fastavr.com ARM开发网
宁波三和壳体公司 杭州福芯电子 芯艺设计室 www.mcselec.com 东创科技

Copyright©2005 Basicavr.com Email:agui2008@21cn.net  TEL:13798456680 FAX:075584717022

地址:深圳市华强北路赛格电子市场一楼1B105柜 QQ:543527753 粤ICP备05079885号