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