单片机实验(十五)74LS47数码管译码

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端状态,都不输出。
在这里插入图片描述
大概就是这样。。。
在这里插入图片描述

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
74LS47是一种BCD-to-7-segment解码器/驱动器芯片,用于将BCD码转换为7段LED数码管的控制信号。以下是使用74LS47驱动数码管显示数字的步骤: 1.将74LS47芯片的Vcc引脚连接到电源正极,将GND引脚连接到电源负极。 2.将BCD码输入74LS47芯片的A、B、C、D引脚,可以通过开关、按键等方式输入。 3.将74LS47芯片的a、b、c、d、e、f、g引脚分别连接到数码管的a、b、c、d、e、f、g引脚。 4.将74LS47芯片的LT(Lamp Test)引脚连接到电源正极,可以点亮所有数码管。 5.将74LS47芯片的BI/RBO(Blanking Input/ripple-blanking output)引脚连接到电源负极,可以控制数码管的显示。 6.将74LS47芯片的LE(Latch Enable)引脚连接到电源正极,可以锁存输入的BCD码。 7.根据需要,可以通过74LS47芯片的RBI(Ripple Blanking Input)引脚控制数码管的闪烁。 下面是一个使用74LS47驱动数码管显示数字的Python代码示例: ```python import RPi.GPIO as GPIO import time # 定义74LS47芯片的引脚 A, B, C, D = 11, 12, 13, 15 a, b, c, d, e, f, g = 16, 18, 22, 29, 31, 32, 33 LT, BI_RBO, LE, RBI = 36, 37, 38, 40 # 初始化GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup([A, B, C, D, a, b, c, d, e, f, g, LT, BI_RBO, LE, RBI], GPIO.OUT) # 数字0-9的BCD码 digits = { 0: [0, 0, 0, 0], 1: [0, 0, 0, 1], 2: [0, 0, 1, 0], 3: [0, 0,1, 1], 4: [0, 1, 0, 0], 5: [0, 1, 0, 1], 6: [0, 1, 1, 0], 7: [0, 1, 1, 1], 8: [1, 0, 0, 0], 9: [1, 0, 0, 1] } # 显示数字函数 def display_digit(digit): # 将BCD码输出到74LS47芯片的A、B、C、D引脚 GPIO.output([A, B, C, D], digits[digit]) # 锁存输入的BCD码 GPIO.output(LE, GPIO.HIGH) GPIO.output(LE, GPIO.LOW) # 循环显示数字0-9 while True: for i in range(10): display_digit(i) time.sleep(1) # 清理GPIO GPIO.cleanup() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值