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

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

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

單片機數(shù)碼管知識要點

2oON_changxuemc ? 2018-03-05 11:42 ? 次閱讀

1、數(shù)碼管的基本介紹

先給大家提供一張原理圖看一下,如圖1所示。

圖1數(shù)碼管原理圖

這是比較常見的數(shù)碼管的原理圖,我們板子上一共有6只數(shù)碼管。前邊有了LED小燈的學(xué)習(xí),數(shù)碼管學(xué)習(xí)就會輕松的多了。從圖1能看出來,數(shù)碼管共有a,b,c,d,e,f,g,dp這8個段,而實際上,這8個段每一段都是一個LED小燈,所以數(shù)碼管就是由8個LED小燈所組成的。我們看一下數(shù)碼管內(nèi)部結(jié)構(gòu)圖。

圖2數(shù)碼管結(jié)構(gòu)圖

數(shù)碼管分為共陽數(shù)碼管和共陰數(shù)碼管,所謂的共陰數(shù)碼管就是8只LED小燈的陰極是接在一起的,也就是陰極是公共端,由陽極來控制小燈是否亮滅。同理,共陽數(shù)碼管就是陽極是接到一起的,大家可以仔細研究下圖1。細心的同學(xué)也會發(fā)現(xiàn),數(shù)碼管上邊有2個com,實際上就是我們數(shù)碼管的公共端。為什么有2個,我個人認為,一方面有2個可以起到對稱的效果,剛好是10個引腳,另外一個方面,公共端通過的電流較大,我們初中就學(xué)過,并聯(lián)電路電流之和等于總電流,用2個com可以把公共電流平均到2個引腳上去,降低線路承受的電流。

從我們板子的電路圖上能看出來,我們所用的數(shù)碼管是共陽數(shù)碼管,如圖所示。

圖3共陽數(shù)碼管電路

他們的com是接到了正極上,當然了,和LED小燈電路類似,也是由74HC138控制了三極管的導(dǎo)通來控制整個數(shù)碼管的電流,我們先來看DS1這個數(shù)碼管。原理圖上可以看出來,控制DS1的三極管是Q17,控制Q17的引腳是LEDS0,對應(yīng)到74HC138上邊就是Y0端的輸出。

圖474HC138控制圖

我們現(xiàn)在的目的是讓LEDS0這個引腳輸出低電平,相信大家現(xiàn)在可以獨立根據(jù)前邊學(xué)到的內(nèi)容把ADDR0,ADDR1,ADDR2,ADDR3,ENLED這4個輸入狀態(tài)寫出來,現(xiàn)在大家不要偷懶,都去根據(jù)138的手冊去寫一下,不需要你記住這些結(jié)論,但是遇到就寫一次,鍛煉過幾次后,遇到同類芯片自己就知道如何去解決問題了。

數(shù)碼管通常是用來顯示數(shù)字的,我們板子上的6個數(shù)碼管,習(xí)慣上我們稱之為6位,那控制位選擇的就是74HC138了。而數(shù)碼管內(nèi)部的8個LED小燈我們稱之為數(shù)碼管的段,那么數(shù)碼管的段選擇(即該段的亮滅)是通過P0口控制,經(jīng)過74HC245驅(qū)動。

2、數(shù)碼管的真值表

數(shù)碼管的8個段,我們直接當成8個LED小燈來控制,那就是a、b、c、d、e、f、g、dp一共8個LED小燈。我們通過圖1可以輕而易舉的看出來,如果我們點亮b和c這兩個LED小燈,也就是數(shù)碼管的b段和c段,其他的所有的段都熄滅的話,就可以讓數(shù)碼管DS1顯示一個數(shù)字1,那么這個時候?qū)嶋H上P0的值的二進制就是0b11111001,十六進制就是0xF9。那么我們寫一個程序進去,看看讓數(shù)碼管顯示一下看看。

#include//包含寄存器的庫文件

sbitADDR0=P1^0;

sbitADDR1=P1^1;

sbitADDR2=P1^2;

sbitADDR3=P1^3;

sbitENLED=P1^4;

voidmain()

{

unsignedcharj=0;

unsignedinti=0;

ENLED=0;

ADDR0=0;

ADDR1=0;

ADDR2=0;

ADDR3=1;//74HC138開啟三極管Q17

while(1)//程序死循環(huán)

{

P0=0xF9;//打開數(shù)碼管b和c段

}

}

大家把這個程序編譯一下,下載單片機里會發(fā)現(xiàn),最右側(cè)的數(shù)碼管成功顯示1這個數(shù)字。

同樣的方法,我們可以把其他的數(shù)字都成功的在數(shù)碼管上顯示出來,而數(shù)碼管顯示的數(shù)字對應(yīng)給P0的賦值,我們叫做數(shù)碼管的真值表。我們來列一下我們這個電路圖的數(shù)碼管真值表,注意,這個真值表里顯示的數(shù)字都不帶小數(shù)點。

大家可以把上邊那個數(shù)碼管顯示1的那個程序中的P0的賦值隨便修改成我們表5-1中的真值表里的數(shù)字試試看,把數(shù)碼管顯示的數(shù)字顯示出來。

3、數(shù)碼管的靜態(tài)顯示

從第三課我們學(xué)習(xí)74HC138以后,我們了解到74HC138同時一次只能讓一個輸出口為低電平,也就是在一個時刻內(nèi),我們只能讓一個數(shù)碼管顯示,始終選通數(shù)碼管并且可以根據(jù)我們的P0總線的信號來改變這個數(shù)碼管的值,我們可以理解為數(shù)碼管的靜態(tài)顯示。

數(shù)碼管靜態(tài)顯示是對應(yīng)動態(tài)顯示而言的,靜態(tài)顯示對于一兩個數(shù)碼管還行,多個數(shù)碼管,靜態(tài)顯示實現(xiàn)的意義就沒有了。這節(jié)課我們先用一個數(shù)碼管的靜態(tài)顯示來實現(xiàn)一個簡單的秒表,為下節(jié)課的動態(tài)顯示打下基礎(chǔ)。

先來介紹一個51單片機的關(guān)鍵字code。我們前邊課程定義變量的時候,一般用到unsignedchar或者unsignedint這兩個關(guān)鍵字,這樣定義的變量都是放在我們的單片機的RAM中,我們在程序中可以隨意去改變這個變量的值。但是還有一種常數(shù),我們在程序中要使用,但是卻不進行對這個值的改變,這種值我們可以加一個code關(guān)鍵字修飾一下,修飾完畢后,這個值就會存儲到我們的程序空間flash中,這樣可以大大節(jié)省我們單片機的RAM的使用量,畢竟我們的RAM空間比較小,而程序空間是很大的。比如我們現(xiàn)在要使用的數(shù)碼管真值表,我們來看一下我們下邊的這個程序。

#include//包含寄存器的庫文件

sbitLED=P0^0;

sbitADDR0=P1^0;

sbitADDR1=P1^1;

sbitADDR2=P1^2;

sbitADDR3=P1^3;

sbitENLED=P1^4;

unsignedcharcodeLedChar[]={

0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e

};//用數(shù)組來存儲數(shù)碼管真值表,下一課詳細介紹數(shù)組

voidmain()

{

unsignedcharcounter=0;

unsignedcharj=0;

ENLED=0;ADDR0=0;ADDR1=0;

ADDR2=0;ADDR3=1;P0=0XFF;//74HC138和P0初始化部分

TMOD=0x01; //設(shè)置定時器0為模式1

TH0=0xB8;

TL0=0x00; //定時值初值

TR0=1; //打開定時器0

while(1)

{

if(1==TF0) //判斷定時器0是否溢出

{

TF0=0;

TH0=0xB8; //溢出后,重新賦值

TL0=0x00;

counter++;

if(50==counter)//判斷定時器0溢出是否達到50次

{

counter=0;//counter清0,重新計數(shù)

P0=LedChar[j++];//把數(shù)組里的對應(yīng)值送給P0

if(16==j)//當顯示到F后,歸0重新開始

{

j=0;

}

}

}

}

}

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

    關(guān)注

    6024

    文章

    44391

    瀏覽量

    629310

原文標題:單片機數(shù)碼管顯示原理

文章出處:【微信號:changxuemcu,微信公眾號:暢學(xué)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    8051單片機數(shù)碼管電路圖

    8051單片機數(shù)碼管電路圖
    發(fā)表于 09-28 11:55 ?233次下載
    8051<b class='flag-5'>單片機</b><b class='flag-5'>數(shù)碼管</b>電路圖

    學(xué)51單片機數(shù)碼管部分

    帶您從零學(xué)51單片機數(shù)碼管部分 目錄1 數(shù)碼管應(yīng)用2 數(shù)碼管內(nèi)部結(jié)構(gòu)及硬件原理圖3 數(shù)碼管硬件設(shè)計方法4
    發(fā)表于 02-10 14:36 ?155次下載

    單片機驅(qū)動數(shù)碼管顯示設(shè)計

    單片機驅(qū)動的數(shù)碼管顯示設(shè)計資料
    發(fā)表于 08-29 10:52 ?25次下載

    51單片機數(shù)碼管顯示學(xué)號

    51單片機數(shù)碼管顯示學(xué)號,學(xué)學(xué)數(shù)碼管吧。初學(xué)者多看看。
    發(fā)表于 04-05 16:15 ?54次下載

    數(shù)碼管的介紹和使用51單片機應(yīng)用數(shù)碼管的程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是數(shù)碼管的介紹和使用51單片機應(yīng)用數(shù)碼管的程序免費下載。
    發(fā)表于 07-05 17:41 ?5次下載
    <b class='flag-5'>數(shù)碼管</b>的介紹和使用51<b class='flag-5'>單片機</b>應(yīng)用<b class='flag-5'>數(shù)碼管</b>的程序免費下載

    淺析PIC單片機數(shù)碼管運用程序

    淺析PIC單片機數(shù)碼管運用程序
    發(fā)表于 10-18 09:54 ?2次下載

    基于單片機的LED數(shù)碼管循環(huán)移位顯示

    單片機系統(tǒng)基礎(chǔ)實驗——LED數(shù)碼管循環(huán)移位顯示第一部分 前言第二部分 數(shù)碼管的原理構(gòu)成LED數(shù)碼管的結(jié)構(gòu)LED數(shù)碼管的工作原理LED
    發(fā)表于 11-11 15:06 ?16次下載
    基于<b class='flag-5'>單片機</b>的LED<b class='flag-5'>數(shù)碼管</b>循環(huán)移位顯示

    基于51單片機定時,數(shù)碼管顯示時間

    基于單片機定時,數(shù)碼管顯示時間
    發(fā)表于 11-11 15:36 ?29次下載
    基于51<b class='flag-5'>單片機</b>定時,<b class='flag-5'>數(shù)碼管</b>顯示時間

    單片機零基礎(chǔ)入門(8-1)學(xué)會單片機數(shù)碼管,這篇文章就夠了,一文吃透數(shù)碼管---數(shù)碼管如何定義引腳?數(shù)碼

    單片機零基礎(chǔ)入門(8-1)學(xué)會單片機數(shù)碼管,這篇文章就夠了,一文吃透數(shù)碼管---數(shù)碼管如何定義引腳?數(shù)碼
    發(fā)表于 11-25 18:36 ?38次下載
    <b class='flag-5'>單片機</b>零基礎(chǔ)入門(8-1)學(xué)會<b class='flag-5'>單片機</b><b class='flag-5'>數(shù)碼管</b>,這篇文章就夠了,一文吃透<b class='flag-5'>數(shù)碼管</b>---<b class='flag-5'>數(shù)碼管</b>如何定義引腳?<b class='flag-5'>數(shù)碼</b>

    單片機零基礎(chǔ)入門(8-2)實戰(zhàn):在數(shù)碼管中實現(xiàn)顯示一個數(shù)字--在數(shù)碼管指定位置顯示一個數(shù)字----單片機數(shù)碼管實戰(zhàn)

    單片機零基礎(chǔ)入門(8-2)實戰(zhàn):在數(shù)碼管中實現(xiàn)顯示一個數(shù)字--數(shù)碼管知識的應(yīng)用一、上節(jié)回顧:二、本節(jié)需求:三、需求分析:四、源代碼:一、上節(jié)回顧:上篇文章:
    發(fā)表于 01-12 18:19 ?13次下載
    <b class='flag-5'>單片機</b>零基礎(chǔ)入門(8-2)實戰(zhàn):在<b class='flag-5'>數(shù)碼管</b>中實現(xiàn)顯示一個數(shù)字--在<b class='flag-5'>數(shù)碼管</b>指定位置顯示一個數(shù)字----<b class='flag-5'>單片機</b><b class='flag-5'>數(shù)碼管</b>實戰(zhàn)

    單片機數(shù)碼管顯示

    單片機數(shù)碼管顯示
    發(fā)表于 09-19 17:36 ?5次下載

    基于51單片機數(shù)碼管電子鐘

    方案介紹51單片機數(shù)碼管電子鐘可以通過按鍵設(shè)置時間以及12小時制或24小時制;數(shù)碼管顯示時間。
    發(fā)表于 12-15 17:11 ?50次下載

    基于單片機數(shù)碼管電子鐘Proteus程序

    基于單片機數(shù)碼管電子鐘Proteus仿真設(shè)計
    發(fā)表于 05-22 15:46 ?2次下載

    單片機數(shù)碼管驅(qū)動學(xué)習(xí)筆記

    51單片機數(shù)碼管驅(qū)動筆記
    發(fā)表于 11-06 17:23 ?1次下載

    單片機是如何控制數(shù)碼管顯示各種字符的?

    單片機控制數(shù)碼管顯示各種字符的過程是一個相對復(fù)雜的過程,涉及到硬件電路設(shè)計和軟件編程兩個方面。下面我將詳細介紹單片機如何控制數(shù)碼管顯示各種字符。 一、
    的頭像 發(fā)表于 12-13 10:47 ?1519次閱讀