求有关a/d转换的c语言程序
3个回答
展开全部
请告诉我AD芯片是什么?1563?0809?0832?先给你贴一个0832的程序你看看。通过芯片资料的时序图你也可以自己写出来的
unsigned char A_D(bit CH)
{
unsigned char i;
CS = 0; //片选
Clk = 0; //时钟拉低
Clk = 1; //时钟拉高
DIO = 1; //启动信号
if ( CH == 0 ) //通道选择
{
Clk = 0;
Clk = 1;
DIO = 1; //通道0的第一位
Clk = 0;
Clk = 1;
DIO = 0; //通道0的第二位
}
else
{
Clk = 0;
Clk = 1;
DIO = 1; //通道1的第一位
Clk = 0;
Clk = 1;
DIO = 1; //通道1的第二位
}
Clk = 1;
Clk = 0;
for( i = 0;i < 8;i++ ) //读取八位AD值
{
Clk = 1;
Clk = 0;
if ( DIO )
adval = (adval>>1) | 0x80;
else
adval = (adval>>1) | 0x00;
}
CS = 1; //释放ADC0832
return(adval); //返回采样值
}
有些51系列单片机是自带AD的,貌似是STC89S58,貌似,以前记得有人用过
unsigned char A_D(bit CH)
{
unsigned char i;
CS = 0; //片选
Clk = 0; //时钟拉低
Clk = 1; //时钟拉高
DIO = 1; //启动信号
if ( CH == 0 ) //通道选择
{
Clk = 0;
Clk = 1;
DIO = 1; //通道0的第一位
Clk = 0;
Clk = 1;
DIO = 0; //通道0的第二位
}
else
{
Clk = 0;
Clk = 1;
DIO = 1; //通道1的第一位
Clk = 0;
Clk = 1;
DIO = 1; //通道1的第二位
}
Clk = 1;
Clk = 0;
for( i = 0;i < 8;i++ ) //读取八位AD值
{
Clk = 1;
Clk = 0;
if ( DIO )
adval = (adval>>1) | 0x80;
else
adval = (adval>>1) | 0x00;
}
CS = 1; //释放ADC0832
return(adval); //返回采样值
}
有些51系列单片机是自带AD的,貌似是STC89S58,貌似,以前记得有人用过
更多追问追答
追问
adc0809的
追答
ADC0809的一般教科书上都贴着呢,下一个51单片机教程里面就会有
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询