adc0809转换的一些问题(与51单片机配合)

Helloeveryone!今天看了一个ad转换的程序,有几个不理解的地方,希望大家能给我解释下。1.里面有个#defineADXBYTE[0x7FF8]这样的ad转换的... Hello everyone!今天看了一个ad转换的程序,有几个不理解的地方,希望大家能给我解释下。
1. 里面有个#define AD XBYTE [0x7FF8]这样的ad转换的地址定义(查资料得知是P0和P2口的作为地址线的原因),我把它改成了其他的地址,有的就行有的就不行了,这是怎么回事?ad转换器作为一个外部存储器的地址是人为定义的吗?
2. 在ad转换结束之后,外部数据输入到P0口中,程序中是将刚刚定义的ad转换器的地址里面的值直接赋值给了data(程序中定义的一个char型变量),然后直接送入数码管显示,那为什么直接data=P0就不行呢?(我的意思不知道大家可能理解)
(注:图片引用他处)
展开
 我来答
慢生活ican
2014-05-27 · TA获得超过131个赞
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:84.7万
展开全部
1 、地址是人为定义的,在51单片机中P0口是低位地址8位与数据口8位分时复用,所有连接在地址总线上的器件,都必须有一个地址区间(地址块),例如,RAM 62256需要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输出,就是没有选择到需要的器件。
更多追问追答
追问
我还想问下:1.所有连接在地址总线上的器件,都必须有一个…那这样的话,刚刚定义的ad的地址是0x7ff8,而单片机片内的ram就00h-ffh,而仿真图中也没有片外的ram,那0x7ff8的地址在什么位置呢? 2.我本身是这样想的(上面有仿真),当ad转换之后,转换的结果直接会在out端口上然后也就直接传到了P0口,所以我讲就是data=P0,这样的想法估计是有问题的?谢谢!
追答
1、/RD和P2.7配合,只有两个信号同时为低时,74LS02或非门输出高电平,ADC器件OE端高电平有效,才能完成对器件读操作,P2.7为低电平的情况是使用0000H--->7FFFH地址区间,上图中ADC的8路AD转换器,是通过/ALE和/WR经过74LS02或非门输出高电平(器件ALE高电平有效),完成对器件8路转换器地址输入的,它由低3位地址线决定选择哪一路。(xxx0h-->xxx7h或者xxx8h--->xxxfh都可以)。
所以用0000H--->7FFFH中任意一个地址都可以,当你使用MOVX A,@DPTR 指令的时,P2.7输出低电平。不能用8000H--->FFFFH地址。
为了不影响显示效果,在操作ADC0808时,根据LED的驱动电平,应该P2口低4位给定相反电平,即不显示,y0xxH或者yFxxH。y选择8以下。
2、因为还需要对ADC0808输入地址,所以不能把ADC0808的OE端直接连接高电平。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式