############################
# E071_7seg_74hc595.PY: 7 segmentos con 74hc595
# ENTRADAS: GPIO, tiempos y datos a mostrar
# SALIDAS: 7 segmentos con datos mostrados
############################
from machine import Pin # Gestión del GPIO
import time # Control de tiempos
# Define los pines DS, ST_CP y SH_CP
ds_pin = Pin(25, Pin.OUT) # Datos
sh_cp_pin = Pin(32, Pin.OUT) # Desplazamiento
st_cp_pin = Pin(33, Pin.OUT) # Almacenamiento
# Tiempos de transición
tmp = .4
# Códigos 7 segmentos
codigo = [
0b00111111, # 0
0b00000110, # 1
0b01011011, # 2
0b01001111, # 3
0b01100110, # 4
0b01101101, # 5
0b01111101, # 6
0b00000111, # 7
0b01111111, # 8
0b01101111, # 9
0b10000000, # pto
0b01110111, # A
0b01111100, # B
0b00111001, # C
0b01011110, # D
0b01111001, # E
0b01110001, # F
0b00000000 # blanco
]
# Envía un byte al shift-register 74hc595
def ver(data):
for i in range(7, -1, -1): # Envía 8 bits: MSB a LSB
bit = (data >> i) & 0x01 # Bit i-ésimo del byte
ds_pin.value(bit) # DS=bit i-ésimo
sh_cp_pin.value(1) # Sube SH_CP (desplaza)
time.sleep_us(1) # Espera corta
sh_cp_pin.value(0) # Baja SH_CP
st_cp_pin.value(1) # Sube ST_CP (almacena)
time.sleep_us(1) # Espera corta
st_cp_pin.value(0) # Baja ST_CP
# Bucle principal
if __name__ == "__main__":
print('GESTIÓN MÓDULO 7 SEGMENTOS CON 74HC595')
print('Visualiza desplazamiento...')
try:
while True:
for x in codigo:
ver(x)
time.sleep(tmp)
except KeyboardInterrupt:
print('Programa finalizado')
codigo(0) # Apaga LED