国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個點(diǎn),小白詳解

這篇具有很好參考價值的文章主要介紹了51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個點(diǎn),小白詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

LED點(diǎn)陣介紹:

? ? ? ?LED點(diǎn)陣是由發(fā)光二極管排列組成的顯示器件,在我們生活中的電器中隨處可見,被廣泛用于汽車報站器,廣告屏等。

????????通常用用較多的是8*8點(diǎn)陣,然后使用多個8*8點(diǎn)陣組成不同分辨率的LED點(diǎn)陣顯示屏,比如16*16點(diǎn)陣可以使用4個8*8點(diǎn)陣構(gòu)成。因此理解了8*8LED點(diǎn)陣的工作原理,器他分辨率的LED點(diǎn)陣顯示屏都一樣的。

51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個點(diǎn),小白詳解

????????8*8點(diǎn)陣共有64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對應(yīng)的某一行置1電平,某一列置0電平,則相應(yīng)的二極管就亮;如果將要左上角第一個點(diǎn)點(diǎn)亮亮,則1腳高電平a腳低電平,則第一個點(diǎn)就亮了;如果將要第一行點(diǎn)亮,則第 1 腳要接高電平,而(a、b、c、d、e、f、g、h )這些 引腳接低電平,那么第一行就會點(diǎn)亮;如要將第一列點(diǎn)亮,則第 a 腳接低電平, 而(1、2、3、4、5、6、7、8)接高電平,那么第一列就會點(diǎn)亮。

LED硬件設(shè)計

使用的的資源有:①8*8LED點(diǎn)陣模塊,②74HC595 模塊

74HC595 模塊、8*8LED 點(diǎn)陣模塊電路如下:

51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個點(diǎn),小白詳解

????????從上圖中可以看出,74HC595需要用到的控制管腳是,SER、RCLK、SRCLK直接連接到51單片機(jī)的P3.4-P3.6 IO 口上,輸出端則是直接連接到LED點(diǎn)陣模塊的行端口上,即為LED發(fā)光二極管的陽極,LED點(diǎn)陣的列則為發(fā)光二極管的陰極。

????????想要 控制LED點(diǎn)陣,可以以將單片機(jī)管腳按照74HC595 芯片的通信時序要求來 傳輸數(shù)據(jù),這樣即可控制LED點(diǎn)陣的行的數(shù)據(jù),根據(jù)LED發(fā)光二極管的導(dǎo)通原理,當(dāng)陽極為高電平,陰極為低電平則點(diǎn)亮,否則熄滅。因此通過單片機(jī)P0端口控制點(diǎn)陣列,74HC595可控制點(diǎn)陣行。

? ? ? ? 如果要點(diǎn)亮左上角的一個點(diǎn),那就需要P07這一列為低電平,其余列是高電平,DPh這一行為高電平,其余行為低電平。那P07--P00口輸出就是 0111 1111(ox7f),DPh-DPa輸出就是1000 0000(0x80)

軟件設(shè)計如下:(74HC595部分和ID拓展的代碼一樣,但是RCLK時序有所改變,要讓RCLK下降有效,之前是(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)這里為啥要更換,之前為啥不用,我也沒有搞明白哦,知道的同學(xué)告訴我,謝謝!

/********************************************************************
****************** 實(shí)驗(yàn)名稱:IO 擴(kuò)展(串轉(zhuǎn)并)實(shí)驗(yàn)-74HC595
接線說明
實(shí)驗(yàn)現(xiàn)象:下載程序后,8*8LED 點(diǎn)陣以一行循環(huán)滾動顯示
注意事項(xiàng):LED 點(diǎn)陣旁的 J24 黃色跳線帽短接到 GND 一端
*********************************************************************
******************/
#include "reg52.h"
typedef unsigned int u16; //對系統(tǒng)默認(rèn)數(shù)據(jù)類型進(jìn)行重定義
typedef unsigned char u8;
//定義 74HC595 控制管腳
sbit SRCLK=P3^6; //移位寄存器時鐘輸入
sbit rCLK=P3^5; //存儲寄存器時鐘輸入
sbit SER=P3^4; //串行數(shù)據(jù)輸入
#define LEDDZ_COL_PORT P0 //宏定義LED點(diǎn)陣列控制端口
/********************************************************************
***********
* 函 數(shù) 名 : delay_10us
* 函數(shù)功能 : 延時函數(shù),ten_us=1 時,大約延時 10us
* 輸 入 : ten_us
* 輸 出 : 無
*********************************************************************
**********/
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
/********************************************************************
***********
* 函 數(shù) 名 : delay_ms
* 函數(shù)功能 : ms 延時函數(shù),ms=1 時,大約延時 1ms
* 輸 入 : ten_us
* 輸 出 : 無
* for(j=110;j>0;j--)在for(i=ms;i>0;i--)嵌套這,delay_ms(500),
* 時候ms=500,i=ms 所以i=500,進(jìn)入for(i=ms;i>0;i--),
* 然后在執(zhí)行for(j=110;j>0;j--),進(jìn)行循環(huán)110次一直到j(luò)=0,
* 在退出for(j=110;j>0;j--),
* 在重新執(zhí)行for(i=ms;i>0;i--),一直到到i=0時候,退出for(i=ms;i>0;i--)
*********************************************************************
**********/
void delay_ms(u16 ms)
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}
/********************************************************************
***********
* 函 數(shù) 名 : hc595_write_data(u8 dat)
* 函數(shù)功能 : 向 74HC595 寫入一個字節(jié)的數(shù)據(jù)
* 輸 入 : dat:數(shù)據(jù)
* 輸 出 : 無
*********************************************************************
**********/
 
/********************************************************************
*******************SER=dat>>7(dat向右移7位后賦值給SER)詳解*************
dat是后面要輸入的一個字節(jié)的數(shù)據(jù),hc595_write_data(0x00)如后面的
hc595_write_data(0x01),這時候dat就是(0x01)當(dāng)dat=00000001(0x01)時候,
高位是0,低位是1 ,對應(yīng)按照QH-QA,就是QH低電平,QA高電平,但是74HC595的傳輸
規(guī)律是先從高位在到低位的傳輸,左移1就傳給了QH,這樣QH高電平,QA為低電平,我們
想要QH輸入低電平怎么辦呢?就用把dat>>7,按照右移的規(guī)則(對于不帶字符的數(shù)值,
向右移位時,會在左邊的空位填充0。)那(0x01)就變成0(0X00)一個字節(jié)八位都是0
這樣傳輸給QH就是低電平,
*********************************************************************
**********/
/********************************************************************
*******************dat<<=1(dat向左移一位后在賦值給dat)詳解*************
但是for(i=0;i<8;i++)循環(huán)8次,八位就都是0,QH-QA都是低電平,這樣是不對的,
我們是要QA輸入高電平,這時候就需要每次循環(huán)的時候dat<<=1,每次SER=dat>>7;
執(zhí)行完dat<<=1,例如開始dat=(0x01),執(zhí)行完SER=dat>>7后,在把dat<<=1(dat向
左移一位后在賦值給dat),這樣下次在進(jìn)入SER=dat>>7時候,dat就是dat<<=1(0X02)
一直倒循環(huán)到第7次時候dat也左移了7位,dat變成了10000000(0x80),這時候在進(jìn)入
SER=dat>>7時候,SER就等于1,對應(yīng)QA傳輸,就按照hc595_write_data(0x01)的一樣
低位1,其余都是0的輸入。
*********************************************************************
**********/
/********************************************************************
*******************SRCLK=0,SRCLK=1詳解*******************************
74HC595芯片的傳輸規(guī)則,SER寫入數(shù)據(jù)后,要移位寄存器(SRCLK)時鐘上升沿,才能把
數(shù)據(jù)送到存儲寄存器進(jìn)行輸出,所有我們要先給SRCLK一個低電平,在給一個高電平,就產(chǎn)
生了上升沿,那我們就先SRCLK=0送入低電平;中間延時下,在SRCLK=1送入高電平,
一低一高,這樣就產(chǎn)生時鐘上升沿,就把數(shù)據(jù)送入到存儲寄存器,每次循環(huán)都送入存儲寄存器,
循環(huán)8次,就把8位的數(shù)據(jù)都送到存儲寄存器中了。
中間的delay_10us(1);這里的延時,不要也可以,但是以防出錯這里延時下
*********************************************************************
**********/
/********************************************************************
*******************rCLK=1,rCLK=0詳解*******************************
74HC595芯片的傳輸規(guī)則,如果將前面寫入存儲寄存器數(shù)據(jù)輸出,那存儲寄存器時鐘要
上升沿才能輸出,那我們就先rCLK=0送入低電平;中間延時下,在rCLK=1送入高電平,
一低一高,這樣產(chǎn)生時鐘上升沿,就將前面寫入到寄存器的數(shù)據(jù)輸出了。這里和74HC595DE
 IO拓展代碼有所不一樣,RCLK時序有所改變,要讓RCLK下降有效,之前是
(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)
中間的delay_10us(1);這里的延時,不要也可以,但是以防出錯這里延時下
*********************************************************************
**********/
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)//循環(huán) 8 次即可將一個字節(jié)寫入寄存器中
    {
        SER=dat>>7;//優(yōu)先傳輸一個字節(jié)中的高位
        dat<<=1;//將低位移動到高位        
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);//移位寄存器時鐘上升沿將端口數(shù)據(jù)送入寄存器中
    }
/********************************************************************
    rCLK=0;
    delay_10us(1);
    rCLK=1;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數(shù)據(jù)輸出
    rCLK=0;
********************************************************************/
    rCLK=1;
    delay_10us(1);
    rCLK=0;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數(shù)據(jù)輸出
}
/********************************************************************
***********
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*********************************************************************
**********/
/********************************************************************
*******************LEDDZ_COL_PORT=0x00詳解*******************************
我們在DPa---DPh輸入的是高電平,如果我們要將LED燈點(diǎn)亮,我們要把P0端口全部設(shè)為低電
平,即 LED 陰極為低電平,前面我們宏定義了P0端口,所以這里L(fēng)EDDZ_COL_PORT=0x00就可以
*********************************************************************
**********/
/********************************************************************
*******************hc595_write_data(ghc595_buf[i])詳解***************
我們定義了,數(shù)組ghc595_buf[],把每次輸出的數(shù)據(jù)儲存在里面,通過for循環(huán),依次
輸出,每次寫入新數(shù)據(jù)之前,要先消除前面輸出數(shù)據(jù)點(diǎn)亮LED進(jìn)行消影,所以每次在輸入
數(shù)據(jù)之前,我們先把所有DPa---DPh輸入低電平,來消除前面寄存器緩存數(shù)據(jù),之后在
在寫入新的數(shù)據(jù):這樣就產(chǎn)生了,LED點(diǎn)陣,從下到上,每行依次點(diǎn)亮
*********************************************************************
**********/
void main()
{
    u8 i=0;
    LEDDZ_COL_PORT=0x7f;//將 LED 點(diǎn)陣左邊第一列設(shè)置為 0,即 LED 陰極為低電平,其
余列為 1,即高電平
    while(1)
    {
        for(i=0;i<8;i++)
        {
//將 LED 點(diǎn)陣上邊第一行設(shè)置為 1,即 LED 陽極為高電平,其余行為 0,即低電平
            hc595_write_data(0x80);

        }
    }
}
????????代碼很簡單,與上一章核心代碼是一樣的,這里主要是理解如何讓 LED 點(diǎn)陣 的左上角第一個點(diǎn)點(diǎn)亮,實(shí)際上就是將第一個點(diǎn)對應(yīng)的行為高電平,列為低電平 即可。也就是讓 74HC595 輸出 0X80(1000 0000),這樣點(diǎn)陣第一行就是高電平, 而 P0 口輸出 0X7F(0111 1111),這樣點(diǎn)陣第一列就是低電平,從而讓 LED 點(diǎn)陣第一個點(diǎn)點(diǎn)亮。?

顯示數(shù)字,顯示數(shù)字0:

數(shù)字取模和點(diǎn)亮一個燈類似,但是我們?yōu)榱烁奖愕牟僮?,我們借助一個文字取模軟件”,來獲取行的值,取模軟件的使用方法就不在具體介紹了。在文字取模軟件中,獲取要顯示數(shù)字0,然后將生成的數(shù)據(jù)復(fù)制到我們程序定義的數(shù)組中,如下:

u8 gled_row[8]={0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38};//LED 點(diǎn)陣 顯示數(shù)字 0 的行數(shù)據(jù)

這些數(shù)據(jù)就是上述描繪的數(shù)字0從左到右依次每列對應(yīng)的行數(shù)據(jù)。至于其他數(shù)字或字符及簡單圖形的顯示取模方法與上述類似

既然是動態(tài)掃描,就需要不斷的掃描每列,因此可以把LED點(diǎn)陣的列控制也用數(shù)組存儲起來,為了后面循環(huán)調(diào)用提供方面。根據(jù)數(shù)字 0 取模的數(shù)據(jù)特點(diǎn)是從左至右每列對應(yīng)的行數(shù)據(jù),因此掃描時也應(yīng)該從左至右的順序,如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-486445.html

u8 gled_col [ 8 ]={ 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; //LED 點(diǎn)陣 顯示數(shù)字 0 的列數(shù)據(jù)
列的的數(shù)據(jù)基本上都是固定的,都是從左到右,每列依次進(jìn)行掃描,只用改變行的數(shù)據(jù)就可以生成不同的圖案
/********************************************************************
****************** 實(shí)驗(yàn)名稱:IO 擴(kuò)展(串轉(zhuǎn)并)實(shí)驗(yàn)-74HC595
接線說明
實(shí)驗(yàn)現(xiàn)象:下載程序后,8*8LED 點(diǎn)陣以一行循環(huán)滾動顯示
注意事項(xiàng):LED 點(diǎn)陣旁的 J24 黃色跳線帽短接到 GND 一端
*********************************************************************
******************/
#include "reg52.h"
typedef unsigned int u16; //對系統(tǒng)默認(rèn)數(shù)據(jù)類型進(jìn)行重定義
typedef unsigned char u8;
//定義 74HC595 控制管腳
sbit SRCLK=P3^6; //移位寄存器時鐘輸入
sbit rCLK=P3^5; //存儲寄存器時鐘輸入
sbit SER=P3^4; //串行數(shù)據(jù)輸入
#define LEDDZ_COL_PORT P0 //宏定義LED點(diǎn)陣列控制端口
u8 gled_row[8]={0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00};//LED 點(diǎn)陣顯示數(shù)字 0 的行數(shù)據(jù)
u8 gled_col[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED 點(diǎn)陣顯示數(shù)字 0 的列數(shù)據(jù)
/********************************************************************
***********
* 函 數(shù) 名 : delay_10us
* 函數(shù)功能 : 延時函數(shù),ten_us=1 時,大約延時 10us
* 輸 入 : ten_us
* 輸 出 : 無
*********************************************************************
**********/
void delay_10us(u16 ten_us)
{
    while(ten_us--);
}
/********************************************************************
***********
* 函 數(shù) 名 : delay_ms
* 函數(shù)功能 : ms 延時函數(shù),ms=1 時,大約延時 1ms
* 輸 入 : ten_us
* 輸 出 : 無
* for(j=110;j>0;j--)在for(i=ms;i>0;i--)嵌套這,delay_ms(500),
* 時候ms=500,i=ms 所以i=500,進(jìn)入for(i=ms;i>0;i--),
* 然后在執(zhí)行for(j=110;j>0;j--),進(jìn)行循環(huán)110次一直到j(luò)=0,
* 在退出for(j=110;j>0;j--),
* 在重新執(zhí)行for(i=ms;i>0;i--),一直到到i=0時候,退出for(i=ms;i>0;i--)
*********************************************************************
**********/
void delay_ms(u16 ms)
{
    u16 i,j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}
/********************************************************************
***********
* 函 數(shù) 名 : hc595_write_data(u8 dat)
* 函數(shù)功能 : 向 74HC595 寫入一個字節(jié)的數(shù)據(jù)
* 輸 入 : dat:數(shù)據(jù)
* 輸 出 : 無
*********************************************************************
**********/
 
/********************************************************************
*******************SER=dat>>7(dat向右移7位后賦值給SER)詳解*************
dat是后面要輸入的一個字節(jié)的數(shù)據(jù),hc595_write_data(0x00)如后面的
hc595_write_data(0x01),這時候dat就是(0x01)當(dāng)dat=00000001(0x01)時候,
高位是0,低位是1 ,對應(yīng)按照QH-QA,就是QH低電平,QA高電平,但是74HC595的傳輸
規(guī)律是先從高位在到低位的傳輸,左移1就傳給了QH,這樣QH高電平,QA為低電平,我們
想要QH輸入低電平怎么辦呢?就用把dat>>7,按照右移的規(guī)則(對于不帶字符的數(shù)值,
向右移位時,會在左邊的空位填充0。)那(0x01)就變成0(0X00)一個字節(jié)八位都是0
這樣傳輸給QH就是低電平,
*********************************************************************
**********/
/********************************************************************
*******************dat<<=1(dat向左移一位后在賦值給dat)詳解*************
但是for(i=0;i<8;i++)循環(huán)8次,八位就都是0,QH-QA都是低電平,這樣是不對的,
我們是要QA輸入高電平,這時候就需要每次循環(huán)的時候dat<<=1,每次SER=dat>>7;
執(zhí)行完dat<<=1,例如開始dat=(0x01),執(zhí)行完SER=dat>>7后,在把dat<<=1(dat向
左移一位后在賦值給dat),這樣下次在進(jìn)入SER=dat>>7時候,dat就是dat<<=1(0X02)
一直倒循環(huán)到第7次時候dat也左移了7位,dat變成了10000000(0x80),這時候在進(jìn)入
SER=dat>>7時候,SER就等于1,對應(yīng)QA傳輸,就按照hc595_write_data(0x01)的一樣
低位1,其余都是0的輸入。
*********************************************************************
**********/
/********************************************************************
*******************SRCLK=0,SRCLK=1詳解*******************************
74HC595芯片的傳輸規(guī)則,SER寫入數(shù)據(jù)后,要移位寄存器(SRCLK)時鐘上升沿,才能把
數(shù)據(jù)送到存儲寄存器進(jìn)行輸出,所有我們要先給SRCLK一個低電平,在給一個高電平,就產(chǎn)
生了上升沿,那我們就先SRCLK=0送入低電平;中間延時下,在SRCLK=1送入高電平,
一低一高,這樣就產(chǎn)生時鐘上升沿,就把數(shù)據(jù)送入到存儲寄存器,每次循環(huán)都送入存儲寄存器,
循環(huán)8次,就把8位的數(shù)據(jù)都送到存儲寄存器中了。
中間的delay_10us(1);這里的延時,不要也可以,但是以防出錯這里延時下
*********************************************************************
**********/
/********************************************************************
*******************rCLK=1,rCLK=0詳解*******************************
74HC595芯片的傳輸規(guī)則,如果將前面寫入存儲寄存器數(shù)據(jù)輸出,那存儲寄存器時鐘要
上升沿才能輸出,那我們就先rCLK=0送入低電平;中間延時下,在rCLK=1送入高電平,
一低一高,這樣產(chǎn)生時鐘上升沿,就將前面寫入到寄存器的數(shù)據(jù)輸出了。這里和74HC595DE IO拓展代碼有所不一樣,RCLK時序有所改變,要讓RCLK下降有效,之前是(rCLK=0,rCLK=1)更改成(rCLK=0,rCLK=1,rCLK=0)或者(rCLK=1,rCLK=0)
中間的delay_10us(1);這里的延時,不要也可以,但是以防出錯這里延時下
*********************************************************************
**********/
void hc595_write_data(u8 dat)
{
    u8 i=0;
    for(i=0;i<8;i++)//循環(huán) 8 次即可將一個字節(jié)寫入寄存器中
    {
        SER=dat>>7;//優(yōu)先傳輸一個字節(jié)中的高位
        dat<<=1;//將低位移動到高位        
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);//移位寄存器時鐘上升沿將端口數(shù)據(jù)送入寄存器中
    }
/********************************************************************
    rCLK=0;
    delay_10us(1);
    rCLK=1;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數(shù)據(jù)輸出
    rCLK=0;
********************************************************************/
    rCLK=1;
    delay_10us(1);
    rCLK=0;//存儲寄存器時鐘上升沿將前面寫入到寄存器的數(shù)據(jù)輸出
}
/********************************************************************
***********
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*********************************************************************
**********/
/********************************************************************
*******************LEDDZ_COL_PORT=0x00詳解*******************************
我們在DPa---DPh輸入的是高電平,如果我們要將LED燈點(diǎn)亮,我們要把P0端口全部設(shè)為低電
平,即 LED 陰極為低電平,前面我們宏定義了P0端口,所以這里L(fēng)EDDZ_COL_PORT=0x00就可以
*********************************************************************
**********/
/********************************************************************
*******************hc595_write_data(ghc595_buf[i])詳解***************
我們定義了,數(shù)組ghc595_buf[],把每次輸出的數(shù)據(jù)儲存在里面,通過for循環(huán),依次
輸出,每次寫入新數(shù)據(jù)之前,要先消除前面輸出數(shù)據(jù)點(diǎn)亮LED進(jìn)行消影,所以每次在輸入
數(shù)據(jù)之前,我們先把所有DPa---DPh輸入低電平,來消除前面寄存器緩存數(shù)據(jù),之后在
在寫入新的數(shù)據(jù):這樣就產(chǎn)生了,LED點(diǎn)陣,從下到上,每行依次點(diǎn)亮
*********************************************************************
**********/
void main()
{
    u8 i=0;
    LEDDZ_COL_PORT=0x7f;//將 LED 點(diǎn)陣左邊第一列設(shè)置為 0,即 LED 陰極為低電平,其
余列為 1,即高電平
    while(1)
    {
        for(i=0;i<8;i++)
        {
            LEDDZ_COL_PORT=gled_col[i];//傳送列選數(shù)據(jù)
            hc595_write_data(gled_row[i]);//傳送行選數(shù)據(jù)
            delay_10us(100);//延時一段時間,等待顯示穩(wěn)定
            hc595_write_data(0x00);//消影
        }
    }
}
????????實(shí)驗(yàn)代碼與前面點(diǎn)亮一個點(diǎn)的核心代碼是一樣的,這里重點(diǎn)要理解動態(tài)掃 描,如果動態(tài)數(shù)碼管代碼能理解,這個也就沒有任何問題。main 函數(shù)中主要是 在 while 循環(huán)內(nèi)從上至下,從左至右不斷掃描 8 行、列,即首先設(shè)置左邊第一列 有效(P0.7 輸出低電平),其余列無效(P0.6-P0.0 輸出高電平),然后通過 74HC595 輸出該列對應(yīng)的行數(shù)據(jù),延時一段時間等待顯示穩(wěn)定,最后清除列對應(yīng) 的行數(shù)據(jù),即消影。從整個流程下來與動態(tài)數(shù)碼管顯示程序是很相似的。

到了這里,關(guān)于51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個點(diǎn),小白詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 51單片機(jī)LED點(diǎn)陣屏

    51單片機(jī)LED點(diǎn)陣屏

    LED點(diǎn)陣屏是一種由許多小型LED燈組成的矩陣式顯示屏。這些LED燈可以是單色、雙色或全彩的,它們排列成行和列的網(wǎng)格,可以根據(jù)需要點(diǎn)亮來顯示圖像、文字或動畫等內(nèi)容。LED點(diǎn)陣屏廣泛應(yīng)用于戶外廣告牌、室內(nèi)顯示、交通信號燈、電子價格標(biāo)簽和其他需要顯示信息的場合。

    2024年01月23日
    瀏覽(28)
  • 【51單片機(jī)】LED點(diǎn)陣屏

    【51單片機(jī)】LED點(diǎn)陣屏

    ??專欄【51單片機(jī)】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【W(wǎng)aiting For Love】 大一同學(xué)小吉,歡迎并且感謝大家指出我的問題?? 目錄 ??74HC595圖片 ??74HC595原理 ??”上升沿“是什么意思 ??LED點(diǎn)陣屏顯示圖形? ??現(xiàn)象 ???代碼(三部分) main.c? Del

    2024年02月02日
    瀏覽(28)
  • 51單片機(jī)——LED點(diǎn)陣屏(顯示滾動畫面)

    51單片機(jī)——LED點(diǎn)陣屏(顯示滾動畫面)

    目錄 ? 一、關(guān)于數(shù)碼管、LED點(diǎn)陣屏顯示的注意點(diǎn) 二、功能介紹 三、主要模塊的介紹 3.1 74HC595模塊和點(diǎn)陣屏顯示函數(shù) 3.1.1 74HC595介紹 3.1.2 點(diǎn)陣屏顯示函數(shù)MatrixLED() 3.2定時器中斷模塊 四、程序?qū)崿F(xiàn) 五、效果展示 ? 一定要消影,不然顯示的畫面有重影。不管是數(shù)碼管還是LED點(diǎn)陣

    2023年04月17日
    瀏覽(24)
  • 51單片機(jī)    8*8LED點(diǎn)陣(入門教學(xué))

    51單片機(jī) 8*8LED點(diǎn)陣(入門教學(xué))

    LED 點(diǎn)陣介紹 LED 點(diǎn)陣是由發(fā)光二極管排列組成的顯示器件,在我們?nèi)粘I畹碾娖髦须S 處可見,被廣泛應(yīng)用于汽車報站器,廣告屏等。 通常應(yīng)用較多的是 8*8 點(diǎn)陣,然后使用多個 8*8 點(diǎn)陣可組成不同分辨率的 LED 點(diǎn)陣顯示屏,比如16*16 點(diǎn)陣可以使用 4 個 8*8 點(diǎn)陣構(gòu)成。因此理解

    2024年02月02日
    瀏覽(23)
  • 51單片機(jī)學(xué)習(xí)--LED點(diǎn)陣屏顯示圖形&動畫

    51單片機(jī)學(xué)習(xí)--LED點(diǎn)陣屏顯示圖形&動畫

    為了通用性考慮,需要把用到的幾個口用特殊位聲明來重新命名,由于RCLK在頭文件中已有定義,所以這里把P3^5聲明成RCK吧。。這樣的做法可以提高可讀性 接下來編寫74HC595的輸入函數(shù) 執(zhí)行完八次循環(huán)后數(shù)據(jù)就會存到移位寄存器里面了,接下來要輸出只需要給RCLK一個高電平即

    2024年02月14日
    瀏覽(37)
  • 51單片機(jī)8*8 LED點(diǎn)陣實(shí)現(xiàn)原理講解

    51單片機(jī)8*8 LED點(diǎn)陣實(shí)現(xiàn)原理講解

    本篇文章將為大家講解LED8*8點(diǎn)陣的使用方法。 LED 8 8點(diǎn)陣是由64個LED燈珠組成的,它們排列在一個8 8的矩陣中。每個LED燈珠都可以獨(dú)立控制,因此可以通過控制不同的LED燈珠來顯示不同的圖形、數(shù)字、字母等。 LED 8 8點(diǎn)陣的原理是利用LED燈珠的發(fā)光特性,通過控制LED燈珠的亮滅

    2024年02月09日
    瀏覽(21)
  • 【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動畫顯示】】

    【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動畫顯示】】

    我們先搞清楚74HC595的原理 sfr 特殊功能寄存器聲明 sbit 特殊位聲明 就舉個例子,我們在之前的各種測試中對LED進(jìn)行控制會直接輸入P2=什么什么,那我想問你怎么知道P2口控制的就是LED呢,其實(shí)這些就是已經(jīng)在內(nèi)部聲明完成了,我們可以直接拿來使用 內(nèi)部

    2024年02月11日
    瀏覽(15)
  • 51單片機(jī)點(diǎn)亮LED燈

    51單片機(jī)點(diǎn)亮LED燈

    目錄 前言 一、點(diǎn)亮一個LED 二、LED閃爍 三、LED流水燈 四、獨(dú)立按鍵控制LED 獨(dú)立按鍵控制LED亮滅 獨(dú)立按鍵控制LED狀態(tài) 獨(dú)立按鍵控制LED以二進(jìn)制形式顯示 獨(dú)立按鍵控制LED狀態(tài)循環(huán)移位 總結(jié) ? ????????嵌入式學(xué)習(xí)的入門就是點(diǎn)亮LED燈,就好比學(xué)習(xí)編程語言敲 “Hello world”

    2024年02月06日
    瀏覽(29)
  • 51單片機(jī)(二)成功點(diǎn)亮LED

    51單片機(jī)(二)成功點(diǎn)亮LED

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機(jī)的過程,其中包括51單片機(jī)和STM32單片機(jī)兩部分;建議先學(xué)習(xí)51單片機(jī),其是STM32等高級單片機(jī)的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機(jī),且有一定C語言基礎(chǔ)的的童鞋

    2023年04月25日
    瀏覽(22)
  • 三、51單片機(jī)用74HC595控制LED點(diǎn)陣

    三、51單片機(jī)用74HC595控制LED點(diǎn)陣

    (1)外觀 (2)作用 LED點(diǎn)陣通過LED(發(fā)光二極管)組成,以燈珠亮滅來顯示文字、圖片等,LED點(diǎn)陣顯示被廣泛應(yīng)用于各種公共場合,如汽車報站器、廣告屏以及公告牌等。 以8*8LED點(diǎn)陣為例。 (1)單片機(jī)端口直接驅(qū)動。驅(qū)動8*8的點(diǎn)陣需要2個IO端口(16個IO口)。 (2)使用串轉(zhuǎn)并移位鎖存器驅(qū)

    2024年02月03日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包