新手求教:关于单片机读取ADC0832数值的问题

2024-12-13 02:26:42
推荐回答(4个)
回答1:

你用这个调一下看看
unsigned char A_D()
{
uchar i;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲作准备
CS=0; //CS置0,片选有效
DIO=1; //DIO置1,规定的起始信号
CLK=1; //第一个脉冲
CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
DIO=1; //DIO置1, 通道选择信号
CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿
DIO=0; //DI置0,选择通道0
CLK=1; //第三个脉冲
CLK=0; //第三个脉冲下降沿
DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1
CLK=1; //第四个脉冲
for(i=0;i<8;i++) //高位在前
{
CLK=1; //第四个脉冲
CLK=0;
dat<<=1; //将下面储存的低位数据向右移
dat|=(uchar)DIO; //将输出数据DIO通过或运算储存在dat最低位
}
CS=1; //片选无效
return dat; //将读出的数据返回
}

回答2:

adc0832能进行两路模数转换
给你一段我以前设计的程序
/*ad0832模数转换
通过日期2006-4-25
说明:
clk=p3^4;d1=p3^6;cs=p3^2;
晶振11.0592m
*/
#include
sbitclk=p3^4;
sbitd1=p3^6;
sbitd0=p3^7;
sbitcs=p3^2;
sfrp2=0xa0;
#definevmax5
voiddelay(inttimer)
{
while(--timer);
}
voidpulse(void)
{
clk=1;
delay(4);
clk=0;
}
intadc0832(void)
{
inti;
inta;
delay(2);
cs=0;
a=0x07;//通道选择07一通道06二通道
for(i=0;i<4;i++)
{
if(!(a&0x01))
d1=0;
else
d1=1;
a=a>>1;
pulse();
}
a=0x00;
for(i=0;i<8;i++)
{
pulse();
a=a<<1;
if(d0)
a=a+1;
}
cs=1;
returna;
}
...
...
直接调用adc0832()的返回值即可
希望对你能有帮助
ok

回答3:

这好似I2C的程序把?

回答4:

你先看一下你的控制时序吧?
还有0832端口的定义,是不是改过了