仿真电路
- 元件:
英文名|中文名|属性
:-|:-|:-|:-
LED-BARGRAPH-GRN|绿色LED组|-
LED-BARGRAPH-RED|红色LED组|-
74HC138|8位译码器|-
RX8|8位电阻排|元件值设置为100
BUTTON|按键|-
RES|电阻|元件值设置为10K
- 电路图:
- 仿真图:
按键1 下移点亮的绿色LED
按键2 下移点亮的红色LED
按键3 切换译码器使能,非使能状态所有LED熄灭
程序设计
main.c
:#include <AT89X51.H> #define uchar unsigned char #define uint unsigned int //延时函数 void delay(uint t) { uint i; while (t--) { for (i = 120; i; i--) ; } } //主程入口 void main() { uchar op1 = 0; uchar op2 = 0; uchar ctrl = 1; uchar press = 0; P1 = 0xff; //P1所有脚输出高电平 for (;;) //死循环,和while(1)等价 { if ((P1 & 0x07) != 0x07) //判断P1的1,2,3脚是不是高电平 { delay(10); //延时消除抖动 if (!(P1 & 0x01)) //按键1 { if (++op1 > 7) { op1 = 0; } } if (!(P1 & 0x02)) //按键2 { if (++op2 > 7) { op2 = 0; } } if (!(P1 & 0x04)) //按键3,清除译码器 { ctrl = !ctrl; } } //ctrl为非0时P2=0x01,为0时P2=0x00 P2 = ctrl ? 0x01 : 0x00; P3 = op1 | (op2 << 4); delay(300); //粗略延时 } }
注解
- 译码器
- 译码器用于把3位二进制数值转换成某一个
Y
引脚的低电平信号,一般用于控制多个锁存器。 - PS:3位二进制恰好能表式
0~8
,也就是对应第几个Y
引脚输出低电平信号。 - 引脚类型: 使能控制引脚
E 123
,数据输入引脚ABc
,数据输出引脚Y
使能控制引脚E 123
: 只有当E1
为高电平,E2 E3
为低电平才能产生有效输出,否则输出引脚Y
全部为高电平。
74HC138真值表
E1 |
E2 |
E3 |
A |
B |
C |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
Y7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
L | * | * | * | * | * | H | H | H | H | H | H | H | H |
* | H | * | * | * | * | H | H | H | H | H | H | H | H |
* | * | H | * | * | * | H | H | H | H | H | H | H | H |
H | L | L | L | L | L | L | H | H | H | H | H | H | H |
H | L | L | H | L | L | H | L | H | H | H | H | H | H |
H | L | L | L | H | L | H | H | L | H | H | H | H | H |
H | L | L | H | H | L | H | H | H | L | H | H | H | H |
H | L | L | L | L | H | H | H | H | H | L | H | H | H |
H | L | L | H | L | H | H | H | H | H | H | L | H | H |
H | L | L | L | H | H | H | H | H | H | H | H | L | H |
H | L | L | H | H | H | H | H | H | H | H | H | H | L |
L:低电平,H:高电平,*:任意电平
本文链接:https://blog.chrxw.com/archives/2020/04/03/1173.html
转载请保留本文链接,谢谢