原创 AVR笔记14:TC0产生PWM调节LED亮度(GCC)

2009-9-1 16:36 3877 4 4 分类: MCU/ 嵌入式

》》点此进入    http://bbs.armavr.com/   ARM-AVR嵌入式开发论坛


一、程序结构
attachimg.gif 程序结构


下载 (4.86 KB)

2009-8-11 11:00



二、仿真效果
attachimg.gif 点击看大图


下载 (217.08 KB)

2009-8-11 11:00



三、程序源码
1、main.c





  1. /*******************************************************************************

  2. Platform: AVR mega16学习板(www.iccavr.com)

  3. Project : 实验十四:TC0产生PWM调节LED亮度

  4. Clock F : 3.6864M

  5. Software: WinAVR-20090313+Proteus7.4

  6. Author : 林夕依然

  7. Version : 08.12.12

  8. Updata : 09.03.10 模块化

  9. 09.04.30 增加proteus仿真模型,仿真通过。

  10. 09.07.22 WinAVR-20090313调试通过

  11. comments:

  12. 1、以学习板LED为硬件电路

  13. 2、TC0用作PWM相位修正模式,通过调整占空比,调整LED渐灭或渐亮

  14. 3、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。

  15. *******************************************************************************/

  16. #include <avr/io.h>

  17. #include <util/delay.h>



  18. int main(void)

  19. {

  20. unsigned char i;



  21. DDRB=0xFF; //PB口输出高电平,LED全处于熄灭状态

  22. PORTB=0xFF;

  23. TCCR0=0x61; //0b01100001,PWM相位修正模式,无预分频,在升序计数时发

  24. //生比较匹配将清零OC0,降序计数时发生比较匹配将置位OC0

  25. while (1)

  26. {

  27. i = 255;

  28. while (i) /*占空比减小*/

  29. {

  30. OCR0 = i;

  31. _delay_ms(10);//每种占空比下OC0输出延续的时间,即决定LED电平变化的快慢

  32. i--;

  33. }

  34. i = 1;

  35. while (i) /*占空比增加*/

  36. {

  37. OCR0 = i;

  38. _delay_ms(10);

  39. i++;

  40. }

  41. }

  42. }

四、完整项目文件下载


http://bbs.armavr.com/thread-916-1-3.html

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条