第1步:硬件
我的目標只是演示不同的方法我僅將74HC595的8個輸出中的4個連接到LED。調試我的代碼就足夠了:)如果您想使項目看起來更好,則可以將所有Qx輸出連接到LED:)
您可以在圖像上看到連接。
似乎不同的數據表都有74HC595的不同引腳名稱,所以我在我使用的數據表中附加了引腳分配。
74HC595恒定連接:
GND(引腳8)
Vcc(引腳16)至5V
OE(引腳13)接地
SRCLR(MR)(引腳10)至5V
我使用了1k電阻和3mm LED。
步驟2:簡單方法
對于所有方法,您都會看到連接到電路的示波器的屏幕截圖作為性能證明。黃色走線是串行時鐘(SRCLK),藍色走線是鎖存信號(RCLK)。同樣,對于所有方法,我將展示函數shiftByte()的實現,該函數采用單個字節并將其逐位(串行)寫入74HC595
最簡單的將數據寫入移位寄存器的方法如本教程中所述。基本上,它使用內置的shiftOut()函數來實現串行接口。這樣,寫入8位數據需要90微秒。不幸的是,包括代碼不是簡單的方法,因此您將在附加的zip文件中找到草圖,并在shiftOut()函數的屏幕截圖中找到。這種方法可以,但是相對較慢。
步驟3:使用端口命令的方法
更好方式不是切換每個位,而是使用命令將數據寫入整個端口。像這樣:
PORTC&= B11111101;//數據時鐘低
PORTC =(PORTC&B11111010)|(x&B00000001);//將時鐘設置為低并輸出位0
PORTC | = B00000100;//串行時鐘高
您可以在此處找到有關端口操作命令的更多信息
使用此方法附帶的示例草圖。
以這種方式寫入8位僅需4.5微秒。它比簡單方法快20倍。
此方法的缺點:
代碼不清楚。
所有使用的Arduino引腳應位于同一端口上。
應將74HC595的串行數據引腳連接到使用的Arduino端口的最低有效位
使用內聯匯編代碼可以實現進一步的優化。在所附的草圖中,我能夠在2.8微秒內寫入8位。它比簡單方法快32倍。
您可以在此處找到有關如何在C代碼中使用內聯匯編代碼的好指南。
AVR指令集手冊
此方法的缺點類似于上一個方法的缺點。
步驟5:使用硬件SPI接口
但是在這種情況下,最好的方法是使用硬件SPI接口。您可以在此處閱讀如何使用它。基本上,它專用于芯片內部的串行通信硬件,可用于高速傳輸串行數據。寫出所有8位只需要不到1微秒的時間。附有示例的草圖。
對于此示例,74HC595與Arduino的連接應不同于所有其他示例中的連接。
由于此方法使用了Arduino內部的特定硬件,因此應連接74HC595
Arduino引腳13(SCK)到74HC595的引腳11(SRCLK)(串行移位時鐘)
Arduino引腳A1到74HC595的引腳12(RCLK) (輸出鎖存時鐘)通常這可以是任何引腳。
Arduino的11HC引腳(MOSI)到74HC595的14引腳(SER)(串行數據輸入)
所以這就是最快的方法,也是相對簡單的方法。
僅此而已。我希望您覺得此說明有用。任何評論將不勝感激。
-
移位寄存器
+關注
關注
3文章
259瀏覽量
22342 -
串行接口
+關注
關注
3文章
331瀏覽量
42724 -
74HC595
+關注
關注
7文章
191瀏覽量
30944
發布評論請先 登錄
相關推薦
74hc595的功能及作用是什么
74HC595常用移位寄存器芯片資料包
74HC595D,118 (nexperia)8位移位寄存器中文參數_功能優點_功能圖_封裝
![<b class='flag-5'>74HC595</b>D,118 (nexperia)8位<b class='flag-5'>移位寄存器</b>中文參數_功能優點_功能圖_封裝](https://file1.elecfans.com//web2/M00/FF/A0/wKgZomapttSAdJrOAAExT3krN28556.jpg)
74HC595D/74HCT595D(nexperia)移位寄存器_中文參數_功能特點_工作原理
![<b class='flag-5'>74HC595</b>D/<b class='flag-5'>74HCT595</b>D(nexperia)<b class='flag-5'>移位寄存器</b>_中文參數_功能特點_工作原理](https://file1.elecfans.com//web2/M00/EC/19/wKgZomZhFz6AZU6lAAFYFn40Wu8678.jpg)
SN74HC595-EP帶3態輸出寄存器的8位移位寄存器數據表
![SN<b class='flag-5'>74HC595</b>-EP帶3態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
采用三態輸出寄存器的 8 位移位寄存器SN74HC595B數據表
![采用三態輸出<b class='flag-5'>寄存器</b>的 8 位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74HC595</b>B<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
帶3態輸出寄存器的8位移位寄存器SN74AHC595數據表
![帶3態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74AHC595</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SN74HCT595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SN<b class='flag-5'>74HCT595</b> 8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SN74HCT595-Q1 汽車類8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SN<b class='flag-5'>74HCT595</b>-Q1 汽車類8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的CD74HC595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的CD<b class='flag-5'>74HC595</b> 8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有施密特觸發輸入和三態輸出寄存器的8位移位寄存器SN74HCS595數據表
![具有施密特觸發輸入和三態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74HCS595</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 8 位移位寄存器SN74LV595A-Q1數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 8 位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74LV595</b>A-Q1<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的SN74LV595A 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的SN<b class='flag-5'>74LV595</b>A 8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SNx4HC595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SNx4<b class='flag-5'>HC595</b> 8位<b class='flag-5'>移位寄存器</b><b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
8位串行輸入/串行輸出或并行輸出移位寄存器74LVC595A產品數據表
![8位<b class='flag-5'>串行</b>輸入/<b class='flag-5'>串行</b>輸出或并行輸出<b class='flag-5'>移位寄存器</b><b class='flag-5'>74LVC595</b>A產品<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論