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

📄 dac.c

📁 数控直流恒流源
💻 C
字号:
#include<reg51.h>
#include"Config.h"
#include"IOCfg.c"
#include"TimeDLY.h"
#include"DAC.h"

//向SPI写16bits数据函数:SPIWrite()
void SPIWrite(INT16 temp)
{
	INT16U i;
	DACSetCS(0);
	for(i=0;i<16;i++)
	{
		DACDIN = (bit) (temp & 0x8000);
		DACSetSCLK(1);
		temp <<= 1;
		nNop(1);
		DACSetSCLK(0);
		nNop(1);
		}
	DACSetCS(1);
	}

//将电压值转换为对应的12bits数字量函数:VoltToData()
INT16 VoltToData(INT16U ref, FP32 ex_ref, FP32 out_volt)
{
	int temp;
	switch(ref)
	{
		case    EXTERNAL  :  temp = (INT16)((out_volt*4096) / (2*ex_ref));break;
		case    IN_1024   :  temp = (INT16)((out_volt*4096) / (2*1.024)); break;
		case    IN_2048   :  temp = (INT16)((out_volt*4096) / (2*2.048)); break;
		default           :  break;
		}
	return(temp & 0xfff);
	}

//设置DAC B(即B 通道)输出函数:SetDAC_B()
void SetDAC_B(INT16U speed, INT16U ref, FP32 ex_ref, FP32 temp)
{
	INT16 ModCMD;
	INT16 Data;
	ModCMD = 0x9000 | (speed<<14) | (ref);
	Data = VoltToData(ref,ex_ref,temp);
	Data = Data | 0x0000 | (speed<<14);
	SPIWrite(ModCMD);
	nNop(10);
	SPIWrite(Data);
	}

⌨️ 快捷键说明

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