GPIO 发表于 2022-2-23 15:35:45

C51/STC单片机 使用3个I/O口实现驱动两片级联74HC164 串转并移位芯片 并将数组发送出


/*
HC595与HC164区别:
        前者有锁存器(16脚),所有移位完成后输出。
        后者无锁存器(14脚),每移一位就输出一位。
级联方法:U1的Q7接U2的A与B、CLK与MR全部接在一起,以此类推。
*/
#include "reg51.h"
#define u8 unsigned char
#define hc164_num 2                                //164级联数量
u8 hc164_data;                //165数据容器 请将要发送的数据写入此数组
sbit hc164_AB = P3 ^ 2;                        //数据输入 A与B经过与门用于片选 将其接在一起
sbit hc164_CLK = P3 ^ 3;                //上升沿移位锁存 先左移Q1~Q7,并锁存数据进Q0
sbit hc164_MR = P3 ^ 4;                        //低电平清零复位

void hc164() {                //向74HC164发送数据 请将数据写入 hc164_data 数组,然后发送
        u8 j,k = hc164_num - 1;
        hc164_MR = 0;
        hc164_MR = 1;
        do {
                j = 7;
                do {
                        hc164_AB = (1 << j) & hc164_data ? 1 : 0;
                        hc164_CLK = 0;
                        hc164_CLK = 1;
                } while (j--);
        } while (k--);
}

void main() {
        hc164_data = 0xF0;                //U1
        hc164_data = 0x0F;                //U2
        hc164();
        while (1);
}
页: [1]
查看完整版本: C51/STC单片机 使用3个I/O口实现驱动两片级联74HC164 串转并移位芯片 并将数组发送出