独立按键
首先既然是检测输入,对于当然要用到拉电阻,来检测引脚电平变化变化。51单片机中,除了p0口外,p2,p3,p4都是内置上拉电阻的准双向io口,一般 的 51 p0引脚都外接了上拉电阻,当然也可以用作输入口。
作为输入前需要拉为高电平。当有按键按下,致使单片机的某个引脚接地,变为低电平时,我们就认为这个按键按下了。当按键松开后,由于输入不会锁存,所以此时拉高的引脚回归到高电平。
独立按键的内部原理。
独立按键的4个引脚中,两两为一组。每一组的2个引脚是连在一起的,当按键按键时,2个组又连接了,也就是4个脚都连接一起了。
按键的很重要注意点就是消除抖动,消抖。因为人按下按键不是并瞬间到位的,按键在按下的过程中会有抖动。我们需要通过延时来让单片机绕过抖动的时间。
下面是一个用按键作为开关间接控制led的demo。
注:下图中p2.0连接的按键应该再接一个电阻,我疏忽忘记画出来了。
/***************************************按键按下,led亮,松开,led熄灭**************************************/#includetypedefunsignedintuint;typedefunsignedcharuchar;sbitbutton=p2^0;//按键输入引脚sbitled=p0^0;//led控制输出引脚/***************************/voiddelay(uintt);uchariskeypressed(void);/***************************/voidmain(void){button=1;//p2是准io口,作为输入前要写1led=1;while(1){if(iskeypressed()){led=0;delay(100);led=1;}}}uchariskeypressed(void){ucharispressed=0;//是否按下标志位ucharc=50;if(button==0)//初次检测{delay(5);//消抖延时if(button==0)//再次验证{ispressed=1;while(ispressed==0&&c--)//如果不用c作为计数器,那么一直按着按键的话,程序就会一直在这里循环。是否要用c需要根据自己的要求。;}}returnispressed;}voiddelay(uintt){uinti;ucharj;for(i=t;i》0;i--)for(j=110;j》0;j--);}
矩阵按键
矩阵按键的检测方式有多种,最常用的就是行列式扫描检测。原理和独立按键是一样的,只不过我们要扫描一组按键,找出那个被按下的而已。
对行列式扫描的分析。
假如我们按下了按键s6,现在来检测它。
用红色表示1高电平,蓝色表示0低电平。
先给键盘连接的gpio口赋值为0xf0。
电平反转。
这样就可以判断定了按键的坐标。
demo的连线图。
总投资1.3万亿,国产芯片迎来曙光
黑科技大盘点 机器人已经在我们的生活中越来越普及
iPhone新IOS11系统发表时间确认,WWDC6月5日举办
嵌入式开发必备调试工具:Micro-Lab
89C2051单片机无线遥控电铃的工作原理
51单片机独立按键与矩阵按键的工作原理
量子时代该如何加密?密码在算力前都将失效
錼创8月底试产Micro LED芯片,巨量转移速率达10,000颗/秒
推荐几款性价比高,支持快充协议的的无线充电宝
液位控制器怎么调试
浅谈新能源汽车三大痛点
诺基亚3310复刻版什么时候开售?6月中旬收货 诺基亚老人机还能大卖吗?
OPPO Reno3 PRO的海报曝光 号全球最薄双曲面双模5G手机
IBM推世界最小电脑你绝对想不到 1立方毫米成本10美分
在家自己练,你也是超级演说家!
物联网发展步入正轨,这些新的物联网创业项目你知道吗?
国内半导体产业疯狂并购的发展脉络与选择逻辑
TriasForce项目将有可能会引领区块链商业化的新潮流
电源管理模式最佳功率仿真的重要性
点焊是什么意思_点焊对身体有什么危害