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]