Linux下C51入门教程05:74hc138译码器

系列文章索引:Linux下C51入门教程索引

上一篇:Linux下C51入门教程04:按键控制继电器

74hc138译码器,是一种译码器。那么就讨论共性,根据《计算机系统基础(第2版)》(袁春风编著)中附录的内容(其他的参考资料也可以)。

译码器输入端有n位,输出端有2n2^n位。单片机译码器有3位,输出有23=82^3=8位,最合适的就是8位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
67
68
69
70
71
72
73
74
75
76
77
78
/****************************************************************************
* 138译码器实验 *
* *
* 实验目的: 1. 了解138译码器工作原理 *
* 2. 学会用C语言对138译码器编程控制 *
* *
* 实验现象: LED灯每隔一段时间循环点亮 *
* 接线方法: * 接线方法: J15连JP12
P2.2、P2.3、P2.4分别连P6的A、B、C *
*****************************************************************************/
#include <mcs51/8051.h>

#define HC138A P2_2 //定义译码器输入端A 在 P2.2 管脚上
#define HC138B P2_3 //定义译码器输入端B 在 P2.3 管脚上
#define HC138C P2_4 //定义译码器输入端C 在 P2.4 管脚上

/*************************************************
*
* 延时函数
*
**************************************************/
void delay(unsigned int i) {
unsigned char j;
for (i; i > 0; i--) //循环1500*255次 CPU在这里执行一段时间
for (j = 255; j > 0; j--)
;
}

int main() {
while (1) {
// 点亮第一个LED灯
HC138C = 0;
HC138B = 0;
HC138A = 0; //输入 000
delay(1500); //延时

// 点亮第二个LED灯
HC138C = 0;
HC138B = 0;
HC138A = 1; //输入 001
delay(1500); //延时

// 点亮第三个LED灯
HC138C = 0;
HC138B = 1;
HC138A = 0; //输入 010
delay(1500);

// 点亮第四个LED灯
HC138C = 0;
HC138B = 1;
HC138A = 1; //输入 011
delay(2000);

// 点亮第五个LED灯
HC138C = 1;
HC138B = 0;
HC138A = 0; //输入 100
delay(1500);

// 点亮第六个LED灯
HC138C = 1;
HC138B = 0;
HC138A = 1; //输入 101
delay(1500);

HC138C = 1;
HC138B = 1;
HC138A = 0; //输入 110
delay(1500);

HC138C = 1;
HC138B = 1;
HC138A = 1; //输入 111
delay(1500);
}
return 0;
}

按图连接线路:

然后就是流水灯效果:译码器效果

下一篇:Linux下C51入门教程06:一位数码管


Linux下C51入门教程05:74hc138译码器
https://blog.jackeylea.com/c51/c51-decoder/
作者
JackeyLea
发布于
2020年5月2日
许可协议