综合技术交流
直播中

ss

6年用户 8762经验值
擅长:电源/新能源 制造/封装 RF/无线
私信 关注
[经验]

如何在程序中编写按键控制语句

  按键即微动开关,本身不能自锁。今天我们通过三个程序举例如何在程序中编写按键控制语句。
  一、三个制作中用到的电路图以及元器件清单相同。
  1.电路
   1.png
  “按键与LED”电路图
  2.元器件清单
   2.png
  二、一键无锁控制LED
  即按下LED点亮,放手LED熄灭。
  1.程序设计(3.12.1)
  #include 《reg52.h》//头文件
  ***it LED=P1^0;//定义LED引脚
  ***it KEY=P3^2;//定义按键引脚
  void main()
  {
  while(1)
  {
  if(KEY==0)//判断按键是否按下
  {
  LED=0;//LED点亮
  }
  else
  {
  LED=1;//LED熄灭
  }
  }
  }
  2.程序解释
  “if(KEY==0)”注意判断按键是否按下,要用“==”而不是“=”;如果按键按下,LED点亮,否则熄灭。
  “= =”与“=”有什么区别,如何正确使用。
  用“= =”用于判断语句,而“=”是赋值的含义,比如“LED=0;”将“0”赋值
  三、一键自锁控制LED
  按一下LED点亮,再按一下LED熄灭。
  1.程序设计
  #include 《reg52.h》//51头文件
  ***it LED=P1^0;
  ***it KEY=P3 ^ 2;
  void main(void)
  {
  while(1)
  {
  if(KEY == 0)//判断按键状态
  {
  LED =~LED;//变化灯的状态
  }
  }
  }
  2.程序解释
  “~”,取反的符号,如果原来是高电平,取反后就为低电平,原来是低电平取反后就是高电平。通过判断按键状态,不断取反操作而实现LED状态变化。
  将程序下载后,你将发现,按键有时并不怎么听话,这个程序有问题,问题在哪儿?需要处理按键防抖。
  3.C语言基础知识
  按键防抖
  当按下按键时,由于金属弹片的作用,不能很快闭合稳定,放开时也不能立刻断开,闭合稳定前后称为按键抖动,消除抖动可以通过程序或者硬件电路实现,通常通过程序完成。
   3.png
  按键抖动
  如何用程序来实现呢?从上图中可以看出,当检测到按键状态变化,先延时一段时间(一般为10~20ms),绕开不稳定状态(前沿抖动),然后再检测一次按键状态,如果与前面检测的状态相同,说明已经进入“闭合稳定”。
  4.改进程序
  #include 《reg52.h》//头文件
  ***it LED=P1^0;
  ***it KEY=P3 ^ 2;
  void delay(unsigned int a)
  {
  unsigned int i,j;
  for(i=a;i》0;i--)
  for(j=110;j》0;j--);
  }
  void main()
  {
  while(1)
  {
  if(KEY == 0)//判断按键状态
  {
  delay(20);//延时20ms
  if(KEY == 0)//再次判断按键状态
  {
  LED =~LED;//变化灯的状态
  while(KEY == 0);//等待按键松开
  }
  }
  }
  }
  解释:
  两次检测按键状态,确保按键真正按下。按键消除抖动程序非常重要,在设计按键控制的电路中,一定要加上消除抖动程序。“while(KEY==0);”该条语句是等待按键释放,检测到按键释放后,跳出循环体。

更多回帖

发帖
×
20
完善资料,
赚取积分