打印

困惑,51单片机P2口电位上拉下拉时很奇怪

[复制链接]
5389|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 huntsmanydw 于 2009-8-18 08:22 编辑

我在做项目的时候,自己设计了以下电路,碰到了比较奇怪的问题。
查看了P2口的内部结构,自己还是得不到满意的解释。不知道这样设计是不是不合理,期望得到高手的指点。谢谢!:)
我已经更换同型号的单片机,问题依旧,已经排除单片机本身的问题。

请各位帮我分析一下,谢谢!
实验描述:
如图连接,A接P21,B接P22,C接P23,
测试条件:S12,S13断开,光耦输入不接。
单片机型号:AT89S52

出现的问题:
P21的电压不能正常拉高,实测电压只有2V
P22的电压也不能正常拉低,实测电压为1V
P23口可正常拉低,实测电压0.3V左右
这个现象很奇怪,不正常。

奇怪的是,做如下改变后,可正常拉高或拉低。
改变方式一:
三个接口向上平移一位,即A接P22,B接P23,
C接P24,可正常拉高或拉低。

或者采用改变方式二:
将A口和B、C口间间隔一位,即A接P21,
B接P23,C接P24,也可以正常拉高或拉低。

P2口异常.PNG (510.85 KB )

P2口异常.PNG

相关帖子

沙发
chetazo| | 2009-8-18 08:31 | 只看该作者
确实够怪!!

使用特权

评论回复
板凳
pop212| | 2009-8-18 08:38 | 只看该作者
没有碰到过这样的问题,等待高手来解决.
我来学习下!

使用特权

评论回复
地板
mohanwei| | 2009-8-18 08:44 | 只看该作者
这样的电路,不知道怎么说你才好……按键输入,一般是电阻接成上拉,而且往往是10K以上;按键接到地——也就是低电平有效。至于为什么这么做,你大可以仔细研究口输入输出电路结构……

使用特权

评论回复
5
vwwj| | 2009-8-18 08:45 | 只看该作者
本帖最后由 vwwj 于 2009-8-18 08:46 编辑

P21与P22间有短路现象,可能是制版时线过于靠近造成
检查未上电板子的P21,P22对地电阻和互相之间的电阻

使用特权

评论回复
6
xiwuduonian| | 2009-8-18 08:49 | 只看该作者
是否某个管脚已经坏掉并影响到其他引脚;
是否所使用的单片机有IO配置方面的问题;

使用特权

评论回复
7
tcc8073| | 2009-8-18 11:02 | 只看该作者
51的端口输出和输入不是很大,不要听什么单IO口可以达到多大这样的说法,不同的厂家不同的型号差别很大的,你的按键电路是有问题的,建议你使用低电平做为按键信号,电阻用大点,4.7K,这样可以保护IO口,你上面的电路很容易出问题,按键按下的时候干扰是很大的,如果打火的话,电压瞬间很大,OI口容易烧掉的

使用特权

评论回复
8
LIU_XF| | 2009-8-18 12:30 | 只看该作者
楼主的电路有问题。。。

测试是不是单片机IO有问题,办法很简单,把外部电路断开,直接测量IO引脚电平,看是否与程序里置高置低的电平一致

按键改成上拉,典型值4.7K或 10K

使用特权

评论回复
9
huntsmanydw|  楼主 | 2009-8-18 13:07 | 只看该作者
本帖最后由 huntsmanydw 于 2009-8-18 13:09 编辑

谢谢mohanwei。呵呵
对于你说的接法,肯定是对的。

但是,我的电路图中的接法,应该也是可以的吧,我参考了张义和的《例说51单片机》教材,里面有我的那种下拉电路。而且,根据我的实际测试,我的那种接法工作是正常的。

这样的电路,不知道怎么说你才好……按键输入,一般是电阻接成上拉,而且往往是10K以上;按键接到地——也就是低电平有效。至于为什么这么做,你大可以仔细研究口输入输出电路结构…… ...
mohanwei 发表于 2009-8-18 08:44

使用特权

评论回复
10
huntsmanydw|  楼主 | 2009-8-18 13:23 | 只看该作者
谢谢5楼的wwwj。问题原因正如你所说的,真是一针见血啊,呵呵。厉害。

我测量了P2口个脚对地电阻,均为11K欧姆。
但进行引脚间两两电阻测量时,P2的1口和2口间的电阻异常,为100欧姆(有点短路了)。其他引脚相互间电阻为500欧姆。

使用特权

评论回复
11
huntsmanydw|  楼主 | 2009-8-18 13:27 | 只看该作者
谢谢,wwwj,mohanwei,LIU_XF,等,谢谢大家。:)

我决定采用大家的建议,将开关改成上拉电阻方式,检测低电平作为开关信号。

使用特权

评论回复
12
jxb163| | 2009-8-18 14:11 | 只看该作者
4L正解

使用特权

评论回复
13
chunyang| | 2009-8-18 17:18 | 只看该作者
排除器件损坏的原因之外,有两种可能,一是PCB问题,前面已有网友提到,二是程序问题,P2口兼作高位地址,如果之前程序有寻址操作,即可能会影响到IO状态。
另外,楼主的设计确实有问题,光耦方面上拉不必太强,否则光敏管需有足够的导通程度才会使端口逻辑可靠的为0。按键检测则应该用下拉法,这两个问题都是楼主对MCU IO内部电路和特性不了解所致。

使用特权

评论回复
14
hkhk888| | 2009-8-18 17:48 | 只看该作者
上拉,典型值4.7K或 10K

使用特权

评论回复
15
huntsmanydw|  楼主 | 2009-8-18 19:47 | 只看该作者
本帖最后由 huntsmanydw 于 2009-8-18 19:49 编辑

谢谢 chunyang ,分析很在理,确实是这样的。呵呵
我的问题的确是PCB布线的问题。

至于光耦方面,我也碰到了你说到的问题,光耦的输入只有1V左右,输入时,P口的电压只能拉低到2V。不能可靠的拉低至低电压

使用特权

评论回复
16
因特网用户| | 2009-8-18 19:51 | 只看该作者
如果光耦输出端电流小了,是不是速度会有影响啊

使用特权

评论回复
17
chunyang| | 2009-8-18 21:51 | 只看该作者
当光耦的光电三极管输出侧以共射极方法连接时,Rc的取值确实跟速度有关,但同时也跟光耦的传输比相关,满足光电三极管侧饱和导通条件的前提下Rc取值较小有利于状态切换速度,但非极限条件下使用,Rc取值较大更有利于功耗,需根据具体应用需求和光耦型号综合考量。

使用特权

评论回复
18
chunyang| | 2009-8-18 21:56 | 只看该作者
回15楼:
对于特定的光耦,其传输比已是常数,这时如果Rc的取值相对LED侧的工作电流过小的话,光电三极管不会进入饱和导通态而是在线性区,此时管子的CE结压降较大,输出电平自然不够低。对光耦中的光电三极管而言,LED的工作电流相当于决定了Ib,此时需要增加LED的工作电流,或者加大Rc,比较而言,后者更为有利,除非是追求极限速度时。

使用特权

评论回复
19
huntsmanydw|  楼主 | 2009-8-19 07:52 | 只看该作者
谢谢chunyang的细心指导。受教了,谢谢。
17楼提到的Rc,是集电极上串的电阻吧!?(模电学的不好,别笑我啊,呵呵)

根据你的提示,我改进了光耦的电路。如下图所示,直接利用P2口内部的上拉电阻。(也印证了你在18楼提到的加大Rc)。我在实验板上测试了,可以下拉至接近0V,效果很好。
呵呵,不知道这样,有没有新的问题产生。

光耦检测电路.PNG (166.7 KB )

光耦检测电路.PNG

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝