国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

第5章 定時器與數碼管基礎(5.3)

137933yu ? 來源:137933yu ? 作者:137933yu ? 2025-12-02 15:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

5.3 數碼管的學習

LED小燈是一種簡單的LED,只能通過亮和滅來表達簡單的信息。這節課學習一種能表達更復雜信息的器件——LED數碼管

5.3.1 數碼管的基本介紹

先提供一張數碼管原理圖,如圖5-2所示。

wKgZO2kum-iAQGTxAAFipIBWdXA26.jpeg

圖5-2 數碼管原理圖

這是比較常見的數碼管的原理圖,Kingst51開發板子上一共有6個數碼管。前邊有了LED小燈的學習,數碼管學習就會輕松的多了。從圖5-3可以看出,數碼管共有a、b、c、d、e、f、g、dp這么8個段,而實際上,這8個段每一段都是一個LED小燈,所以一個數碼管就是由8個LED小燈組成的。看一下數碼管內部結構的示意圖,如圖5-3。

wKgZPGkum-iASawIAADqxAZ_sMU69.jpeg

圖5-3 數碼管結構示意圖

數碼管分為共陽和共陰兩種,共陰數碼管就是8只LED小燈的陰極是連接在一起的,陰極是公共端,由陽極來控制單個小燈的亮滅。同理,共陽數碼管就是陽極接在一起。圖5-2的數碼管上邊有2個com,這就是數碼管的公共端。為什么有2個呢,一方面是2個可以起到對稱的效果,剛好是10個引腳,另外一個方面,公共端通過的電流較大,初中物理知識有講,并聯電路電流之和等于總電流,用2個com可以把公共電流平均到2個引腳上去,降低單條線路承受的電流。

從開發板的電路圖上能看出來,所用的數碼管都是共陽數碼管,一共有6個,如圖5-4所示。

wKgZO2kum-mAUTKvAAHB0gg_s-s10.jpeg

圖5-4 Kingst51數碼管電路

6個數碼管的com都是接到了正極上,當然了,和LED小燈電路一樣,也是由74HC138控制三極管的導通來控制整個數碼管的使能。先來看最右邊的DS1這個數碼管,原理圖上可以看出,控制DS1的三極管是Q17,控制Q17的引腳是LEDS0,對應到74HC138上的就是U3的Y0輸出,如圖5-5所示。

wKgZPGkum-qAHzIMAAIfWJqObsc92.jpeg

圖5-5 74HC138控制圖

點亮DS1這個數碼管首先要讓LEDS0這個引腳輸出低電平,相信讀者現在可以根據前邊學過的知識獨立把ADDR0、ADDR1、ADDR2、ADDR3、ENLED這4個所需輸入的值寫出來了,真正根據74HC138的手冊實際操作一次,不需要記住這些結論,但是只要遇到根據手冊資料寫一次,慢慢遇到同類芯片就知道如何去解決問題了。

數碼管通常是用來顯示數字的,板子上有6個數碼管,習慣上稱之為6位,那控制位選擇的就是74HC138了。而數碼管內部的8個LED小燈稱之為數碼管的段,數碼管的段選擇(即該段的亮滅)是通過P0口控制。

5.3.2 數碼管的真值表

數碼管的8個段,直接當成8個LED小燈來控制,那就是a、b、c、d、e、f、g、dp一共8個LED小燈。通過圖5-2可以看出,如果點亮b和c這兩個LED小燈,也就是數碼管的b段和c段,其他的所有的段都熄滅的話,就可以讓數碼管顯示出一個數字1,那么這個時候實際上P0的值就是0b11111001,十六進制就是0xF9。那么寫一個程序進去,來看一看數碼管顯示的效果。

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

ENLED = 0; //使能U3,選擇數碼管DS1

ADDR3 = 1;

ADDR2 = 0;

ADDR1 = 0;

ADDR0 = 0;

P0 = 0xF9; //點亮數碼管段b和c

while (1);

}

把這個程序編譯一下,并下載到單片機中,就可以看到程序運行的結果是在最右側的數碼管上顯示了一個數字1。

用同樣的方法,可以把其他的數字字符都在數碼管上顯示出來,而數碼管顯示的數字字符對應給P0的賦值,叫做數碼管的真值表。來列一下Kingst51開發板電路圖的數碼管真值表,注意,這個真值表里顯示的數字都不帶小數點的,如表5-7。

表5-7 數碼管真值表

字符 0 1 2 3 4 5 6 7
數值 0xC0 0xF9 0xA4 0xB0 0x99 0x92 0x82 0xF8
字符 8 9 A B C D E F
數值 0x80 0x90 0x88 0x83 0xC6 0xA1 0x86 0x8E

可以把上邊那個用數碼管顯示數字1程序中的P0的賦值隨便修改成表5-7真值表中的數值,看看顯示的數字的效果。

5.3.3 數碼管的靜態顯示

在第3章學習了74HC138,了解到74HC138在同一時刻只能讓一個輸出口為低電平,也就是說在一個時刻內,只能使能一個數碼管,并根據給出的P0的值來改變這個數碼管的顯示字符,可以將此理解為數碼管的靜態顯示。

數碼管靜態顯示是對應動態顯示而言,靜態顯示對于一兩個數碼管還行,多個數碼管,靜態顯示實現的意義就沒有了。這節課先用一個數碼管的靜態顯示來實現簡單的秒表,為下節課的動態顯示打下基礎。

51單片機C語言編程有一個關鍵字code。前邊課程定義變量的時候,一般用到unsigned char或者unsigned int這兩個關鍵字,這樣定義的變量都是放在單片機的RAM中,程序中可以隨意去改變這些變量的值。但是還有一種數據,在程序中要使用,但是卻不會改變它的值,定義這種數據時可以加一個code關鍵字修飾一下,這個數據就會存儲到單片機的程序空間Flash中,這樣可以大大節省單片機的RAM的使用量,畢竟單片機RAM空間比較小,而程序空間則大的多。那么現在要使用的數碼管真值表,只會使用它們的值,而不需要改變它們,就可以用code關鍵字把它放入Flash中了,具體程序代碼如下。

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

//用數組來存儲數碼管的真值表,數組將在下一章詳細介紹

unsigned char code LedChar[] = {

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

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

};

void main()

{

unsigned char cnt = 0; //記錄T0中斷次數

unsigned char sec = 0; //記錄經過的秒數

ENLED = 0; //使能U3,選擇數碼管DS1

ADDR3 = 1;

ADDR2 = 0;

ADDR1 = 0;

ADDR0 = 0;

TMOD = 0x01; //設置T0為模式1

TH0 = 0xB8; //為T0賦初值0xB800

TL0 = 0x00;

TR0 = 1; //啟動T0

while (1)

{

if (TF0 == 1) //判斷T0是否溢出

{

TF0 = 0; //T0溢出后,清零中斷標志

TH0 = 0xB8; //并重新賦初值

TL0 = 0x00;

cnt++; //計數值自加1

if (cnt >= 50) //判斷T0溢出是否達到50次

{

cnt = 0; //達到50次后計數值清零

P0 = LedChar[sec]; //當前秒數對應的真值表中的值送到P0口

sec++; //秒數記錄自加1

if (sec >= 16) //當秒數超過0x0F(15)后,重新從0開始

{

sec = 0;

}

}

}

}

}


審核編輯 黃宇

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

    關注

    6076

    文章

    45494

    瀏覽量

    670272
  • 數碼管
    +關注

    關注

    32

    文章

    1894

    瀏覽量

    94133
  • 定時器
    +關注

    關注

    23

    文章

    3368

    瀏覽量

    123593
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于單片機的綜合應用程序數碼管【C語言】定時器控制數碼管

    基于單片機的綜合應用程序數碼管【C語言】定時器控制數碼管
    發表于 01-06 13:44 ?27次下載

    LESSON3_數碼管靜態顯示及定時器和中斷應用

    LESSON3_數碼管靜態顯示及定時器和中斷應用
    發表于 02-18 18:21 ?0次下載

    LESSON3_數碼管靜態顯示及定時器和中斷應用

    數碼管靜態顯示及定時器和中斷應用 可以給初學者學習使用 如果有需要可以下載。
    發表于 03-14 10:40 ?1次下載

    LESSON3_數碼管靜態顯示及定時器和中斷應用

    LESSON3_數碼管靜態顯示及定時器和中斷應用。
    發表于 04-29 16:50 ?5次下載

    定時器掃描數碼管(不閃爍)

    定時器掃描數碼管(不閃爍) C51單片機源碼,KEIL源文件,C語言編寫
    發表于 06-20 16:36 ?7次下載

    LESSON3_數碼管靜態顯示及定時器和中斷應用

    數碼管是如何顯示出字符的 數碼管靜態顯示與動態顯示原理 中斷概念 單片機的定時器應用
    發表于 07-01 17:17 ?1次下載

    基于8051的Proteus仿真-定時器控制數碼管顯示

    基于8051的Proteus仿真-定時器控制數碼管顯示
    發表于 09-01 23:33 ?19次下載

    基于SOPC的定時器控制數碼管顯示

    運行在DE1上,通過程序的控制使數碼管顯示,從而實現時鐘的功能,實驗結果表明,基于SOPC的系統環境下,可以利用定時器控制數碼管顯示。此外,還可以根據不同的用戶需求實現不同的功能,方便了對數碼
    發表于 11-13 17:07 ?12次下載
    基于SOPC的<b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>顯示

    定時器1秒計數,數碼管顯示0-999程序代碼【下載】

    定時器1秒計數,數碼管顯示0-999
    發表于 12-20 14:23 ?18次下載

    數碼管顯示的原理靜態顯示及中斷概念單片機的定時器應用視頻教程

    本文檔的主要內容詳細介紹的是數碼管顯示的原理靜態顯示及中斷概念單片機的定時器應用視頻教程包括了:1.數碼管是如何顯示出字符的,2.數碼管靜態顯示與動態顯示原理,3.中斷概念,4.單片機
    發表于 03-26 14:35 ?17次下載
    <b class='flag-5'>數碼管</b>顯示的原理靜態顯示及中斷概念單片機的<b class='flag-5'>定時器</b>應用視頻教程

    使用一個定時器控制數碼管從左到右每位依次顯示的程序免費下載

    本文檔的主要內容詳細介紹的是使用一個定時器控制數碼管從左到右每位依次顯示的程序免費下載。
    發表于 07-29 17:36 ?1次下載
    使用一個<b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>從左到右每位依次顯示的程序免費下載

    定時器控制數碼管動態顯示的仿真電路圖免費下載

    本文檔的主要內容詳細介紹的是定時器控制數碼管動態顯示的仿真電路圖免費下載
    發表于 01-07 11:41 ?12次下載
    <b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>動態顯示的仿真電路圖免費下載

    定時器控制數碼管動態顯示的仿真電路圖免費下載

    本文檔的主要內容詳細介紹的是定時器控制數碼管動態顯示的仿真電路圖免費下載
    發表于 01-07 11:41 ?12次下載
    <b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>動態顯示的仿真電路圖免費下載

    使用定時器控制數碼管顯示的程序和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用定時器控制數碼管顯示的程序和工程文件免費下載。
    發表于 06-10 16:54 ?5次下載
    使用<b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>動<b class='flag-5'>管</b>顯示的程序和工程文件免費下載

    使用定時器控制數碼管動態顯示的程序和工程文件免費下載

    本文檔的主要內容詳細介紹的是使用定時器控制數碼管動態顯示的程序和工程文件免費下載。
    發表于 06-10 16:54 ?19次下載
    使用<b class='flag-5'>定時器</b>控制<b class='flag-5'>數碼管</b>動態顯示的程序和工程文件免費下載