基于R2R电阻网络实现DAC 提供STC代码,目前已测试通过
电路图:
这里是我推荐的方式,使用多个引脚可以实现方便的输出,当然,如果引脚有限,你可以使用这个:
参考代码:
#define DAC7_PIN P17 #define DAC6_PIN P16 #define DAC5_PIN P15 #define DAC4_PIN P11 #define DAC3_PIN P12 #define DAC2_PIN P13 #define DAC1_PIN P14 #define DAC0_PIN P10 void SET_DAC(unsigned char DAC_TEMP) { // unsigned char TEMP; // DAC_TEMP = DAC_TEMP * 5.0 / 256.0; // TEMP = DAC_TEMP; DAC0_PIN = GET_BIT(DAC_TEMP, 0); DAC1_PIN = GET_BIT(DAC_TEMP, 1); DAC2_PIN = GET_BIT(DAC_TEMP, 2); DAC3_PIN = GET_BIT(DAC_TEMP, 3); DAC4_PIN = GET_BIT(DAC_TEMP, 4); DAC5_PIN = GET_BIT(DAC_TEMP, 5); DAC6_PIN = GET_BIT(DAC_TEMP, 6); DAC7_PIN = GET_BIT(DAC_TEMP, 7); }
值得注意的是,如果你希望产生高速的波形,在绘制电路板的时候要注意给信号线做等距,或者尽可能的使得信号线更短!