按键控制继电器的奇怪问题

  • 继电器
  • huihui163
  • LV5工程师
  • |      2017-02-23 11:58:06
  • 浏览量 1820
  • 回复:11
轻触按键控制继电器的奇怪问题,有时按键按下时继电器动作一下瞬间又关断了,单片机STC12c5a60s2,io口通过ULN2803来驱动继电器,总计六个按键控制六个继电器,程序如下,
#include "STC12C5A60S2.h"

#define uint  unsigned int         

sbit KEY5=P2^5;//按键操作

sbit KEY6=P2^6;

sbit KEY7=P2^7;



sbit LED0=P1^0;

sbit LED1=P1^1;

sbit LED2=P1^2;



void delay(uint a);

void main()

{



LED0=LED1=LED2=0;

KEY5=KEY6=KEY7=1;

	

while(1)

 {

	 

    if(KEY5==0)

    {

        delay(150);

        if(KEY5==0){LED0=~LED0;}

				while(!KEY5);

    }

		if(KEY6==0)

    {

        delay(150);

        if(KEY6==0){LED1=~LED1;}

				while(!KEY6);

    }

		if(KEY7==0)

    {

        delay(150);

        if(KEY7==0){LED2=~LED2;}

				while(!KEY7);

    }

	

			

 }

}

void delay(uint a)

{

	uint i,j;

	for(i=0;i<200;i++)

	for(j=0;j
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:4
huihui163 2017-02-24
是不是按键操作就有类似的问题,延时长的话,如果按键时间不到就松开的话会出现啥问题呢
0   回复
举报
发布
SingleYork 回复 2017-02-24
多试试就知道了:lol按键一般都会做去抖处理,至于这个去抖时间是多少,多试试吧:lol
0   回复
举报
heaton426 回复 2017-02-24
用应该是硬件问题吧
0   回复
举报
heaton426 回复 2017-02-28
延时的问题吗?
0   回复
举报
huihui163 2017-02-24
好的谢谢版主
0   回复
举报
发布
SingleYork 2017-02-24
本帖最后由 SingleYork 于 2017-2-24 08:32 编辑 乍一看貌似没什么大问题,不过,建议楼主把按键部分这样改下试试……
  1. if(KEY5==0)
  2. {
  3. delay(150);
  4. if(KEY5==0)
  5. {
  6. while(!KEY5);
  7. LED0=~LED0;
  8. }
  9. }
另外,楼主也可以把防抖动延时加长一点试试……
1   回复
举报
发布
Eagleson 2017-02-23
去问答区 很快就有答案了
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子

上海固越电子科技有限公司 版权所有©       投诉、举报邮箱:contact@icxbk.com       客服、投诉、举报电话:021-31029100-9104

经营增值电信业务试点批复:沪通信管自贸[2019]24号 出版物经营许可证:新出发沪批字第Y8445号

沪ICP备18038102号  沪公网安备 31011702004806号 |营业执照