[讨论] 触发单片机外部中断0出现的问题,求大神解答。

ITqiaojun   2014-5-2 15:17 楼主
     我想要实现的功能是当光电二极管接收不到激光时,模块输出低电平,触发单片机外部中断0,而这个光
敏模块在接收不到激光时,输出高电平;这与我的要求正好相反,所以我用S8550(PNP)作为反相器,将
光敏模块的输出电平取反,问题是:虽然我在集电极端输出低电平,但不知为什么总是不能触发中断?


    在测试中发现,在不与单片机中断引脚相连时,当OUT输出低电平(接收到激光)时,发光二极管LED0
亮,此时集电极C输出高电平;当OUT输出高电平(接收不到激光)时,发光二极管LED0灭,此时集电极C
输出低电平。
    但是一旦连接到单片机的中断引脚,LED0立即点亮,当OUT输出低电平(接收到激光)时,发光二极管LED0
的亮度变得更亮。
    我分析后觉得应该是因为单片机在上电后各引脚默认为高电平,所以连接到集电极C时,会点亮LED0。当OUT
输出高电平(接收不到激光)时,集电极C输出低电平,为什么不能将INT0置为低电平呢?
QQ五笔截图未命名1.png

回复评论 (9)

端口内部使能了上拉电阻,看看能否去掉
点赞  2014-5-2 22:22
在加一级三极管不就反过来了,同意楼上的看法,中断是低电平触发的,也可以直接调整输出端的状态吧。
点赞  2014-5-2 23:46
楼主的晶体管用法不妥,先搞清楚接收头在有光照时的输出电压。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2014-5-3 00:05
看来看去,电路有问题 本帖最后由 lzq253123505 于 2014-5-3 01:27 编辑
点赞  2014-5-3 01:21
把LED0给拿下去试试先
http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2014-5-3 08:10
刚好在看51的定时器时扫到了IO口,看一下P3的内部结构吧

port3.png
这就不难理解为什么LED常亮了,三极管不通时VCC经过内部上拉电阻给LED供电,三极管导通时VCC经三极管给LED供电所以会更亮
作为输入口时,如果把P3.2置低的话由于输出锁存,IO口一直是低电平将无法被拉高,无论输入的是高还是低读到的都是低,所以这种方法是不可取的

对于你要实现的功能可以把指示LED改成低电平导通的接法,三极管的集电极接一个1k左右的电阻到地
点赞  2014-5-3 09:30
三级管的方法简直rua呆了. 这个电路的设计和你的光敏二极管参数有关系,先用万用表测试一下有光线和无光线两种条件的阻值,尽量接近实际情况. 电路有两种方法5V;电阻;二极管;地 或者5V;二极管;电阻;地 输出线一定在电阻和二极管之间,选一种合适的电路+适当的阻值就可以产生你想要的逻辑了,适当的阻值才能保证符合TTL电平逻辑. 有无光,高低电平一共四种情况都可以实现的,电流不够再考虑三级管. 本帖最后由 huo_hu 于 2014-5-3 10:01 编辑
点赞  2014-5-3 09:58
试试这样接行不 画错了P3.2接到三极管的C极! 本帖最后由 smxzjs 于 2014-5-4 18:06 编辑
  • 光控.JPG
点赞  2014-5-4 17:48
端口内部使能了上拉电阻,看看能否去掉
点赞  2016-10-24 23:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复