112 lines
1.8 KiB
C
112 lines
1.8 KiB
C
#include "dac7311.h"
|
||
|
||
int cnum = 0;
|
||
|
||
void dac7311_init(void)
|
||
{
|
||
AO1_SYNC_H();
|
||
AO1_SCLK_L();
|
||
AO2_SYNC_H();
|
||
AO2_SCLK_L();
|
||
}
|
||
|
||
void ao1_write(uint16_t Data)
|
||
{
|
||
uint16_t temp;
|
||
uint8_t ui;
|
||
|
||
temp=Data << 2;
|
||
temp &= 0x3FFF;//设置模式为Normal
|
||
AO1_SYNC_H();
|
||
AO1_SCLK_H();
|
||
delay_tick(10);
|
||
AO1_SYNC_L();//使能输入移位寄存器
|
||
delay_tick(10);
|
||
|
||
for(ui=0; ui<16; ui++)
|
||
{
|
||
|
||
AO1_SCLK_H();
|
||
|
||
if(0x8000 == (temp & 0x8000))
|
||
{
|
||
AO1_DIN_H();
|
||
}
|
||
else
|
||
{
|
||
AO1_DIN_L();
|
||
}
|
||
delay_tick(10);
|
||
AO1_SCLK_L();
|
||
delay_tick(10);
|
||
temp <<=1;
|
||
}
|
||
|
||
AO1_SYNC_H();
|
||
|
||
}
|
||
void ao2_write(uint16_t Data)
|
||
{
|
||
uint16_t temp;
|
||
uint8_t ui;
|
||
|
||
temp=Data << 2;
|
||
temp &= 0x3FFF;//设置模式为Normal
|
||
AO2_SYNC_H();
|
||
AO2_SCLK_H();
|
||
delay_tick(10);
|
||
AO2_SYNC_L();//使能输入移位寄存器
|
||
delay_tick(10);
|
||
|
||
for(ui=0; ui<16; ui++)
|
||
{
|
||
|
||
AO2_SCLK_H();
|
||
|
||
if(0x8000 == (temp & 0x8000))
|
||
{
|
||
AO2_DIN_H();
|
||
}
|
||
else
|
||
{
|
||
AO2_DIN_L();
|
||
}
|
||
delay_tick(10);
|
||
AO2_SCLK_L();
|
||
delay_tick(10);
|
||
temp <<=1;
|
||
}
|
||
|
||
AO2_SYNC_H();
|
||
}
|
||
|
||
/*******************************************************************************
|
||
函数名称 : ao1_set
|
||
功 能 : AO1电流输出
|
||
参 数 : current--电流值
|
||
返 回 值 : 无
|
||
*******************************************************************************/
|
||
void ao1_set(float current)
|
||
{
|
||
uint16_t data = 0;
|
||
current = current * 100;//电流转为电压
|
||
data = (current * 4096) / 3300;
|
||
cnum = data;
|
||
ao1_write(data);
|
||
}
|
||
|
||
/*******************************************************************************
|
||
函数名称 : ao2_set
|
||
功 能 : AO2电流输出
|
||
参 数 : current--电流值
|
||
返 回 值 : 无
|
||
*******************************************************************************/
|
||
void ao2_set(float current)
|
||
{
|
||
uint16_t data = 0;
|
||
current = current * 100;//电流转为电压
|
||
data = (current * 4096) / 3300;
|
||
ao2_write(data);
|
||
}
|
||
|