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

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

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

數(shù)碼管的工作原理是怎么樣的呢?如何點亮數(shù)碼管?

冬至子 ? 來源:落木青云 ? 作者:一顆糯米 ? 2023-07-28 16:20 ? 次閱讀

數(shù)碼管基礎知識

今天我們先來了解一種新的元器件--數(shù)碼管。數(shù)電教材中一般將他和譯碼一起講解。它是一種顯示器件,現(xiàn)在我們來看看它是一個什么樣的東西。

以上是最常見的一些數(shù)碼管,當然它的外觀樣式非常多,那它的工作原理是怎么樣的呢?

我們現(xiàn)在來看一下它內(nèi)部結構應該就能知道它的顯示原理了。

圖片

其內(nèi)部就是由一些LED電路構成,固定在其底面,然后表面通過注塑一些透明材料讓顯示部分在內(nèi)部LED發(fā)光時能夠顯示出來,從而達到顯示信息的效果。這種顯示器是最簡單,也是最經(jīng)濟的一種顯示工具。在我們?nèi)粘I钪械碾娖髦惺欠浅3R姷?,相信大多?shù)人都遇到過,只是在這之前你可能不會想到它叫數(shù)碼管顯示屏。正是因為它的這些特點所以市面上各種各樣的數(shù)碼管顯示屏都有,大家都可以定制一些特定顯示內(nèi)容的屏用在自己的產(chǎn)品上,你若有意把自己的名字制作成屏都可以,哈哈哈……這也是我在電子元器件基礎知識中沒有介紹它的原因。再來看看它內(nèi)部電路結構,剛學完點亮LED 的朋友是否能想到點亮它的辦法呢?

圖片

圖片

上圖中的共陰,共陽又是什么意思?從圖中很容易看出來,共陰型數(shù)碼管的所有LED的陰極是接在一起的,而共陽型數(shù)碼管剛好相反,這還是很好區(qū)分的吧。那這么做的目的是什么呢?把某一端接在一起,這樣制作時就內(nèi)部可以省一些線路,又可以少引出幾個端口吧。如果使用的是共陽型數(shù)碼管,在使用時將公共端接到地,這時要點亮哪一段就將所在端的LED設置為高電平就好了。

看完以上說明你也會覺得數(shù)碼管也是很簡單的吧,但是也先別那么得以,任何簡單的應用原理背后都還隱藏很多復雜的事情,這只是顯示原理最基礎的一內(nèi)容。當然,對于還不會使用單片機控制數(shù)碼管的朋友也不用擔心,接著看后面的內(nèi)容你就可以入門了。如果你已經(jīng)會使用數(shù)碼管了不妨再來看看下面這個圖中的數(shù)碼管,你會使用它嗎(沒基礎的朋友先跳過這個問題),注意它只有8個引腳!這應該是擴音器或藍牙音箱產(chǎn)品上用的顯示屏。

圖片

P0端口和排阻

根據(jù)以上原理分析,我設計如下的一個電路,接下來我們在這個電路上進行講解數(shù)碼管顯示控制的編程內(nèi)容。

圖片

細心的朋友可能發(fā)現(xiàn)了數(shù)碼管連接的單片機P0端口每個引腳都接在了一個元件上,這是什么意思呢?這個元器件叫做排阻,簡單說它就是有一排電阻,也就是說它內(nèi)部包含了一組參數(shù)相同的電阻,說白了它還是電阻。

我們?yōu)槭裁匆褂眠@種電阻呢,看我們在接LED的電路中使用了8個一樣的電阻,為了話電路圖時方便或減少電路板的空間我們是不是也可以像數(shù)碼管一樣把公用的一端接一起呢,是吧?所以就出現(xiàn)了排阻這種器件。當然如果不考慮這兩問題的話我們也可以用單獨的電阻代替,

不過它內(nèi)部結構不一定就剛剛好一個獨立引腳對應一個單獨的電阻,它可能有具體的一些內(nèi)部電路,但是我們使用時把它等效成每個對應一個電阻就好了。

圖片

現(xiàn)在的排阻大多都是貼片的了,像下面這樣:

圖片

那我們電路中P0端口為何要接一組排阻到電源呢?這就涉及到P0端口特殊的結構了,在我們介紹單片機基礎是文章中我們提到了,現(xiàn)在再做一些具體的介紹。

P0端口是開漏設計的,我們查看芯片數(shù)據(jù)手冊來看一下。

圖片

官方手冊是這么說的,是不是看了還是很迷糊?

說到開漏一詞是不是有似曾相識的感覺,模電課程考及格的朋友應該都會有印象??瓷厦娴膱D也可以看出來,就是端口是直接接在一個nmos管漏極的,nmos管漏極沒有有電源電路連接,我們前面介紹三極管與mos管驅動LED的視頻中nmos管的漏極是要與電源連接才能驅動LED吧,這里也是是個道理。

開漏輸出端口是沒有能力輸出高電平驅動負載的,當控制其輸出低電平時其引腳將接地,控制其輸出高電平時引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)狀態(tài)。所以現(xiàn)在知道我們?yōu)槭裁葱枰右慌抛璧诫娫戳税??這個電阻我們也稱之為上拉電阻,就是將引腳接到電源端的電阻,與之對應的是下拉電阻,就是將引腳接到地端的電阻。

任何顯示具體數(shù)據(jù)

現(xiàn)在問題來了,如我們上面設計的電路所示,我們要怎么做才能讓數(shù)碼管上顯示出我們需要顯示的內(nèi)容(比如數(shù)字0,1……9)呢?這時就需要根據(jù)其內(nèi)部電路分布推算出顯示信息對應的控制位的數(shù)據(jù)了,以我們使用的圖為例,比如要顯示“0”這個符號就需要點亮a,b,c,d,e,f這六段,在我們的單片機中與這六段相連的引腳都要輸出高電平才能點亮。使用這時我們就將P0端口輸出數(shù)據(jù)數(shù)值為0x3f,同樣的方法我們可以推斷出顯示其他數(shù)據(jù)時P0端口對應輸出的數(shù)據(jù)。把它計算出來做成一個真值表,以后使用時就很方便了,當然這其中需要你根據(jù)具體的電路接線圖來確定數(shù)據(jù)的。實際做項目時肯定會遇到不是同一組端口中連接數(shù)碼管各段的情況,所以現(xiàn)在掌握好基礎知識后遇到其他情況就需要靈魂處理了。

數(shù)組與數(shù)據(jù)顯示

現(xiàn)在我們來看看顯示一個數(shù)的程序要怎么實現(xiàn)。

#include

#include

sbit com1 = P2^0; //定義數(shù)碼管com1引腳

sbit com2 = P2^1; //定義數(shù)碼管com2引腳

typedef unsigned char u8;

typedef unsigned int u16;

u8 code num_codelist[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(u8 ms);

void main()

{

u8 i;

for(i=0;i< 10;i++)

{

	P0 = num_codelist[i];

	delay(100);

}

}

void delay(u8 ms) //定義函數(shù)

{

u8 i,j;



for(i=0;i< ms;i++)

{

	for(j=0;j< 100;j++)

	{

		;

	}

}

}

com1,com2是聲明連接數(shù)碼管兩個公共端的,只使用一位數(shù)碼管時可以不用定義,將其公共端直接接地就行,后面的程序中我們會使用到這兩端口。

程序中出現(xiàn)了我們之前沒有介紹的內(nèi)容--u8 code num_codelist[10],這種數(shù)據(jù)結構叫數(shù)組,在C語言中它用來有序存儲一組相同類型的數(shù)據(jù),"[n]"中的n就是它的序號,也稱它為下標。它的基礎定義方式為:

數(shù)據(jù)類型 數(shù)組名 [數(shù)組元素總數(shù)N];

例如:unsigned char code[10];

它的意思是定義了一個有十位數(shù)據(jù)的數(shù)組。

它的下標計數(shù)規(guī)則是從0開始計數(shù)的,即以上數(shù)組中第一位數(shù)據(jù)為code[0]。

如果我們定義時沒對其進行賦值,編譯器一般會將其中所有內(nèi)容初始化為0(但不一定所有編譯器都是默認這么處理的,所有定義時最好還是初始化一下比較安全)。我們也可以在定義時對其中內(nèi)容進行賦值,且賦值時不一定全都要賦值,可以只賦前面一位或幾位部分,未賦值的內(nèi)容還是會被初始化為0。

有時我們定義時也可以省略其數(shù)組元素總數(shù)N,比如:

unsigned char code[] = {1,2,3,4};

這時編譯器將自動識別出數(shù)組元素總數(shù)N為4。

數(shù)組元素總數(shù)N是定義后就不能變的,即在后面的程序中不能對數(shù)組添加內(nèi)容,但改變其中的數(shù)據(jù)是可以的。

剛才講的數(shù)組,我們稱為一維數(shù)組,當然數(shù)組也可以是二維或多維的,就和我們排隊一樣,可以排成一排,也可以排成多行,比如定義二維數(shù)組:

unsigned char code[2][5];

這里的意思就是D定義了一個有2行5列的二維數(shù)組。

使用時行列下標都要包含,比如code[0][2]就是第一行第三列的數(shù)據(jù)。

其他多維數(shù)組以此類推。

關于數(shù)組我們先介紹這些基礎內(nèi)容,更多知識內(nèi)容后面遇到時再詳細講解。

那為什么在C51單片機編程時使用的是code table[]格式呢,這里我們添加了一個關鍵詞code,是編譯器決定的,和前面的sfr 和sbit情況類似 ,這些是要記住的內(nèi)容,如果換其他編譯器也要視情況而定,每種編譯器使用的規(guī)則各有不同。

后面的main函數(shù)內(nèi)容就是讓數(shù)碼管從0~9依次切換顯示數(shù)字了。

任何實現(xiàn)動態(tài)數(shù)字顯示

上面只是顯示一位數(shù)據(jù),在實際情況中要顯示二位甚至多位該怎么處理呢?接下來我們看看顯示兩位時要怎么編程。

#include

#include

sbit com1 = P2^0; //定義數(shù)碼管com1引腳

sbit com2 = P2^1; //定義數(shù)碼管com2引腳

typedef unsigned char u8;

typedef unsigned int u16;

u8 code num_codelist[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(u8 ms);

void main()

{

//顯示第一位數(shù)字0

com1 = 0;//將第一位的com端設置為低電平

com2 = 1;

P0 = num_codelist[0];

delay(1);

P0 = 0x00;



com1 = 1;

com2 = 0;//將第二位的com端設置為低電平

P0 = num_codelist[1];

delay(1);

P0 = 0x00;

}

void delay(u8 ms) //定義函數(shù)

{

u8 i,j;



for(i=0;i< ms;i++)

{

	for(j=0;j< 100;j++)

	{

		;

	}

}

}

這段代碼中main函數(shù)外的程序段跟前面的一樣,現(xiàn)在主要看main函數(shù)內(nèi)部的程序。

首先我們要了解的是兩位或以上的數(shù)碼管同時顯示不一樣的內(nèi)容應用的原理是人眼視覺暫留的特點。其實顯示器都是根據(jù)這一原理來設計的。

那什么是視覺暫留呢?視覺暫留(英文:Persistence of vision)也稱為正片后像,是光對視網(wǎng)膜所產(chǎn)生的視覺,在光停止作用后,仍然保留一段時間的現(xiàn)象,其具體應用是電影的拍攝和放映。原因是由視神經(jīng)的反應速度造成的,其時值約是1/16秒,對于不同頻率的光有不同的暫留時間。比如:我們?nèi)粘J褂玫娜展鉄裘棵氪蠹s熄滅100余次,但我們基本感覺不到日光燈的閃動,這就是因為視覺暫留的作用。我們平時說的某動畫片,電影是30幀每秒的,電腦顯示屏是75fps的,手機顯示屏是120fps的,都是指屏幕刷新率,屏幕就是不停閃爍的,只是什么看不到它的閃爍而已。如果哪天外星人來了,或許它們就能看出吧。

視覺暫留現(xiàn)象首先是咱們中國人發(fā)現(xiàn)的,走馬燈便是據(jù)歷史記載中最早的視覺暫留運用。宋時已有走馬燈,當時稱“馬騎燈”。隨后法國人保羅·羅蓋在1828年發(fā)明了留影盤,它是一個被繩子在兩面穿過的圓盤。盤的一個面畫了一只鳥,另一面畫了一個空籠子。當圓盤旋轉時,鳥在籠子里出現(xiàn)了。這證明了當眼睛看到一系列圖像時,它一次保留一個圖像。再后來就有了電影,最后又了顯示屏。

現(xiàn)在回來我們正題,我們讓數(shù)碼管同時顯示兩位不一樣的數(shù)字該怎么操作呢?是不是先顯示第一位,然后馬上又顯示第二位,后面再這么一直循環(huán)往復就形成了視覺暫留效果,數(shù)碼管上的數(shù)據(jù)看起來就成了靜態(tài)不變的數(shù)據(jù)了?,F(xiàn)在看注釋是不是就能看明白了?

當然這種做法知識最基礎辦法,當我們在復雜應用中這么使用時不合理的,至于為什么呢,我們后面介紹其他內(nèi)容時再詳細講解。另外這個應用電路圖僅僅也是適用于仿真用,實際使用時還是需要進一步優(yōu)化的,因為數(shù)碼管中每個LED燈點亮需要耗費的電流都是比較大的了,如果同時亮很多燈,對于驅動能力若的單片機可能會遇到的問題是:你把邏輯正確的程序下載進去,結果沒有任何顯示,或顯示不正常。這種情況可能真的不是你的程序問題,而是單片機帶不動它,就像你是一個100斤的瘦子去背一個300斤的胖子一樣,要么你瞬間被壓第地上,如果你很堅強那就還能走走停停動兩步吧。

在進化設計電路時要參考單片機數(shù)據(jù)手冊中的電流參數(shù)來確定你的電路是否合理。遇到可能使電路工作不正常的情況我們需要借助一些外部芯片來驅動它,比如使用鎖存器或專用驅動芯片,鎖存器一是可以幫助單片機鍵顯示數(shù)據(jù)暫時鎖存利于減少單片機內(nèi)部CPU資源消耗,二是可以它可以加大驅動電流,使得顯示電路不影響單片機內(nèi)部工作的穩(wěn)定。

做過項目的朋友應該對電路中電流的波動對產(chǎn)品性能的影響非常有印象吧。因為我在我創(chuàng)業(yè)之前我的本職工作一直都是做醫(yī)療器械。因電流電路中變化產(chǎn)品出現(xiàn)的大小問題基本都是能看的出來(雖然我主要職責是軟件開發(fā)的,電路整改由硬件工程師負責)。因為醫(yī)療電子行業(yè)是國家限制最嚴格的一個行業(yè),人命關天,即使是萬分之一概率事故發(fā)生你都承擔不了。不過這個行業(yè)薪資還是很不錯的,不比互聯(lián)網(wǎng)差多少(具體差不差也還看個人能力哈),有興趣的朋友這是一個很好的選擇。但做這行你要沉得住氣,做好一個產(chǎn)品2~3年,甚至更久都不能上市的準備,也就是你至少要熬出一款產(chǎn)品來。過程會比較枯燥,但程序員不都是自樂其中嗎,干啥不是干呢,有錢就行,對吧?

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

    關注

    142

    文章

    3574

    瀏覽量

    121364
  • MOS管
    +關注

    關注

    108

    文章

    2349

    瀏覽量

    66246
  • 數(shù)碼管
    +關注

    關注

    32

    文章

    1873

    瀏覽量

    90764
  • 單片機控制
    +關注

    關注

    0

    文章

    59

    瀏覽量

    18692
  • LED發(fā)光
    +關注

    關注

    0

    文章

    23

    瀏覽量

    8234
收藏 人收藏

    評論

    相關推薦

    數(shù)碼管工作原理

    數(shù)碼管在我們的整個設計中,我們輸入的數(shù)據(jù)與計算的結果都需要用數(shù)碼管來顯示,所以說數(shù)碼管還是扮演著很重要的角色的。1.1簡析數(shù)碼管工作原理
    發(fā)表于 04-02 06:35

    數(shù)碼管工作原理

    昨天我們學習了按鍵的基本操作,今天我們來學習一下數(shù)碼管工作原理,如果覺得我博客更新的太快,沒有關系,大家可以回顧我往期的博客,利用課下時間到社團補習,如果我博客哪里有寫的不好的地方,大家也不用想
    發(fā)表于 11-17 08:04

    數(shù)碼管的分類

    數(shù)碼管的分類     數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管
    發(fā)表于 11-06 11:41 ?7397次閱讀

    點亮數(shù)碼管電路

    Pl口輸出到雙向驅動芯片74LS245的輸入端,同相驅動數(shù)碼管各段,根據(jù)Pl口輸出的信息,在數(shù)碼管形成字符,達到用數(shù)碼管顯示字符的目的。
    發(fā)表于 12-13 10:35 ?9736次閱讀
    <b class='flag-5'>點亮</b><b class='flag-5'>數(shù)碼管</b>電路

    靜態(tài)數(shù)碼管

    靜態(tài)數(shù)碼管靜態(tài)數(shù)碼管靜態(tài)數(shù)碼管靜態(tài)數(shù)碼管
    發(fā)表于 05-13 15:39 ?6次下載

    數(shù)碼管工作原理與編碼顯示接口分析

    數(shù)碼管的一種是半導體發(fā)光器件,數(shù)碼管工作原理是通過單片機的I/O端口進行驅動數(shù)碼管的各個段碼,點亮不同的段碼從而形成字符顯示出我們要的數(shù)字
    發(fā)表于 07-29 17:40 ?10.4w次閱讀

    共陰數(shù)碼管與共陽數(shù)碼管工作原理有什么不同

    本文主要介紹了數(shù)碼管分類、數(shù)碼管應用范圍、數(shù)碼管工作原理以及共陰數(shù)碼管與共陽數(shù)碼管的定義介紹,
    發(fā)表于 12-27 13:56 ?3.3w次閱讀

    數(shù)碼管怎么測量_如何使用萬用表判斷數(shù)碼管的好壞

    本文介紹了什么是數(shù)碼管、數(shù)碼管分類以及數(shù)碼管的結構,其次介紹了數(shù)碼管工作原理與應用范圍,最后介紹了怎么用萬用表判斷數(shù)碼管是共陰極還是共陽極以

    數(shù)碼管的用途

    本文首先介紹了數(shù)碼管的分類,其次介紹了數(shù)碼管的驅動方式,最后介紹了數(shù)碼管的用途及應用范圍。
    的頭像 發(fā)表于 08-21 18:46 ?1.4w次閱讀

    LED數(shù)碼管工作原理詳細資料說明

    數(shù)碼管是比較常見的一種電子元件,通常用以顯示數(shù)字等,用單個的發(fā)光器件,按照8字形、米字形或者其他形狀,組成1位或者多位。顯示數(shù)字和簡單的圖案等。右圖是比較常見的數(shù)碼管。某些產(chǎn)品比如計算器等,那是整體液晶顯示,跟數(shù)碼管操作方式一
    發(fā)表于 12-18 17:20 ?15次下載
    LED<b class='flag-5'>數(shù)碼管</b>的<b class='flag-5'>工作原理</b>詳細資料說明

    數(shù)碼管工作原理是什么

    數(shù)碼管由8個發(fā)光二極構成的,是一種可以顯示數(shù)字和其他信息的電子設備。 數(shù)碼管工作原理 ? ? 數(shù)碼管按段數(shù)分為七段和八段數(shù)碼管,八段
    的頭像 發(fā)表于 08-20 17:40 ?2.3w次閱讀

    STC51-數(shù)碼管顯示

    原理都是一的,都是靠點亮內(nèi)部的發(fā)光二極來發(fā)光,下面就來我們講解一個數(shù)碼管是如何亮起來的。數(shù)碼管內(nèi)部電路如下圖所示,從圖(a)可看出,一位
    發(fā)表于 11-25 09:06 ?76次下載
    STC51-<b class='flag-5'>數(shù)碼管</b>顯示

    藍橋杯單片機 數(shù)碼管的使用

    、原理分析數(shù)碼管是如何點亮的?我們可以將數(shù)碼管看成8個LED燈組合成的,8個LED燈的不同組合就形成了數(shù)字或字母。數(shù)碼管和LED燈一分為共
    發(fā)表于 12-20 19:14 ?1次下載
    藍橋杯單片機 <b class='flag-5'>數(shù)碼管</b>的使用

    靜態(tài)數(shù)碼管和動態(tài)數(shù)碼管

    (1位)、聯(lián)排(2位、4位、8位)2、工作原理(1)亮滅原理(其實就是內(nèi)部的照明LED)(2)顯示數(shù)字(甚至文字)原理:利用內(nèi)部的LED的亮和滅讓外部的組成數(shù)字的筆畫顯示或者不顯示,人看到的就是不同的數(shù)字。3、共陽極和共陰極數(shù)碼管(1)驅動方法的差異。必須清楚一個
    發(fā)表于 01-12 18:31 ?40次下載
    靜態(tài)<b class='flag-5'>數(shù)碼管</b>和動態(tài)<b class='flag-5'>數(shù)碼管</b>

    數(shù)碼管工作原理和使用方法解析

    數(shù)碼管是一種常見的顯示元件,用于以數(shù)字形式顯示數(shù)字、字母和特殊符號。它具有簡單、可靠、易讀等特點,在很多電子設備中應用廣泛。本文將對數(shù)碼管工作原理和使用方法進行細致的解析。 一、數(shù)碼管
    的頭像 發(fā)表于 12-18 17:31 ?4733次閱讀