急求:我最近在做一个单片机采集数据程序,输入电压有正有负,但是通过AD转换后得到的数据,

急求:我最近在做一个单片机采集数据程序,输入电压有正有负,但是通过AD转换后得到的数据,,第1张

A/D芯片的输入电压范围是单极性的,输入负电压就被限幅成最小值0V。你查看A/D芯片的资料,看看能否把输入电压设置成双极性的,不行就只好把输入电压上移到单极性,A/D输出的数据单片机后减去中间值,恢复成双极性电压。

ALE是自动运行的,这个不用你在程序里去管。
“顺问一下单片机往锁存器输出的地址和数据有什么分别,不都是二进制数吗”
虽然都是进制数据,但是意义不一样,而且位置不一样,作为地址时,是作用于芯片的地址端的,作为数据时,是作用在数据端的,这里有个时序的问题,就像同一个男教师,对儿子和对学生来说,意义不一样,面对不同的人,在不同的时间,这个男人的角色就不一样。
这个涉及到数电知识,你是大一,估计没学到数电,等你学了,你就明白了。
我简单的讲一下,要想深入了解,你要看数电课本。
51单片机与别的单片机不一样,他的数据端口和地址端口的低8位是同一个端口,都是P0口,那么,如何区分P0此时是数据还是地址?方法就是引入一个锁存器。
比如说,我向地址 是 0xEE55的地址里写入一个数据 “0xAA"
步骤过程是这个样子的:
1 ALE控制锁存器,允许锁存器跟踪
2 P2和P0口联合输出地址0xEE55,其中P2输出0xEE,P0输出0x55
3 ALE电平翻转,禁止锁存器跟踪,即此时,锁存器的输出端不在发生任何变化,所以,芯片地址不变,依旧是“0xEE55"
4 P0口输出数据 "0xAA",此时,芯片的数据端就出现"0xAA",
经过以上步骤,0xAA就被存入到地址0xEE55里去了。
以上过程是单片机自动进行的,不用程序特意干扰,如果执行:
unsigned char xdata p = (unsigned char xdata )0xEE55;
p = 0xAA;
单片机自动进行以上4步骤的过程,ALE,P0,P2口都自动变化。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13407748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存