色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

利用ESP32與74HC595實(shí)現(xiàn)7段顯示器

科技觀察員 ? 來源:circuitdigest ? 作者:Sourav Gupta ? 2022-08-11 16:09 ? 次閱讀

所有微控制器都有特定數(shù)量的 IO 引腳,但在某些應(yīng)用中,例如在 7 段顯示器中,我們需要的 GPIO 引腳數(shù)量將超過我們的控制器所能提供的數(shù)量。對于這種需要多個(gè)輸出引腳但微控制器的輸出引腳數(shù)量有限的情況,74HC595 移位寄存器將是一個(gè)完美的選擇。74HC595是以串行數(shù)據(jù)為輸入,提供并行輸出的移位寄存器。除了電源管腳,它只需要3個(gè)管腳就可以控制多個(gè)移位寄存器。

因此,可以使用微控制器單元的三個(gè)輸出引腳并級聯(lián)兩個(gè)或更多移位寄存器以獲得 16 或 24+ 輸出引腳。在這個(gè)ESP32 74HC595項(xiàng)目中,我們將僅使用三個(gè)引腳連接三個(gè) 74HC595,并連接三個(gè) 7 段顯示器以僅使用來自 ESP32 的三個(gè)引腳查看輸出,ESP32 是一種支持 WiFi/BT 的微控制器設(shè)備,是許多基于物聯(lián)網(wǎng)的流行選擇項(xiàng)目。

所需組件

ESP32 開發(fā)套件 v4.0

7 段顯示器共陰極 - 3 個(gè)

74HC595 - 3 個(gè)

680R電阻 - 24pcs

5V電源

面包板

很多連接線

帶有 ESP32 編程環(huán)境的 Arduino IDE。

一根微型 USB 數(shù)據(jù)線

pYYBAGL0t7aAWZEAAAMWqX5sbtA738.png

示意圖

ESP32 7 Segment Display的原理圖如下-

poYBAGL0t7KAF5twAAFnHaW25Y4708.png

ESP32 與 74HC595 相連。移位寄存器的數(shù)據(jù)管腳與PIN14相連,Clock管腳與PIN12相連,Latch或strobe管腳與PIN4相連。您可以查看7 段顯示器的基礎(chǔ)知識(shí)文章,以了解有關(guān) 7 段顯示器及其工作原理的更多信息

74HC595移位寄存器

74HC595是一個(gè)8位移位寄存器。引腳圖如下圖所示 -

pYYBAGL0t66AVYWEAAPdxAfsKtk457.png

引腳說明見下表-

pYYBAGL0t6qAU1GRAAD3a4ksfAI254.png

QA 到 QH,從起始引腳 1 到 7 和引腳 15 是移位寄存器的 8 位輸出。輸入引腳為 PIN14,即串行數(shù)據(jù)輸入,以串行方式獲取數(shù)據(jù)。

其他輸入引腳為 PIN 11 和 PIN12。這兩個(gè)引腳是 SCK 和 RCK。SCK 是時(shí)鐘輸入,RCK 是鎖存器輸入。下面給出了獲取數(shù)據(jù)并將數(shù)據(jù)提供給下一個(gè)移位寄存器所需的真值表

74HC595真值表

poYBAGL0t6aACL8zAAFjHVJtBls981.png

然而,PIN9 是串行數(shù)據(jù)輸出,它將提供數(shù)據(jù)到下一個(gè)級聯(lián)移位寄存器。因此,PIN9與下一個(gè)移位寄存器的PIN 14相連。數(shù)據(jù)連續(xù)不斷地串行傳遞到下一個(gè)移位寄存器。

使用 74HC595 為 7 段顯示器編程 ESP32

控制所有三個(gè) 7 段顯示器的程序可以在頁面底部找到。您可以直接將它用于上面給出的電路圖并進(jìn)行測試。代碼解釋如下。

在進(jìn)入程序之前,我們聲明我們正在使用的 7 段顯示器的類型。

此行將識(shí)別 ESP32 的 7 段顯示類型。如果使用共陰極,則需要為真,否則,如果使用共陽極,則需要為假。由于取決于共同的陰極狀態(tài),移位寄存器的輸出會(huì)發(fā)生變化。

const bool commonCathode = true;

下一部分用于以 8 位格式提供支持的數(shù)字和字母。這將提供來自移位寄存器的精確二進(jìn)制輸出,以點(diǎn)亮 7 段顯示器。

const byte digit_pattern[17] =

{

// 74HC595 Outpin 與 7 段顯示器的連接。

// Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

// abcdefg DP

0b11111100, // 0

0b01100000, // 1

0b11011010, // 2

0b11110010, // 3

0b01100110, // 4

0b10110110 , // 5

06011111000, //

, // 7

0b11111110, // 8

0b11110110, // 9

0b11101110, // A

0b00111110, // b

0b00011010, // C

0b01111010, // d

0b10011110, // E

0b100011010, // F

0b0000 0.

};

在下面的代碼行中,定義了移位寄存器引腳。

//連接到74HC595的ST_CP的引腳

int latchPin = 4;

//連接到74HC595的SH_CP的引腳

int clkPin = 12;

//74HC595的DS引腳

int dtPin = 14;

// 顯示值

int dispVal = 0;

布爾增量=真;

設(shè)置代碼在實(shí)際循環(huán)應(yīng)用程序之前完成。在上述代碼中,74HC595 控制引腳設(shè)置為輸出,UART 通信的串行輸出也僅用于調(diào)試目的。

void setup() {

// 將您的設(shè)置代碼放在這里,運(yùn)行一次:

// 將串口設(shè)置為 115200

Serial.begin(115200);

延遲(1000);

// 將 74HC595 控制引腳設(shè)置為輸出

pinMode(latchPin, OUTPUT); //74HC595的ST_CP

pinMode(clkPin, OUTPUT); //74HC595的SH_CP

pinMode(dtPin, OUTPUT); //74HC595的DS

}

在循環(huán)部分或?qū)嶋H應(yīng)用部分,代碼分為兩部分。首先,數(shù)字增加,而在另一部分,數(shù)字減少。但是,寫入移位寄存器總是乞求鎖存引腳變?yōu)榈碗娖剑⑶以诎l(fā)送數(shù)據(jù)后,它需要為高電平。

void loop() {

// 把你的主要代碼放在這里,重復(fù)運(yùn)行:

int dispDigit1=dispVal/10;

int dispDigit2=dispVal%10;

if(increment==true){

printf(“%d%d.\n”, dispDigit1,dispDigit2);

數(shù)字寫入(latchPin,低);

if(commonCathode == true){

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit2]|digit_pattern[16]); // 1. (Digit+DP)

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit1]);

}else{

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit2]|digit_pattern[16])); // 1. (Digit+DP)

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit1]));

}

digitalWrite(latchPin, HIGH);

顯示值 += 1;

如果(dispVal == 99){

增量=假;

}

}else{

printf(“%d%d.\n”, dispDigit1,dispDigit2);

數(shù)字寫入(latchPin,低);

if(commonCathode == true){

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit2]|digit_pattern[16]); // 1. (Digit+DP)

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit1]);

}else{

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit2]|digit_pattern[16])); // 1. (Digit+DP)

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit1]));

}

digitalWrite(latchPin, HIGH);

顯示值-= 1;

如果(dispVal == 0){

增量=真;

}

}

延遲(250);

}

digitalWrite(latchPin, LOW);

在此低碼和高碼之間發(fā)送的數(shù)據(jù)。

digitalWrite(latchPin, HIGH);

然后,如果使用共陰極,它將使用以下代碼在 7 段顯示器中打印數(shù)字 -

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit2]|digit_pattern[16]);

shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit1]);

這些移位輸出函數(shù)使用按位運(yùn)算符將數(shù)據(jù)與時(shí)鐘輸入同時(shí)串行移位。它將打印數(shù)字以及數(shù)據(jù)點(diǎn)(DP)。但是,由于它是 LSB First 數(shù)據(jù),因此 LSB 首先發(fā)送到 74HC595,然后轉(zhuǎn)移到下一個(gè) 74HC595。第三個(gè) 7 段未編程和連接,以查看第一個(gè)數(shù)字被傳輸?shù)阶詈笠粋€(gè) 7 段,即 74HC595 單元。當(dāng) 7-Seg 為共陽極時(shí),它將使用反轉(zhuǎn)運(yùn)算符來反轉(zhuǎn)輸出。因此,

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit2]|digit_pattern[16]));

shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit1]));

帶有 ESP32 的七段顯示器 – 工作

該電路由兩個(gè)面包板構(gòu)成,并檢查輸出。如下圖所示,數(shù)字在 7 段顯示器上完美顯示。由于電線的數(shù)量,連接和調(diào)試可能會(huì)變得很困難,我們在面包板上構(gòu)建它,它確實(shí)按預(yù)期工作。

pYYBAGL0t5uASf96AAXGkKiJGjE781.png

/*
* 該程序在 3、7 段顯示器上打印數(shù)字
* 硬件連接(Breakoutboard 到 Arduino Nano):
* Vin - 5V(允許 3.3V)
* 接地 - 接地
* 74HC595 ST_CP - 4 (ESP32)
* 74HC595 SH_CP - 12 (ESP32)
* 74HC595 DS - 14 (ESP32)
*
*/
// 設(shè)置7segment類型(普通Cathode或Anode)
const bool commonCathode = true; // 如果你使用普通陽極,我使用普通陰極 7 段然后將值更改為 false。
// 用于 7 段顯示的字母數(shù)字模式
常量字節(jié)數(shù)字模式[17] =
{
// 74HC595 帶 7 段顯示器的 Outpin 連接。
// Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
// abcdefg DP
0b11111100, // 0
0b01100000, // 1
0b11011010, // 2
0b11110010, // 3
0b01100110, // 4
0b10110110, // 5
0b10111110, // 6
0b11100000, // 7
0b11111110, // 8
0b11110110, // 9
0b11101110, // 一個(gè)
0b00111110, // b
0b00011010, // C
0b01111010, // d
0b10011110, // E
0b10001110, // F
0b00000001 // .
};
//引腳連接到74HC595的ST_CP
int 閂鎖銷 = 4;
//引腳連接到74HC595的SH_CP
詮釋 clkPin = 12;
//引腳連接到74HC595的DS
int dtPin = 14;
// 顯示值
int dispVal = 0;
布爾增量=真;
無效設(shè)置(){
// 把你的設(shè)置代碼放在這里,運(yùn)行一次:
// 設(shè)置串口為 115200
序列號(hào).開始(115200);
延遲(1000);
// 將 74HC595 控制引腳設(shè)置為輸出
pinMode(latchPin,輸出);//74HC595的ST_CP
pinMode(clkPin,輸出);//74HC595的SH_CP
pinMode(dtPin,輸出);//74HC595的DS
}
無效循環(huán)(){
// 把你的主要代碼放在這里,重復(fù)運(yùn)行:
int dispDigit1=dispVal/10;
int dispDigit2=dispVal%10;
如果(增量==真){
printf("%d%d.\n", dispDigit1,dispDigit2);
數(shù)字寫入(latchPin,低);
如果(普通陰極 == 真){
shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit2]|digit_pattern[16]); // 1. (數(shù)字+DP)
shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit1]);
}別的{
shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit2]|digit_pattern[16])); // 1. (數(shù)字+DP)
shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit1]));
}
digitalWrite(latchPin, HIGH);
顯示值 += 1;
如果(dispVal == 99){
增量=假;
}
}別的{
printf("%d%d.\n", dispDigit1,dispDigit2);
數(shù)字寫入(latchPin,低);
如果(普通陰極 == 真){
shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit2]|digit_pattern[16]); // 1. (數(shù)字+DP)
shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[dispDigit1]);
}別的{
shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit2]|digit_pattern[16])); // 1. (數(shù)字+DP)
shiftOut(dtPin, clkPin, LSBFIRST, ~(digit_pattern[dispDigit1]));
}
digitalWrite(latchPin, HIGH);
顯示值-= 1;
如果(dispVal == 0){
增量=真;
}
}
延遲(250);
}

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

    關(guān)注

    21

    文章

    4970

    瀏覽量

    139931
  • 74HC595
    +關(guān)注

    關(guān)注

    7

    文章

    191

    瀏覽量

    30844
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17204
收藏 人收藏

    評論

    相關(guān)推薦

    74HC595的原理

    屏的顯示效果,使用74HC595來驅(qū)動(dòng)發(fā)光二極管。595的使用方法很簡單,在正常使用時(shí)SCLR(清除位移緩存)為高電平,G為低電平。從SER每輸入一位數(shù)據(jù),串行輸入時(shí)鐘SCK上升沿有
    發(fā)表于 10-27 20:56

    如何利用SPI接口實(shí)現(xiàn)74HC595的操作

    /****************************現(xiàn)象:通過查詢的方式利用SPI接口實(shí)現(xiàn)74HC595的操作,并在數(shù)碼上顯示
    發(fā)表于 11-24 06:03

    利用SPI接口實(shí)現(xiàn)74HC595的操作

    /****************************現(xiàn)象:通過查詢的方式利用SPI接口實(shí)現(xiàn)74HC595的操作,并在數(shù)碼上顯示
    發(fā)表于 11-24 06:46

    74HC595的工作原理是什么,怎么使用

    內(nèi)部工作原理74HC595時(shí)一款漏極開路輸出的CMOS移位寄存,輸出端為可控的三態(tài)輸出,亦能串行輸出控制下一級級聯(lián)芯片,其移位時(shí)鐘頻率高達(dá)25MHz。二、74HC595引腳的簡...
    發(fā)表于 11-29 08:27

    74HC595怎么使用

    一、74HC595使用方法74HC595的數(shù)據(jù)端Q0--Q7:八位并行輸出端,可以直接控制數(shù)碼管的8個(gè)。Q7:級聯(lián)輸出端。將它接下一個(gè)
    發(fā)表于 12-07 06:46

    如何利用兩個(gè)74HC595實(shí)現(xiàn)三個(gè)引腳實(shí)現(xiàn)數(shù)據(jù)的傳送

    74HC595驅(qū)動(dòng)8位選數(shù)碼管利用兩個(gè)74HC595實(shí)現(xiàn)三個(gè)引腳實(shí)現(xiàn)數(shù)據(jù)的傳送以下是
    發(fā)表于 12-07 06:57

    如何使用HAL 庫的SPI實(shí)現(xiàn)74HC595芯片控制

    使用HAL 庫的SPI實(shí)現(xiàn)74HC595芯片控制先簡單看一下原理圖:原理圖是簡單的級聯(lián)方式,如圖所示可用三個(gè)字節(jié),例如:先寫入第一個(gè)字節(jié)0000 0000控制的數(shù)據(jù)是右邊74HC595芯片所有引腳為
    發(fā)表于 12-07 07:17

    如何實(shí)現(xiàn)74HC595驅(qū)動(dòng)數(shù)碼管顯示

    ?4、數(shù)碼管顯示數(shù)碼管驅(qū)動(dòng)電路采用2片74HC595芯片進(jìn)行IO擴(kuò)展,僅僅只需3Pin即可驅(qū)動(dòng)需要16位引腳的數(shù)碼管。74HC595是一個(gè)8位串行輸入、并行輸出的位移緩存。只有對
    發(fā)表于 12-07 07:29

    如何利用CC2530和74HC595實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)顯示數(shù)字的效果?

    數(shù)碼管的原理是什么?如何利用CC2530和74HC595實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)顯示數(shù)字的效果?
    發(fā)表于 01-25 06:43

    基于74hc595和smd電阻的0.8寸7模塊電路

    描述4位0.8寸7模塊電路(74hc595driver)此設(shè)計(jì)使用 4 個(gè) 74hc595 和 32 個(gè) smd 電阻 220ohm
    發(fā)表于 08-12 07:56

    使用移位寄存74HC595和ULN2003的7屏蔽2,3英寸

    描述7屏蔽2,3英寸7 屏蔽 2,3 使用移位寄存 74HC595 和 ULN2003pc
    發(fā)表于 09-09 06:04

    利用74HC595實(shí)現(xiàn)多位LED顯示的新方法

            本文介紹了應(yīng)用移位寄存芯片74HC595 實(shí)現(xiàn)LED 動(dòng)、靜態(tài)顯示的基本原理。提出了一種用
    發(fā)表于 09-09 08:39 ?349次下載

    74hc573和74hc595有什么不同?該怎樣區(qū)分74hc573和74hc595

    在實(shí)際應(yīng)用電路中74hc573和74hc595都可用,都可實(shí)現(xiàn)行掃描,看你電路怎么連接,程序如何編寫。
    的頭像 發(fā)表于 07-27 14:27 ?2.7w次閱讀
    <b class='flag-5'>74hc</b>573和<b class='flag-5'>74hc595</b>有什么不同?該怎樣區(qū)分<b class='flag-5'>74hc</b>573和<b class='flag-5'>74hc595</b>

    任務(wù)774HC595的使用方法

    內(nèi)部工作原理74HC595時(shí)一款漏極開路輸出的CMOS移位寄存,輸出端為可控的三態(tài)輸出,亦能串行輸出控制下一級級聯(lián)芯片,其移位時(shí)鐘頻率高達(dá)25MHz。二、74HC595引腳的簡...
    發(fā)表于 11-19 14:51 ?42次下載
    任務(wù)<b class='flag-5'>7</b>:<b class='flag-5'>74HC595</b>的使用方法

    7屏蔽使用移位寄存74HC595和ULN2003

    電子發(fā)燒友網(wǎng)站提供《7屏蔽使用移位寄存74HC595和ULN2003.zip》資料免費(fèi)下載
    發(fā)表于 08-18 15:17 ?2次下載
    <b class='flag-5'>7</b><b class='flag-5'>段</b>屏蔽使用移位寄存<b class='flag-5'>器</b><b class='flag-5'>74HC595</b>和ULN2003
    主站蜘蛛池模板: 久久中文字幕乱码免费| 嫩B人妻精品一区二区三区| 麻豆国产MV视频| 日韩精品a在线视频| 亚洲精品人成电影网| 99精品视频在线观看免费播放| 动漫美女禁区| 精品视频中文字幕| 啪啪漫画无遮挡全彩h网站| 小泽玛丽av无码观看| 最近中文字幕在线看免费完整版| 成人区在线观看免费视频| 果冻传媒2021精品在线观看| 嫩草影院永久在线一二三四| 午夜深情在线观看免费| 99国产精品久久久久久久日本竹| 国产精品99久久免费黑人人妻| 两个客户一起吃我的奶| 午夜免费小视频| adc免费观看| 精品久久久久久久99热| 日本邪恶少女漫画大全| 在线自拍亚洲视频欧美| 国产精品高潮AV久久无码| 美女被日出水| 亚洲国产综合久久精品| www.av日韩| 久久亚洲精选| 午夜宅宅伦电影网中文字幕| a级老头和老太xxxx| 九九热综合| CHINESE熟女老女人HD视频| 2020无码最新国产在线观看| 99久久蜜臀亚洲AV无码精品| 办公室的秘密2中文字幕| 免费女人光着全身网站| 男女做爽爽爽视频免费软件| 强奷漂亮女老板在线播放| 少妇一夜未归暴露妓女身份| 姐姐不~不可以动漫在线观看| 欧美日韩精品一区二区三区高清视频|