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

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

這篇具有很好參考價(jià)值的文章主要介紹了【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動(dòng)畫顯示】】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

LED點(diǎn)陣屏幕和驅(qū)動(dòng)代碼

我們先搞清楚74HC595的原理
sfr 特殊功能寄存器聲明

sbit 特殊位聲明
就舉個(gè)例子,我們?cè)谥暗母鞣N測試中對(duì)LED進(jìn)行控制會(huì)直接輸入P2=什么什么,那我想問你怎么知道P2口控制的就是LED呢,其實(shí)這些就是已經(jīng)在內(nèi)部聲明完成了,我們可以直接拿來使用 
內(nèi)部已經(jīng)聲明完成了
sfr P0=0x80;
聲明P0口寄存器,物理地址為0x80
sbit P0_1=0x81;
聲明P0寄存器的第一位
因?yàn)閮?nèi)部已經(jīng)偷偷將其進(jìn)行了地址編碼了現(xiàn)在我們還與其他的方法實(shí)現(xiàn)
可位尋址和不可位尋址
因?yàn)槲挥?位,我們?cè)谶M(jìn)行設(shè)計(jì)的時(shí)候不可能完全照顧到每一位的方方面面,所以在設(shè)計(jì)的時(shí)候就已經(jīng)弱化了位數(shù)的概念,在每8個(gè)寄存器中,只有一個(gè)可位尋址的。
就像我們以前的TCON是可位尋址的
而TMOD是不可位
我們先寫一個(gè)

void _74HC595_WriteByte(unsigned char Byte)

{
//首先把數(shù)值賦給SER 而且有種入棧高位在前
//怎么取出第八位就是用
//因?yàn)樗皇钦f的那種地可尋

unsigned char i;
    for(i=0;i<8;i++)
    {
        SER=Byte&(0x80>>i);
        SCK=1;
        SCK=0;
    }
  RCK=1;
    RCK=0;    
}

這個(gè)目的就是我們寫入的數(shù)據(jù)都會(huì)通過SER進(jìn)入這幾個(gè)引腳上
然后我們?cè)賹懸粋€(gè)

void MatrixLED_Showcolumn(unsigned char column , Data)
{
_74HC595_WriteByte(Data);
    P0=~(0x80>>column);
}

【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動(dòng)畫顯示】】
SER輸入的第一個(gè)數(shù)字是D7 然后依次類推
【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動(dòng)畫顯示】】
我懂了這兩個(gè)組合才可以生成一系列的數(shù)字
第一個(gè)相當(dāng)于是對(duì)行進(jìn)行操作
就是你輸入的后入先出 第一個(gè)是最大的,依次
下面這個(gè)代碼的作用是控制列 用來確定列的一些信息
MatrixLED_Showcolumn(0,0xAA);
所以我在輸入這句話之后,得出的結(jié)論是 先鎖定第0行再確定燈是10101010 因?yàn)槭?6進(jìn)制 ,
我覺得我發(fā)現(xiàn)一個(gè)問題就是 我并不是特別需要考慮后入先出的問題 因?yàn)槲业臒羰荄7 D6-----D0如此排列的 maybe 我們只要按照自己的常規(guī)思路去搭建就行了
and 為什么你說是0就是第0列 原因在這里
因?yàn)槲矣玫氖荘0=~(0x80>>column);
而例如我們選擇了P7 那相當(dāng)于把P7置于0 其他位上都是1 就是0111 1111
相對(duì)來說豈不是 1000 0000 的翻版
我選擇第1列 1011 1111相當(dāng)于0100 0000 的翻版 很合理
所以是如此選擇
我們每次進(jìn)行亮燈之后 我們都需要即時(shí)把燈的信息更新歸位?不然會(huì)影響下一次的操作
就像之前的那個(gè)一樣 一閃一閃不方便
我們就像之前做數(shù)字燈管,進(jìn)行 段選 位選 段選 位選 段選 位選 中間有一個(gè)小小的隔開的操作 以便快閃的發(fā)生
整個(gè)流程就是 段選 位選 延時(shí) 位清零 , 段選 位選 延時(shí) 位清零 , 段選 位選 延時(shí) 位清零
//此處添加代碼 完成 了上述各項(xiàng)操作
//此處添加代碼 完成 了上述各項(xiàng)操作
#include <REGX52.H>
#include"Delay.h"
sbit RCK=P3^5;//是P3的第五位 RCLK
sbit SCK=P3^6; // SRCLK
sbit SER=P3^4; // SER
//編譯的時(shí)候可能會(huì)出錯(cuò)因?yàn)槲覀冊(cè)谙到y(tǒng)內(nèi)部已經(jīng)有了一個(gè)RCLK的存在了
//所以我們稍微修改一下名字

void _74HC595_WriteByte(unsigned char Byte)
{
    //首先把數(shù)值賦給SER 而且有種入棧高位在前 
    //怎么取出第八位就是用
    //因?yàn)樗皇钦f的那種地可尋
unsigned char i;
    for(i=0;i<8;i++)
    {
        SER=Byte&(0x80>>i);
        SCK=1;
        SCK=0;
    }
  RCK=1;
    RCK=0;    
}
void MatrixLED_Showcolumn(unsigned char column , Data)
{
_74HC595_WriteByte(Data);
    P0=~(0x80>>column);
    Delay(1);
    P0=0xFF;//段選 位選 位清零 
}
void main()
{
    //為了方便串口的實(shí)現(xiàn)將串口名字進(jìn)行統(tǒng)一的修改
    SCK=0;
    RCK=0;
    
//操縱點(diǎn)陣屏需要用到數(shù)碼管類似的代碼
      while(1)
    {
      MatrixLED_Showcolumn(0,0x80);
        MatrixLED_Showcolumn(1,0x40);
        MatrixLED_Showcolumn(2,0x20);
        MatrixLED_Showcolumn(3,0x10);
        
    }    
    
}
//顯示效果是點(diǎn)陣對(duì)角線
maybe 我們可以用excel先劃定大概的范圍確定 圖形的樣子 例如我們可以畫出一整個(gè)愛心什么的
  MatrixLED_Showcolumn(0,0x3c);
        MatrixLED_Showcolumn(1,0x42);
        MatrixLED_Showcolumn(2,0xA9);
        MatrixLED_Showcolumn(3,0x85);
            MatrixLED_Showcolumn(4,0x85);
            MatrixLED_Showcolumn(5,0xA9);
            MatrixLED_Showcolumn(6,0x42);
            MatrixLED_Showcolumn(7,0x3C);

/愛心代碼
對(duì)于整個(gè)數(shù)字的偏移的話,我們可以就是畫完整個(gè)圖然后一幀一幀的偏移移動(dòng)
取字是不是太麻煩了 ,我們選擇用文字取模軟件 嘻嘻
【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動(dòng)畫顯示】】
0xFF,0x08,0x08,0x08,0x08,0x08,0xFF,0x00,0x0E,0x15,0x15,0x15,0x09,0x00,0xFF,0x00,
0xFF,0x00,0x00,0x0F,0x09,0x09,0x0F,0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00,
存東西要存的很大我們可以放在flash 里面
unsigned char code Animation[]
但是存在flash里面 只能讀取不能修改
//以下是流動(dòng)顯示HELLO ! 的代碼
main.c

#include <REGX52.H>
#include"Delay.h"
#include"MatrixLED.h"


unsigned char Animation[]={     
	0xFF,0x08,0x08,0x08,0x08,0x08,0xFF,0x00,0x0E,0x15,0x15,0x15,0x09,0x00,0xFF,0x00,
0xFF,0x00,0x00,0x0F,0x09,0x09,0x0F,0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00};



void main()
{
	unsigned char i , offset=1,count=3;
	//為了方便串口的實(shí)現(xiàn)將串口名字進(jìn)行統(tǒng)一的修改
	MatrixLED_Init();
	

	//操縱點(diǎn)陣屏需要用到數(shù)碼管類似的代碼
	
	
	while(1)
	{
		for(i=0;i<8;i++)
		{
	  MatrixLED_Showcolumn(i,Animation[i+offset]);
	}	
		count++;
	if(count>10)
	{
		count=0;
		offset++;
		if(offset>24)
		{
			offset=0;
		}
	}
	
}
	}

Delay.c

void Delay(unsigned int xms)
	//
//
//
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

MartixLED.c

#include <REGX52.H>
#include"Delay.h"
#include"MatrixLED.h"





sbit RCK=P3^5;//是P3的第五位 RCLK
sbit SCK=P3^6;            // SRCLK
sbit SER=P3^4;            // SER 
//編譯的時(shí)候可能會(huì)出錯(cuò)因?yàn)槲覀冊(cè)谙到y(tǒng)內(nèi)部已經(jīng)有了一個(gè)RCLK的存在了
//所以我們稍微修改一下名字

#define MATRIX_LED_PORT P0
//74HC595 寫入一個(gè)字節(jié)
//要寫入的字節(jié)
//第一個(gè)是控制整行
//然后下一個(gè)是確定單列的數(shù)據(jù)
//
//
//

void _74HC595_WriteByte(unsigned char Byte)
{
	//首先把數(shù)值賦給SER 而且有種入棧高位在前 
	//怎么取出第八位就是用
	//因?yàn)樗皇钦f的那種地可尋
unsigned char i;
	for(i=0;i<8;i++)
	{
		SER=Byte&(0x80>>i);
		SCK=1;
		SCK=0;
	}
  RCK=1;
	RCK=0;	
}


void MatrixLED_Init()
{
	
	
	SCK=0;
	RCK=0;
}

matrixLED.h文章來源地址http://www.zghlxwxcb.cn/news/detail-510222.html

#ifndef __MATRIX_LED_H_
#define __MATRIX_LED_H_

void MatrixLED_Init();
void MatrixLED_Showcolumn(unsigned char column , Data);

#endif

到了這里,關(guān)于【【51單片機(jī)實(shí)現(xiàn)LED點(diǎn)陣屏幕和動(dòng)畫顯示】】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(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)亮來顯示圖像、文字或動(dòng)畫等內(nèi)容。LED點(diǎn)陣屏廣泛應(yīng)用于戶外廣告牌、室內(nèi)顯示、交通信號(hào)燈、電子價(jià)格標(biāo)簽和其他需要顯示信息的場合。

    2024年01月23日
    瀏覽(29)
  • 【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日
    瀏覽(30)
  • 51單片機(jī)——LED點(diǎn)陣屏(顯示滾動(dòng)畫面)

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

    目錄 ? 一、關(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定時(shí)器中斷模塊 四、程序?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)用于汽車報(bào)站器,廣告屏等。 通常應(yīng)用較多的是 8*8 點(diǎn)陣,然后使用多個(gè) 8*8 點(diǎn)陣可組成不同分辨率的 LED 點(diǎn)陣顯示屏,比如16*16 點(diǎn)陣可以使用 4 個(gè) 8*8 點(diǎn)陣構(gòu)成。因此理解

    2024年02月02日
    瀏覽(24)
  • 51單片機(jī)——LED 點(diǎn)陣點(diǎn)亮一個(gè)點(diǎn),小白詳解

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

    LED點(diǎn)陣介紹: ? ? ? ?LED點(diǎn)陣是由發(fā)光二極管排列組成的顯示器件,在我們生活中的電器中隨處可見,被廣泛用于汽車報(bào)站器,廣告屏等。 ????????通常用用較多的是8*8點(diǎn)陣,然后使用多個(gè)8*8點(diǎn)陣組成不同分辨率的LED點(diǎn)陣顯示屏,比如16*16點(diǎn)陣可以使用4個(gè)8*8點(diǎn)陣構(gòu)成。因

    2024年02月09日
    瀏覽(23)
  • 三、51單片機(jī)用74HC595控制LED點(diǎn)陣

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

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

    2024年02月03日
    瀏覽(21)
  • 51單片機(jī)開發(fā):通過74HC595控制LED點(diǎn)陣

    51單片機(jī)開發(fā):通過74HC595控制LED點(diǎn)陣

    (1)LED點(diǎn)陣就是多個(gè)LED發(fā)光二極管的集合,在單個(gè)LED的發(fā)光原理上沒有任何區(qū)別; (2)上面是16x16的LED點(diǎn)陣,總共有16x16=256個(gè)LED燈,由32個(gè)引腳來控制,其中16個(gè)引腳是正極(posn,n=1、2······、16),16個(gè)引腳是負(fù)極(NEGn,n=1、2······、16); (3)LED點(diǎn)陣可以用坐標(biāo)系的思想來理解,

    2024年02月12日
    瀏覽(23)
  • 51單片機(jī) | LED點(diǎn)陣實(shí)驗(yàn) | 點(diǎn)亮一個(gè)點(diǎn) | 顯示數(shù)字 | 顯示圖像

    51單片機(jī) | LED點(diǎn)陣實(shí)驗(yàn) | 點(diǎn)亮一個(gè)點(diǎn) | 顯示數(shù)字 | 顯示圖像

    ??開發(fā)板上使用了 64 個(gè)紅色 LED 按照行列排布組成的 8*8 LED 點(diǎn)陣。下面介紹 LED 點(diǎn)陣的使用。 ?? LED 點(diǎn)陣 是由發(fā)光二極管排列組成的顯示器件,在我們?nèi)粘I畹碾娖髦须S處可見,被廣泛應(yīng)用于汽車報(bào)站器,廣告屏等。如下所示: ??通常應(yīng)用較多的是 8*8 點(diǎn)陣,然后使

    2023年04月08日
    瀏覽(32)
  • 畢業(yè)設(shè)計(jì) 基于51單片機(jī)控制LED點(diǎn)陣顯示器的設(shè)計(jì)

    畢業(yè)設(shè)計(jì) 基于51單片機(jī)控制LED點(diǎn)陣顯示器的設(shè)計(jì)

    序 ?? 畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的

    2024年02月02日
    瀏覽(95)
  • 基于AT89C51單片機(jī)的LED點(diǎn)陣顯示屏設(shè)計(jì)

    基于AT89C51單片機(jī)的LED點(diǎn)陣顯示屏設(shè)計(jì)

    點(diǎn)擊鏈接獲取Keil源碼與Project Backups仿真圖: [[https://download.csdn.net/download/qq_64505944/88637464?spm=1001.2014.3001.5503]] **[源碼獲取] B 源碼+仿真圖+課程設(shè)計(jì)+50 工程實(shí)訓(xùn)(三)課題設(shè)計(jì) LED點(diǎn)陣顯示屏設(shè)計(jì) LED點(diǎn)陣顯示屏通過編程控制可以顯示中英文字符、圖形及視頻動(dòng)態(tài)圖形,廣泛用于指

    2024年02月02日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包