原创
AVR笔记14:TC0产生PWM调节LED亮度(GCC)
》》点此进入 http://bbs.armavr.com/ ARM-AVR嵌入式开发论坛
一、程序结构
下载 (4.86 KB)
2009-8-11 11:00
二、仿真效果
下载 (217.08 KB)
2009-8-11 11:00
三、程序源码
1、main.c
- /*******************************************************************************
- Platform: AVR mega16学习板(www.iccavr.com)
- Project : 实验十四:TC0产生PWM调节LED亮度
- Clock F : 3.6864M
- Software: WinAVR-20090313+Proteus7.4
- Author : 林夕依然
- Version : 08.12.12
- Updata : 09.03.10 模块化
- 09.04.30 增加proteus仿真模型,仿真通过。
- 09.07.22 WinAVR-20090313调试通过
- comments:
- 1、以学习板LED为硬件电路
- 2、TC0用作PWM相位修正模式,通过调整占空比,调整LED渐灭或渐亮
- 3、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。
- *******************************************************************************/
- #include <avr/io.h>
- #include <util/delay.h>
- int main(void)
- {
- unsigned char i;
- DDRB=0xFF; //PB口输出高电平,LED全处于熄灭状态
- PORTB=0xFF;
- TCCR0=0x61; //0b01100001,PWM相位修正模式,无预分频,在升序计数时发
- //生比较匹配将清零OC0,降序计数时发生比较匹配将置位OC0
- while (1)
- {
- i = 255;
- while (i) /*占空比减小*/
- {
- OCR0 = i;
- _delay_ms(10);//每种占空比下OC0输出延续的时间,即决定LED电平变化的快慢
- i--;
- }
- i = 1;
- while (i) /*占空比增加*/
- {
- OCR0 = i;
- _delay_ms(10);
- i++;
- }
- }
- }
四、完整项目文件下载
http://bbs.armavr.com/thread-916-1-3.html
文章评论(0条评论)
登录后参与讨论