作业帮 > 综合 > 作业

51单片机怎么检测不到外加电压的变化

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 02:55:43
51单片机怎么检测不到外加电压的变化
我想用两组红外对射广电开关测速.有物体遮挡时,开关输出高电平,遮挡几乎输出为0.我按照一些网友的方法,将接受信号的I/O口置为0,然后进行检测,当有物体遮挡时,用万用表测得光电门输出5.6V.按理讲I/O口应该熄灭的.但怎么也观察不到Led的变化?
并且,当用万能表,测得时候本是高电位的输出端,变成了低电位.
你初始化端口搞反了吧.应该是将接受信号的I/O口置为1,再读该端口的状态.在硬件上还应检查你的接法对不对.标准的光电开关的接法草图如下:


再问: 您好,很感谢您的讲解。之前我是置为1的,但是没效果,后来换成了0.既然置为1,有低电平的话就会亮,那么我置为0的话,有高电平输出,他不就会从暗到亮吗?我就是么想的!
再答: 你说的“会亮”,指的是什么会亮呢?你是把那个口设成读入得,不是输出的呀!例如你设的是P0.0口,你只需要一条MOV P0,20H指令,把P0口的状态读到20H寄存器,然后判断20H的数值就好了。
再问: 我用的是C语言,会变学的不是很好。我是把Io口作为读入端的,用来检测外部是否有低电平。
还有一个问题,我感觉是不是我的两个电路共的接地端不一至造成的。因为我的单片机是电脑供电的,接地段是单片机的GND,红外光电开关时实验室的直流源供电,接地段是电源的负极,最后的电路相当于是将直流源的负极和单片机的GND相连,光电开光的输出和I/O口相连。这样有影响吗?回复
再答: 共地是不影响的,不共地和电源的话,就是光电隔离的电路,这样会更好的。我估计你还是程序中的处理方式不对。C语言我不懂,所以帮不到你了。只能等懂C语言的高手来了。