91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

第7章 變量進階與點陣LED(7.3 7.4)

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

掃碼添加小助手

加入工程師交流群

7.3點陣的初步認識
點陣LED顯示屏作為一種現(xiàn)代電子媒體,具有靈活的顯示面積(可任意分割和拼裝)、高亮度、長壽命、數(shù)字化、實時性等特點,應(yīng)用非常廣泛。
通過學習LED小燈和LED數(shù)碼管后,再學習LED點陣就要輕松得多了。一個數(shù)碼管是8個LED組成,同理,一個8*8的點陣就是由64個LED小燈組成。圖7-1就是一個點陣LED最小單元,即一個8*8的點陣LED,圖7-2是它的內(nèi)部結(jié)構(gòu)原理圖。

圖7-1 8*8LED點陣外觀


圖7-2 8*8點陣結(jié)構(gòu)原理圖


從圖7-2上可以看出,其實點陣LED點亮原理還是很簡單的。在圖中大方框外側(cè)的就是點陣LED的引腳號,左側(cè)的8個引腳是接的內(nèi)部LED的陽極,上側(cè)的8個引腳接的是內(nèi)部LED的陰極。那么如果把9腳置成高電平、13腳置成低電平的話,左上角的那個LED小燈就會亮了。下面就用程序來實現(xiàn)一下,特別注意,控制點陣左側(cè)引腳的74HC138是原理圖上的U4,8個引腳自上而下依次由U4的Y0~Y7輸出來控制。
#include

sbit LED = P0^0;
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、U4兩片74HC138總使能
ADDR3 = 0; //使能U4使之正常輸出
ADDR2 = 0; //經(jīng)U4的Y0輸出開啟三極管Q10
ADDR1 = 0;
ADDR0 = 0;
LED = 0; //向P0.0寫入0來點亮左上角的一個點
while(1); //程序停止在這里
}
同樣的方法,通過對P0的整體賦值可以一次點亮點陣的一行,這次用程序來點亮點陣的第二行,對應(yīng)的就需要編號U4的74HC138在其Y1引腳輸出低電平了。
#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、U4兩片74HC138總使能
ADDR3 = 0; //使能U4使之正常輸出
ADDR2 = 0; //經(jīng)U4的Y1輸出開啟三極管Q11
ADDR1 = 0;
ADDR0 = 1;
P0 = 0x00; //向P0寫入0來點亮一行
while(1); //程序停止在這里
}
從這里可以逐步發(fā)現(xiàn)點陣的控制原理了。前面講了一個數(shù)碼管就是8個LED小燈,一個點陣是64個LED小燈。同樣的道理,還可以把一個點陣理解成是8個數(shù)碼管。經(jīng)過前面的學習已經(jīng)掌握了6個數(shù)碼管同時顯示的方法,那8個數(shù)碼管也應(yīng)該輕輕松松了。下面就利用定時器中斷和數(shù)碼管動態(tài)顯示的原理來把這個點陣全部點亮。
#include

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
EA = 1; //使能總中斷
ENLED = 0; //使能U4,選擇LED點陣
ADDR3 = 0; //因為需要動態(tài)改變ADDR0-2的值,所以不需要再初始化了
TMOD = 0x01; //設(shè)置T0為模式1
TH0 = 0xFC; //為T0賦初值0xFC67,定時1ms
TL0 = 0x67;
ET0 = 1; //使能T0中斷
TR0 = 1; //啟動T0
while (1); //程序停在這里,等待定時器中斷
}
/* 定時器0中斷服務(wù)函數(shù) */
void InterruptTimer0() interrupt 1
{
static unsigned char i = 0; //動態(tài)掃描的索引

TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
//以下代碼完成LED點陣動態(tài)掃描刷新
P0 = 0xFF; //顯示消隱
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=0x00; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=0x00; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=0x00; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=0x00; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=0x00; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=0x00; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=0x00; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=0x00; break;
default: break;
}
}
7.4點陣的圖形顯示
LED小燈可以實現(xiàn)流水燈,數(shù)碼管可以顯示多位數(shù)字,點陣LED可以顯示一些花樣。要顯示花樣,往往要先做出一些小圖形,這些小圖形的數(shù)據(jù)要轉(zhuǎn)換到程序當中,這時就需要取模軟件。給大家介紹一款簡單的取模軟件,這種取模軟件在網(wǎng)上都可以下載到,其操作界面如圖7-3所示。

wKgZO2k6aj2ANzdyAACSQccYAqE943.png圖7-3 ?字模提取軟件界面


單擊“新建圖像”菜單,根據(jù)開發(fā)板上的點陣,把寬度和高度分別改成8,然后點擊“確定”,如圖7-4所示。

wKgZPGk6amqAFnjZAADF6OIE0Qo900.png圖7-4 ?新建圖形


單擊左側(cè)的“模擬動畫”菜單,再點擊“放大格點”選項,一直放大到最大,那就可以在8*8的點陣圖形中用鼠標填充黑點畫圖形了,如圖7-5所示。

wKgZO2k6aoWAScKRAACrFyAp4-Q519.png圖7-5 ?字模提取軟件畫圖


經(jīng)過一番精心設(shè)計,畫出來一個心形圖形,并且填充滿,最終出現(xiàn)想要的效果圖,如圖7-6所示。

wKgZPGk6aqOAGuwEAACfyot4b2o870.png圖7-6 ?心型圖形


由于取模軟件是把黑色取為1,白色取為0,但點陣是1對應(yīng)LED熄滅,0對應(yīng)LED點亮,而這里需要的是一顆點亮的“心”,所以要選“修改圖像”菜單里的“黑白反顯圖像”這個選項,再點擊“基本操作”菜單里邊的“保存圖像”可以把設(shè)計好的圖片進行保存,如圖7-7所示。

wKgZPGk6asOAL732AADn5Ei94Ec897.png圖7-7 ?保存圖形


保存文件只是為了再次使用或修改使方便,當然也可以不保存。操作完了這一步后,點擊“參數(shù)設(shè)置”菜單里的“其他選項”,如圖7-8所示。

wKgZPGk6at6ASv_fAAE4pjDGMIA623.png圖7-8 ?選項設(shè)置


這里的選項,要結(jié)合圖7-2來進行設(shè)置,可以看到P0口控制的是一行,所以選擇“橫向取?!保绻刂频氖且涣?,就要選“縱向取模”。選中“字節(jié)倒序”這個選項,是因為圖7-2中左邊是低位DB0,右邊是高位DB7,所以是字節(jié)倒序,其它兩個選項自己了解,點確定后,選擇“取模方式”這個菜單,點一下“C51格式”后,在“點陣生成區(qū)”自動產(chǎn)生了8個字節(jié)的數(shù)據(jù),這8個字節(jié)的數(shù)據(jù)就是取出來的“?!?,如圖7-9所示。

wKgZPGk6avqAZ0upAACsUQXuIi4350.png圖7-9 ?取模結(jié)果


大家注意,雖然用了軟件來取模,但是也得知道其原理是什么,在這個圖片里,黑色的一個格子表示一位二進制的1,白色的一個格子表示一位二進制的0。第一個字節(jié)是0xFF,其實就是這個8*8圖形的第一行,全黑就是0xFF;第二個字節(jié)是0x99,低位在左邊,高位在右邊,黑色的表示1,白色的表示0,就組成了0x99這個數(shù)值。
那么下面就用程序把這些數(shù)據(jù)依次送到點陣上去,看看運行效果如何。
#include

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

unsigned char code image[] = { //圖片的字模表
0xFF, 0x99, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xE7
};

void main()
{
EA = 1; //使能總中斷
ENLED = 0; //使能U4,選擇LED點陣
ADDR3 = 0;
TMOD = 0x01; //設(shè)置T0為模式1
TH0 = 0xFC; //為T0賦初值0xFC67,定時1ms
TL0 = 0x67;
ET0 = 1; //使能T0中斷
TR0 = 1; //啟動T0
while (1);
}
/* 定時器0中斷服務(wù)函數(shù) */
void InterruptTimer0() interrupt 1
{
static unsigned char i = 0; //動態(tài)掃描的索引

TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
//以下代碼完成LED點陣動態(tài)掃描刷新
P0 = 0xFF; //顯示消隱
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[7]; break;
default: break;
}
}
對于8*8的點陣,可以顯示一些簡單的圖形,字符等。但大部分漢字通常要用到16*16個點,8*8的點陣只能顯示一些簡單筆畫的漢字。使用大屏顯示漢字的方法和小屏的方法是類似的,所需要做的只是按照相同的原理來擴展行數(shù)和列數(shù)而已。


審核編輯 黃宇

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

    關(guān)注

    243

    文章

    24592

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    VK1616 點陣數(shù)顯LED驅(qū)動IC可支持7SEG×4GRID的點陣LED顯示面板

    ?VK1616是一種數(shù)碼管或點陣LED驅(qū)動控制專用芯片,內(nèi)部集 成有3線串行接口、數(shù)據(jù)鎖存器、LED驅(qū)動等電路。SEG腳接 LED陽極,GRID腳接
    的頭像 發(fā)表于 01-12 16:17 ?179次閱讀
    VK1616 <b class='flag-5'>點陣</b>數(shù)顯<b class='flag-5'>LED</b>驅(qū)動IC可支持<b class='flag-5'>7</b>SEG×4GRID的<b class='flag-5'>點陣</b><b class='flag-5'>LED</b>顯示面板

    8 函數(shù)進階與按鍵(8.1 8.2)

    用戶與單片機之間的信息交互需要依賴于兩類設(shè)備:輸入設(shè)備和輸出設(shè)備。前邊講的LED小燈、數(shù)碼管、點陣都是輸出設(shè)備,本章就來學習一下最常用的輸入設(shè)備——按鍵,同時還會學到一些硬件電路的基礎(chǔ)知識與C語言
    的頭像 發(fā)表于 12-18 11:27 ?308次閱讀
    <b class='flag-5'>第</b>8<b class='flag-5'>章</b> 函數(shù)<b class='flag-5'>進階</b>與按鍵(8.1 8.2)

    7 變量進階點陣LED(7.5 7.6)

    移動 7.4節(jié)介紹了如何在點陣上畫一個?形,有時候希望這些顯示是動起來的,而不是靜止的。對于點陣本身已經(jīng)沒有多少的知識點可以介紹了,主要就是編程算法來解決問題。比如現(xiàn)在要讓點陣顯示一個
    的頭像 發(fā)表于 12-17 16:51 ?3419次閱讀
    <b class='flag-5'>第</b><b class='flag-5'>7</b><b class='flag-5'>章</b> <b class='flag-5'>變量</b><b class='flag-5'>進階</b>與<b class='flag-5'>點陣</b><b class='flag-5'>LED</b>(7.5 7.6)

    7 變量進階點陣LED(7.1 7.2)

    走在馬路上的時候,經(jīng)常會看到馬路兩側(cè)有一些LED點陣的廣告牌,這些廣告牌看起來絢爛奪目,非常吸引人,而且還會變化很多種不同的顯示方式。本章就會學習到點陣LED的控制方式,同時也會學習C
    的頭像 發(fā)表于 12-10 16:25 ?350次閱讀

    FZH367 具有獨立自動呼吸功能的LED(12×16)點陣驅(qū)動芯片 原廠技術(shù)支持

    概述 型號:FZH367FZH367是一種具有獨立自動呼吸功能的LED(12×16)點陣驅(qū)動芯片。芯片通過I2C協(xié)議控制每個LED實現(xiàn) 3 種自動呼吸模式及PMW模式的切換控制。此外,芯片具備
    發(fā)表于 11-18 09:18

    原廠 FZH365 具有獨立自動呼吸功能的LED(12×12)點陣驅(qū)動芯片

    是一種具有獨立自動呼吸功能的LED(12×12)點陣驅(qū)動芯片。芯片通過I2C協(xié)議控制每個 LED實現(xiàn) 3 種自動呼吸模式及PMW模式的切換控制。此外,芯片具備對每一個LED的開短路檢
    發(fā)表于 11-17 09:38

    原廠 FZH364 一款8×8點陣恒流LED驅(qū)動芯片

    )FZH364是一款8×8點陣恒流LED驅(qū)動芯片。可廣泛應(yīng)用于各種單色調(diào)光LED顯示系統(tǒng),或RGB 全彩LED顯示系統(tǒng)。每顆LED都可以通過
    發(fā)表于 11-17 09:34

    2 點亮你的LED(2.5)

    程序5個步驟: 1步:芯片型號,選擇STC89C52RC系列下的STC89C52RC/LE52RC,一定不能選錯。 2步:掃描串口,根據(jù)查到的
    的頭像 發(fā)表于 10-16 10:58 ?505次閱讀
    <b class='flag-5'>第</b>2<b class='flag-5'>章</b> 點亮你的<b class='flag-5'>LED</b>(2.5)

    2 點亮你的LED(2.3 2.4)

    2.3?LED小燈 LED(light-emitting diode),即發(fā)光二極管,俗稱LED小燈,它的種類很多,參數(shù)也不盡相同,Kingst51開發(fā)板上用的是普通的貼片發(fā)光二極管。這種二極管通常
    的頭像 發(fā)表于 10-15 14:37 ?987次閱讀
    <b class='flag-5'>第</b>2<b class='flag-5'>章</b> 點亮你的<b class='flag-5'>LED</b>(2.3 2.4)

    2 點亮你的LED

    本章的標題是點亮LED,雖然任務(wù)很簡單,但是需要了解的單片機基礎(chǔ)知識卻很多,特別是對于初學者,剛開始要在頭腦中建立一個單片機的概念,然后通過點亮一個LED小燈來增加初學者對單片機的興趣和自信
    的頭像 發(fā)表于 10-13 15:52 ?509次閱讀
    <b class='flag-5'>第</b>2<b class='flag-5'>章</b>  點亮你的<b class='flag-5'>LED</b>

    Texas Instruments TPS92402 LED點陣控制器數(shù)據(jù)手冊

    Texas Instruments TPS92402 LED點陣控制器支持8通道獨立照明解決方案,提供高達2.5A像素級LED調(diào)光控制,具有4.5V至65V的寬輸入范圍。該器件包括一串八個串聯(lián)的集成
    的頭像 發(fā)表于 07-17 15:56 ?749次閱讀
    Texas Instruments TPS92402 <b class='flag-5'>LED</b><b class='flag-5'>點陣</b>控制器數(shù)據(jù)手冊

    Texas Instruments TPS92401 LED點陣控制器數(shù)據(jù)手冊

    FET為單個LED提供PWM調(diào)光功能。TPS92401點陣控制器包含一個用于系統(tǒng)時鐘的內(nèi)部振蕩器,可支持高達16位的集成PWM 發(fā)生器,其可編程PWM頻率高達60kHz。這些LED點陣
    的頭像 發(fā)表于 07-14 14:38 ?787次閱讀
    Texas Instruments TPS92401 <b class='flag-5'>LED</b><b class='flag-5'>點陣</b>控制器數(shù)據(jù)手冊

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-130 GPIO的調(diào)試方法

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-130 GPIO的調(diào)試方法
    的頭像 發(fā)表于 06-03 11:32 ?1285次閱讀
    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-<b class='flag-5'>第</b>130<b class='flag-5'>章</b> GPIO的調(diào)試方法

    RK3568驅(qū)動指南|驅(qū)動基礎(chǔ)進階篇-進階7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用

    RK3568驅(qū)動指南|驅(qū)動基礎(chǔ)進階篇-進階7 向系統(tǒng)中添加一個系統(tǒng)調(diào)用
    的頭像 發(fā)表于 05-21 14:15 ?700次閱讀
    RK3568驅(qū)動指南|驅(qū)動基礎(chǔ)<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b><b class='flag-5'>7</b> 向系統(tǒng)中添加一個系統(tǒng)調(diào)用

    單片機外圍電路設(shè)計 (2版)

    及智能傳感器的接口技術(shù)。4闡述單片機測控系統(tǒng)的設(shè)計。5闡述數(shù)據(jù)采集系統(tǒng)及新穎檢測電路的設(shè)計。6
    發(fā)表于 04-18 16:16