106 lines
1.3 KiB
C
106 lines
1.3 KiB
C
#include "dac7311.h"
|
|
|
|
int cnum = 0;
|
|
|
|
void delay(uint8_t us)
|
|
{
|
|
for(; us !=0; us--);
|
|
}
|
|
|
|
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(10);
|
|
AO1_SYNC_L();//使能输入移位寄存器
|
|
delay(10);
|
|
|
|
for(ui=0; ui<16; ui++)
|
|
{
|
|
|
|
AO1_SCLK_H();
|
|
|
|
if(0x8000 == (temp & 0x8000))
|
|
{
|
|
AO1_DIN_H();
|
|
}
|
|
else
|
|
{
|
|
AO1_DIN_L();
|
|
}
|
|
delay(10);
|
|
AO1_SCLK_L();
|
|
delay(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(10);
|
|
AO2_SYNC_L();//使能输入移位寄存器
|
|
delay(10);
|
|
|
|
for(ui=0; ui<16; ui++)
|
|
{
|
|
|
|
AO2_SCLK_H();
|
|
|
|
if(0x8000 == (temp & 0x8000))
|
|
{
|
|
AO2_DIN_H();
|
|
}
|
|
else
|
|
{
|
|
AO2_DIN_L();
|
|
}
|
|
delay(10);
|
|
AO2_SCLK_L();
|
|
delay(10);
|
|
temp <<=1;
|
|
}
|
|
|
|
AO2_SYNC_H();
|
|
}
|
|
|
|
void ao1_set(float current)
|
|
{
|
|
uint16_t data = 0;
|
|
current = current * 100;//电流转为电压
|
|
data = (current * 4096) / 3300;
|
|
cnum = data;
|
|
ao1_write(data);
|
|
}
|
|
|
|
|
|
void ao2_set(float current)
|
|
{
|
|
uint16_t data = 0;
|
|
current = current * 100;//电流转为电压
|
|
data = (current * 4096) / 3300;
|
|
ao2_write(data);
|
|
}
|
|
|