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 }
  • 相关阅读:
    SpringBoot实现原理
    常见Http状态码大全
    forward(转发)和redirect(重定向)有什么区别
    1094. Car Pooling (M)
    0980. Unique Paths III (H)
    1291. Sequential Digits (M)
    0121. Best Time to Buy and Sell Stock (E)
    1041. Robot Bounded In Circle (M)
    0421. Maximum XOR of Two Numbers in an Array (M)
    0216. Combination Sum III (M)
  • 原文地址:https://www.cnblogs.com/kevinkala/p/12934383.html
Copyright © 2011-2022 走看看