-
P0端口真实数据地址输出端,无法连接AD控制端A、B、C,当单片机发送数据时,P0端口的值发生变化时,你的AD a、B、C对应的通道选择端口也发生了变化,结果不正常。 将 A、B 和 C 连接到 P1 或 P2。
接地意味着您只使用通道 0 作为 AD,只要您只使用通道 0 输入模拟数据即可。 看完图,最主要的是需要测量几组模拟量,如果只有一组,则完全接地,如果是多组,则需要连接到P1端口或P2端口。
这不是很清楚,但如果你看看你放在上面的程序,就没有问题。 你要从头开始,看看出了什么问题。
-
float adc0809(void)
adda=0;选择输入通道 0
addb=0;
addc=0;
oe=0;以下三个命令是启动 AD0809ST=0; st=1;
st=0;delaynms(1);
while(!eoc);等待转换结束。
oe=1;检索读取的数据。
延迟一点。 ad_data0=ad_0809 ;在其他函数中返回 ad first 的值。
oe=0;return ad_data0;
ADDA、ADDB、ADDC直接连接,注意上拉电阻和定义AD 0809是AD的输出端和单片机的接口,可以设置到P1端口,通讯有问题。
-
是的,但它一直是零频道。
-
adc0809
应用说明: 1)ADC0809具有内部输出锁存器,可直接连接到AT89S51微控制器。
2) 在初始化期间,使 ST 和 OE 信号都为低电平。
3) 将要转换的通道的地址发送到端口 A、B 和 C。
4) 在 ST 端子处给出至少 100ns 宽的正脉冲信号。
5)转换是否完成,我们根据EOC信号进行判断。
6) 当EOC变为高电平时,OE为高电平,转换后的数据输出到微控制器。
-
看看你的原理图就知道了。
-
1.地址是人工定义的,在51单片机中,P0端口是低级地址8位和数据端口8位分时复用,所有连接到地址总线的设备都必须有一个地址间隔(地址块),例如RAM62256需要32kbyte,0000H--7FFFH,这是一个芯片选择信号。
AD转换器需要一个,通过地址解码器,解码的“间隔”,即存储器的芯片选择信号,解码器可以分为1、2、4、8个块---1个是单个地址,必须是解码器; 看自己需要选择,选择一块,必要时,这块也可以用解码器再次解码,原则上可以去单个地址,ADC0809需要8个地址,用低电平地址线A0、A1、A2三条,以及上面描述的芯片选择信号线,完成设备8路AD转换器的选择, 低级地址线可以共享,芯片选择线不能与其他设备共享。
2、外部数据输入到P0端口需要有相应的设备进行选择,并且需要读写信号线,这里用RD读数信号,它不是单次传输,它与地址线一起完成设备的读写操作。
在本例中,您需要选择ADC器件(芯片选择),还需要选择哪些转换器输出(A0、A1、A2)。
data=p0 命令与 data=p1 相同,没有地址输出,没有 RD 输出,即没有选择设备。
AT89C52 C 系列是早期产品。 没有了编程和看门狗,为了区别于早期产品,将新产品改为具有看门狗和ISP功能的AT89S52,ISP就是编程的意思。早期是晶格的专利技术,现在被大量使用。 >>>More
定义 uint unsigned int 等效于在程序集中定义一个 16 位整数变量 n,该变量分为上层 8 位 nh 和下层 8 位 nl >>>More
这并不难,我就是这样学会的。 只要找到正确的路,还是可以避免那么多弯路的,我上学的时候走了很多弯路,靠自己一步一步想出来。您可以添加我了解详细信息,我会帮助您!