📄 dac.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 + -