您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > AD转换芯片TLC2543驱动程序
#includereg52.h///////////////////////////////////////////2543控制引脚宏定义//////////////////////////////////////////sbitAD_2543_CLK=P1^0;//2543时钟/sbitAD_2543_D_IN=P1^2;//2543输入sbitAD_2543_D_OUT=P1^1;//2543输出sbitAD_2543_CS=P1^3;//2543片选/////////////////////////////////////////////////名称:delay//功能:延时模块//输入参数:n要延时的周期数//输出参数:无///////////////////////////////////////voiddelay1(ucharn){uchari;for(i=0;in;i++){_nop_();_nop_();}}uintread2543(unsignedcharport)//检测TLC2543的PORT通道的电压值{unsignedcharcircle_temp,test_vh,test_vl;uintad_value;delay1(10);test_vh=0;//检测到的电压值的高字节test_vl=0;//检测到的电压值的低字节AD_2543_CLK=0;//时钟清除AD_2543_CLKport=4;//通道数移到高四位port=port&0xf0;//D7,D6,D5,D4为要转换的通道,D3,D2为输出的数据是12位,D1为输出的数据是MSB为前导,D0为输出的数据是无符号二进制数据AD_2543_CS=1;//功能选择关闭delay1(5);//AD转换时间延时AD_2543_CS=0;//功能选择打开delay1(5);//建立时间延时for(circle_temp=0;circle_temp12;circle_temp++)//写入十二个数据,后四位数据无效{if(port&0x80){AD_2543_D_IN=1;}else{AD_2543_D_IN=0;}AD_2543_CLK=1;//上升延作用,时钟上半周期delay1(2);AD_2543_CLK=0;//时钟下半周期port=1;//移位}AD_2543_CS=1;//功能选择关闭delay1(5);//AD转换时间延时AD_2543_CS=0;;//功能选择打开delay1(5);//建立时间延时for(circle_temp=0;circle_temp4;circle_temp++)//读出12位数据的高4位数据,存于temp_h的低4位{test_vh=1;if(AD_2543_D_OUT){test_vh++;}AD_2543_CLK=1;//时钟上半周期delay1(2);AD_2543_CLK=0;//下降沿作用,时钟下半周期}for(circle_temp=0;circle_temp8;circle_temp++)//读出12位数据的低8位数据,存于temp_l{test_vl=1;if(AD_2543_D_OUT){test_vl++;}AD_2543_CLK=1;//时钟上半周期delay1(2);AD_2543_CLK=0;//下降沿作用,时钟下半周期}AD_2543_CS=1;//功能选择关闭ad_value=test_vh;ad_value=8;ad_value|=test_vl;returnad_value;}
本文标题:AD转换芯片TLC2543驱动程序
链接地址:https://www.777doc.com/doc-5488360 .html