80S52:数码管译码模块
功能:向74LS47输入BCD码(如0x01),七位数码管显示对应的数字(如1)
这次的实验过程有点艰难,因为成本问题(都直接用动态扫描)很少有像74LS系列芯片的用武之地,资料比较少本人懒得查
先来一睹74LS47的芳容(如下图)
OA…OG是与七位数码A…G口对应的输出端口。
A、B、C、D则与51单片机的P1 I/O的低四位相连,用于输入BCD
LT、RBI、BI/RBO分别是试管端、灭0端、息屏端,后面会一一讲解。
电路连接比较简单,我用proteus演示一下:
连线乱了一点,我在这里说明一下://不同开发板可能不一样
A–>P1^0;
B–>P1^1;
C–>P1^2;
D–>P1^3;
这里装载的hex非常简单:
#include<reg52.h>
#define data P1
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
int main(){
data=1;//相当于:P1^0=1;P1^1=0;P1^2=0;P1^3=0;
while(1);
}
同理如果要显示0、2…9只需要将0、2…9赋值给P1。
之后我们来了解一下LT、RBI、BI/RBO。
LT,试管端,当LT端的电位为0,则无论A、B、C、D处于什么点位,QA~QG统统输出高电平,使得七位数码管显示8(即全亮),用于测试数码管坏了没…
如图:把LT接地后原来输出1的数码管输出8.
RBI,灭0端,字面意思,如果数码管当前要输出0且RBI端为低电平,则啥也不输出,很无聊 很有价值,能实现…不知道,而且proteus上也不支持模拟。
BI/RBO,灭屏端(似乎和RBI还有什么关系),只要该端口是低电平不管A、B、C、D端状态,都不输出。
大概就是这样。。。