OpenEdv-开源电子网

标题: 关于stc89c52单片机IO口控制继电器的疑惑 [打印本页]

作者: 我的世界123    时间: 2014-1-16 15:34
标题: 关于stc89c52单片机IO口控制继电器的疑惑
我把写好的程序烧到stc89c52单片机内,我用定时器中断通过按键的控制来分别实现控制两个led灯,这两个程序都是通过一个按键同时控制的,为什么直接接led灯的那个亮,而通过继电器控制的led灯却控制不了,就是说接在继电器的IO口一直为低电平,给他高电平信号也拉不高,这是为什么?
控制程序如下:
if(key3 == 0) //+5v时

{
if(Relay1 == 1)    //继电器打开时
{
k1 = 1; //通过继电器控制的io口
        k4 = 1;//直接控制led灯的io口
Delay_ms(100);
k4 = 0;
}
else if(Relay1 == 0)  //继电器闭合时
{
k4 = 1;
Delay_ms(100);
k4 = 0;
}
}

作者: zhp    时间: 2014-1-16 15:54
//试试这个行不行
 if(key3 == 0) //+5v时

{
if(Relay1 == 1)    //继电器打开时

           Relay1 =0;
            k1 = 1; //通过继电器控制的io口 
           k4 = 1;//直接控制led灯的io口
           Delay_ms(100);
           k4 = 0;
}
else if(Relay1 == 0)  //继电器闭合时

          Relay1 =1;
          k1=0;
           k4 = 1;
          Delay_ms(100);
         k4 = 0;
}
}
作者: LOVE_FYD    时间: 2014-1-16 16:22
你硬件怎么连的?
作者: 我的世界123    时间: 2014-1-16 16:30
回复【2楼】zhp:
---------------------------------
还是没反应
作者: 我的世界123    时间: 2014-1-16 16:32
回复【3楼】LOVE_FYD:
---------------------------------
就是用对应的io口分别用led灯来判断高低电平
作者: zhp    时间: 2014-1-16 16:57
估计是你的硬件的问题
上原理图和程序吧
作者: 正点妹子    时间: 2014-1-16 21:07
继电器的是怎么驱动的? 是否有光耦,光耦是否是没加上拉
作者: higerd_han    时间: 2014-1-17 10:56
回复【7楼】正点妹子:
---------------------------------
继电器驱动只有光耦是不行的,要有个放大电路,最好是直接使用ULN2803
作者: 正点妹子    时间: 2014-1-19 18:10
回复【8楼】higerd_han:
---------------------------------
恩恩,简单点来个三级管就行了!
作者: 延陵小子    时间: 2014-1-20 00:23
回复【5楼】我的世界123:
---------------------------------
继电器负载太大了,驱不动,输出口总被拉低了。STC89C52单片机 端口 的 最大电流 为 8 ~ 12 mA,这个 8 ~12  mA 是指 往 IO 口 灌入电流,输出电流 只有 100 ~ 200 uA。
作者: 我的世界123    时间: 2014-1-20 08:37
谢谢大家,问题已经解决了,原来是电流太小,驱动不起来
作者: 灵灵    时间: 2014-1-20 09:30
回复【9楼】正点妹子:
---------------------------------
三极管的话还得加保护二极管,
作者: 黑夜之狼    时间: 2014-2-17 22:32
首先确认好你的电路吧




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4