国产精品久久久久久亚洲影视,插我舔内射18免费视频,国产+精品+在线观看,国产精品18久久久久久麻辣,丰满少妇69激情啪啪无

0 賣盤信息
BOM詢價(jià)
您現(xiàn)在的位置: 首頁 > 電子資訊 >基礎(chǔ)知識(shí) > 74hc165工作原理

74hc165工作原理

來源:
2025-07-11
類別:基礎(chǔ)知識(shí)
eye 22
文章創(chuàng)建人 拍明芯城

74HC165 并行加載串行輸出移位寄存器工作原理深度解析

74HC165 是一款廣泛應(yīng)用于數(shù)字電路中的8位并行加載、串行輸出移位寄存器。它在各種數(shù)據(jù)采集、傳感器接口、人機(jī)交互以及工業(yè)控制系統(tǒng)中扮演著至關(guān)重要的角色。其核心功能是將8路并行輸入數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流,從而有效減少微控制器或其他數(shù)字設(shè)備所需的I/O引腳數(shù)量,簡化電路設(shè)計(jì),降低系統(tǒng)成本,并提高數(shù)據(jù)傳輸?shù)男?。理?4HC165的工作原理,對(duì)于設(shè)計(jì)和調(diào)試基于該芯片的數(shù)字系統(tǒng)至關(guān)重要。

image.png

1. 74HC165 芯片概述與引腳功能

74HC165 屬于高速CMOS邏輯系列,具有低功耗、高噪聲容限和寬工作電壓范圍等優(yōu)點(diǎn)。它通常采用16引腳的DIP或SOIC封裝。為了更好地理解其工作原理,我們首先需要熟悉其各個(gè)引腳的功能:

  • VCC (引腳16): 電源正極,通常連接到+2V至+6V的電源電壓。

  • GND (引腳8): 接地引腳。

  • A-H (引腳3, 4, 5, 6, 10, 11, 12, 13): 這是8個(gè)并行數(shù)據(jù)輸入引腳。當(dāng)并行加載信號(hào)(PL)為低電平時(shí),這八個(gè)引腳上的數(shù)據(jù)將被同時(shí)加載到內(nèi)部寄存器中。每個(gè)引腳對(duì)應(yīng)一位數(shù)據(jù),例如A是D0,H是D7。

  • PL (Parallel Load / 載入使能,引腳1): 并行加載控制引腳。當(dāng)PL引腳為低電平(邏輯0)時(shí),外部并行數(shù)據(jù)A-H被加載到芯片內(nèi)部的8位寄存器中。此過程通常在CLK引腳的上升沿或下降沿觸發(fā)。當(dāng)PL引腳為高電平(邏輯1)時(shí),芯片進(jìn)入移位模式,不再響應(yīng)并行數(shù)據(jù)輸入。

  • CLK (Clock / 時(shí)鐘,引腳2): 時(shí)鐘輸入引腳。CLK引腳的每個(gè)上升沿或下降沿(具體取決于芯片型號(hào)和數(shù)據(jù)手冊(cè)規(guī)定,通常為上升沿)都會(huì)導(dǎo)致內(nèi)部寄存器中的數(shù)據(jù)向右移位一位。在移位過程中,數(shù)據(jù)從高位向低位移動(dòng),并最終從串行輸出引腳(Q7或$overline{Q7}$)移出。

  • CLK INH (Clock Inhibit / 時(shí)鐘禁止,引腳15): 時(shí)鐘禁止引腳。當(dāng)CLK INH為高電平(邏輯1)時(shí),時(shí)鐘信號(hào)(CLK)被禁止,內(nèi)部寄存器停止移位。這意味著即使CLK引腳上有時(shí)鐘脈沖,數(shù)據(jù)也不會(huì)發(fā)生移位。當(dāng)CLK INH為低電平(邏輯0)時(shí),時(shí)鐘信號(hào)被允許通過,數(shù)據(jù)可以正常移位。此引腳常用于暫停數(shù)據(jù)傳輸或在特定時(shí)序下精確控制數(shù)據(jù)移位過程。

  • Q7 (串行數(shù)據(jù)輸出,引腳7): 這是標(biāo)準(zhǔn)(非反相)串行數(shù)據(jù)輸出引腳。每次移位操作后,當(dāng)前移出寄存器的數(shù)據(jù)位將出現(xiàn)在此引腳上。通常,最低位(D0)的數(shù)據(jù)在第一次移位后出現(xiàn),D1在第二次移位后出現(xiàn),以此類推,直到最高位(D7)在第八次移位后出現(xiàn)。

  • overlineQ7 (反相串行數(shù)據(jù)輸出,引腳9): 這是反相串行數(shù)據(jù)輸出引腳,其輸出狀態(tài)與Q7引腳始終相反。提供此引腳是為了在某些應(yīng)用中方便地獲取反相數(shù)據(jù),或用于級(jí)聯(lián)多個(gè)74HC165芯片時(shí),作為下一級(jí)芯片的時(shí)鐘信號(hào)或數(shù)據(jù)輸入。

2. 內(nèi)部結(jié)構(gòu)與工作原理

74HC165 的核心是一個(gè)8位的SISO (Serial-In, Serial-Out) 移位寄存器,以及一個(gè)用于并行加載 (Parallel Load) 的控制邏輯。

2.1 移位寄存器與D觸發(fā)器

74HC165內(nèi)部包含8個(gè)串聯(lián)連接的D型觸發(fā)器(D-Flip-Flops)。D型觸發(fā)器是數(shù)字電路中的基本存儲(chǔ)單元,它可以在時(shí)鐘脈沖的特定邊沿(上升沿或下降沿)將輸入端的邏輯狀態(tài)存儲(chǔ)起來,并輸出到其Q端。

在74HC165中,這8個(gè)D觸發(fā)器被配置為串行移位寄存器。每個(gè)D觸發(fā)器的Q輸出端連接到下一個(gè)D觸發(fā)器的D輸入端。這樣,當(dāng)時(shí)鐘脈沖到來時(shí),數(shù)據(jù)就會(huì)從一個(gè)觸發(fā)器“傳遞”到下一個(gè)觸發(fā)器,從而實(shí)現(xiàn)數(shù)據(jù)移位。

2.2 并行加載機(jī)制

并行加載是74HC165的一個(gè)關(guān)鍵特性。當(dāng)PL引腳為低電平(邏輯0)時(shí),芯片的控制邏輯會(huì)旁路掉正常的移位路徑,直接將外部并行輸入(A-H)的數(shù)據(jù)加載到對(duì)應(yīng)的8個(gè)D觸發(fā)器中。這個(gè)加載過程通常是異步的,意味著一旦PL變?yōu)榈碗娖?,并行?shù)據(jù)就會(huì)立即被加載,而不需要等待時(shí)鐘脈沖。然而,在某些更嚴(yán)格的時(shí)序要求下,也會(huì)有同步加載的設(shè)計(jì),具體取決于芯片的內(nèi)部設(shè)計(jì)和數(shù)據(jù)手冊(cè)的說明。一旦PL變?yōu)楦唠娖?,芯片就恢?fù)到移位模式。

2.3 串行移位機(jī)制

當(dāng)PL引腳為高電平,并且CLK INH引腳為低電平(允許時(shí)鐘)時(shí),74HC165進(jìn)入串行移位模式。此時(shí),每個(gè)CLK時(shí)鐘脈沖的有效邊沿(例如上升沿)都會(huì)觸發(fā)以下動(dòng)作:

  1. 最左側(cè)的D觸發(fā)器(D7,對(duì)應(yīng)H輸入)將其當(dāng)前存儲(chǔ)的數(shù)據(jù)位傳遞給其右側(cè)的D觸發(fā)器(D6)。

  2. 以此類推,所有D觸發(fā)器中的數(shù)據(jù)都向右移動(dòng)一位。

  3. 最右側(cè)的D觸發(fā)器(D0,對(duì)應(yīng)A輸入)中的數(shù)據(jù)位被移出,并出現(xiàn)在Q7輸出引腳上。

  4. 同時(shí),一個(gè)新的數(shù)據(jù)位(通常是邏輯0或1,取決于芯片設(shè)計(jì)和外部連接,但在讀取并行數(shù)據(jù)時(shí),通常是“空”位進(jìn)入)從最左側(cè)的D觸發(fā)器(D7)的輸入端“進(jìn)入”。然而,對(duì)于74HC165,它是一個(gè)并行加載串行輸出的芯片,所以通常沒有串行輸入端。在數(shù)據(jù)完全移出后,新進(jìn)入的位通常不具備意義,或者保持寄存器中的狀態(tài)。核心在于,它將并行加載進(jìn)來的8位數(shù)據(jù)逐位移出。

這個(gè)過程重復(fù)8次,就可以將8位并行數(shù)據(jù)完全轉(zhuǎn)換并輸出為串行數(shù)據(jù)流。

2.4 時(shí)鐘禁止 (CLK INH) 功能

CLK INH引腳提供了一種靈活的時(shí)鐘控制方式。當(dāng)CLK INH為高電平(邏輯1)時(shí),它會(huì)阻止CLK信號(hào)到達(dá)內(nèi)部的D觸發(fā)器,從而有效地“凍結(jié)”寄存器中的數(shù)據(jù),停止任何移位操作。這在需要暫停數(shù)據(jù)傳輸、等待外部事件觸發(fā),或者在不希望數(shù)據(jù)發(fā)生改變的情況下進(jìn)行其他操作時(shí)非常有用。只有當(dāng)CLK INH為低電平(邏輯0)時(shí),CLK信號(hào)才能正常驅(qū)動(dòng)內(nèi)部的移位操作。這使得74HC165在復(fù)雜的時(shí)序控制系統(tǒng)中更具可用性。

3. 74HC165 的工作時(shí)序

理解74HC165的時(shí)序圖對(duì)于正確使用芯片至關(guān)重要。典型的操作時(shí)序包括并行加載和串行移位兩個(gè)階段。

3.1 并行加載時(shí)序

  1. 準(zhǔn)備數(shù)據(jù): 在并行加載之前,確保8位并行數(shù)據(jù)A-H已經(jīng)穩(wěn)定地呈現(xiàn)在輸入引腳上。

  2. PL 變?yōu)榈碗娖剑?/strong> 將PL引腳從高電平(或不確定狀態(tài))拉低到低電平(邏輯0)。

  3. 數(shù)據(jù)加載: 當(dāng)PL引腳變?yōu)榈碗娖胶?,并行?shù)據(jù)A-H會(huì)幾乎立即被加載到74HC165內(nèi)部的8位寄存器中。這個(gè)過程通常是異步的,但有些情況下也可能對(duì)CLK的時(shí)序有要求(如PL在CLK的特定邊沿之前拉低)。具體應(yīng)參考芯片的數(shù)據(jù)手冊(cè)。

  4. PL 變?yōu)楦唠娖剑?/strong> 完成數(shù)據(jù)加載后,將PL引腳拉高到高電平(邏輯1),使芯片進(jìn)入移位模式。

3.2 串行移位時(shí)序

  1. 準(zhǔn)備移位: 確保PL引腳為高電平(移位模式),CLK INH引腳為低電平(允許時(shí)鐘)。

  2. 第一個(gè)時(shí)鐘脈沖: 當(dāng)CLK引腳發(fā)生第一個(gè)有效邊沿(例如上升沿)時(shí),寄存器中的數(shù)據(jù)開始第一次移位。此時(shí),并行加載進(jìn)來的最低位(D0,對(duì)應(yīng)A輸入)將出現(xiàn)在Q7輸出引腳上。

  3. 后續(xù)時(shí)鐘脈沖: 隨后的每個(gè)有效時(shí)鐘脈沖都會(huì)使數(shù)據(jù)進(jìn)一步向右移位,并將下一位數(shù)據(jù)推出到Q7引腳。例如,第二個(gè)時(shí)鐘脈沖會(huì)將D1移出,第三個(gè)時(shí)鐘脈沖將D2移出,以此類推。

  4. 讀取數(shù)據(jù): 在每個(gè)時(shí)鐘脈沖的有效邊沿之后,Q7引腳上的數(shù)據(jù)會(huì)穩(wěn)定下來,此時(shí)可以由微控制器或其他邏輯電路讀取。通常會(huì)在CLK的下降沿(對(duì)于上升沿觸發(fā)的移位)或上升沿(對(duì)于下降沿觸發(fā)的移位)之后讀取Q7的狀態(tài),以確保數(shù)據(jù)穩(wěn)定。

  5. 完成移位: 經(jīng)過8個(gè)時(shí)鐘脈沖后,所有的8位并行數(shù)據(jù)都已經(jīng)被移出。此時(shí),Q7輸出將顯示移出的最高位(D7,對(duì)應(yīng)H輸入)。

重要時(shí)序參數(shù):

  • t_PLH/t_PHL (并行加載建立/保持時(shí)間): PL信號(hào)在CLK有效邊沿之前和之后需要保持穩(wěn)定狀態(tài)的時(shí)間。

  • t_su (數(shù)據(jù)建立時(shí)間): 并行輸入數(shù)據(jù)在PL有效邊沿之前需要保持穩(wěn)定的時(shí)間。

  • t_h (數(shù)據(jù)保持時(shí)間): 并行輸入數(shù)據(jù)在PL有效邊沿之后需要保持穩(wěn)定的時(shí)間。

  • t_clk (時(shí)鐘周期): 兩個(gè)連續(xù)時(shí)鐘脈沖之間的時(shí)間。

  • t_pd (傳播延遲): 從CLK有效邊沿到Q7輸出穩(wěn)定之間的時(shí)間。

  • f_max (最大時(shí)鐘頻率): 芯片能夠正常工作的最高時(shí)鐘頻率。

在實(shí)際應(yīng)用中,務(wù)必查閱74HC165的具體數(shù)據(jù)手冊(cè),以獲取精確的時(shí)序參數(shù),確保電路設(shè)計(jì)的正確性和穩(wěn)定性。

4. 74HC165 的應(yīng)用場(chǎng)景

74HC165因其簡單、高效的特點(diǎn),在各種數(shù)字系統(tǒng)中都有廣泛應(yīng)用。

4.1 擴(kuò)展微控制器輸入端口

這是74HC165最經(jīng)典和最常見的應(yīng)用。當(dāng)微控制器的GPIO(通用輸入輸出)引腳不足以連接所有傳感器、按鈕或開關(guān)時(shí),可以使用74HC165來擴(kuò)展輸入能力。例如,如果一個(gè)微控制器只有3個(gè)可用GPIO引腳,但需要讀取16個(gè)按鈕的狀態(tài),則可以使用兩個(gè)74HC165。微控制器通過控制PL、CLK和讀取Q7這3個(gè)引腳,就可以依次讀取16個(gè)按鈕的狀態(tài),極大地節(jié)省了寶貴的GPIO資源。

4.2 鍵盤矩陣掃描

在大型鍵盤或按鈕陣列中,74HC165可以用于高效地讀取按鍵狀態(tài)。鍵盤的行和列可以通過電阻網(wǎng)絡(luò)或二極管矩陣連接到74HC165的并行輸入端。微控制器通過掃描行線,并利用74HC165讀取列線的狀態(tài),從而確定哪個(gè)按鍵被按下。

4.3 數(shù)據(jù)采集與多路復(fù)用

在需要從多個(gè)傳感器(如光電傳感器、霍爾傳感器等)采集數(shù)字信號(hào)時(shí),74HC165可以作為數(shù)據(jù)采集的前端。每個(gè)傳感器的輸出連接到74HC165的一個(gè)并行輸入引腳,微控制器周期性地加載并移位數(shù)據(jù),從而輪詢所有傳感器的狀態(tài)。這對(duì)于需要同步采集多個(gè)離散數(shù)字信號(hào)的應(yīng)用非常有用。

4.4 狀態(tài)監(jiān)測(cè)

在工業(yè)控制或自動(dòng)化領(lǐng)域,74HC165可用于監(jiān)測(cè)多個(gè)開關(guān)、限位器或狀態(tài)指示信號(hào)。例如,在一個(gè)自動(dòng)化生產(chǎn)線上,多個(gè)傳感器可能指示工件的位置、設(shè)備的開啟/關(guān)閉狀態(tài)等。通過將這些信號(hào)連接到74HC165,微控制器可以集中、高效地獲取這些狀態(tài)信息,進(jìn)行決策和控制。

4.5 與移位寄存器(如74HC595)配合使用

74HC165經(jīng)常與串行輸入并行輸出的移位寄存器(例如74HC595)配合使用。74HC595用于輸出,而74HC165用于輸入。這種組合形成了“串行通信總線”,只需要少數(shù)幾根線就可以實(shí)現(xiàn)大量數(shù)據(jù)的輸入和輸出,這在資源受限或需要長距離傳輸數(shù)據(jù)的系統(tǒng)中非常有效。例如,一個(gè)微控制器可以通過SPI(串行外設(shè)接口)總線與多個(gè)74HC165和74HC595芯片進(jìn)行通信,從而控制數(shù)百個(gè)LED和讀取數(shù)百個(gè)開關(guān)的狀態(tài),而微控制器本身可能只有三到四個(gè)SPI引腳。

5. 使用 74HC165 的設(shè)計(jì)考量

在設(shè)計(jì)基于74HC165的電路時(shí),需要考慮以下幾個(gè)方面:

5.1 時(shí)鐘信號(hào)的質(zhì)量

時(shí)鐘信號(hào)的質(zhì)量對(duì)移位寄存器的穩(wěn)定工作至關(guān)重要。時(shí)鐘信號(hào)應(yīng)具有清晰的上升沿和下降沿,無毛刺,且滿足芯片數(shù)據(jù)手冊(cè)中規(guī)定的最小脈沖寬度和周期。不穩(wěn)定的時(shí)鐘信號(hào)可能導(dǎo)致數(shù)據(jù)錯(cuò)位或讀取錯(cuò)誤。通常,建議使用微控制器的硬件定時(shí)器或SPI模塊生成精確的時(shí)鐘信號(hào)。

5.2 并行輸入數(shù)據(jù)的建立和保持時(shí)間

在并行加載數(shù)據(jù)時(shí),輸入數(shù)據(jù)(A-H)必須在PL信號(hào)變?yōu)橛行ВㄍǔJ堑碗娖剑┲昂椭蟊3址€(wěn)定一定的時(shí)間。這些時(shí)間被稱為建立時(shí)間(t_su)和保持時(shí)間(t_h)。違反這些時(shí)序要求可能導(dǎo)致數(shù)據(jù)加載失敗或加載錯(cuò)誤的數(shù)據(jù)。在實(shí)際電路中,這意味著在拉低PL之前,應(yīng)確保并行輸入信號(hào)已經(jīng)穩(wěn)定,并在拉高PL之后,也應(yīng)確保它們保持穩(wěn)定足夠長的時(shí)間。

5.3 輸出數(shù)據(jù)讀取時(shí)機(jī)

在串行移位過程中,微控制器或其他接收設(shè)備應(yīng)該在CLK信號(hào)的有效邊沿之后,且Q7輸出穩(wěn)定之后讀取數(shù)據(jù)。這通常意味著在CLK上升沿觸發(fā)移位后,可以在CLK下降沿到來之前,或者在下一個(gè)CLK上升沿到來之前的一段時(shí)間內(nèi)讀取Q7的狀態(tài)。通過示波器觀察CLK和Q7的波形是驗(yàn)證時(shí)序的有效方法。

5.4 級(jí)聯(lián)多個(gè) 74HC165

為了處理超過8位的并行輸入,可以將多個(gè)74HC165芯片進(jìn)行級(jí)聯(lián)。級(jí)聯(lián)時(shí),通常將第一個(gè)芯片的Q7(或$overline{Q7}$)輸出連接到下一個(gè)芯片的串行數(shù)據(jù)輸入(如果74HC165有串行輸入,但它通常沒有,因此級(jí)聯(lián)主要是為了擴(kuò)展并行輸入而非串行輸入),更常見的是,所有芯片共享同一個(gè)PL和CLK信號(hào),然后微控制器依次從每個(gè)芯片的Q7輸出讀取數(shù)據(jù)。

當(dāng)級(jí)聯(lián)時(shí),所有74HC165的PL和CLK引腳通常是并聯(lián)連接到微控制器的對(duì)應(yīng)引腳上。讀取數(shù)據(jù)時(shí),微控制器發(fā)送一個(gè)加載脈沖,然后發(fā)送8個(gè)(或更多,根據(jù)級(jí)聯(lián)的芯片數(shù)量)時(shí)鐘脈沖。每個(gè)芯片都會(huì)將其內(nèi)部數(shù)據(jù)移出到各自的Q7引腳上。微控制器可以逐個(gè)芯片讀取Q7引腳,或者通過使用多路選擇器(Multiplexer)選擇要讀取的芯片的Q7輸出。

更常見且更高效的級(jí)聯(lián)方式是:將所有74HC165的PL和CLK引腳連接到公共的PL和CLK線。然后,將第一個(gè)芯片的H(或最高位)輸入連接到上一級(jí)芯片的Q7(如果上一級(jí)是串行輸出芯片),或者如果全部是并行加載的74HC165,則其并行輸入獨(dú)立連接。微控制器在拉低PL后并行加載所有芯片的數(shù)據(jù)。然后,在移位過程中,所有芯片同步移位。微控制器可以一次性讀取多個(gè)74HC165的Q7輸出(如果每個(gè)芯片的Q7連接到微控制器的不同GPIO),或者通過菊花鏈的方式,將第一個(gè)74HC165的Q7連接到微控制器的輸入,而第二個(gè)74HC165的最高位(H)輸入連接到第一個(gè)74HC165的最低位(A)輸出(這種連接方式并不典型,因?yàn)?4HC165主要是并行加載),更實(shí)際的級(jí)聯(lián)方式是,通過連接CLK和PL到所有芯片,每個(gè)芯片獨(dú)立地將自己的8位數(shù)據(jù)并行加載,然后通過共享的CLK信號(hào)逐位移出。微控制器需要對(duì)每個(gè)芯片的Q7引腳進(jìn)行讀取,或者如果微控制器引腳有限,可以使用一個(gè)多路選擇器來依次選擇讀取哪個(gè)74HC165的Q7輸出。

5.5 電源去耦

在74HC165的VCC和GND引腳之間,靠近芯片放置一個(gè)0.1uF的陶瓷去耦電容是良好的設(shè)計(jì)實(shí)踐。這有助于濾除電源噪聲,確保芯片的穩(wěn)定工作,尤其是在高速時(shí)鐘頻率下。

5.6 輸入引腳的處理

未使用的并行輸入引腳(A-H)應(yīng)該連接到VCC或GND,而不是懸空。懸空的CMOS輸入引腳可能會(huì)引入噪聲,導(dǎo)致芯片誤動(dòng)作。對(duì)于未使用的CLK INH引腳,如果不需要其功能,應(yīng)將其連接到GND以允許時(shí)鐘信號(hào)通過。

6. 74HC165 與其他移位寄存器的比較

在數(shù)字電路設(shè)計(jì)中,除了74HC165,還有許多其他類型的移位寄存器,例如串行輸入并行輸出(SIPO)的74HC595。了解它們之間的區(qū)別有助于選擇合適的芯片。

6.1 74HC165 (并行加載串行輸出 - PISO)


  • 功能: 將8路并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流。

  • 應(yīng)用場(chǎng)景: 主要用于輸入擴(kuò)展,從多個(gè)傳感器、開關(guān)或按鈕讀取數(shù)據(jù)。

  • 數(shù)據(jù)流向: 數(shù)據(jù)從并行輸入(A-H)進(jìn)入,通過移位寄存器,最終從串行輸出(Q7/overlineQ7)移出。

6.2 74HC595 (串行輸入并行輸出 - SIPO)

  • 功能: 將串行數(shù)據(jù)轉(zhuǎn)換為8路并行數(shù)據(jù)。

  • 應(yīng)用場(chǎng)景: 主要用于輸出擴(kuò)展,驅(qū)動(dòng)多個(gè)LED、繼電器或其他并行負(fù)載。

  • 數(shù)據(jù)流向: 數(shù)據(jù)從串行輸入(DS)進(jìn)入,通過移位寄存器,最終從并行輸出(Q0-Q7)移出,并通過一個(gè)鎖存器保持輸出。

6.3 總結(jié)比較

特性

74HC165 (PISO)

74HC595 (SIPO)

主要功能

并行轉(zhuǎn)串行

串行轉(zhuǎn)并行

應(yīng)用

輸入擴(kuò)展、數(shù)據(jù)采集

輸出擴(kuò)展、LED驅(qū)動(dòng)、顯示控制

數(shù)據(jù)輸入

并行輸入(A-H)

串行輸入(DS)

數(shù)據(jù)輸出

串行輸出(Q7/overlineQ7)

并行輸出(Q0-Q7)

關(guān)鍵引腳

PL, CLK, CLK INH, Q7

ST_CP (鎖存器時(shí)鐘), SH_CP (移位時(shí)鐘), DS, Q7'

在許多嵌入式系統(tǒng)中,74HC165和74HC595常常成對(duì)使用,分別負(fù)責(zé)輸入和輸出的擴(kuò)展,從而以最少的微控制器I/O引腳實(shí)現(xiàn)豐富的外設(shè)交互。

7. 編程實(shí)現(xiàn)(以Arduino為例)


為了更好地理解74HC165的工作原理,我們可以用一個(gè)簡單的Arduino代碼示例來模擬讀取8個(gè)按鈕的狀態(tài)。

假設(shè)我們將8個(gè)按鈕連接到74HC165的并行輸入A-H,并將74HC165的引腳連接到Arduino如下:

  • 74HC165 PL (Pin 1) rightarrow Arduino Pin 9

  • 74HC165 CLK (Pin 2) rightarrow Arduino Pin 10

  • 74HC165 CLK INH (Pin 15) rightarrow Arduino Pin 11 (保持低電平允許時(shí)鐘)

  • 74HC165 Q7 (Pin 7) rightarrow Arduino Pin 12

// 定義74HC165連接到Arduino的引腳const int PL_PIN = 9;   
// Parallel Loadconst int CLK_PIN = 10;
// Clockconst int Q7_PIN = 12;  
// Serial Data Outputconst int CLK_INH_PIN = 11;
// Clock Inhibit (通常保持LOW)void setup()
{
 Serial.begin(9600); // 初始化串口通信

 // 配置引腳模式
 pinMode(PL_PIN, OUTPUT);
 pinMode(CLK_PIN, OUTPUT);
 pinMode(Q7_PIN, INPUT); // Q7是輸入引腳,用于從74HC165讀取數(shù)據(jù)
 pinMode(CLK_INH_PIN, OUTPUT);  // 確保時(shí)鐘禁止引腳始終為低電平,允許時(shí)鐘工作
 digitalWrite(CLK_INH_PIN, LOW);  // 初始化時(shí)鐘和加載引腳為高電平
 digitalWrite(CLK_PIN, HIGH);
 digitalWrite(PL_PIN, HIGH);
}byte read74HC165() {
 byte data = 0; // 用于存儲(chǔ)讀取到的8位數(shù)據(jù)

 // 1. 觸發(fā)并行加載
 digitalWrite(PL_PIN, LOW);  // 拉低PL,將并行數(shù)據(jù)加載到寄存器
 delayMicroseconds(5);       // 給予足夠的建立時(shí)間
 digitalWrite(PL_PIN, HIGH); // 拉高PL,進(jìn)入移位模式

 // 2. 移位并讀取數(shù)據(jù)(從D0到D7)
 for (int i = 0; i < 8; i++) {    // 每次移位前,確保CLK為高電平,然后拉低再拉高產(chǎn)生上升沿
   digitalWrite(CLK_PIN, LOW); // CLK拉低
   delayMicroseconds(5);       // 保證脈沖寬度

   // 讀取當(dāng)前移出的位(最低位先移出,對(duì)應(yīng)A輸入)
   // 將讀取到的位存儲(chǔ)到data的相應(yīng)位置。由于我們是從最低位開始讀取,
   // 讀取到的第一位是D0,應(yīng)該放在data的最低位。
   // 讀取到的第二位是D1,應(yīng)該放在data的次低位,以此類推。
   // 因此,我們將當(dāng)前讀取到的位左移i位,然后進(jìn)行位或運(yùn)算。
   if (digitalRead(Q7_PIN) == HIGH) {
     data = data | (1 << i); // 將當(dāng)前位設(shè)置為1
   }

   digitalWrite(CLK_PIN, HIGH); // CLK拉高,產(chǎn)生上升沿,觸發(fā)下一次移位
   delayMicroseconds(5);        // 保證脈沖寬度
 }  return data;
}void loop() {
 byte buttonStates = read74HC165(); // 讀取8個(gè)按鈕的狀態(tài)

 Serial.print("Button States: 0b");  for (int i = 7; i >= 0; i--) { // 從高位到低位打印二進(jìn)制
   Serial.print((buttonStates >> i) & 1);
 }
 Serial.println();

 delay(200); // 每200毫秒讀取一次}

代碼解析:

  1. 引腳定義與初始化: 定義了連接Arduino的引腳,并設(shè)置它們的輸入/輸出模式。

  2. setup() 函數(shù): 初始化串口通信,將CLK_INH_PIN設(shè)置為LOW以允許時(shí)鐘信號(hào),并設(shè)置CLK和PL為初始高電平。

  3. read74HC165() 函數(shù):

    • digitalWrite(CLK_PIN, LOW); delayMicroseconds(5); digitalWrite(CLK_PIN, HIGH); delayMicroseconds(5); 這一對(duì)操作產(chǎn)生了一個(gè)完整的時(shí)鐘脈沖(低-高-低),在上升沿觸發(fā)數(shù)據(jù)移位。

    • digitalRead(Q7_PIN) 讀取當(dāng)前從Q7移出的數(shù)據(jù)位。

    • data = data | (1 << i); 這是關(guān)鍵的位操作。由于74HC165是最低位(D0)先移出,然后是D1,D2...D7。所以第一次循環(huán)讀取到的位是D0,我們將其放在data字節(jié)的最低位(0位);第二次讀取D1,放在1位,以此類推。1 << i會(huì)生成一個(gè)在第i位為1,其余為0的掩碼,然后通過位或操作將其設(shè)置到data中。

    • 并行加載: 首先將PL_PIN拉低,短暫延遲后拉高。這會(huì)告訴74HC165將當(dāng)前并行輸入的數(shù)據(jù)加載到其內(nèi)部寄存器中。

    • 移位并讀取: 使用一個(gè)for循環(huán)執(zhí)行8次移位操作,每次循環(huán)讀取一位數(shù)據(jù)。

  4. loop() 函數(shù): 周期性地調(diào)用read74HC165()函數(shù)來讀取按鈕狀態(tài),并通過串口打印出來,便于調(diào)試和觀察。

這個(gè)例子清晰地展示了如何通過軟件模擬時(shí)序來控制74HC165,從而實(shí)現(xiàn)并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換和讀取。

8. 74HC165 的發(fā)展與替代方案


隨著技術(shù)的發(fā)展,雖然74HC165作為經(jīng)典的邏輯芯片仍然廣泛使用,但也有一些新的技術(shù)和芯片提供了類似或更強(qiáng)大的功能:


8.1 微控制器內(nèi)置的SPI/I2C接口


現(xiàn)代微控制器(如ARM Cortex-M系列、ESP32等)通常內(nèi)置有硬件SPI(Serial Peripheral Interface)或I2C(Inter-Integrated Circuit)接口。這些接口可以以更高的速度和更低的CPU開銷處理串行數(shù)據(jù)通信。對(duì)于需要讀取大量并行數(shù)據(jù)的情況,可以直接使用帶有足夠GPIO的微控制器,或者利用其SPI接口連接到支持SPI的ADC(模擬數(shù)字轉(zhuǎn)換器)或GPIO擴(kuò)展芯片,這些芯片可能集成了類似74HC165的功能,但提供了更高級(jí)的通信協(xié)議。


8.2 GPIO擴(kuò)展器芯片


除了移位寄存器,還有一些專門的GPIO擴(kuò)展芯片,如PCF8574(I2C接口的8位I/O擴(kuò)展器)或MCP23017(I2C接口的16位I/O擴(kuò)展器)、MCP23S17(SPI接口的16位I/O擴(kuò)展器)。這些芯片提供了更高級(jí)的抽象,通常通過I2C或SPI總線與微控制器通信,簡化了軟件實(shí)現(xiàn),但可能比簡單的移位寄存器成本略高。


8.3 FPGA/CPLD


對(duì)于高度定制化或需要極高性能的并行轉(zhuǎn)串行應(yīng)用,可以使用現(xiàn)場(chǎng)可編程門陣列(FPGA)或復(fù)雜可編程邏輯器件(CPLD)。這些可編程邏輯器件允許設(shè)計(jì)者用硬件描述語言(如VHDL或Verilog)自定義邏輯電路,從而實(shí)現(xiàn)任何形式的并行轉(zhuǎn)串行功能,并能達(dá)到極高的速度。但它們的開發(fā)難度和成本也更高。

盡管有這些替代方案,74HC165因其低成本、易于理解和使用、以及廣泛的可用性,在許多簡單的、對(duì)速度要求不高的數(shù)字輸入擴(kuò)展應(yīng)用中,仍然是一個(gè)非常優(yōu)秀和實(shí)用的選擇。它提供了一個(gè)學(xué)習(xí)和實(shí)踐數(shù)字邏輯、時(shí)序控制以及微控制器I/O擴(kuò)展的良好平臺(tái)。

9. 故障排除與常見問題


在使用74HC165時(shí),可能會(huì)遇到一些常見問題。了解它們及其解決方法有助于快速定位和修復(fù)問題。


9.1 讀取數(shù)據(jù)不正確或不穩(wěn)定


  • 時(shí)序問題: 這是最常見的原因。檢查PL、CLK以及Q7的波形,確保它們滿足74HC165數(shù)據(jù)手冊(cè)中的時(shí)序要求,特別是并行加載的建立/保持時(shí)間,以及串行移位的時(shí)鐘脈沖寬度和傳播延遲。

  • 時(shí)鐘質(zhì)量差: 示波器檢查CLK信號(hào)是否有毛刺、抖動(dòng)或過慢/過快的上升/下降沿。不穩(wěn)定的時(shí)鐘會(huì)導(dǎo)致移位錯(cuò)誤。

  • 輸入數(shù)據(jù)不穩(wěn)定: 在PL為低電平期間,并行輸入數(shù)據(jù)A-H必須保持穩(wěn)定。如果在加載期間數(shù)據(jù)發(fā)生變化,可能加載錯(cuò)誤的值。

  • 電源噪聲: VCC引腳沒有去耦電容,或者電源線過長、阻抗過大,導(dǎo)致電源軌上出現(xiàn)噪聲,干擾芯片正常工作。確保VCC和GND之間放置0.1uF的陶瓷去耦電容。

  • 地線連接問題: 確保所有地線(包括傳感器輸入的地線)都可靠連接到公共地。

  • 未使用的引腳懸空: 未使用的并行輸入(A-H)或CLK INH引腳懸空可能會(huì)導(dǎo)致芯片誤動(dòng)作。將未使用的輸入引腳連接到VCC或GND。如果不需要時(shí)鐘禁止功能,將CLK INH連接到GND。

  • 邏輯電平不匹配: 檢查連接到74HC165的外部信號(hào)(如來自傳感器的信號(hào))是否與74HC165的邏輯電平兼容。例如,某些傳感器輸出可能是開漏(Open-Drain)的,需要上拉電阻。


9.2 芯片無反應(yīng)或不工作


  • 電源連接錯(cuò)誤: VCC和GND是否正確連接?電壓是否在芯片的推薦工作電壓范圍內(nèi)?

  • 引腳接錯(cuò): 仔細(xì)檢查所有引腳的連接是否與原理圖和數(shù)據(jù)手冊(cè)一致。特別是PL、CLK、CLK INH和Q7。

  • 芯片損壞: 芯片可能因靜電、過壓或過流而損壞。嘗試更換新的74HC165芯片進(jìn)行測(cè)試。

  • 復(fù)位狀態(tài): 確保芯片沒有處于某種未知的復(fù)位狀態(tài)。74HC165通常沒有專門的復(fù)位引腳,其狀態(tài)由PL和CLK控制。


9.3 多個(gè)74HC165級(jí)聯(lián)時(shí)的問題


  • 共享控制線問題: 確保所有級(jí)聯(lián)的74HC165芯片共享同一組PL和CLK信號(hào),并且這些信號(hào)的驅(qū)動(dòng)能力足夠驅(qū)動(dòng)所有芯片。

  • 讀取順序錯(cuò)誤: 如果通過微控制器輪詢多個(gè)74HC165的Q7輸出,請(qǐng)確保在每次完整的移位序列后,微控制器按照正確的順序讀取每個(gè)芯片的數(shù)據(jù)。

  • 電源分配: 級(jí)聯(lián)的芯片數(shù)量增加可能導(dǎo)致總電流需求增加,確保電源能夠提供足夠的電流。同樣,每個(gè)芯片都需要獨(dú)立的去耦電容。

在調(diào)試過程中,邏輯分析儀或示波器是診斷時(shí)序問題的強(qiáng)大工具。它們可以幫助你可視化PL、CLK、CLK INH和Q7的波形,從而快速發(fā)現(xiàn)時(shí)序不匹配或信號(hào)質(zhì)量問題。

10. 總結(jié)


74HC165并行加載串行輸出移位寄存器是一款功能強(qiáng)大且用途廣泛的數(shù)字邏輯芯片。通過其獨(dú)特的并行加載和串行移位功能,它為微控制器提供了高效的輸入擴(kuò)展能力,顯著減少了所需的I/O引腳數(shù)量。理解其內(nèi)部D觸發(fā)器的工作機(jī)制、并行加載和串行移位的時(shí)序,以及每個(gè)控制引腳(PL、CLK、CLK INH)的作用,是成功應(yīng)用該芯片的關(guān)鍵。

從擴(kuò)展按鈕和傳感器輸入,到實(shí)現(xiàn)復(fù)雜的鍵盤矩陣掃描,再到與串行輸出移位寄存器(如74HC595)協(xié)同工作構(gòu)建串行通信總線,74HC165在各種數(shù)字系統(tǒng)中都展現(xiàn)出其價(jià)值。盡管現(xiàn)代技術(shù)提供了更多集成的解決方案,但74HC165依然因其成本效益、簡單性和魯棒性,在許多電子設(shè)計(jì)中保持著不可替代的地位。掌握74HC165的使用,不僅能夠解決實(shí)際設(shè)計(jì)中的I/O限制問題,也是深入理解數(shù)字邏輯和時(shí)序電路的寶貴實(shí)踐。

責(zé)任編輯:David

【免責(zé)聲明】

1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對(duì)本文的引用持有異議,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時(shí)處理。

2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。

3、本文內(nèi)容僅代表作者觀點(diǎn),拍明芯城不對(duì)內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨(dú)立判斷做出的,請(qǐng)讀者明確相關(guān)結(jié)果。

4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請(qǐng)聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。

拍明芯城擁有對(duì)此聲明的最終解釋權(quán)。

標(biāo)簽: 74HC165

相關(guān)資訊

資訊推薦
云母電容公司_云母電容生產(chǎn)廠商

云母電容公司_云母電容生產(chǎn)廠商

開關(guān)三極管13007的規(guī)格參數(shù)、引腳圖、開關(guān)電源電路圖?三極管13007可以用什么型號(hào)替代?

開關(guān)三極管13007的規(guī)格參數(shù)、引腳圖、開關(guān)電源電路圖?三極管13007可以用什么型號(hào)替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內(nèi)部結(jié)構(gòu)及應(yīng)用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內(nèi)部結(jié)構(gòu)及應(yīng)用電路)

芯片lm2596s開關(guān)電壓調(diào)節(jié)器的中文資料_引腳圖及功能_內(nèi)部結(jié)構(gòu)及原理圖_電路圖及封裝

芯片lm2596s開關(guān)電壓調(diào)節(jié)器的中文資料_引腳圖及功能_內(nèi)部結(jié)構(gòu)及原理圖_電路圖及封裝

芯片UA741運(yùn)算放大器的資料及參數(shù)_引腳圖及功能_電路原理圖?ua741運(yùn)算放大器的替代型號(hào)有哪些?

芯片UA741運(yùn)算放大器的資料及參數(shù)_引腳圖及功能_電路原理圖?ua741運(yùn)算放大器的替代型號(hào)有哪些?

28nm光刻機(jī)卡住“02專項(xiàng)”——對(duì)于督工部分觀點(diǎn)的批判(睡前消息353期)

28nm光刻機(jī)卡住“02專項(xiàng)”——對(duì)于督工部分觀點(diǎn)的批判(睡前消息353期)

拍明芯城微信圖標(biāo)

各大手機(jī)應(yīng)用商城搜索“拍明芯城”

下載客戶端,隨時(shí)隨地買賣元器件!

拍明芯城公眾號(hào)
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號(hào)
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告