長沙網(wǎng)站建設(shè)工作室打開官方網(wǎng)站
我們前面的博文《輸入端口少如何擴展?74hc148或74ls148級聯(lián)在arduino中實現(xiàn)16轉(zhuǎn)4的應(yīng)用》介紹了148,148輸入后可以立即輸出到數(shù)碼管,可以說它是自帶編BCD編碼器的。而今天這里我們主要介紹的74hc165是沒有編碼器,這里我們以proteus為仿真環(huán)境,arduino作為編譯代碼環(huán)境。
文章原出處:https://blog.csdn.net/haigear/article/details/132911752
一、芯片介紹
1、圖片介紹
常規(guī)我們拿到的165的芯片是這樣的,芯片手冊中的管腳順序及命名方式和proteus中的有所差別(左邊的圖為芯片手冊中的圖,右邊的為proteus中的圖)
很明顯,我們看到proteus中9號管腳為SO,而芯片手冊中的9號管腳為Qh,名稱不但作用都是輸出腳。
2、管腳功能描述
由于我們重點在proteus中仿真,所以我們這里只對proteus中的管腳進(jìn)行功能的介紹:
管腳名: | 功能描述: |
---|---|
D0…D7 | 并行輸入腳 |
INH | 并聯(lián)負(fù)載(低電平有效) |
SH/LD | 即我們說的CP串行時鐘 |
CLK | 時鐘使能(低電平有效) |
SO | 串行輸出,即我們常說的DS |
QH | 反相串行輸出(通常不使用) |
SI | 串行輸入* |
二、原理圖
這里我們只是為了測試其功能,簡單的使用了一個排阻和8個按鈕接在了并行輸入端口D0~D7上。
二、測試代碼
幾個管腳的定義這里我們說明一下,好讓大家能夠與上表列出的管腳對應(yīng),這里的datapin就是so管腳,clockpin就是CLK管腳,latchPin就是SH/LD管腳。
下面的代碼只是一個簡單的演示代碼,所以就不過多的做解釋了。
/* Main.ino file generated by New Project wizard** Created: 周四 9月 14 2023* Processor: ATmega328P* Compiler: Arduino AVR (Proteus)*/const int dataPin = 2; // 數(shù)據(jù)引腳
const int clockPin = 3; // 時鐘引腳
const int latchPin = 4; // 鎖存引腳
const int numRegisters = 1; // 74HC165芯片個數(shù)byte registerData[numRegisters]; // 存儲74HC165芯片數(shù)據(jù)的數(shù)組void setup() {pinMode(dataPin, INPUT);pinMode(clockPin, OUTPUT);pinMode(latchPin, OUTPUT);// 初始化串行通信Serial.begin(9600);
}void loop() {// 讀取74HC165芯片數(shù)據(jù)readData();// 打印每個輸入引腳狀態(tài)for (int i = 0; i < numRegisters * 8; i++) {Serial.print("Input ");Serial.print(i);Serial.print(": ");Serial.println(bitRead(registerData[i / 8], i % 8));}delay(1000);
}void readData() {digitalWrite(latchPin, LOW);delayMicroseconds(10);digitalWrite(latchPin, HIGH);for (int i = numRegisters - 1; i >= 0; i--) {registerData[i] = shiftIn(dataPin, clockPin, MSBFIRST);}
}
對于初學(xué)者,我們看到shiftIn或者shiftOut這樣的函數(shù),都是arduino自帶的為移位操作特別定制的函數(shù),可以在arduino的IDE中reference里面查找。
三、測試效果
有了上面的基本電路后,我們就可以實現(xiàn)對arduino或者其他的stm32或者8051單片機的輸入端口的擴展,比如我們加一個鍵盤矩陣或者多個按鈕,那就再也不用擔(dān)心輸入端口不夠啦。如果鍵盤數(shù)量大于8個,那我們可以通過SO和下一個165芯片的SI進(jìn)行級聯(lián)實現(xiàn)8xn的端口擴展,比如做一個電子琴,那就要多級聯(lián)幾個才足夠我們實現(xiàn)多個音階。
文章隨時可能更新,請注明原出處:https://blog.csdn.net/haigear/article/details/132911752
級聯(lián)有一片博文可以供大家參考,我這里就不贅述:https://www.cnblogs.com/F-91/p/14713514.html