7、51单片机——74HC595、74HC573、字模和点阵屏详解

本人使用的51开发板为 郭天祥C51 TX-1C开发板 ;
本笔记部分根据B站up主:江科大自化协、郭天祥的教学视频 整理得到


74HC573 和 74HC595 是两种完全不同的器件。74HC573 是个锁存器,而 74HC595 则是一个串转并的芯片。

74HC573 锁存器
在这里插入图片描述
在这里插入图片描述
74HC573 为锁存器,输入并行信号输出并行信号。

LE:锁存器的锁存端。LE 为高,输出端跟随着输入端变化而变化;LE 为低时,输出端保持着先前 LE 为高的值不变
OE:输出使能。一般为低电平

从上图右边可知:
当 OE 为高电平:输出为高阻态;
当 OE 为低电平:锁存器的锁存端 LE 为高电平时,那么输入端为高电平,输出端也为高电平,输入端为低电平,输出端也为低电平;锁存器的锁存端 LE 为低电平时,输出端保持原来的值不变,相当于值被锁存住了。

同时,锁存器的主要目的是为了节省 IO 口(驱动数码管)和增加驱动电流。


74HC595 移位寄存器

74HC595 是串行输入并行输出的移位寄存器,可用 3 根线输入串行数据,8 根线输出并行数据,多片级联后,可输出 16 位、24位、32位等,常用于 IO 口扩展。
在这里插入图片描述
在这里插入图片描述

OE:输出使能。一般为低电平
SERCLR:串行清 0 端。接VCC,表示不清 0

SER:串行数据,在时钟的激励下一位一位传输
SERCLK:串行时钟(时钟每给一个上升沿,数据向下进行移位一次)
RCLK:寄存器时钟(寄存器时钟每一次上升沿,这 8 位数据同时搬运到右边输出缓存寄存)

在这里插入图片描述

//main.c


#include <REGX52.H>
#include "intrins.h"
#include "delay.h"

sbit RCK = P3^5;
sbit SCK = P3^6;
sbit SER = P3^4;

void _74HC595_WriteByte(unsigned char byte);
void MatrixLED_ShowColumn(unsigned char column, unsigned char byte);

void main(void)
{
    SCK = 0;
    RCK = 1;
    
    while(1)
    {
        MatrixLED_ShowColumn(0, 0x80);
        MatrixLED_ShowColumn(1, 0x40);
        MatrixLED_ShowColumn(2, 0x20);
        MatrixLED_ShowColumn(3, 0x10);
    }
}

void _74HC595_WriteByte(unsigned char byte)
{
    unsigned char i = 0;
    
    for(i = 0; i < 8; i++)
    {
        SER = byte & (0x80 >> i);
        SCK = 1;
        SCK = 0;
    }
    RCK = 1;
    RCK = 0;
}

void MatrixLED_ShowColumn(unsigned char column, unsigned char byte)
{
    _74HC595_WriteByte(byte);
    P0 = ~(0x80 >> column);
    delay_ms(1);					//消影
    P0 = 0xff;
}

输出结果:
在这里插入图片描述


#include <REGX52.H>
#include "intrins.h"
#include "delay.h"

sbit RCK = P3^5;
sbit SCK = P3^6;
sbit SER = P3^4;

#define MATRIXLED_PORT P0

void _74HC595_WriteByte(unsigned char byte);
void MatrixLED_ShowColumn(unsigned char column, unsigned char byte);

void main(void)
{
    SCK = 0;
    RCK = 1;
    
    while(1)
    {
        MatrixLED_ShowColumn(0, 0x3C);
        MatrixLED_ShowColumn(1, 0x42);
        MatrixLED_ShowColumn(2, 0xA9);
        MatrixLED_ShowColumn(3, 0x85);
        MatrixLED_ShowColumn(4, 0x85);
        MatrixLED_ShowColumn(5, 0xA9);
        MatrixLED_ShowColumn(6, 0x42);
        MatrixLED_ShowColumn(7, 0x3C);
    }
}

void _74HC595_WriteByte(unsigned char byte)
{
    unsigned char i = 0;
    
    for(i = 0; i < 8; i++)
    {
        SER = byte & (0x80 >> i);
        SCK = 1;
        SCK = 0;
    }
    RCK = 1;
    RCK = 0;
}

void MatrixLED_ShowColumn(unsigned char column, unsigned char byte)
{
    _74HC595_WriteByte(byte);
    MATRIXLED_PORT = ~(0x80 >> column);
    delay_ms(1);
    MATRIXLED_PORT = 0xff;
}

在这里插入图片描述

在这里插入图片描述


#include <REGX52.H>
#include "MatrixLED.h"
#include "delay.h"

unsigned char code Animation[]={0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,
                                0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,
                                0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C};
void main(void)
{
    unsigned char i, offset = 0, count;
    SCK = 0;
    RCK = 1;
    
    while(1)
    {
        for(i = 0; i < 8; i++)
        {
            MatrixLED_ShowColumn(i, Animation[i + offset]);
        }
        
        count++;
        if(count >= 15)
        {
            count = 0;
            offset += 8;
            if(offset > 16)
            {
                offset = 0;
            }
        }
    }
}

版权声明:本文为CSDN博主「叫我谢布斯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiebs/article/details/122248815

本人使用的51开发板为 郭天祥C51 TX-1C开发板 ;
本笔记部分根据B站up主:江科大自化协、郭天祥的教学视频 整理得到


74HC573 和 74HC595 是两种完全不同的器件。74HC573 是个锁存器,而 74HC595 则是一个串转并的芯片。

74HC573 锁存器
在这里插入图片描述
在这里插入图片描述
74HC573 为锁存器,输入并行信号输出并行信号。

LE:锁存器的锁存端。LE 为高,输出端跟随着输入端变化而变化;LE 为低时,输出端保持着先前 LE 为高的值不变
OE:输出使能。一般为低电平

从上图右边可知:
当 OE 为高电平:输出为高阻态;
当 OE 为低电平:锁存器的锁存端 LE 为高电平时,那么输入端为高电平,输

版权声明:本文为CSDN博主「叫我谢布斯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiebs/article/details/122248815

生成海报
点赞 0

叫我谢布斯

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

2、51单片机——I2C 总线

本人使用的51开发板为 郭天祥C51 TX-1C开发板 ; 本笔记根据B站up主:江科大自化协的教学视频 整理得到 参照博客 https://zouchanglin.cn/2458978170.html I2C 总

51单片机自学笔记(九)——矩阵按键

矩阵按键扫描原理 方法一: 逐行扫描:通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1时说明有按键被按下,然后通过接收到的数据是哪一位为0来判断哪一个按键被