導航:首頁 > 操作系統 > 單片機處理啟動按鈕的方法

單片機處理啟動按鈕的方法

發布時間:2023-06-05 14:24:25

㈠ 怎麼用C語言/C51程序實現單片機按鍵長按開機與長按關機

  1. 首先需要硬體支持,也就是單片機某個引腳可以控制斷電和維持上電

  2. 按鍵的的作用也可以給單片機供電,並且還要有個專門的引腳檢測按鍵狀態。

  3. 軟體:首先是長按判斷。這個最好用按鍵掃描。就是檢測按鍵按下時候,定時器計時,如果松開就立即清零。在設置一個功能函數檢測定時值,大於兩秒後,就表示長按。

  4. 按鍵按下單片機供電開始計時,如果達到長按標准,就輸出引腳控制持續供電,這時候按鍵鬆了也不會斷電。

  5. 運行期間,按鍵再次按下並符合長按,那木引腳輸出停止供電,這時候如果按鍵松開,那就徹底沒電關機。

㈡ 高手幫忙.用51單片機控制一個燈.要求按下啟動按鈕後以亮5秒,滅3秒為周期運行.關鍵是要有掉電保持功能!!

關鍵叢巧和的掉電保護可以像1L那樣說用內部EEPROM實滲盯現,或者用24C02(外置寬孫的EEPROM)來做,然後燈亮滅那些就容易搞了。具體思路還是自己動手才懂的

㈢ 單片機按鍵觸發C程序

while(1)
{
if(keyflag==1) //有按下切出死循環
break;
else continue;
}
while(1)
{
..... //用戶自己的程序
}

這種方法是模擬按鍵按下啟動真正的應用程序,觸發的是自己的功能程序短。從效果上來還是可以的

㈣ 單片機的按鍵啟動和復位電路圖

單片機的復位有上電復位和按鈕手動復位兩種。如圖(a)所示為上電復位電路,圖(b)所示為上電按鍵復位電路。

上電復位是利用電容充電來實現的,即上電瞬間RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。圖(a)中的R是施密特觸發器輸入端的一個10KΩ下拉電阻,時間常數為10×10-6×10×103=100ms。只要VCC的上升時間不超過1ms,振盪器建立時間不超過10ms,這個時間常數足以保證完成復位操作。上電復位所需的最短時間是振盪周期建立時間加上2個機器周期時間,在這個時間內RST的電平應維持高於施密特觸發器的下閾值。

上電按鍵復位(b)所示。當按下復位按鍵時,RST端產生高電平,使單片機復位。復位後,其片內各寄存器狀態改變,片內RAM內容不變。

由於單片機內部的各個功能部件均受特殊功能寄存器控制,程序運行直接受程序計數器PC指揮。各寄存器復位時的狀態決定了單片機內有關功能部件的初始狀態。

另外,在復位有效期間(即高電平),80C51單片機的ALE引腳和引腳均為高電平,且內部RAM不受復位的影響。

圖要點一下查看大圖才清楚哦O(∩_∩)O

㈤ 單片機怎麼用一個按鈕控制步進電機啟動和停止

單片機用一個按鈕控制步進電機啟動和停止,這很容易的,識別按鍵按下的程序會寫吧,那定義一個位變數,即標志位,如flag,上電後flag=0,為電機停止狀態。每按一次按鍵,flag=!flag,即取反一次,然後再判斷標志位,flag=1,則啟動電機。flag=0,則停止電機。

㈥ 單片機如何用一個按鍵實現啟停

不知道你想要實現啥樣的啟停,今天上班有點閑,給你寫一個程序做參考,你可以根據你的需要進行更改。//功能是按鍵,按下啟動停止,啟動後LED燈閃爍,
停止LED燈滅。
#include
"REG52.H"
sbit
LED1_01
=
P1^1;
//LED燈
sbit
KEY0_01
=
P1^2;
//按鍵
bit
value_flag
=
0;
//標志位
/*
*
延時1ms延時子函數
**/
void
Delay_1ms(unsigned
int
Time)
{
unsigned
int
x,
y;
for(x
=
Time;
x
>
0;
x--)
for(y
=
120;
y
>
0;
y--);
}
/*
*
按鍵開關【啟動和停止】子函數
**/
void
Scan_keyoutCmd(void)
{
if(KEY0_01
==
0)
//檢測按鍵是否按下
{
Delay_1ms(10);
//延時去抖動
if(KEY0_01
==
0)
//確定按鍵按下
{
value_flag
=
~
value_flag;
//取反標志位
}
while(KEY0_01
==
0);
//檢測鬆手
}
}
/*
*
程序運行【啟動和停止】子函數
**/
void
Disp_layledketCmd(void)
{
if(value_flag
==
1)
//如果標志打開啟動單片機運行程序
{
LED1_01
=
0;
Delay_1ms(500);
//啟動運行程序後LED燈開始閃爍
LED1_01
=
1;
Delay_1ms(500);
}
else
if(value_flag
==
0)
//如果標志關閉停止單片機運行程序
{
LED1_01
=
0;
//停止運行程序後LED滅。
}
}
/*
*
函數主體
**/
int
main(void)
{
value_flag
=
1;
//打開標志位
while(1)
{
Scan_keyoutCmd();//單片機循環檢測是否有按鍵按下【啟動或停止】應運程序
Disp_layledketCmd();
//執行應運程序
}
}

閱讀全文

與單片機處理啟動按鈕的方法相關的資料

熱點內容
程序員被噴了怎麼辦 瀏覽:707
android消息數 瀏覽:261
為什麼在伺服器里輸不了指令 瀏覽:28
程序員那麼可愛前女友劇情介紹 瀏覽:101
centosjava環境變數配置 瀏覽:552
伺服器主板被鎖如何恢復 瀏覽:129
xpc語言編程軟體 瀏覽:820
光遇安卓怎麼解限制 瀏覽:300
元氣騎士老版源碼 瀏覽:102
助眠解壓音頻小姐姐口腔音 瀏覽:232
sql加密身份證號解碼 瀏覽:162
解壓玩法視頻 瀏覽:466
蘋果xls如何設置加密 瀏覽:208
湖北廣電dns的伺服器地址是多少 瀏覽:529
php獲取原始數據 瀏覽:250
pic單片機如何編程 瀏覽:895
javabyte寫文件 瀏覽:325
java獲取類包名 瀏覽:894
ftp命令編碼格式 瀏覽:300
程序員那麼可愛陸離穿正裝 瀏覽:171