Linux下C51开发3:按键控制LED灯

系列文章索引:Linux下C51开发系列教程索引

根据按键不同的位置显示不同的LED灯状态

先捕获按键的位置,比如一号按键。然后根据按键位置执行不同的LED灯显示模式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*******************************************************************************
* 按键控制程序 *
* 连接方法:JP10(P2) 与 J12 (LED灯)连接, *
* JP11(P0) 与 JP5(按键接口)连接 *
用led读出按键的状态
*
*******************************************************************************/
#include <mcs51/8051.h>

unsigned int key;
void scan_key();

main() {
while (1) {
scan_key(); //检测按键

switch (key) //读出对应值
{
case 1:
P2 = 0x01;
break;
case 2:
P2 = 0x02;
break;
case 3:
P2 = 0x04;
break;
case 4:
P2 = 0x08;
break;
case 5:
P2 = 0x10;
break;
case 6:
P2 = 0x20;
break;
case 7:
P2 = 0x40;
break;
case 8:
P2 = 0x80;
break;
default:;
}
}
}

void scan_key() //按键检测函数
{
if (P0 == 0xfe)
key = 1;
if (P0 == 0xfd)
key = 2;
if (P0 == 0xfb)
key = 3;
if (P0 == 0xf7)
key = 4;
if (P0 == 0xef)
key = 5;
if (P0 == 0xdf)
key = 6;
if (P0 == 0xbf)
key = 7;
if (P0 == 0x7f)
key = 8;
}

按照图示进行接线

根据图片中的连接方法,将按键的16进制值传送到P0口,然后根据P0的值表示按键的位置。之后显示LED就是之前LED灯的按值显示。

效果如下:

Linux下C51开发3:8位按键


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!