Controlador 74HC595

Tabla de contenido

Uno, introducción de chips

En segundo lugar, el circuito de impulsión

Tercero, el conductor

Cuarto, la forma de onda medida

Cinco, dos piezas de cascada


 

Uno, introducción de chips

El chip utilizado en este ejemplo es el chip Philips 74HC595

El chip admite una frecuencia de funcionamiento de 100 M

Definición de cada pin

 

 

Q0 ~ Q7: Terminal de salida de datos en paralelo;

GND: pin de tierra;

Q7S: salida de datos en serie (se utiliza cuando hay cascada de varios chips);

MR: Restablecer pin, cuando el pin está conectado a un nivel bajo, los datos del registro de almacenamiento de datos internos del chip se borran y se restablecen.Si no se usa, generalmente se conecta a un nivel alto;

SHCP: La entrada de reloj del registro de desplazamiento, cuando se recibe el flanco ascendente, los datos internos del registro de desplazamiento se desplazan hacia atrás como un todo;

STCP: entrada de reloj de registro de almacenamiento de datos, cuando se detecta el borde ascendente, el registro de almacenamiento de datos está habilitado y los datos recibidos por el chip se envían a los pines Q0 ~ Q7, Q7S. Puede entenderse como una señal de pestillo, cuando los datos se envían al chip Envíe un flanco ascendente al pin una vez finalizado;

OE: Pin de habilitación de salida. Cuando es de nivel alto, el pin de salida del chip está en configuración alta. Cuando es de nivel bajo, el pin de salida del chip es de nivel alto (bajo). Este pin se puede utilizar para controlar el pin de salida paralela al mismo tiempo Nivel, como controlar el parpadeo del LED, etc. Cuando no se usa esta función, generalmente se conecta a un nivel bajo;

DS: entrada de datos en serie

VCC: pin de fuente de alimentación

Diagrama de bloques funcionales: se puede ver en el diagrama de bloques funcionales que 74HC595 contiene un registro de desplazamiento, un registro de almacenamiento y un controlador de salida de tres estados.

Diagrama de bloques lógicos y diagrama de tiempos

 

En segundo lugar, el circuito de impulsión

 

Tercero, el conductor

archivo .c

/*******************************************************************************

* 名称: void HC595_Init(void)

* 功能: 74HC595的初始化操作;

* 说明: 总共3个端口,SER-PC1,RCLK(ST)-PC2,SRCLK(SH)-PC3;

*******************************************************************************/

void HC595_Init(void)
{
    //将595所有引脚设为推挽输出
    Gpio_InitIOExt(DS_SER_PORT, DS_SER_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);
    Gpio_InitIOExt(ST_CP_PORT, ST_CP_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);
    Gpio_InitIOExt(SH_CP_PORT, SH_CP_PIN, GpioDirOut, TRUE, FALSE, FALSE, FALSE);

    //将所有指示灯都关闭
    HC595Send(HC595_LED_Leakage,FALSE);
    HC595Send(HC595_LED_LED_Run,FALSE);
    HC595Send(HC595_LED_LED_Gun,FALSE);
    HC595Send(HC595_LED_Signal2,FALSE);
    HC595Send(HC595_LED_Overload,FALSE);
    HC595Send(HC595_Relay,FALSE);
}



void GPIO_WriteHigh(u8 _port,u8 _pin)
{
    Gpio_SetIO(_port,_pin,TRUE);
}


void GPIO_WriteLow(u8 _port,u8 _pin)
{
    Gpio_SetIO(_port,_pin,FALSE);
}

/*******************************************************************************

* 名称: void HC595Send(HC595_TypeDef _location,u8 _state)

* 功能: 8位串行输出函数;

* 说明: 第一个为点灯的位置,第二个为目标的状态

*******************************************************************************/
void HC595Send(HC595_TypeDef _location,u8 _state)
{
    static u8 current_data = 0;
    u8 data = 0;
    if(_state == TRUE)
    {
        current_data|=(0x01<<_location);
    }
    else
    {
        current_data&=(~(0x01<<_location));
    }
    data = current_data;
    for(u8 i=0;i<8;i++)
    {
        GPIO_WriteLow(SH_CP_PORT,SH_CP_PIN);
        __NOP();
        __NOP();
        if(data&0x80)
            GPIO_WriteHigh(DS_SER_PORT,DS_SER_PIN);
        else
            GPIO_WriteLow(DS_SER_PORT,DS_SER_PIN);
        GPIO_WriteHigh(SH_CP_PORT,SH_CP_PIN);
        data = data<<1;
    }
    __NOP();
    __NOP();
    GPIO_WriteLow(ST_CP_PORT,ST_CP_PIN);
    __NOP();
    __NOP();
    GPIO_WriteHigh(ST_CP_PORT,ST_CP_PIN);
    Delay_Tim_1ms(1);
}

 

archivo .h

/* 595控制端口定义 */

#define SH_CP_PORT 2
#define SH_CP_PIN 7

#define ST_CP_PORT 3
#define ST_CP_PIN 1

#define DS_SER_PORT 3
#define DS_SER_PIN 2

typedef enum
{
    HC595_LED_Leakage = 1,
    HC595_LED_LED_Run = 2,
    HC595_LED_LED_Gun = 3,
    HC595_LED_Signal2 = 4,
    HC595_LED_Overload = 5,
    HC595_Relay = 6,
} HC595_TypeDef;

 

Cuarto, la forma de onda medida

Cinco, dos piezas de cascada

 

 

Supongo que te gusta

Origin blog.csdn.net/zhuimeng_ruili/article/details/112537225
Recomendado
Clasificación