0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

移位寄存器如何獲得更多空閑I/O引腳來連接更多傳感器

科技觀察員 ? 來源:circuitdigest ? 作者:Abhimanyu Pandit ? 2022-11-11 17:25 ? 次閱讀

嵌入式設(shè)計(jì)中,微控制器中存在沒有足夠的I/O引腳的可能性。這可能是由于任何原因造成的,可能是您的應(yīng)用程序需要多個(gè) LED,或者您想使用多個(gè) 7 段顯示器,但您的微控制器中沒有所需的 I/O 引腳。這里有一個(gè)完美的組件,移位寄存器。移位寄存器接受串行數(shù)據(jù)并提供并行輸出。它只需要3 個(gè)引腳即可與您的微控制器連接,您將從中獲得超過 8 個(gè)輸出引腳。其中一個(gè)流行的移位寄存器是74HC595。它具有8位存儲(chǔ)寄存器和8位移位寄存器。

您將向移位寄存器提供串行數(shù)據(jù),該數(shù)據(jù)將被鎖存于存儲(chǔ)寄存器上,然后存儲(chǔ)寄存器將控制 8 個(gè)輸出。如果您想要更多輸出,只需添加另一個(gè)移位寄存器。通過級(jí)聯(lián)兩個(gè)移位寄存器,您將獲得額外的 8 個(gè)輸出,總共 16 位輸出。

移位寄存器 74HC595:

這是根據(jù)數(shù)據(jù)表的74HC595的引腳圖-

poYBAGNuFSGASRhDAAB-KmQj8tw266.png

HC595 有 16 針;如果我們看到數(shù)據(jù)表,我們將了解引腳功能-

pYYBAGNuFSKAZvCmAAAgZke23c4151.png

QA至QH,從引腳號(hào)1到7和15用作移位寄存器的8位輸出,其中引腳14用于接收串行數(shù)據(jù)。還有關(guān)于如何使用其他引腳和利用移位寄存器的其他功能的真值表。

poYBAGNuFSSAZJoTAABgUTLVreU031.png

當(dāng)我們編寫用于連接74HC595的代碼時(shí),我們將應(yīng)用此真值表來獲取所需的輸出。

所需組件:

PIC16F877A

2個(gè)33pF陶瓷盤式電容器

20兆赫晶體

4.7k 電阻

8顆發(fā)光二極管

1k 電阻器 -1 個(gè)(如果需要每個(gè) LED 上的單獨(dú)電阻器,則需要 8 個(gè) 1k 電阻器)

74HC595 集成電路

5V墻上適配器

PIC 編程環(huán)境

面包板和電線

電路圖:

poYBAGNuFSmABL6AAADABoxqXwY594.png

在電路圖中,我們連接了串行數(shù)據(jù)引腳;時(shí)鐘和選通(鎖存)引腳分別位于微控制器的RB0,RB1和RB2引腳上。在這里,我們使用一個(gè)電阻器用于8個(gè)LED。根據(jù)真值表,我們通過將74HC595的引腳13接地來啟用輸出。QH引腳保持打開狀態(tài),因?yàn)槲覀儾粫?huì)用它級(jí)聯(lián)另一個(gè)74HC595。我們通過將移位寄存器的引腳10與VCC連接來禁用清除輸入標(biāo)志。

晶體振蕩器連接在微控制器的 OSC 引腳上。PIC16F877A 沒有任何內(nèi)部振蕩器。在本項(xiàng)目中,我們將使用移位注冊(cè)表從 Q0 到 Q7逐個(gè)點(diǎn)亮 lead。

我們?cè)诿姘逯袠?gòu)建了電路-

pYYBAGNuFSyAZplfAACqP0X8dNw273.jpg

代碼說明:

文末給出了使用移位寄存器控制LED的完整代碼。與往常一樣,我們需要在PIC微控制器中設(shè)置配置位。

#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)

#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

之后,我們聲明了延遲所需的晶體頻率和74HC595的引腳聲明。

#include

/*

Hardware related definition

*/

#define _XTAL_FREQ 20000000 //Crystal Frequency, used in delay

#define DATA_595 PORTBbits.RB0

#define STROBE_595 PORTBbits.RB1

#define CLK_595 PORTBbits.RB2

接下來我們聲明了 system_init() 函數(shù)來初始化引腳方向。

void system_init(void){

TRISB = 0x00;

}

我們使用兩種不同的函數(shù)創(chuàng)建了時(shí)鐘脈沖和鎖存脈沖

/*

*This function will enable the Clock.

*/

void clock(void){

CLK_595 = 1;

__delay_us(500);

CLK_595 = 0;

__delay_us(500);

}

/*

*This function will strobe and enable the output trigger.

*/

void strobe(void){

STROBE_595 = 1;

__delay_us(500);

STROBE_595 = 0;

}

在這兩個(gè)函數(shù)之后,我們聲明了data_submit(無符號(hào) int data)函數(shù)以向74HC595提交串行數(shù)據(jù)。

void data_submit(unsigned int data){

for (int i=0 ; i<8 ; i++){

DATA_595 = (data >> i) & 0x01;

clock();

}

strobe(); // Data finally submitted

}

在此函數(shù)中,我們接受 8 位數(shù)據(jù)并使用兩個(gè)按位運(yùn)算符左移和AND運(yùn)算符發(fā)送每個(gè)位。我們首先逐個(gè)移動(dòng)數(shù)據(jù),并使用帶有 0x01 的 AND 運(yùn)算符找出確切的位是 0 還是 1。每個(gè)數(shù)據(jù)都由時(shí)鐘脈沖存儲(chǔ),最終數(shù)據(jù)輸出使用鎖存器或選通脈沖完成。在此過程中,數(shù)據(jù)輸出將首先是MSB(最高有效位)。

在主函數(shù)中,我們提交了二進(jìn)制文件,并逐個(gè)將輸出引腳調(diào)高。

system_init(); // System getting ready

while(1){

data_submit(0b00000000);

__delay_ms(200);

data_submit(0b10000000);

__delay_ms(200);

data_submit(0b01000000);

__delay_ms(200);

data_submit(0b00100000);

__delay_ms(200);

data_submit(0b00010000);

__delay_ms(200);

data_submit(0b00001000);

__delay_ms(200);

data_submit(0b00000100);

__delay_ms(200);

data_submit(0b00000010);

__delay_ms(200);

data_submit(0b00000001);

__delay_ms(200);

data_submit(0xFF);

__delay_ms(200);

}

return;

}

這就是移位寄存器可用于在任何微控制器中獲得更多空閑I/O引腳以連接更多傳感器的方式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7399

    瀏覽量

    150681
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50315

    瀏覽量

    750366
  • 移位寄存器
    +關(guān)注

    關(guān)注

    2

    文章

    258

    瀏覽量

    22202
  • i/o
    i/o
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    4560
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    集成移位寄存器

    實(shí)驗(yàn)七 集成移位寄存器一、 實(shí)驗(yàn)?zāi)康?、 掌握集成雙向移位寄存器74LS95的邏輯功能2、 熟悉集成雙向移位寄存器74LS95的管腳排列二、 實(shí)驗(yàn)器材實(shí)驗(yàn)箱、
    發(fā)表于 03-20 17:54 ?19次下載

    線性移位寄存器

    線性移位寄存器移位寄存器可以構(gòu)成序列信號(hào)發(fā)生,其電路結(jié)構(gòu)如下圖所示。組合電路從移位寄存器取得信息,產(chǎn)生反饋信號(hào)加
    發(fā)表于 01-12 14:14 ?1923次閱讀
    線性<b class='flag-5'>移位寄存器</b>

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.7w次閱讀

    移位寄存器的工作原理是什么?

    移位寄存器的工作原理是什么? 把若干個(gè)觸發(fā)串接起來,就可以構(gòu)成一個(gè)移位寄存器。由4個(gè)邊沿D 觸發(fā)構(gòu)成的4位移位寄存器邏輯電路如圖8.8
    發(fā)表于 03-08 14:56 ?4.5w次閱讀

    移位寄存器及其應(yīng)用實(shí)驗(yàn)

    一、實(shí)驗(yàn)?zāi)康?1、了解集成移位寄存器的控制功能。 2、掌握集成移位寄存器的應(yīng)用。 二、實(shí)驗(yàn)原理 移位寄存器的功能是當(dāng)時(shí)鐘控制脈沖有效時(shí),寄存器中存儲(chǔ)的數(shù)碼同時(shí)順序向高位(
    發(fā)表于 07-16 22:59 ?22次下載

    寄存器移位寄存器

    寄存器移位寄存器:介紹寄存器原理和移位寄存器的原理及實(shí)現(xiàn)。
    發(fā)表于 05-20 11:47 ?0次下載

    移位寄存器實(shí)驗(yàn)報(bào)告_移位寄存器原理

    本文以移位寄存器為中心,主要介紹了移位寄存器的特點(diǎn)、移位寄存器原理。以及詳細(xì)的說明了移位寄存器實(shí)驗(yàn)報(bào)告。
    發(fā)表于 12-22 14:29 ?2.8w次閱讀
    <b class='flag-5'>移位寄存器</b>實(shí)驗(yàn)報(bào)告_<b class='flag-5'>移位寄存器</b>原理

    移位寄存器的特點(diǎn)_移位寄存器工作原理

    目前移位寄存器在電路中已經(jīng)得到普遍使用。本文以移位寄存器為中心。主要介紹了移位寄存器分類、移位寄存器的特點(diǎn),以及詳細(xì)的說明了移位寄存器的工作
    發(fā)表于 12-22 15:20 ?4.9w次閱讀
    <b class='flag-5'>移位寄存器</b>的特點(diǎn)_<b class='flag-5'>移位寄存器</b>工作原理

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個(gè)具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。本文主要介紹了
    發(fā)表于 12-22 15:49 ?2w次閱讀

    移位寄存器的原理

    移位寄存器按照不同的分類方法可以分為不同的類型。 如果按照移位寄存器移位方向來進(jìn)行分類, 可以分為左移移位寄存器、移位寄存器和雙向
    發(fā)表于 07-15 09:38 ?7.4w次閱讀
    <b class='flag-5'>移位寄存器</b>的原理

    移位寄存器的種類與作用

    移位寄存器是由相同的寄存單元所組成。一般說來,寄存單元的個(gè)數(shù)就是移位寄存器的位數(shù)。為了完成不同的移位功能,每個(gè)
    發(fā)表于 07-15 09:52 ?1.6w次閱讀
    <b class='flag-5'>移位寄存器</b>的種類與作用

    移位寄存器的設(shè)計(jì)與實(shí)現(xiàn)

    移位寄存器的功能和電路形式較多,按移位方向分有左移、右移、和雙向移位寄存器;按接收數(shù)據(jù)方式分為串行輸入和并行輸入;按輸出方向分為串行輸出和并行輸出。
    的頭像 發(fā)表于 09-06 11:35 ?4203次閱讀

    在LED設(shè)計(jì)中使用Nexperia移位寄存器以減小尺寸和BOM

    Nexperia邏輯產(chǎn)品組合中的移位寄存器有助于減小使用LED的設(shè)計(jì)的尺寸和BOM。通過提供I/O擴(kuò)展,移位寄存器支持使用引腳較少的較便宜的
    的頭像 發(fā)表于 02-10 10:08 ?927次閱讀
    在LED設(shè)計(jì)中使用Nexperia<b class='flag-5'>移位寄存器</b>以減小尺寸和BOM

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一種用于在數(shù)字電路中實(shí)現(xiàn)數(shù)據(jù)移位操作的基本電路元件。它由多個(gè)觸發(fā)以及相關(guān)控制電路組成,具有存儲(chǔ)、接受和移動(dòng)數(shù)據(jù)的功能。移位寄存器可以分為兩種類型:串行
    的頭像 發(fā)表于 01-18 10:52 ?6605次閱讀

    移位寄存器右移是怎么移位

    移位寄存器是一種在數(shù)字電路和計(jì)算機(jī)科學(xué)中廣泛使用的存儲(chǔ)設(shè)備,它可以用來存儲(chǔ)和傳輸數(shù)據(jù)。在移位寄存器中,數(shù)據(jù)可以通過移位操作實(shí)現(xiàn)數(shù)據(jù)的傳輸和處理。
    的頭像 發(fā)表于 07-12 10:14 ?663次閱讀