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

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

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

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

如何用樹莓派連接4位七段顯示模塊并在其上顯示時間

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-01 09:56 ? 次閱讀

我們都知道Raspberry Pi是一個基于ARM微處理器的精彩開發(fā)平臺。憑借其高計算能力,它可以在電子愛好者或?qū)W生手中創(chuàng)造奇跡。只有當(dāng)我們知道如何使其與現(xiàn)實世界交互并通過某些輸出設(shè)備分析數(shù)據(jù)時,所有這些都是可能的。有許多傳感器可以從實時世界中檢測某些參數(shù)并將其傳輸?shù)綌?shù)字世界,我們在LCD屏幕或其他顯示器中查看它們。但是,使用帶有PI的LCD屏幕來顯示少量數(shù)據(jù)總是不經(jīng)濟(jì)的。這是我們更喜歡使用 16x2 字母數(shù)字 LCD 顯示器或 7 段顯示器的地方。

今天我們將用樹莓派連接 4 位七段顯示模塊并在其上顯示時間。

盡管 16x2 字母數(shù)字 LCD 比 7 段顯示器舒適得多,但在少數(shù)情況下,7 段顯示器比 LCD 顯示器更方便。LCD的缺點是字符大小小,如果您只是打算顯示一些數(shù)值,那么對于您的項目來說將是矯枉過正的。7段在光線條件差的情況下也具有優(yōu)勢,可以從比普通LCD屏幕更寬的角度觀看。所以,讓我們開始了解它。

7 段和 4 位 7 段顯示模塊:

7段顯示器中有七個段,每個段內(nèi)部都有一個LED,通過點亮相應(yīng)的段來顯示數(shù)字。就像如果您希望 7 段顯示數(shù)字“5”一樣,您需要通過使它們相應(yīng)的引腳變高來發(fā)光段 a、f、g、c 和 d。有兩種類型的7段顯示器:共陰極和共陽極,這里我們使用共陰極七段顯示器。


pYYBAGOs8-OAFXXbAAAWC9KsOAg347.gif

現(xiàn)在我們知道如何在單個 7 段顯示器上顯示所需的數(shù)字字符。但是,很明顯,我們需要一個以上的 7 段顯示器來傳達(dá)任何超過一位數(shù)字的信息。因此,在本教程中,我們將使用4 位 7 段顯示模塊,如下所示。

poYBAGOs8-WALcgsAABpEzb-Txk831.jpg

正如我們所看到的,有四個七段顯示器連接在一起。我們知道每個 7 段模塊將有 10 個引腳,對于 4 個七段顯示器,總共會有 40 個引腳,任何人都會忙于將它們焊接在點板上,所以我強烈建議任何人購買模塊或制作自己的 PCB 以使用 4 位 7 段顯示器。其連接原理圖如下所示:

poYBAGOs8-eAe7vPAABRASJcGTI318.gif

要了解4 位七段模塊的工作原理,我們必須研究上述原理圖,如圖所示,所有四個顯示器的 A 引腳都連接在一起,作為一個 A,對于 B,C 也是如此。直到DP。所以,基本上如果觸發(fā) A 打開,那么所有四個 A 都應(yīng)該變高吧?

但是,這不會發(fā)生。我們還有從D0到D3(D0,D1,D2和D3)的另外四個引腳,可用于控制四個顯示器中的哪個應(yīng)該變高。例如:如果我需要我的輸出只出現(xiàn)在第二個顯示器上,那么只有D1應(yīng)該設(shè)置為高電平,同時保持其他引腳(D0、D2和D3)為低電平。簡單地說,我們可以使用從 D0 到 D3 的引腳選擇哪個顯示器必須處于活動狀態(tài),以及使用從 A 到 DP 的引腳顯示哪個字符。

將 4 位 7 段模塊與樹莓派連接:

讓我們看看如何,如何將這個 4 位 7 段模塊與我們的 Raspberry Pi 連接起來。7 段模塊有 16 個引腳,如下所示。您的模塊可能更少,但不要擔(dān)心它仍然會具有以下內(nèi)容

7 或 8 段引腳(此處引腳從 1 到 8 開始)

接地引腳(此處為引腳 11)

4 位引腳(此處為引腳 13 至 16)

下面給出的是將4 位七段顯示模塊與樹莓派連接來的樹莓派數(shù)字時鐘原理圖:

pYYBAGOs8-iAJEBzAACrsQrk4J8408.png

下表還將幫助您進(jìn)行連接并驗證其是否符合上面顯示的原理圖。

S.No Rsp Pi GPIO 編號 RSP Pi 密碼 7 段名稱 7-Seg 引腳編號(在本模塊中)
1 GPIO 26 引腳 37 段 A 1
2 GPIO 19 引腳 35 B段 2
3 通用信息總局 13 引腳 33 C段 3
4 GPIO 6 引腳 31 段 d 4
5 GPIO 5 引腳 29 段 e 5
6 GPIO 11 引腳 23 段 f 6
7 GPIO 9 引腳 21 段 g 7
8 GPIO 10 引腳 19 段 DP 8
9 GPIO 7 引腳 26 數(shù)字 1 13
10 GPIO 8 引腳 24 數(shù)字 2 14
11 GPIO 25 引腳 22 數(shù)字 3 15
12 GPIO 24 引腳 18 數(shù)字 4 16
13 11

pYYBAGOs8-yAJUCDAADerbCCqlw199.jpg

確定模塊上的引腳,就可以繼續(xù)連接了。在樹莓派中發(fā)現(xiàn) GPIO 引腳可能是一項具有挑戰(zhàn)性的任務(wù),因此我為您提供了這張 GPIO 引腳的圖片。

對樹莓派進(jìn)行編程

在這里,我們使用Python編程語言來編程RPi。有很多方法可以對樹莓派進(jìn)行編程。在本教程中,我們使用Python 3 IDE,因為它是最常用的一個。

我們將討論我們將在該項目的 PYHTON 程序中使用的一些命令,

首先,我們將從庫中導(dǎo)入GPIO文件,下面的功能使我們能夠?qū)I的GPIO引腳進(jìn)行編程。我們還將“GPIO”重命名為“IO”,因此在程序中,每當(dāng)我們想引用GPIO引腳時,我們都會使用“IO”一詞。我們還導(dǎo)入了時間和日期時間,以從 Rsp Pi 讀取時間值。

import RPi.GPIO as GPIO
import time, datetime

有時,當(dāng)我們嘗試使用的GPIO引腳可能正在執(zhí)行其他一些功能時。在這種情況下,我們將在執(zhí)行程序時收到警告。以下命令告訴 PI 忽略警告并繼續(xù)程序。

IO.setwarnings(False)
我們可以參考 PIO 的 GPIO 引腳,可以通過板上的引腳編號或功能編號來引用。就像板上的“PIN 29”是“GPIO5”。所以我們在這里告訴要么我們要用“29”或“5”來表示這里的引腳。GPIO。BCM 表示我們將使用 5 表示 GPIO5 引腳 29。

IO.setmode (GPIO.BCM)
與往常一樣,我們應(yīng)該從初始化引腳開始,這里的段引腳和數(shù)字引腳都是輸出引腳。出于編程目的,我們?yōu)槎我_形成數(shù)組,并在將它們聲明為 GPIO 后將它們初始化為“0”。外

segment8 = (26,19,13,6,5,11,9,10)
for segment in segment8:
GPIO.setup(segment, GPIO.OUT)
GPIO.output(segment, 0)
同樣,對于數(shù)字引腳,我們將其聲明為輸出引腳,并默認(rèn)將它們設(shè)置為“0”

#Digit 1
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, 0) #Off initially
#Digit 2
GPIO.setup(8, GPIO.OUT)
GPIO.output(8, 0) #Off initially
#Digit 3
GPIO.setup(25, GPIO.OUT)
GPIO.output(25, 0) #Off initially
#Digit 4
GPIO.setup(24, GPIO.OUT)
GPIO.output(24, 0) #Off initially

我們必須形成數(shù)組以在七段顯示器上顯示每個數(shù)字。要顯示一個數(shù)字,我們必須控制所有 7 個段引腳(不包括點引腳),也就是說,它們必須關(guān)閉或打開。例如,為了顯示數(shù)字 5,我們進(jìn)行了以下安排

S.No Rsp Pi GPIO 編號 7 段名稱 顯示“5”的狀態(tài)。
(0-> 關(guān)閉,1->打開)
1 GPIO 26 段 A 1
2 GPIO 19 B段 1
3 GPIO 13 C段 0
4 GPIO 6 段 d 1
5 GPIO 5 段 e 1
6 GPIO 11 段 f 0
7 GPIO 9 段 g 1

同樣,我們有所有數(shù)字和字母的序列號。您可以自己編寫或使用下面的圖表。

poYBAGOs8-2AfgrpAABVFs9DcBE685.gif

有了這些數(shù)據(jù),我們可以在 python 程序中為每個數(shù)字形成數(shù)組,如下所示。

null = [0,0,0,0,0,0,0]
zero = [1,1,1,1,1,1,0]
one = [0,1,1,0,0,0,0]
two = [1,1,0,1,1,0,1]
three = [1,1,1,1,0,0,1]
four = [0,1,1,0,0,1,1]
five = [1,0,1,1,0,1,1]
six = [1,0,1,1,1,1,1]
seven = [1,1,1,0,0,0,0]
eight = [1,1,1,1,1,1,1]
nine = [1,1,1,1,0,1,1]
如果您按照該程序進(jìn)行操作,將有一個函數(shù)將每個字符顯示在我們的 7 段顯示器上,但是,讓我們暫時跳過它并進(jìn)入無限循環(huán)。從樹莓派讀取當(dāng)前時間并在四個變量之間拆分時間值。例如,如果時間為 10.45,則變量 h1 將有 1,h2 將有 0,m1 將有 4v,m2 將有 5。

now = datetime.datetime.now()
hour = now.hour
minute = now.minute
h1 = hour/10
h2 = hour % 10
m1 = minute /10
m2 = minute % 10
print (h1,h2,m1,m2)
我們必須分別在四位數(shù)字上顯示這四個變量值。要將變量值寫入數(shù)字,我們可以使用以下行。在這里,我們通過使其變高來顯示在數(shù)字 1 上,然后將調(diào)用函數(shù) print_segment(變量)以在段顯示上顯示變量中的值。您可能想知道為什么我們在那之后會有延遲,為什么我們在此之后關(guān)閉此數(shù)字。

GPIO.output(7, 1) #Turn on Digit One
print_segment (h1) #Print h1 on segment
time.sleep(delay_time)
GPIO.output(7, 0) #Turn off Digit One
原因是,正如我們所知,我們一次只能顯示一個數(shù)字,但是我們要顯示四個數(shù)字,并且只有當(dāng)所有四個數(shù)字都顯示時,用戶才能看到完整的四位數(shù)字。

那么,如何同時顯示所有 4 位數(shù)字?

幸運的是,我們的 MPU 比人眼快得多,所以我們實際上要做的是:我們一次顯示一個數(shù)字,但我們做得非常快,如上所示。

我們選擇一位數(shù)字顯示它等待 2ms(可變 delay_time),以便 MPU 和 7 段可以處理它,然后關(guān)閉該數(shù)字并移動到下一個數(shù)字并執(zhí)行相同的操作,直到我們到達(dá)最后一個數(shù)字。人眼無法觀察到這種 2ms 的延遲,所有四個數(shù)字似乎同時處于 ON 狀態(tài)。

最后要學(xué)習(xí)的是了解print_segment(變量)函數(shù)的工作原理。在這個函數(shù)中,我們使用到目前為止聲明的數(shù)組。因此,無論我們發(fā)送到此函數(shù)的任何變量都應(yīng)該具有介于 (0-9) 之間的值,變量字符將接收此值并將其與實際值進(jìn)行比較。此處將變量與“1”進(jìn)行比較。同樣,我們將與 0 到 9 的所有數(shù)字進(jìn)行比較。如果是匹配項,我們使用數(shù)組并將每個值分配給其各自的段引腳,如下所示。

def print_segment(charector):
if charector == 1:
for i in range(7):
GPIO.output(segment8[i], one[i])

使用 Raspberry Pi 在 4 位 7 段上顯示時間:

使用此處給出的原理圖和代碼進(jìn)行連接并相應(yīng)地對樹莓派進(jìn)行編程。完成所有操作后,只需啟動程序,您應(yīng)該會在七段顯示中找到當(dāng)前時間。但是,在此之前,您必須檢查一些事情

確保您已將樹莓派設(shè)置為當(dāng)前時間,以防萬一它在離線時間運行。

使用適配器而不是筆記本電腦/計算機(jī)為您的 Raspberry pi 供電,因為 7 段顯示器消耗的電流量很高,并且您的 USB 端口無法獲取它。

如果一切按預(yù)期工作,那么您應(yīng)該在下面找到類似這樣的內(nèi)容。

poYBAGOs8-6AIVsTAADRGK4qArU319.jpg


import RPi.GPIO as GPIO

import time, datetime


now = datetime.datetime.now()


GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)



#GPIO ports for the 7seg pins

segment8 = (26,19,13,6,5,11,9,10)




for segment in segment8:

GPIO.setup(segment, GPIO.OUT)

GPIO.output(segment, 0)



#Digit 1

GPIO.setup(7, GPIO.OUT)

GPIO.output(7, 0) #Off initially

#Digit 2

GPIO.setup(8, GPIO.OUT)

GPIO.output(8, 0) #Off initially

#Digit 3

GPIO.setup(25, GPIO.OUT)

GPIO.output(25, 0) #Off initially

#Digit 4

GPIO.setup(24, GPIO.OUT)

GPIO.output(24, 0) #Off initially



null = [0,0,0,0,0,0,0]

zero = [1,1,1,1,1,1,0]

one = [0,1,1,0,0,0,0]

two = [1,1,0,1,1,0,1]

three = [1,1,1,1,0,0,1]

four = [0,1,1,0,0,1,1]

five = [1,0,1,1,0,1,1]

six = [1,0,1,1,1,1,1]

seven = [1,1,1,0,0,0,0]

eight = [1,1,1,1,1,1,1]

nine = [1,1,1,1,0,1,1]



def print_segment(charector):

if charector == 1:

for i in range(7):

GPIO.output(segment8[i], one[i])


if charector == 2:

for i in range(7):

GPIO.output(segment8[i], two[i])


if charector == 3:

for i in range(7):

GPIO.output(segment8[i], three[i])


if charector == 4:

for i in range(7):

GPIO.output(segment8[i], four[i])


if charector == 5:

for i in range(7):

GPIO.output(segment8[i], five[i])


if charector == 6:

for i in range(7):

GPIO.output(segment8[i], six[i])


if charector == 7:

for i in range(7):

GPIO.output(segment8[i], seven[i])


if charector == 8:

for i in range(7):

GPIO.output(segment8[i], eight[i])


if charector == 9:

for i in range(7):

GPIO.output(segment8[i], nine[i])


if charector == 0:

for i in range(7):

GPIO.output(segment8[i], zero[i])



return;


while 1:


now = datetime.datetime.now()

hour = now.hour

minute = now.minute

h1 = hour/10

h2 = hour % 10

m1 = minute /10

m2 = minute % 10

print (h1,h2,m1,m2)




delay_time = 0.001 #delay to create virtual effect





GPIO.output(7, 1) #Turn on Digit One

print_segment (h1) #Print h1 on segment

time.sleep(delay_time)

GPIO.output(7, 0) #Turn off Digit One


GPIO.output(8, 1) #Turn on Digit One

print_segment (h2) #Print h1 on segment

GPIO.output(10, 1) #Display point On

time.sleep(delay_time)

GPIO.output(10, 0) #Display point Off

GPIO.output(8, 0) #Turn off Digit One


GPIO.output(25, 1) #Turn on Digit One

print_segment (m1) #Print h1 on segment

time.sleep(delay_time)

GPIO.output(25, 0) #Turn off Digit One


GPIO.output(24, 1) #Turn on Digit One

print_segment (m2) #Print h1 on segment

time.sleep(delay_time)

GPIO.output(24, 0) #Turn off Digit One



#time.sleep(1)



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

    關(guān)注

    34

    文章

    4438

    瀏覽量

    168445
  • 顯示模塊
    +關(guān)注

    關(guān)注

    1

    文章

    50

    瀏覽量

    23604
收藏 人收藏

    評論

    相關(guān)推薦

    如何將柔性傳感器與樹莓連接并在LCD屏幕顯示其值

    在這個項目中,我們將學(xué)習(xí)如何將柔性傳感器與樹莓連接并在LCD屏幕顯示其值。
    的頭像 發(fā)表于 12-31 09:33 ?4034次閱讀
    如何將柔性傳感器與<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>連接</b><b class='flag-5'>并在</b>LCD屏幕<b class='flag-5'>上</b><b class='flag-5'>顯示</b>其值

    七段顯示 7segment display

    請問這些設(shè)計圖哪里有問題??第一張不對 ? 求助!!!!我設(shè)計 把學(xué)生號碼顯示七段顯示(7segment display)奇數(shù)=1 剩下的為0例如 我的學(xué)生號99801
    發(fā)表于 09-27 18:40

    如何在七段顯示顯示4個字符

    大家好,不,我不知道如何在七段顯示顯示4個字符;)我的問題是:為什么我必須將50MHz時鐘計算到1KHz? (因此,每
    發(fā)表于 05-15 12:42

    七段LED顯示譯碼器,七段LED顯示譯碼器原理分析

    七段LED顯示譯碼器,七段LED顯示譯碼器原理分析 分段式 數(shù)碼由分布在同一平面上若干發(fā)光的筆畫組成,如半導(dǎo)體
    發(fā)表于 03-08 16:44 ?2.4w次閱讀

    七段顯示器控制電路四數(shù)_使用譯碼器驅(qū)動

    七段顯示器控制電路四數(shù)_使用譯碼器驅(qū)動
    發(fā)表于 04-25 13:00 ?148次下載
    <b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器控制電路四<b class='flag-5'>位</b>數(shù)_使用譯碼器驅(qū)動

    如何以10進(jìn)位顯示8數(shù)的七段顯示器?

    七段顯示器在DE2可當(dāng)成Verilog的控制臺,做為16進(jìn)位的輸出結(jié)果。簡單的使用開關(guān)當(dāng)成2進(jìn)位輸入,并用8數(shù)的七段顯示
    發(fā)表于 05-10 08:28 ?2986次閱讀

    七段式LED顯示屏的使用

    單片機(jī)的方法。您將創(chuàng)建一個從0(00h)到15(0Fh)的十六進(jìn)制計數(shù)器,并在七段LED顯示顯示該值。
    的頭像 發(fā)表于 12-06 14:41 ?1.5w次閱讀
    <b class='flag-5'>七段</b>式LED<b class='flag-5'>顯示</b>屏的使用

    巨型模塊七段顯示器開源項目

    電子發(fā)燒友網(wǎng)站提供《巨型模塊七段顯示器開源項目.zip》資料免費下載
    發(fā)表于 07-11 11:37 ?0次下載
    巨型<b class='flag-5'>模塊</b>化<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器開源項目

    定制設(shè)計的七段顯示

    電子發(fā)燒友網(wǎng)站提供《定制設(shè)計的七段顯示器.zip》資料免費下載
    發(fā)表于 08-01 09:56 ?0次下載
    定制設(shè)計的<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器

    4511 7七段顯示模塊

    電子發(fā)燒友網(wǎng)站提供《4511 7七段顯示模塊.zip》資料免費下載
    發(fā)表于 08-18 15:11 ?0次下載
    4511 7<b class='flag-5'>位</b><b class='flag-5'>七段</b><b class='flag-5'>顯示</b><b class='flag-5'>模塊</b>

    帶LED的七段顯示

    電子發(fā)燒友網(wǎng)站提供《帶LED的七段顯示器.zip》資料免費下載
    發(fā)表于 11-23 09:16 ?0次下載
    帶LED的<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器

    使用ATmega328的七段顯示驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《使用ATmega328的七段顯示驅(qū)動程序.zip》資料免費下載
    發(fā)表于 12-16 10:57 ?1次下載
    使用ATmega328的<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>驅(qū)動程序

    Snap Circuits七段顯示

    電子發(fā)燒友網(wǎng)站提供《Snap Circuits七段顯示器.zip》資料免費下載
    發(fā)表于 12-23 16:48 ?0次下載
    Snap Circuits<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器

    七段顯示器開源分享

    電子發(fā)燒友網(wǎng)站提供《七段顯示器開源分享.zip》資料免費下載
    發(fā)表于 01-31 14:09 ?1次下載
    <b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器開源分享

    在HLS的七段顯示顯示光傳感器的輸出

    電子發(fā)燒友網(wǎng)站提供《在HLS的七段顯示顯示光傳感器的輸出.zip》資料免費下載
    發(fā)表于 06-16 11:38 ?1次下載
    在HLS的<b class='flag-5'>七段</b><b class='flag-5'>顯示</b>器<b class='flag-5'>上</b><b class='flag-5'>顯示</b>光傳感器的輸出
    主站蜘蛛池模板: 在线久综合色手机在线播放 | 欧美视频a | 欧美综合精品一区二区三区 | 天天操夜夜草 | 77se77亚洲欧美在线大屁股 | 欧美性狂猛bbbbbbxxxx | 一级视频在线 | 九九久久久久午夜精选 | 最近最新中文字幕在线第一页 | 国产理论片在线观看 | 免费看 s色 | 天天射天天草 | 在线另类| 特一级黄色毛片 | 亚洲一区二区免费看 | 成人精品视频在线观看播放 | 国产你懂的在线 | 人人干在线 | 五月婷婷六月丁香激情 | 在线天堂中文在线资源网 | 爱夜夜性夜夜夜夜夜夜爽 | 丁香五月欧美成人 | 日本一区二区三区欧美在线观看 | 国产欧美一区二区日本加勒比 | 在线观看亚洲天堂 | 一级女人毛片人一女人 | 久久久福利| 亚洲图片综合区另类图片 | 巨大欧美黑人xxxxbbbb | 天堂资源在线官网bt | 中文字幕一精品亚洲无线一区 | 欧美午夜视频一区二区 | 美女牲交毛片一级视频 | 精品国产一二三区 | 可以看黄色的网站 | 天天看天天做 | 男人你懂的网站 | xxxx曰本| 日本暴力喉深到呕吐hd | www在线观看 | 黄色小视频日本 |