独立按键的基本操作
Posted kevinkala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了独立按键的基本操作相关的知识,希望对你有一定的参考价值。
独立按键电路原理图
硬件实现原理
按键介绍
轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:
独立按键原理
按键在闭合和断开时,触点存在抖动现象。(代码编辑的时候需要延迟消抖)
代码实现
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 }
以上是关于独立按键的基本操作的主要内容,如果未能解决你的问题,请参考以下文章
8051单片机实战分析(以STC89C52RC为例) | 07 - 独立按键驱动