关于51单片机AD转换初级问题 60

自己调试AD转换的时候老是复位才能显示转换数据求帮看问题,下面是图片个代码。//主函数中的循环显示while(1){startad();adadval();display... 自己调试AD转换的时候老是复位才能显示转换数据
求帮看问题,下面是图片个代码。
//主函数中的循环显示
while(1)
{
startad();
adadval();
display();
}
//启动AD转换,为了解决这个问题我每次在循环显示的始终都关闭并在打开AD,但是事实证明这样也解决不了
void startad()
{
csad=1;
delayms(5);
csad=0;
wr=1;
_nop_();
wr=0;
_nop_();
wr=1;
delayms(20);//延时从段到长调到20ms也不行
}
//读取ad的值
void adadval()
{
rd=1;
_nop_();
rd=0;
_nop_();
advl=P1;
rd=1;

}
//显示函数
void display()
{
bai=advl/100;
shi=advl/10%10;
ge=advl%100%10;
write_com(0x80+0x40);
write_date(0x30+bai);
write_date(0x30+shi);
write_date(0x30+ge);
}
展开
 我来答
515987769
2015-05-28 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:74.2万
展开全部
#define ad0_7 P0 //AD数据口
sbit cs=P1^0; //芯片选择信号,控制芯片的启动和结果读取,低电平有效
sbit rd=P1^1; //读数据控制,低电平有效
sbit wr=P1^2; //AD转换起动控制,上升沿有效
sbit intr=P1^3; //AD转换结束输出低电平

void start_ad(void)
{ cs=0; //允许进行A/D转换
wr=0;_nop_();wr=1; //WR由低变高时,AD开始转换
while(intr); //查询转换结束产生INTR 信号(低电平有效)
cs=1; //停止AD转换
}
//读A/D数据子程序///////////////////////////////////////
read_ad()
{ uint ad_data;
ad0_7=0xff;
cs=0; //允许读
rd=0; //读取转换数据结果数据结果
_nop_();
ad_data=ad0_7; //把数据存到ad_data中
rd=1;cs=1; //停止A/D读取
return(ad_data);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式