74HC165是一款高速CMOS移位寄存器,,电压为2.0~6.0V,驱动电流为+/-5.2mA。74HC165引脚兼容TTL(LSTTL)系列(定义于JEDEC标准№.7A)。
74hc165基本参数
电压:2.0~6.0V
驱动电流:+/-5.2mA
传输延迟:16ns@5V
最高频率:56MHz@5V
逻辑电平:CMOS
工作温度:-40~+85℃
封装:SO16,SSOP16,DIP16,TSSOP16
74HC165用法
74HC165级联,如下图
SH/LD为低,并口数据存入8个位寄存器中。8个位寄存器分别为Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7。此时Q7里已经有值,可以直接读取了所以,逻辑可以是这样读取Q7的数据,然后IN_CLK_LOW;IN_CLK_HIGH;制造一次上升沿,执行移位操作,使Q6的值移位到Q7中。SH/LD为高,允许移位。一个时钟脉冲,QH向外输出一位数据,同时,从SER采集一位数据补充8位寄存器。
如上级联情况,右边74HC165的SER悬空,采集数据为0.
左边74HC165,一个脉冲,QH输出一位数据,同时,从SER采集一位数据补充低位。 相当于如下: 开始前
H1-G1-F1-E1-D1-C1-B1-A1 H2-G2-F2-E2-D2-C2-B2-A2 开始传输
1,1G-1F-1E-1D-1C-1B-1A-2H 2G-2F-2E-2D-2C-2B-2A-0
2,1F-1E-1D-1C-1B-1A-2H-2G 2F-2E-2D-2C-2B-2A-0-0
3,1E-1D-1C-1B-1A-2H-2G-2F 2E-2D-2C-2B-2A-0-0-0 。。。
14,B2-A2-0-0-0-0-0-0 0-0-0-0-0-0-0-0
15,A2-0-0-0-0-0-0-0 0-0-0-0-0-0-0-0
16,0-0-0-0-0-0-0-0 0-0-0-0-0-0-0-0
这样,就把2个级联的74HC165的并口数据,全部以串口形式传输给了MCU。
用74HC165读8个按键状态
74HC165是一款并入串出的芯片,下图通过74HC165读入8个按键状态,并用7个LED灯L1~L8分别对应S1~S8,来显示按键状态。
硬件连接图如下:
程序代码如下:
1//--------------------------------------------------------------------------
2//来源:http://hi.baidu.com/mculove/home
3//程序名称:用74HC165读8个按键状态
4//晶振:11.0592MHz;
5//MCU型号:STC89C52RC;
6//电路板型号:EBV-MV(51实验板);
7//--------------------------------------------------------------------------
8
9
10
11
12//--------------------------------------------------------------------------
13//硬件连接:
14//EBVn-[VCC]-》MVn-[--VCC--]
15//EBVn-[GND]-》MVn-[//GND//]
16//MVn-{EX3}-[Y0]-》MVn-{EX2}-[L1]
17//MVn-{EX3}-[Y1]-》MVn-{EX2}-[L2]
18//MVn-{EX3}-[Y2]-》MVn-{EX2}-[L3]
19//MVn-{EX3}-[Y3]-》MVn-{EX2}-[L4]
20//MVn-{EX3}-[Y4]-》MVn-{EX2}-[L5]
21//MVn-{EX3}-[Y5]-》MVn-{EX2}-[L6]
22//MVn-{EX3}-[Y6]-》MVn-{EX2}-[L7]
23//MVn-{EX3}-[Y7]-》MVn-{EX2}-[L8]
24//-》MVn-{EX2}-(VCC)
25//-》MVn-{EX3}-(VCC)
26
27//EBVn-[P10]-》MVn-{EX3}-[A]
28//EBVn-[P11]-》MVn-{EX3}-[B]
29//EBVn-[P12]-》MVn-{EX3}-[C]
30//EBVn-[P13]-》MVn-{EX3}-[G1]
31//--------------------------------------------------------------------------
32
33
34
35
36//--------------------------------------------------------------------------
37//实验结果:
38//当按下一个按键时候,对应的LED灯被点亮。如按下S1,则L1灯亮,按下S2,则L2灯亮。。.。。.
39//--------------------------------------------------------------------------
40
41
42
43//------------------------------------------------------
44//头文件;
45#include《AT89X52.H》
46
47#defineHC165_nPLP3_5//移位或载入选择信号
48#defineHC165_CKP3_6//时钟信号
49#defineHC165_OUTP3_7//数据输出
50
51//------------------------------------------------------
52voiddelay(void)
53{
54unsignedchari,j;
55for(i=250;i》0;i--)
56for(j=200;j》0;j--);
57}
58
59unsignedcharHC165(void)//返回值为char型,8位
60{
61unsignedchari;
62unsignedcharTemp;
63HC165_CK=1;
64HC165_nPL=0;//HC165读按键
65HC165_nPL=1;//暂停HC165读按键
66Temp=0;
67if(HC165_OUT==1)Temp|=0x01;//此时HC165_OUT为Temp的最高位。
68for(i=0;i《7;i++)//需要移位7次,才能读完
69{
70HC165_CK=0;
71HC165_CK=1;//时钟上升沿,HC165移位
72Temp《《=1;//Temp左移一位,为新来的数据空出最后一位
73if(HC165_OUT==1)//读入新来的数据到最后一位
74{
75Temp|=0x01;
76}
77}
78HC165_CK=0;
79return(Temp);//经过7次循环后,D6,D5,D4,D3,D2,D1,D0被依次读入Temp的7个位中
80}
81
82
83
84//------------------------------------------------------
85//程序入口;
86voidmain(void)
87{
88while(1)
89{
90P1=HC165();
91delay();
92}
93}