軟件開發第四講 - 按鍵檢測(狀態機)
一、工具鏈接
1、Keil c51 UV4
https://yunpan.360.cn/surl_yrIfYYmeRFk
2、STC-ISP下載軟件
https://yunpan.360.cn/surl_yxH4CuUUvI3
二、學習板獲取方式
方法1:自己設計PCB,自行打板焊接;
方法2:用羣主設計的PCB,自行打板焊接;
方法3:向羣主購買,淘寶鏈接:
https://item.taobao.com/item.htm?ft=t&id=612010801228
三、程序功能
1、單擊按鍵2,運行指示燈狀態翻轉;
2、長按按鍵2超過2s,運行指示燈閃一下;
3、雙擊按鍵2,運行指示燈閃三下;
四、硬件部分
運行指示燈 -> P34;
按鍵2 -> P33
說明:設計了硬件消抖,提高抗干擾能力。
四、 有限狀態機
有限狀態機是一種概念思想,把複雜的控制邏輯分解成有限個穩定狀態,組成閉環系統,通過事件觸發,讓狀態機按設定的順序處理事務。
單片機C語言的狀態機編程,是利用條件選擇語句(switch – case)切換狀態,通過函數內部指令改變狀態機狀態,讓程序按設定的順序執行。
五、按鍵狀態機示意圖
1、按鍵動作示意圖
2、狀態圖
六、編程說明
1、文件結構如下:
main.c -> 主函數文件,包含main函數等;
Public.c -> 公共函數文件,包含Delay延時函數等;
Sys_init -> 系統初始化函數,包含GPIO初始化函數等;
LED.c -> LED外設函數,包含LED打開、關閉函數等;
Timer0.c -> 定時器函數,包含定時器初始化,中斷函數等;
KEY1.c -> 按鍵1函數,包含按鍵檢測,中斷函數等;
KEY2.c -> 按鍵2函數,包含按鍵狀態機檢測函數等;
2、主函數如下:
通過結構體Hardware_Init的函數指針調用系統初始化函數,完成GPIO的初始化,接着進入主循環,進行按鍵2狀態機檢測。
3、狀態機參數定義
利用枚舉定義狀態機的四個狀態;
利用結構體定義狀態機的其它參數。
4、按鍵檢測程序思路
版權需要,這部分內容,請在微信公衆號閱讀。
5、源代碼
版權需要,這部分內容,請在微信公衆號閱讀。
說明:公衆號文章附了源代碼下載鏈接。
七、直播
4月4號,21:00,在bilibili平臺進行直播。有時間的朋友,可以看直播,沒時間的朋友,可以看回播。
直播地址: https://live.bilibili.com/21988510
單片機實戰項目免費教學,開源項目,開發工具,技術資料以及更多原創技術文章,請關注微信公衆號。
硬件家園 yjjy168168168
作者:劉傑,軟硬件技術10年,全職提供技術開發與技術服務、生產支持等。