系统功能
AVR内部脉宽调制OC0输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。
硬件设计
AVR主控电路原理图
软件设计
//目标系统: 基于AVR单片机
//应用软件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
AVR内部脉宽调制输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。
----------------------------------------------------------------------
硬件连接:
将UserLed指示灯连接至PWM的端口PB3/OC0。
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料开发板实验板SMK系列SMK1632说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include <iom16v.h>
#include <macros.h>
#define OC0_OUT_EN DDRB |= 0b00001000
/*--------------------------------------------------------------------

程序名称:定时器0初始化程序

程序功能:定时器作PWM使用,设置PWM的工作模式
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
void timer0_init(void)
{
TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00);
/*
WGM01=1; WGM00=1; --> fast PWM modle
COM01=1; COM00=0; --> 比较匹配时set OC0 pin
CS00=1; --> timer0 source 不经过任何分频,直接为Clk,使得PWM可以工作得足够快
*/
TCNT0 = 0x00;//设置TC0计数寄存器初值
OCR0 = 0x10;//输出比较寄存器初值,设置该值可用于调节OC0输出占空比
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
void main(void)
{
OC0_OUT_EN;//为允许PWM工作,需设置PB3为输出
timer0_init();
SEI();
while(1);
}
系统调试
改变PWM初始化代码的如下两个语句的赋值:
TCNT0 = 0x00;//设置TC0计数寄存器初值
OCR0 = 0x10;//输出比较寄存器初值,设置该值可用于调节OC0输出占空比
从LED的闪烁频率可以看出,改变了PWM的频率。
原文链接:https://www.eeworld.com.cn/mcu/article_2016093029973.html
本文来自作者[白沈]投稿,不代表调研号立场,如若转载,请注明出处:https://kydy.org.cn/miao/3745.html
评论列表(4条)
我是调研号的签约作者“白沈”!
希望本篇文章《单片机c语言编程实例大全/单片机C语言》能对你有所帮助!
本站[调研号]内容主要涵盖:调研号,生活百科,小常识,生活小窍门,百科大全,经验网
本文概览: 系统功能 AVR内部脉宽调制OC0输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。 硬件设计 ...