独立按键的基本操作

独立按键电路原理图

硬件实现原理

按键介绍

轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:

独立按键原理

 按键在闭合和断开时,触点存在抖动现象。(代码编辑的时候需要延迟消抖)

代码实现

  1 #include "reg52.h"
  2 
  3 u8 flag = 0;
  4 
  5 typedef unsigned int u16;
  6 typedef unsigned chat u8;
  7 
  8 sbit s7 = P3^0;
  9 sbit s6 = P3^0;
 10 sbit s5 = P3^0;
 11 sbit s4 = P3^0;
 12 
 13 sbit L1 = P0^0;
 14 sbit L2 = P0^1;
 15 sbit L3 = P0^2;
 16 sbit L4 = P0^3;
 17 sbit L5 = P0^4;
 18 sbit L6 = P0^5;
 19 sbit L7 = P0^6;
 20 
 21 void delay(u16 i)
 22 {
 23     while(i--);
 24 }
 25 
 26 void HC537Init(u8 t)
 27 {
 28     switch (t)
 29     {
 30         case 4:
 31             P2=(P2 & 0x1f) | 0x80;
 32         break;
 33         
 34         case 5:
 35             P2=(P2 & 0x1f) | 0xa0;
 36         break;
 37         
 38         case 6:
 39             P2=(P2 & 0x1f) | 0xc0;
 40         break;
 41         
 42         case 7:
 43             P2=(P2 & 0x1f) | 0xe0;
 44         break;
 45     }
 46 }    
 47 
 48 void keypos()
 49 {
 50     if(s7 == 0)
 51     {
 52         delay(100);
 53         if(s7 == 0)
 54         {
 55             if(flag==0)
 56             {
 57                 L1 = 0;
 58                 flag = 1;
 59             }
 60             else if(flag==1)
 61             {
 62                 L1 = 1;
 63                 flag = 0;
 64             }
 65         }
 66         while (!s7);
 67     }    
 68     
 69     if(s6 == 0)
 70     {
 71         delay(100);
 72         if(s6 == 0)
 73         {
 74             if(flag==0)
 75             {
 76                 L2 = 0;
 77                 flag = 2;
 78             }
 79             else if(flag==2)
 80             {
 81                 L2 = 1;
 82                 flag = 0;
 83             }
 84         }
 85         while (!s6);
 86     }    
 87     
 88     if(s5 == 0)
 89     {
 90         delay(100);
 91         if(s5 == 0)
 92         {
 93             if(flag==0)
 94             {
 95                 L3 = 0;
 96             }
 97             else if(flag==2)
 98             {
 99                 L5 = 0;
100             }
101         }
102         while (!s5);
103     }    
104     
105     if(s4 == 0)
106     {
107         delay(100);
108         if(s4 == 0)
109         {
110             if(flag==0)
111             {
112                 L4 = 0;
113             }
114             else if(flag==2)
115             {
116                 L4 = 0;
117             }
118         }
119         while (!s4);
120     }    
121 }
122 
123 void main()
124 {
125     while(1)
126     {
127         
128     }
129 }
原文地址:https://www.cnblogs.com/kevinkala/p/12934383.html