⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 利用ATMEL单片机的pwm功能实现DA.
💻 C
字号:
/************************************************************
文   件:main.c
用   途:由TC1产生两路独立的16位PWM输出,通过滤波变成电压
Target : M16
Crystal: 8.0000Mhz
说   明:PD4输出PWMB,PD5输出PWMA
	 	 产生的PWM波形通过滤波后转换成电压
		 因LM358和滤波电路本身的原因,最大电压约能到VCC的3/4
		 这种PWM模拟DA的方式,精度有限
创   建:2008.1.29
修   改:2008.1.29
Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
************************************************************/

#include <iom16v.h>
#include <macros.h>

//主函数
void main(void)
  {

  PORTD = 0x00;
  DDRD = (1<<PD4)|(1<<PD5);    		//PWM引脚PD4,PD5设置为输出
  
  TCCR1A = 0xA2;         			//两路PWM,匹配清零
  TCCR1B = 0x19;         			//快速PWM模式,位数可调,预分频1
  ICR1   = 2048;     				//计数上限值,此数为16位PWM

  OCR1A=512;           				//匹配初值
  OCR1B=1484;
  
  //输出电压计算 占空比*VCC
  //这里为 OCR1n / ICR1 * VCC
  //实测DA2 为1.42V,DA1 为3.73。  3.73 V为LM358在输入为5V的最大输出电压
  
  
  while(1)
    {
	 ;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -