51单片机AD模拟转换出现的一个问题求大神解答 20

#include<reg52.h>#include<intrins.h>#defineXIERU0x90#defineDU0x91sbitSDA=P2^0;sbitSCL... #include<reg52.h>
#include<intrins.h>
#define XIERU 0x90
#define DU 0x91
sbit SDA=P2^0;
sbit SCL=P2^1;
sbit DW=P2^7;
sbit DA=P2^6;
unsigned char code e[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
unsigned char code s[]={0xfe,0xfd,0xfb,0xf7};
unsigned int y,p;
void start()
{SCL=1;
SDA=0;
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
}
void stop()
{SCL=0;
SDA=0;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

}
void ACK()
{SCL=0;
SDA=0;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
}
void NOACK()
{SCL=0;
SDA=1;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();

}
unsigned int read()
{unsigned int a,x=0;
for(a=0;a<8;a++)
{SCL=1;
x|=SDA;
x<<=1;
SCL=0;
}
return x;
}
void write(unsigned int b)
{unsigned int r;
for(r=0;r<8;r++)
{SCL=0;
SDA=b&0x80;
_nop_();
SCL=1;
_nop_();
_nop_();
SCL=0;
b<<=1;
}
}
unsigned int readset()
{start();
write(XIERU);
ACK();
write(0x40);
ACK();
start();
write(DU);
ACK();
y=read();
SCL=0;
NOACK();
stop();
return y;

}
void show(unsigned int w,unsigned int l)
{P0=s[w];
DW=1;
DW=0;
P0=e[l];
DA=1;
DA=0;
}

void delay(unsigned int z)
{for(z=0;z<1000;z++);

}
void main()
{unsigned int h,i,o;
h=readset();
i=(int)h/50;
o=(int)h%50;
show(0,i) ;
delay(0);
show(0,10);
delay(0);
show(1,o);
}
大神可以主要看AD模拟转换部分,因为数码管的显示已经调试过了,我把通道0接到vcc上可是数码管还是显示0。0v,为啥,AD模拟转换的时序部分不会有问题啊
展开
 我来答
年轻人的观点
2015-04-19 · 超过18用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:35.1万
展开全部
比较电路没有做好吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luqiang200006
2015-04-18 · TA获得超过224个赞
知道答主
回答量:85
采纳率:0%
帮助的人:55.1万
展开全部
写代码不写注释 虽然简单也难得看呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式