您的位置:首页 > 游戏 > 游戏 > 网站建设合同_同城装修接单平台_适合seo的网站_各行业关键词

网站建设合同_同城装修接单平台_适合seo的网站_各行业关键词

2024/12/23 16:36:28 来源:https://blog.csdn.net/weixin_44453694/article/details/143310115  浏览:    关键词:网站建设合同_同城装修接单平台_适合seo的网站_各行业关键词
网站建设合同_同城装修接单平台_适合seo的网站_各行业关键词

1.按键简介

  按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开。开发板上使用的按键及内部简易图如下图所示:
在这里插入图片描述
  按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态, 如果按键按下,初始导通状态变为断开,初始断开状态变为导通。通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号如下图所示:
在这里插入图片描述
  由于机械点的弹性作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。抖动时间的长短由按键的机械特性决定的,一般为 5ms 到 10ms。按键稳定闭合时间的长短则由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起按键被误读多次。为了确保 CPU 对按键的一次闭合仅作一次处理,必须进行消抖。
  消抖方法可以通过软件方式实现,通过延时二次检测的释放,即能很好的优化抖动误触的问题。操作步骤如下:

  1. 先设置 IO 口为高电平(由于开发板 IO 都有上拉电阻,所以默认 IO 为高 电平)。
  2. 读取 IO 口电平确认是否有按键按下。
  3. 如有 IO 电平为低电平后,延时几个毫秒。
  4. 再读取该 IO 电平,如果仍然为低电平,说明按键按下。

2.硬件接口

在这里插入图片描述
  根据原理图可知,板子上有4个独立按键K1K4,分别对应IO端口的P3^0P3^3;当按键按下时引脚输出低电平。因此,若要检测按键是否按下和松开,需要将引脚初始化电平设置为高电平。

3.软件设计

3.1按键初始化

  定义按键硬件引脚端口,设置初始化电平。

sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
void key_Init(void)
{k1=k2=k3=k4=1;//上拉
}

3.2 按键检测函数实现

  通过判k1~k4是否为低电平,来确定是否有按键按键;延时实现按键消抖,再进行二次判断,确定具体是哪一个按键按下。

u8 Key_GetValue(void)
{static u8 flag=0;if((!k1 || !k2 || !k3 || !k4) && flag==0){flag=1;Delay_Ms(10);if(!k1)return 1;else if(!k2)return 2;else if(!k3)return 3;else if(!k4)return 4;else return 0;}else if(k1 && k2 && k3 && k4){flag=0;}return 0;
}

  在main函数中循环检测按键,当有按键按下时开启蜂鸣器作为按键提示音,并实现对LED的开关控制。

int main()
{u8 i=0;u8 key;key_Init();while(1){key=Key_GetValue();if(key){BEEP_Ctl(100);Delay_Ms(20);BEEP_Ctl(0);LED=~LED;}}	
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com