AD模数转换

利用普中的单片机上的XTP2406芯片进行AD转换,对电位器采集,弥补上次AD转换的空白。 AIN0  电位器   X+ 输出   地址0x94 / 0xB4

AIN1 热敏电阻 Y+输出  地址 0xD4

AIN2 光敏电阻 Vbat输出  地址 0xA4

AIN3  外部输入 AUXIN输出 地址 0xE4

头文件申明

定义管角 DOUT CLK DIN CS
uint SPI_Read();
void SPI_Write(uchar dat)
uint Read_AD_Data(uchar cmd)

时序图

函数代码

读函数先移位再赋值
uint SPI_Read()
{
uint i,dat=0;
CLK = 0;
for(i=0;i<12;i++)
{
dat << = 1;
CLK = 0;
CLK = 1;
dat |= DOUT;
}
return dat;
}
uint SPI_Write(uchar dat)
{
uint i;
CLK = 0;
for(i=0;i<8;i++)
{
DIN = dat>>7; //写函数先赋值再移位
dat <<= 1;
CLK = 0;
CLK = 1;
}
}
uint Read_AD_Data(uchar cmd)
{
uint i,dat=0;
CLK = 0;
CS = 0;
SPI_Write(cmd);
for(i=0;i<6;i++);
CLK = 1;
_nop_();
_nop_();
CLK = 0;
_nop_();
_nop_();
AD_Value=SPI_Read();
CS = 1;
return AD_Value;
}

调用

void datapros()
{
uint temp;
static uchar i;
if(i==50)
{
i=0;
temp = Read_AD_Data(0x94); //地址改为你想测量的通道地址
}
i++;
disp[0]= smgduan[temp/1000];
数据处理
}

main函数

void main()
{
while(1)
{
数据处理;
数码管显示;
}
}

实物图

标签: 单片机