1) 电路图
2)采集通道IN0时的端口地址:CBA=000 =D2D1D0=P0.2 P0.1 P0.0 ;
P2.7=A15=0,那么地址 A15A14A13....A3A2A1A0=0XX...X000,最小的地址便是 00;
3)mov dptr,#0
movx a,@dptr ; (要在外部中断产生后运行)
mov 50H,a
上图电路,是三总线形式。
p0
口,兼作低八位地址,以及数据总线,使用。
下图电路,是用
p0
当做
io
接口。
通过软件编程,实现对
0809
的控制。
下图,电路,简单一些,编程,就复杂一些。
连接没有问题。
#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;it;i++)
{
for(j=13;j0;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口替代。
}
}
这个电路,是《三总线》形式。
P0,又要输出地址低八位,又要输入/输出数据。
P0,忙不过来,需要外接一个 74LS373,锁存住先输出的地址低八位。
这就是 74L373 在那里,所起的作用。
74LS373,输出的低八位地址,只用到了三位,送到了 ADC0809。
对 0809 写入,再启动它,需要的信号,就由单片机和几个门电路完成。
细节,说起来太麻烦。
看书吧,有时序波形。
如果只是检测有光或无光,则不需要运放及AD转换电路,用一片电压比较器就可以了。因为你需要的是开关信号。
adc0809与51单片机连接电路的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:adc0809与51单片机连接电路