74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,非同步地清除寄存器,强制所有的输出为低电平。
兼顾回复求大佬题目三,串行静态显示系统设计_编程语言-CSDN问答
发送数据时序可看到8个时钟脉冲对应的数据为11110010,程序与电路图如下。
#include "reg52.h"
sbit Sab=P3^4;
sbit clk=P3^5;
void QD164(unsigned char sj)
{
char aa=8;
clk=0;
while(aa--)
{
// Sab=sj%2;sj/=2;//数据发送从低位
// Sab=(127+sj%2)/(sj%2);sj/=2;//对应位移八位
Sab=sj&0x80;sj<<=1;//数据发送从高位
clk=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
clk=0;
}
}
void main()
{
unsigned int ys=0;unsigned char xd=0,a=0x66;QD164(a);
while(1)
{
// QD164(a);
//if(!(++xd))
}
}