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

📄 dac.c

📁 DA代码 经测试通过的c8051f020 DA代码 内有锯齿波, 正弦波, 三角波等产生的代码...
💻 C
字号:
#include"c8051f020.h" 
#include"math.h"

sfr16 DAC0     = 0xd2;                    /*DAC0数据*/
sfr16 DAC1     = 0xd5;                    /*DAC1数据*/

void DAC0_Init(void)
{
	REF0CN =0x03;				/*内部偏压发生器和电压基准缓冲器工作,基准从VREF引脚输出*/
	DAC0CN |=0x80;				/*DAC0允许,DAC输出更新发生在写DAC0H时*/
}
void DAC1_Init(void)
{
	REF0CN =0x03;				/*内部偏压发生器和电压基准缓冲器工作,基准从VREF引脚输出*/
	DAC1CN |=0x80;				/*DAC1允许,DAC输出更新发生在写DAC1H时*/
}
void squrewave(bit flag)
{								    
	uint i;
	if(flag==0)
	{
		DAC0L=0xf0;						  		/*设置待转换的值并启动D/A转换*/
		DAC0H=0x0f;
		for(i=0;i<=5000;i++);             		/*方波高电平宽度*/
		DAC0L=0x0;
		DAC0H=0x0;
		for(i=0;i<=5000;i++);	          	 	/*方波低电平宽度*/
	 }
	 else
	{
		DAC1L=0xf0;						  		/*设置待转换的值并启动D/A转换*/
		DAC1H=0x0f;
		for(i=0;i<=5000;i++);             		/*方波高电平宽度*/
		DAC1L=0x0;
		DAC1H=0x0;
		for(i=0;i<=5000;i++);	          	 	/*方波低电平宽度*/
	 }
}

void sinwave(bit flag)
{
	float     y,x;
	//uint 		i;
	for(x=0;x<(2*3.14159);x+=0.01)
	{
		y=2048*(sin(x)+1);   	/*12位ADC的数字容量为4K(0--0FFFH)y的最大值为4096*/
		if(flag==0) DAC0=y;              	/*设置待转换的值并启动D/A转换*/
   								//   DAC0H=DAC0H ;    
   		else        DAC1=y;
		//for(i=0;i<=1;i++);      //延时可改变正弦波周期
	}
}
void sawtooth(bit flag)
{
	uint i;
	if(flag==0)
	{
		DAC0L=DAC0L ;				/*设置待转换的值并启动D/A转换*/
		DAC0H=DAC0H ;
		for(i=0;i<=100;i++);      	/*延时*/
	    DAC0=DAC0+1;           	/*DAC输出值递增*/
	}
	else
	{
		DAC1L=DAC1L ;				/*设置待转换的值并启动D/A转换*/
		DAC1H=DAC1H ;
		for(i=0;i<=100;i++);      	/*延时*/
	    DAC1=DAC1+1;           	/*DAC输出值递增*/
	}
}

⌨️ 快捷键说明

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