蓝桥杯单片机按键(考点总结)

您所在的位置:网站首页 单片机p32在哪 蓝桥杯单片机按键(考点总结)

蓝桥杯单片机按键(考点总结)

2024-07-09 23:56| 来源: 网络整理| 查看: 265

文章目录 前言本文介绍一下蓝桥杯单片机按键考点,以总结的角度去讲解,对底层代码不做过多介绍,对底层有疑问可以看底层代码讲解文章或b站up柳离风视频。 一、按键底层代码二、按键触发方式(近几年S4、S5、S8、S9考频很高,就以这四个按键为例)1.按下生效、松手生效2.短按、长按生效3.双按键4.双击5.组合按键(根据排列组合,大概有二十一种组合方式,一定要灵活使用) 三、按键功能1.状态切换2.参数调整3.多界面(等一会更新)4.切换选中单元5.键盘输入(等一会更新)6.按键禁用7.任意按键生效8.记录无效按键 总结

前言 本文介绍一下蓝桥杯单片机按键考点,以总结的角度去讲解,对底层代码不做过多介绍,对底层有疑问可以看底层代码讲解文章或b站up柳离风视频。

提示:以下是本篇文章正文内容,下面案例可供参考

一、按键底层代码

按键底层一共有两种,独立按键和矩阵键盘。(这里按键消抖使用定时器任务调度来实现)

bit key_up = 1; //独立按键 uchar key_scan1() { if(key_up == 1 && (P30 == 0 || P31 == 0 || P32 == 0 || P33 == 0)) { key_up = 0; if(P30 == 0) return 1; else if(P31 == 0) return 2; else if(P32 == 0) return 3; else if(P33 == 0) return 4; } else if(P30 == 1 && P31 == 1 && P32 == 1 && P33 == 1) key_up = 1; return 0; } //矩阵键盘 uchar key_scan2() { uchar key; P44 = P42 = P35 = P34 = 1; P30 = P31 = P32 = P33 = 0; if(key_up == 1 &&(P44 == 0 || P42 == 0 || P35 == 0 || P34 == 0)) { if(P44 == 0) key = 1; else if(P42 == 0) key = 2; else if(P35 == 0) key = 3; else if(P34 == 0) key = 4; else return 0; P44 = P42 = P35 = P34 = 0; P30 = P31 = P32 = P33 = 1; key_up = 0; if(P30 == 0) key = key; else if(P31 == 0) key = key + 4; else if(P32 == 0) key = key + 8; else if(P33 == 0) key = key + 12; return key; } else if(P44 == 1 && P42 == 1 && P35 == 1 && P34 == 1) key_up = 1; //如果题目考到第一二行按键并且使用串口收发,在这行需要加一句P30 = 1;P31 = 1;让通信时序恢复 return 0; } //矩阵键盘如果题目没有用到全部按键一定要删除多余的引脚,否则会干扰别的功能,例如P34引脚和NE555模块互相干扰。 //比如题目用到S4、S5、S8、S9,你会发现P30、P31、P34、P35未使用,可以删除 uchar key_scan2() { uchar key; P44 = P42 = 1; P32 = P33 = 0; if(key_up == 1 &&(P44 == 0 || P42 == 0 )) { if(P44 == 0) key = 1; else if(P42 == 0) key = 2; else return 0; P44 = P42 = 0; P32 = P33 = 1; key_up = 0; if(P32 == 0) key = key ; else if(P33 == 0) key = key + 2; return key; } else if(P44 == 1 && P42 == 1) key_up = 1; return 0; } //主函数中的按键处理任务 void key_task() { uchar key; if(key_dly


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3