#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(); } 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); }