按鍵電路在我們的電路設(shè)計中非常常見,其中有一種比較特殊,就是一鍵開關(guān)機電路,顧名思義,就是只用一個按鍵實現(xiàn)開機關(guān)機以及其他功能,其實大家都接觸過,我們手機中的開機鍵就是一個很好的例子,一鍵開關(guān)機有純硬件機制,也有軟件配合機制,今天我們只探索軟件配合機制,下面是之前發(fā)過的非常不錯的軟件驅(qū)動程序,推薦學(xué)習(xí)!
完全由 C 編寫,高度可移植,超級牛逼的按鍵驅(qū)動機制!
原理其實很簡單,就是通過控制 PMOS Q2 的通斷來實現(xiàn)的,當(dāng)按鍵 KEY1 按下的時候,PMOS Q2 導(dǎo)通,之后控制 Q1 導(dǎo)通,就可以實現(xiàn) PMOS 一直導(dǎo)通,實現(xiàn)開機,開機之后,可以檢測 PG2 的電平來判斷按鍵的短按,雙擊,長按等操作。
開機過程
按鍵沒按下之前,PMOS GS 兩端電壓一樣,不導(dǎo)通,當(dāng)按鍵按下之后,看上圖紅色回路,G 極通過二極管 D1 接地,PMOS 導(dǎo)通,12V 電壓通過 PMOS 到 VCC,給后級供電,這時候有老鐵就要問了,難道我要一直按著嘛,按鍵松開的話 MOS 不就關(guān)斷了
別急,重點來了,大家有沒有注意到一個細(xì)節(jié),我們長按手機的時候,什么時候會松開按鍵,當(dāng)屏幕點亮的時候才會松開吧,其實從按下到屏幕點亮,系統(tǒng)已經(jīng)運行起來一部分了,系統(tǒng)剛運行起來的時候,會立刻將 PG1 拉高,三極管 Q1 導(dǎo)通。
此時,如上圖所示,MOS 管的 G 極被拉低,即使松開按鍵了,PMOS 依然導(dǎo)通,由此實現(xiàn)長按開機功能。
那么又有老鐵問了,系統(tǒng)開機后,我還想用這個按鍵實現(xiàn)一些別的功能,比如短按,雙擊什么的,該怎么辦?
按鍵過程
好說,這里肯定幫老鐵們考慮好了,看上圖紅色部分,按鍵按下之后,PG2 通過 D2 到地,松開之后,被上拉到高電平,由此就可以檢測 KEY1 按鍵的短按,長按,雙擊等功能。
關(guān)機過程
這里的關(guān)機其實是“軟關(guān)機”,當(dāng)檢測到到 KEY1 長按時,系統(tǒng)先進行必要的關(guān)機處理,之后將 PG1 拉低,Q1 關(guān)斷,松開按鍵后,實現(xiàn)關(guān)機。