TLC5615 串行数模转换IC 驱动程序 C语言
/*DA控制输出,二极管明暗闪烁*/ #include<reg51.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit din = P2^7; //数据输入 sbit sclk = P2^6; //读定时钟 sbit cs = P2^5; //器件片选 //延时毫秒函数: void Delayms(unsigned int t) { unsigned int x,y; for(x=t;x>0;x--) for(y=120;y>0;y--); } //写TLC5615数据函数: void WriteTLC5615(unsigned int wdata) { unsigned char i; cs=0;//片选使能 wdata<<=2;//将数据左移两位,补两位扩展位,组成12位数据写入 for(i=0;i<12;i++)//写入12位数据 { sclk=0; din=(wdata&0x0800)?1:0;//取出最高位(第11位)写入 sclk=1;//上升沿送数据 wdata<<=1;//下一位移到最高位 } cs=1;//片选禁止 } //主函数: int main(void) { unsigned int i; WriteTLC5615(512); while(1); while(1) { //因参考电压取自电源电压5V,输入数据达到512时,转换输出电压就已达到参考电压 //输入数据大于512时,输出电压已经无法再上升。 for(i=0;i<512;i++) { WriteTLC5615(i);//输入数据从0-512每间隔200ms递增, Delayms(200); //用万用表测量输出引脚,会看到电压从0V-4V每间隔200ms以约10mv递增 } } return 0; }
凯特网版权声明:以上内容允许转载,但请注明出处,谢谢!