關於嵌入式微控制器按鍵應用的小總結

2021-08-29 01:17:59 字數 2933 閱讀 6952

平時在開發簡單的工程應用時,會應用引腳資源少一些的mcu,這時要做稍複雜一些的使用者互動功能選項時,就需要單個按鍵實現更多的功能,這時就需要按鍵實現短按、長按、連按功能,以下說明這些功能的實現方法,應用場合在按鍵資源不足無法使用矩陣鍵盤的情況下。

給出的示例**以stc15f系微控制器實現,硬體環境為觸控ic輸出訊號,實際可以應用到輕觸按鍵等任何需要消抖的按鍵需求;

硬體配置

sbit touchpad_1 =p1^

6;sbit touchpad_2 =p1^

7;sbit touchpad_3 =p1^

5;

單次掃瞄:

u8 touchpadscan_oneshoot

(void

)

實踐步驟-1):首先初始化定時器用於對按鍵按下時間以及連按間隔時間進行計時

定義按鍵按下計時值以及連按間隔時間進行計時值

u16	xdata touchpadactcounter	=0;

//觸控計時

u16 xdata touchpadcontinuecnt =0;

//連按間隔計時

定時器初始化

void

(void

)

計時執行

void

timer0_rountine

(void

) interrupt timer0_vector

}

#define	timedef_touchpresscontinue	350

//連按間隔時間設定,單位:ms

typedef enum

keycfrm_type;

普通長短按觸發邏輯封裝

void

touchpad_functiontrignormal

(u8 statuspad, keycfrm_type statuscfm)

#endif

switch

(statuspad)

break

;default

:break;}

}break

;case press_shortcnt:

#endif

switch

(statuspad)

break

;default

:break;}

}break

;case press_longa:

#endif

switch

(statuspad)

break

;case2:

break

;case4:

break

;default

:break;}

}break

;case press_longb:

#endif

switch

(statuspad)

break

;case2:

break

;case4:

break

;default

:break;}

}break

;default

:break;}

}

連按觸發邏輯封裝

void

touchpad_functiontrigcontinue

(u8 statuspad, u8 loopcount)

#endif

switch

(statuspad)

break

;case4:

break

;default

:break;}

}break

;case2:

break

;default

:break;}

}break

;case4:

break

;case4:

break

;default

:break;}

}break

;default

:break;}

}

具體業務邏輯

void

touchpad_scan

(void

)else}if

(contertemp > touchcfrmloop_longb && contertemp <= touchcfrmloop_max)}}

}}else}if

(!touchpadcontinuecnt && presscontinueget)

touchpad_temp =0;

} funtrig***_longa =0;

funtrig***_longb =0;

touchpadactcounter =0;

keypress_*** =0;

}}

至此,業務邏輯程式**實現結束,以上**針對按鍵功能對原工程進行剝離整理,若有需要,可檢視博主原工程更為詳細完整**:

同時,以上示例中的列印輸出為串列埠引腳印射輸出,與實際通訊串列埠內部串列埠暫存器共用,這樣做可以節省一點記憶體,具體實現也看檢視原工程.

嵌入式應用選擇合適的微控制器

準備所需硬體介面列表 使用微控制器的基本硬體框圖,準備乙份微控制器需要支援的所有外設介面的列表。微控制器中有兩種常見的介面型別需要列出。第一種是通訊介面,這些是外圍裝置,如usb,spi,i2c,uart等。這些都極大地擾亂了微控制器需要支援多少程式空間。第二種介面是 數字輸入和輸出 a到d 模擬到...

從微控制器到嵌入式

1 什麼是微控制器?微控制器是乙個控制系統,接收管腳中斷輸入,進行一些簡單的邏輯操作,對記憶體或flash進行訪問,再輸出到管腳 2 什麼是嵌入式?嵌入式有linux核心 linux核心功能有 程序管理 記憶體管理 檔案系統管理 裝置驅動 網路管理 3 微控制器和嵌入式有什麼共同點?都是靠中斷驅動,...

嵌入式 微控制器之間的區別

今天在qq群裡,有個看起來資歷豐富的前輩問了乙個問題,嵌入式和微控制器是不是一回事,這個問題提的很好。對於嵌入式方向領域,我最近一直也在想這些底層基礎的概念問題。然而在網上查詢一些前輩的回答,概念太過於深奧,又是那種千篇一律的回答。不能從中學到很多東西。不單是指這一概念,我個人覺得概念不應該弄得過於...