在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

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

移位寄存器 74HC595:

這是根據數據表的74HC595的引腳圖-

poYBAGNuFSGASRhDAAB-KmQj8tw266.png

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

pYYBAGNuFSKAZvCmAAAgZke23c4151.png

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

poYBAGNuFSSAZJoTAABgUTLVreU031.png

當我們編寫用于連接74HC595的代碼時,我們將應用此真值表來獲取所需的輸出。

所需組件:

PIC16F877A

2個33pF陶瓷盤式電容器

20兆赫晶體

4.7k 電阻

8顆發光二極管

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

74HC595 集成電路

5V墻上適配器

PIC 編程環境

面包板和電線

電路圖:

poYBAGNuFSmABL6AAADABoxqXwY594.png

在電路圖中,我們連接了串行數據引腳;時鐘和選通(鎖存)引腳分別位于微控制器的RB0,RB1和RB2引腳上。在這里,我們使用一個電阻器用于8個LED。根據真值表,我們通過將74HC595的引腳13接地來啟用輸出。QH引腳保持打開狀態,因為我們不會用它級聯另一個74HC595。我們通過將移位寄存器的引腳10與VCC連接來禁用清除輸入標志。

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

我們在面包板中構建了電路-

pYYBAGNuFSyAZplfAACqP0X8dNw273.jpg

代碼說明:

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

#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() 函數來初始化引腳方向。

void system_init(void){

TRISB = 0x00;

}

我們使用兩種不同的函數創建了時鐘脈沖和鎖存脈沖

/*

*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;

}

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

void data_submit(unsigned int data){

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

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

clock();

}

strobe(); // Data finally submitted

}

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

在主函數中,我們提交了二進制文件,并逐個將輸出引腳調高。

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引腳以連接更多傳感器的方式。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7627

    瀏覽量

    151768
  • 傳感器
    +關注

    關注

    2552

    文章

    51320

    瀏覽量

    755330
  • 移位寄存器
    +關注

    關注

    3

    文章

    259

    瀏覽量

    22307
  • i/o
    i/o
    +關注

    關注

    0

    文章

    33

    瀏覽量

    4600
收藏 人收藏

    評論

    相關推薦

    集成移位寄存器

    實驗七 集成移位寄存器一、 實驗目的1、 掌握集成雙向移位寄存器74LS95的邏輯功能2、 熟悉集成雙向移位寄存器74LS95的管腳排列二、 實驗器材實驗箱、
    發表于 03-20 17:54 ?19次下載

    線性移位寄存器

    線性移位寄存器移位寄存器可以構成序列信號發生,其電路結構如下圖所示。組合電路從移位寄存器取得信息,產生反饋信號加
    發表于 01-12 14:14 ?1983次閱讀
    線性<b class='flag-5'>移位寄存器</b>

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

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

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

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

    移位寄存器及其應用實驗

    一、實驗目的 1、了解集成移位寄存器的控制功能。 2、掌握集成移位寄存器的應用。 二、實驗原理 移位寄存器的功能是當時鐘控制脈沖有效時,寄存器中存儲的數碼同時順序向高位(
    發表于 07-16 22:59 ?22次下載

    寄存器移位寄存器

    寄存器移位寄存器:介紹寄存器原理和移位寄存器的原理及實現。
    發表于 05-20 11:47 ?0次下載

    移位寄存器實驗報告_移位寄存器原理

    本文以移位寄存器為中心,主要介紹了移位寄存器的特點、移位寄存器原理。以及詳細的說明了移位寄存器實驗報告。
    發表于 12-22 14:29 ?2.9w次閱讀
    <b class='flag-5'>移位寄存器</b>實驗報告_<b class='flag-5'>移位寄存器</b>原理

    移位寄存器的特點_移位寄存器工作原理

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

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

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

    移位寄存器的原理

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

    移位寄存器的種類與作用

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

    移位寄存器的設計與實現

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

    在LED設計中使用Nexperia移位寄存器以減小尺寸和BOM

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

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

    移位寄存器是一種用于在數字電路中實現數據移位操作的基本電路元件。它由多個觸發以及相關控制電路組成,具有存儲、接受和移動數據的功能。移位寄存器可以分為兩種類型:串行
    的頭像 發表于 01-18 10:52 ?9270次閱讀

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

    移位寄存器是一種在數字電路和計算機科學中廣泛使用的存儲設備,它可以用來存儲和傳輸數據。在移位寄存器中,數據可以通過移位操作實現數據的傳輸和處理。
    的頭像 發表于 07-12 10:14 ?1693次閱讀
    主站蜘蛛池模板: 国产做a爰片久久毛片| 在线 你懂的| 色视频国产| 污色网站| 日本69xxxx| 交专区videossex另类| 午夜精品视频| ww欧洲ww在线视频看| 久青草免费视频手机在线观看| 深爱激情成人| 亚洲第一区第二区| 中国三级视频| 日本a级特黄三级三级三级| 日本68xxxxxxxxx老师| 国产精品臀控福利在线观看| 波多野结衣福利| 久草资源在线播放| 人人骚| 天天亚洲| 窝窝午夜看片成人精品| 日日操夜夜操天天操| 色片视频网站| 大美女久久久久久j久久| 国产牛仔裤系列在线观看| 免费一级黄| 美妇乱人伦性| 华人黄网站大全| 黄色在线播放网站| 一区二区三区四区视频在线观看| 国产大片黄在线看免费| 日本不卡专区| 久久成人国产精品免费| 欧美一卡2卡三卡四卡五卡| 亚洲人成电影在线观看网| 五月激情站| 色狠狠狠狠综合影视| 精品伊人久久大线蕉地址| 黄色在线视频免费看| 超级黄色毛片| 久久久久国产| 男男生子大肚play做到生|