STC15單片機實戰項目軟件開發第四講 - 按鍵檢測(狀態機)

軟件開發第四講 - 按鍵檢測(狀態機)

一、工具鏈接
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年,全職提供技術開發與技術服務、生產支持等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章