找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1812|回復(fù): 8
收起左側(cè)

MCU一鍵開關(guān)機電路,為什么只能控制開機,不能控制關(guān)機,求解

[復(fù)制鏈接]
ID:858009 發(fā)表于 2021-11-4 16:57 | 顯示全部樓層 |閱讀模式
1.png
MCU代碼
#include "..\Public\CH552.H"                                                   
#include "..\Public\Debug.H"
#include "GPIO.H"
#include "stdio.h"
#include <string.h>

sbit LED1 = P1^5;
sbit KEY1 = P1^4;

void main( )
{               
    while(1)
                {
                        if(KEY1==0)
                        {                                
                        LED1 = 0;
                        }
                }
}

回復(fù)

使用道具 舉報

ID:725110 發(fā)表于 2021-11-4 18:59 | 顯示全部樓層
你這代碼邏輯就只有開機啊
回復(fù)

使用道具 舉報

ID:824490 發(fā)表于 2021-11-4 20:32 | 顯示全部樓層
http://www.torrancerestoration.com/bbs/dpj-203511-1.html
給你參考一下現(xiàn)成的代碼
回復(fù)

使用道具 舉報

ID:584814 發(fā)表于 2021-11-4 21:18 | 顯示全部樓層
void main( )
{               
    while(1)
                {
                        if(KEY1==0)
                        {                                
                        LED1 = ~ LED1 ;
                        }
                }
}
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-11-4 23:06 | 顯示全部樓層
開機靠電路,關(guān)機靠程序。你要檢測GPIO-IN 得到低電平后,等GPIO-IN 恢復(fù)高電平之后,GPIO-OUT 給低電平。不然會在釋放按鍵的時候因為按鍵的抖動,變成重啟。
回復(fù)

使用道具 舉報

ID:230742 發(fā)表于 2021-11-5 03:53 | 顯示全部樓層
我感覺不如裝一個555或者4013簡單。
回復(fù)

使用道具 舉報

ID:592807 發(fā)表于 2021-11-5 09:56 | 顯示全部樓層
51單片機不是STM32,要想檢測電平要先拉高,也就是KEY1 =1 ;然后才能if(KEY1 ==0)判斷,你程序上就有漏洞



回復(fù)

使用道具 舉報

ID:17204 發(fā)表于 2021-11-18 17:02 | 顯示全部樓層
樓主搞定了問題沒,也在關(guān)注這個電路實用性能
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-11-18 17:11 | 顯示全部樓層
szkalwa 發(fā)表于 2021-11-18 17:02
樓主搞定了問題沒,也在關(guān)注這個電路實用性能

電路時可行的,但是要寫程序,還占用兩個IO口,電路還復(fù)雜,實用角度而言,其實,不如直接一個自鎖開關(guān)實在。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表