新闻  |   论坛  |   博客  |   在线研讨会
AVR笔记14:TC0产生PWM调节LED亮度(GCC)
mayer | 2009-09-01 19:01:40    阅读:2852   发布文章

 

一、程序结构
程序结构
下载 (4.86 KB)
2009-8-11 11:00



二、仿真效果
点击看大图

下载 (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.  
  19. int main(void)
  20. {
  21. unsigned char i;
  22.  
  23. DDRB=0xFF; //PB口输出高电平,LED全处于熄灭状态
  24. PORTB=0xFF;
  25. TCCR0=0x61; //0b01100001,PWM相位修正模式,无预分频,在升序计数时发
  26. //生比较匹配将清零OC0,降序计数时发生比较匹配将置位OC0
  27. while (1)
  28. {
  29. i = 255;
  30. while (i) /*占空比减小*/
  31. {
  32. OCR0 = i;
  33. _delay_ms(10);//每种占空比下OC0输出延续的时间,即决定LED电平变化的快慢
  34. i--;
  35. }
  36. i = 1;
  37. while (i) /*占空比增加*/
  38. {
  39. OCR0 = i;
  40. _delay_ms(10);
  41. i++;
  42. }
  43. }
  44. }

四、完整项目文件下载

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

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客