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}