51单片机-按键

  左边的是普通二极管,右边的是发光二极管。左边的二极管如果想导通,则右边要比左边电平低。如果导通就是

  可以控制灯亮,那么按键左下的都为低电平,系统复位时默认I/O是高电平,所以给垂直方向的I/O拉低,这样如果按键按下,电路导通,那么垂直方向I/O的低电平会把水平方向的拉低。这样就可以通过检测水平方向哪个I/O为低电平来检测哪个键被按下。

  开始时对程序的错误想法:被按下的键两边肯定都是低电平,把它们存在一个数组里,然后检测。这样是不对的,用一个临时变量去存P0的值,不会有相同的,开始P0的值为oxff,这样即使按下按键,那么两边的引脚还是高电平,所以失败了。

  if(H0 == 0){p2_0 = 0; delay(); p2_0 = 1;}//然后通过检测水平的来确定,延时为了消抖

  口,没有方法控制单片机的输入输出方向。相当于我们在每个口上都上拉了一个5V 10欧的电阻,这


公海网站555000jMORE +
推荐产品
  • 一种喷吹管的制作方

    一种喷吹管的制作方

  • 51单片机-按键

    51单片机-按键

  • 三部门明确AMOLED进口

    三部门明确AMOLED进口

  • 全新奥迪A4的矩阵发光

    全新奥迪A4的矩阵发光

  • 快速响应矩阵码(Qui

    快速响应矩阵码(Qui