u8 DA_ON[4]={0,0,0,1}; #define SCLK_UP P2OUT |= BIT1 //模拟SPI时钟线 #define SCLK_DOWN P2OUT &= ~BIT1 #define SYNC_UP P1OUT |= BIT6 //模拟SPI片选线 #define SYNC_DOWN P1OUT &= ~BIT6 #define SDIN_UP P1OUT |= BIT7 //模拟SPI数据线 #define SDIN_DOWN P1OUT &= ~BIT7 /************************************************************* *函数名称:void write_da7811(u16 da) *函数功能:实现普通I/O模拟SPI通信 *输入参数:void *返回值:u16 data **************************************************************/ void write_da7811(u16 data) { char i; SYNC_DOWN; for(i=0;i<4;i++) { SCLK_UP; if(DA_ON[i]) { SDIN_UP; } else { SDIN_DOWN; } SCLK_DOWN; } for (i=0;i<12;i++) { SCLK_UP; if(data&0x800) { SDIN_UP; } else { SDIN_DOWN; } SCLK_DOWN; data<<=1; } SDIN_UP; SYNC_UP; SCLK_DOWN; } 如果你要使用DAC7811的话,这样的程序就可以驱动。 按照定义的管脚接线就行。 外部运放一定要接双电源 如果你要知道具体情况的话就百度DAC7811有许多资料。