zoukankan      html  css  js  c++  java
  • 独立按键的基本操作

    独立按键电路原理图

    硬件实现原理

    按键介绍

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

    独立按键原理

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

    代码实现

      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 }
  • 相关阅读:
    Windows python 鼠标键盘监控及控制
    python 执行adb shell 命令
    python Windows提示框
    判断function属于函数或方法
    生成不同时间下的LOG
    pyqt5 QCalendar类中常用的方法
    python字符串大小写转换
    configparser 模块的基本方法
    QGridLayout类中常用的方法
    Day049--jQuery的文档操作和事件介绍
  • 原文地址:https://www.cnblogs.com/kevinkala/p/12934383.html
Copyright © 2011-2022 走看看