这是一个ADC0809和51单片机的电路图,请各位大神帮忙看看这里的连接是否有错,还需要一个C语言程序
发布网友
发布时间:2022-05-01 17:12
我来回答
共5个回答
热心网友
时间:2023-10-23 05:41
连接没有问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST=P3^0; //A/D启动转换信号
sbit OE=P3^1; //数据输出允许信号
sbit EOC=P3^2; //A/D转换结束信号
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
void main()
{
uchar AD0809;
while(1) //无限循环
{
ST=0; //使采集信号为低
ST=1; //开始数据转换
ST=0; //停止数据转换
while(!EOC); //等待数据转换完毕
OE=1; //允许数据输出信号
AD0809=P0; //读取数据
OE=0; //关闭数据输出允许信号
if(AD0809>=251) //电压显示不能超过5V
AD0809=250;
P1=ad0809; //没有显示,输出给P1口替代。
}
}
热心网友
时间:2023-10-23 05:41
注意 输出端口要io口要反过来接 也就是0接7 1接6.。。。
热心网友
时间:2023-10-23 05:42
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit st=P3^0;
sbit oe=P3^1;
uchar date;
void main()
{
while(1)
{
st=0;
st=1;
st=0;
while(!eoc);
oe=1;
delay(10);
date=P0;
oe=0;
}
}
另外这个multisim0809是不能仿真的,换成adc0808试试
热心网友
时间:2023-10-23 05:42
电路上没有问题,控制好时序就行,在获取AD值前要判断是否转换完成。
while(!EOC);
热心网友
时间:2023-10-23 05:43
参考以前回答的问题:
http://zhidao.baidu.com/question/409415572.html
热心网友
时间:2023-10-23 05:41
连接没有问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST=P3^0; //A/D启动转换信号
sbit OE=P3^1; //数据输出允许信号
sbit EOC=P3^2; //A/D转换结束信号
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
void main()
{
uchar AD0809;
while(1) //无限循环
{
ST=0; //使采集信号为低
ST=1; //开始数据转换
ST=0; //停止数据转换
while(!EOC); //等待数据转换完毕
OE=1; //允许数据输出信号
AD0809=P0; //读取数据
OE=0; //关闭数据输出允许信号
if(AD0809>=251) //电压显示不能超过5V
AD0809=250;
P1=ad0809; //没有显示,输出给P1口替代。
}
}
热心网友
时间:2023-10-23 05:41
注意 输出端口要io口要反过来接 也就是0接7 1接6.。。。
热心网友
时间:2023-10-23 05:42
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit st=P3^0;
sbit oe=P3^1;
uchar date;
void main()
{
while(1)
{
st=0;
st=1;
st=0;
while(!eoc);
oe=1;
delay(10);
date=P0;
oe=0;
}
}
另外这个multisim0809是不能仿真的,换成adc0808试试
热心网友
时间:2023-10-23 05:42
电路上没有问题,控制好时序就行,在获取AD值前要判断是否转换完成。
while(!EOC);
热心网友
时间:2023-10-23 05:43
参考以前回答的问题:
http://zhidao.baidu.com/question/409415572.html
热心网友
时间:2023-10-23 05:41
连接没有问题。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ST=P3^0; //A/D启动转换信号
sbit OE=P3^1; //数据输出允许信号
sbit EOC=P3^2; //A/D转换结束信号
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
void main()
{
uchar AD0809;
while(1) //无限循环
{
ST=0; //使采集信号为低
ST=1; //开始数据转换
ST=0; //停止数据转换
while(!EOC); //等待数据转换完毕
OE=1; //允许数据输出信号
AD0809=P0; //读取数据
OE=0; //关闭数据输出允许信号
if(AD0809>=251) //电压显示不能超过5V
AD0809=250;
P1=ad0809; //没有显示,输出给P1口替代。
}
}
热心网友
时间:2023-10-23 05:41
注意 输出端口要io口要反过来接 也就是0接7 1接6.。。。
热心网友
时间:2023-10-23 05:42
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit st=P3^0;
sbit oe=P3^1;
uchar date;
void main()
{
while(1)
{
st=0;
st=1;
st=0;
while(!eoc);
oe=1;
delay(10);
date=P0;
oe=0;
}
}
另外这个multisim0809是不能仿真的,换成adc0808试试
热心网友
时间:2023-10-23 05:42
电路上没有问题,控制好时序就行,在获取AD值前要判断是否转换完成。
while(!EOC);
热心网友
时间:2023-10-23 05:43
参考以前回答的问题:
http://zhidao.baidu.com/question/409415572.html