查看:
1704
|
回复:
0
|
STC15单片机实战项目软件开发第四讲 - 按键检测(状态机)
|
JackMCU
32
主题
47
回复 |
发表于2020-04-03 06:35:51
|
只看该作者
1#
电梯直达
软件开发第四讲 - 按键检测(状态机) 一、工具链接 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年,全职提供技术开发与技术服务、生产支持等。 如果你只做能力范围之内的事情,就永远没法进步。
|
|