找回密码
 立即注册
查看: 844|回复: 16

STC15单片机上电状态问题如何解决

[复制链接]

该用户从未签到

1

主题

6

回帖

19

积分

新手上路

积分
19
发表于 2023-12-22 09:14:34 | 显示全部楼层 |阅读模式
最近在使用STC15F104E单片机做点简单的继电器控制,上电瞬间继电器误触发,是用示波器观察后波形如下,如图圈出来的地方就是单片机上电之后又低电平状态,前期看书STC15F104E的Data Sheet,提示说单片机上电I/O口状态为高电平,所以在继电器控制方式上采用了低电平西和继电器,现在问题是上电一个高低电平脉冲,继电器还是机会误触发一次,请教如何解决此问题。
0d5536c1f902c9b4f64ccde74e097dd.jpg
回复 送花

使用道具 举报

该用户从未签到

1

主题

6

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2023-12-22 15:59:31 | 显示全部楼层
目前是使用STC15F104E单片机,然后推动光耦,再推三极管,在控制继电器,I/O口为低电平时继电器吸合。上电高电平后又是低电平,所以继电器吸合一下,然后运行到主程序中,I/O口初始化为高。
截图202312221556594499.jpg
截图202312221557036220.jpg
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

6

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2023-12-23 09:21:33 | 显示全部楼层
神农鼎 发表于 2023-12-22 19:31
大师的图都是高清的

#include        "STC15F104E.H"
#include "intrins.h"
#define COUNT 2000                                               //状态改变延时时间 最高65535
unsigned int stateCnt[4]={0,0,0,0};         //状态计数变量组
unsigned char state=0;                                       //状态机状态:0为继电器吸合 1为继电器断开

void KSFSM()              //按键开关状态机
{                                                                                      //0为按键断开,1为按键按下
  if(P33&&P32)                              //11
        stateCnt[3]++;
        else if(P33&&!P32)                        //10
        stateCnt[2]++;
        else if(!P33&&P32)                        //01
        stateCnt[1]++;
        else if(!P33&&!P32)                        //00
        stateCnt[0]++;
       
        if((stateCnt[0]>=COUNT)||(stateCnt[1]>=COUNT)||(stateCnt[2]>=COUNT))
        {                                                                        //00、01、10 按键按下 继电器吸合
                unsigned char s;
                for(s=0;s<4;s++)
                stateCnt=0;        //状态计数变量组清0
                state=0;
        }
        else if(stateCnt[3]>=COUNT)
        {                                                                        //11状态按键都未按下 继电器断开
                unsigned char s;
                for(s=0;s<4;s++)
                stateCnt=0;
                state=1;               
        }       
}       

void RlyFSM()                                      //继电器状态机
{
        if(state==0)                              //继电器闭合
        {
    P35 = 0;
        }
        else if(state==1)       //继电器断开
        {
          P35 = 1;
        }       
}       

void main()
{
//    P3M0 = 0x00;
//          P3M1 = 0x00;
          P3 = 0xFF;
          WDT_CONTR=0x34;         //看门狗使能
  while (1)
  {
          KSFSM();              //按键开关状态机
          RlyFSM();                                      //继电器状态机
          WDT_CONTR=0x34;       //看门狗使能               
        }
}
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2120

    积分

    荣誉版主

    积分
    2120
    发表于 2023-12-22 11:42:13 | 显示全部楼层
    不会吧,要不先检查一下程序
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9321

    回帖

    1万

    积分

    管理员

    积分
    13904
    发表于 2023-12-22 15:23:11 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    回帖

    19

    积分

    新手上路

    积分
    19
     楼主| 发表于 2023-12-22 15:56:36 | 显示全部楼层
    神农鼎 发表于 2023-12-22 15:23
    完整原理图的PDF先发上来,让大家帮忙审核

    可以
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    回帖

    19

    积分

    新手上路

    积分
    19
     楼主| 发表于 2023-12-22 16:03:21 | 显示全部楼层
    gentleman 发表于 2023-12-22 11:42
    不会吧,要不先检查一下程序

    主要程序没啥东西啊,就只是这个I/O口上电给它赋值了一个高电平。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:44
  • 签到天数: 140 天

    [LV.7]常住居民III

    15

    主题

    535

    回帖

    1956

    积分

    金牌会员

    打工人

    积分
    1956
    发表于 2023-12-22 16:59:20 | 显示全部楼层
    最好上电后有个延时继电器,延时几秒,让单片机稳定后再给控制电源,把单片机上电后的不稳定时间段躲过去。
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1313

    积分

    荣誉版主

    积分
    1313
    发表于 2023-12-22 19:17:39 | 显示全部楼层
    避开P3.2口。用P3.4口。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9321

    回帖

    1万

    积分

    管理员

    积分
    13904
    发表于 2023-12-22 19:25:50 | 显示全部楼层
    1,他后来补的图,不一定是实际的图
    2,看下图,实在看不习惯,你先学习我师傅画的图
    3,MCU 用能仿真的 STC8G1K08A-36I-SOP8

    截图202312221924186163.jpg

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9321

    回帖

    1万

    积分

    管理员

    积分
    13904
    发表于 2023-12-22 19:29:24 | 显示全部楼层

    跟大师学电路,不要抄了一堆凌乱的图,还没人引导
    截图202312221927481724.jpg

    https://www.stcaimcu.com/forum.p ... ptid=4830&pid=33168

    截图202312221934433891.jpg

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-5 13:42 , Processed in 0.072651 second(s), 73 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表