2019-09-27LED點(diǎn)陣

1.LED點(diǎn)陣簡(jiǎn)介

1.1鞠绰、什么是LED點(diǎn)陣

內(nèi)部結(jié)構(gòu)原理圖厢洞。點(diǎn)陣的優(yōu)勢(shì)就是8+8個(gè)IO口獨(dú)立控制8*8個(gè)LED亮滅绳锅。


LED點(diǎn)陣內(nèi)部結(jié)構(gòu)原理圖

1.2西饵、原理圖分析

(1)單片機(jī)端口直接驅(qū)動(dòng)。要驅(qū)動(dòng)88的點(diǎn)陣需要2個(gè)IO端口(16個(gè)IO口)鳞芙、要驅(qū)動(dòng)1616的點(diǎn)陣需要4個(gè)IO端口(32個(gè)IO口)眷柔。
(2)使用串轉(zhuǎn)并移位鎖存器驅(qū)動(dòng)。要驅(qū)動(dòng)16*16點(diǎn)陣只需要4個(gè)74HC595+3個(gè)IO口即可(數(shù)據(jù)口积蜻、SLCK闯割、RCLK)

2.原理圖分析

2.1、POS1-16和NEG1-16分別接移位鎖存器并行輸出端

POS就是Positive正極竿拆,NEG就是Negetive負(fù)極宙拉。

2.1、74HC595的接法分析

(1)QA-QH 8路并行輸出接到點(diǎn)陣的一個(gè)接口
(2)QH'串行輸出口接下一個(gè)74HC595的串行輸入SER(串聯(lián)順序按照ABCD)
(3)SER串行輸入接:第一個(gè)595的SER通過(guò)跳線帽JP595接P3.4丙笋,后面的每一個(gè)SER接前一個(gè)的QH'谢澈。這樣就構(gòu)成了ABCD4個(gè)595芯片依次串聯(lián)。所以將來(lái)編程時(shí)整個(gè)4個(gè)74HC595的串行數(shù)據(jù)都是從P3.4出來(lái)的御板。
(4)SCLK(SRCLK)接P3.6
(5)RCLK接P3.5

總結(jié):
①SCLK和RCLK是一樣的接法锥忿,都是接在P3.5和P3.6上
②總共涉及到的IO口有3個(gè):P3.4、P3.5怠肋、P3.6
③外部接線重點(diǎn):2個(gè)8pin杜邦線+1個(gè)跳線帽

3.LED點(diǎn)陣編程實(shí)踐1

3.1敬鬓、74HC595的時(shí)序分析

(1)芯片與芯片之間的通信,都是按照一定的時(shí)序進(jìn)行的。
(2)時(shí)序就是芯片與芯片之間的通信引腳上電平變化以時(shí)間軸為參考的變化順序钉答。
(3)時(shí)序是通信雙方事先定義好的础芍,通信的發(fā)送方必須按照時(shí)序來(lái)發(fā)送有意義的信息,通信的接收方按照時(shí)序去接收解析發(fā)送方發(fā)來(lái)的電平變化信息数尿,然后就知道發(fā)送方要給我發(fā)送什么東西了仑性。
(4)我們編程時(shí):發(fā)送方是單片機(jī),接收方是74HC595右蹦。因?yàn)?95芯片本身是不能編程的诊杆,他的時(shí)序芯片出廠時(shí)已經(jīng)設(shè)定好了。因此我們單片機(jī)必須遷就595芯片何陆,按照595芯片的時(shí)序來(lái)給它發(fā)信息晨汹。
(5)所以我們要先搞清楚74HC595的時(shí)序規(guī)則。595的芯片手冊(cè)上就有它的時(shí)序描述(時(shí)序圖)甲献,參考描述就可以明白595芯片的時(shí)序規(guī)則宰缤,然后將其用編程語(yǔ)言表述出來(lái)就是程序了。
(6)74HC595的時(shí)序關(guān)鍵是:SCLK和RCLK晃洒。SCLK是移位時(shí)鐘,595芯片內(nèi)部在每個(gè)SCLK的上升沿會(huì)對(duì)SER引腳進(jìn)行一次采樣輸入朦乏,就向595內(nèi)部輸入了1位球及,如此循環(huán)8次就輸入了8位二進(jìn)制。RCLK是鎖存時(shí)鐘呻疹,QA-QH的8位并行輸出信號(hào)在RCLK的上升沿進(jìn)行一次鎖存更新吃引。
(7)理解74HC595芯片的通信時(shí)序關(guān)鍵,其實(shí)就是:SER進(jìn)行數(shù)據(jù)的串行輸入刽锤,SCLK提供移位時(shí)鐘镊尺,RCLK提供鎖存時(shí)鐘。

3.2并思、sbit定義位變量

(1)之前編程都是直接操作一個(gè)IO端口庐氮,可以用端口名(P0、P1)來(lái)整體操作一個(gè)IO端口中的8個(gè)引腳宋彼。但是這種方法不能操控單獨(dú)1個(gè)IO口弄砍。
(2)今天編程需要單獨(dú)操作1個(gè)IO引腳,比如要操作P3.4输涕,但是直接寫P3.4的話C語(yǔ)言是不認(rèn)識(shí)的音婶,而必須使用sbit關(guān)鍵字來(lái)定義一個(gè)引腳。sibt SER = P3^4;

4.LED點(diǎn)陣編程實(shí)踐2

4.1莱坎、編寫移位寄存器傳送函數(shù)SendData

(1) SER = d1 >> 7; SCLK = 0衣式;SCLK = 1;
這個(gè)代碼的意思可以形象的這樣理解,SCLK是一個(gè)貨梯碴卧,SER是貨梯上的籃子弱卡,SCLK為0的時(shí)候就是就位狀態(tài),這時(shí)候你要把數(shù)據(jù)放到SER里螟深,當(dāng)SCLK為1的時(shí)候就啟動(dòng)貨梯谐宙,把數(shù)據(jù)運(yùn)上去給QA-QH。
(2) RCLK = 0; RCLK = 1;
沒(méi)有運(yùn)行這兩句鎖存語(yǔ)句時(shí)界弧,點(diǎn)陣也會(huì)亮凡蜻,但是不可保證電平時(shí)穩(wěn)定一直不變的。當(dāng)鎖存后才可以保證電平是穩(wěn)定的垢箕。

4.2划栓、全屏點(diǎn)亮測(cè)試

(1)編寫硬件控制代碼,時(shí)序理解是關(guān)鍵条获。只要時(shí)序理解正確的忠荞,并且代碼按照時(shí)序的要求去寫,就沒(méi)問(wèn)題帅掘。
(2)時(shí)序操作部分的代碼只要寫好了并且是正確的委煤,下來(lái)這一塊就沒(méi)問(wèn)題,很簡(jiǎn)單修档,因?yàn)樗撬腊宓牟蛔兊摹?/p>

#include <reg51.h>

sbit SER   = P3^4;
sbit RCLK = P3^5;
sbit SCLK = P3^6;


void main(void)
{
    unsigned char i = 0;
    unsigned char d1, d2, d3, d4;  // 要給4個(gè)595并行輸出端輸出的值
  
    SCLK = 0;    
    RCLK = 0;

    d1 = 0x0;    // d1和d2負(fù)極
    d2 = 0x0;
    d3 = 0xff;    // d3和d4負(fù)極
    d4 = 0xff;

    for (i =0; i<8; i++)
    {
        SER = d1 >> 7;     // 將d1的最高bit取出來(lái)給SER
        SCLK = 0碧绞;
        SCLK = 1;   // 電位一低一高吱窝,2步制造一個(gè)SCLK的上升沿
        d1 = d1 << 1;   // 最高位丟掉讥邻,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)在8個(gè)SLCK上升沿把d1的8位依次全部發(fā)出去了,
   // 但是還沒(méi)有進(jìn)行鎖存院峡,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d2 >> 7;     // 將d2的最高bit取出來(lái)給SER
        SCLK = 0兴使;
        SCLK = 1;   // 2步制造一個(gè)SCLK的上升沿
        d2 = d2 << 1;   // 最高位丟掉照激,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2發(fā)出去了发魄,并且d1已經(jīng)被d2擠到第2個(gè)595芯片里面,
    // 但是還沒(méi)有進(jìn)行鎖存实抡,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d3 >> 7;     // 將d3的最高bit取出來(lái)給SER
        SCLK = 0欠母;
        SCLK = 1;   // 2步制造一個(gè)SCLK的上升沿
        d3 = d3 << 1;   // 最高位丟掉吆寨,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3發(fā)出去了赏淌,并且d1已經(jīng)被d2和d3擠到第3個(gè)595芯片里面,
    // 但是還沒(méi)有進(jìn)行鎖存啄清,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d4 >> 7;     // 將d4的最高bit取出來(lái)給SER
        SCLK = 0六水;
        SCLK = 1俺孙;   // 2步制造一個(gè)SCLK的上升沿
        d4 = d4 << 1;   // 最高位丟掉,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3和d4發(fā)出去了掷贾,
   // 并且d1已經(jīng)被d2和d3和d4擠到第4個(gè)595芯片里面睛榄,
  // 但是還沒(méi)有進(jìn)行鎖存,所以QA-QH有東西但是不能保證一直不變

/*
至此想帅,4個(gè)字節(jié)的數(shù)據(jù)d1场靴、d2、d3港准、d4已經(jīng)順著74HC595的SER→QH'的串行輸出旨剥,
串行輸出路線,已經(jīng)爬滿了4個(gè)74HC595(最先送出去的到了最后一個(gè)595中)
// 但是還沒(méi)有進(jìn)行鎖存浅缸,所以QA-QH有東西但是不能保證一直不變
然后要進(jìn)行一次鎖存轨帜,4個(gè)595芯片同時(shí)在進(jìn)行鎖存,各自鎖存住了自己的數(shù)據(jù)衩椒。
*/

    RCLK = 0;    // 電尾一低一高就完成鎖存了
    RCLK = 1;
    // 這兩句之后595就完成了鎖存蚌父,d1-d4就會(huì)影響4個(gè)595芯片的并行輸出端,
   // 進(jìn)而會(huì)影響點(diǎn)陣中LED的正負(fù)極的值毛萌,然后LED就會(huì)亮或者滅
   // 按照我們寫的程序苟弛,d1和d2是負(fù)極,d3和d4是正極
}

5.LED點(diǎn)陣編程實(shí)踐3

5.1阁将、宏定義的引入和uchar嗡午、u8

#include <reg51.h>

sbit SER   = P3^4;
sbit RCLK = P3^5;
sbit SCLK = P3^6;

#define uchar unsigned char 
// 函數(shù)聲明
void SendData(uchar d1, uchar d2, uchar d3, uchar d4)

void main(void)
{
    // d1、d2對(duì)應(yīng)負(fù)極冀痕,d3、d4對(duì)應(yīng)正極
    // d1狸演、d3對(duì)應(yīng)9-16言蛇,d2、d4對(duì)應(yīng)1-8
    // d1-d4都是最低bit位表示編號(hào)小的數(shù)字宵距,比如d4的bit0對(duì)應(yīng)1
    // d3和d4是正極腊尚,規(guī)律是1亮0滅;d1和d2是負(fù)極满哪,規(guī)律是1滅0亮
    // SendData(0x00, 0x00, 0xff, 0xff);   // 全亮
    // SendData(0x00, 0x00, 0x00, 0xff);   // 亮上半屏
    // SendData(0x00, 0x00, 0xff, 0x00);   // 亮下半屏
    // SendData(0x00, 0x00, 0x00, 0x01);   // 亮上半屏第一行
    // SendData(0x00, 0x00, 0x80, 0x00);   // 亮下半屏最后一行
    // SendData(0xff, 0xfe, 0xff, 0xff);   // 亮最左一列
   // SendData(0x7f, 0xff, 0xff, 0xff);   // 亮最右一列
  // SendData(0x7f, 0xff, 0x00, 0x01);   // 亮右上角一顆
  // SendData(0x7f, 0xff, 0x80, 0x00);   // 亮右下角一顆
  // SendData(0x7f, 0xfe, 0x80, 0x01);   // 亮角上四顆
}

void SendData(uchar d1, uchar d2, uchar d3, uchar d4)
{
    unsigned char i = 0;
  
    SCLK = 0;    
    RCLK = 0;

    for (i =0; i<8; i++)
    {
        SER = d1 >> 7;     // 將d1的最高bit取出來(lái)給SER
        SCLK = 0婿斥;
        SCLK = 1;   // 電位一低一高哨鸭,2步制造一個(gè)SCLK的上升沿
        d1 = d1 << 1;   // 最高位丟掉民宿,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)在8個(gè)SLCK上升沿把d1的8位依次全部發(fā)出去了,
   // 但是還沒(méi)有進(jìn)行鎖存像鸡,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d2 >> 7;     // 將d2的最高bit取出來(lái)給SER
        SCLK = 0活鹰;
        SCLK = 1;   // 2步制造一個(gè)SCLK的上升沿
        d2 = d2 << 1;   // 最高位丟掉,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2發(fā)出去了志群,并且d1已經(jīng)被d2擠到第2個(gè)595芯片里面着绷,
    // 但是還沒(méi)有進(jìn)行鎖存,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d3 >> 7;     // 將d3的最高bit取出來(lái)給SER
        SCLK = 0锌云;
        SCLK = 1荠医;   // 2步制造一個(gè)SCLK的上升沿
        d3 = d3 << 1;   // 最高位丟掉,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3發(fā)出去了桑涎,并且d1已經(jīng)被d2和d3擠到第3個(gè)595芯片里面彬向,
    // 但是還沒(méi)有進(jìn)行鎖存,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d4 >> 7;     // 將d4的最高bit取出來(lái)給SER
        SCLK = 0石洗;
        SCLK = 1幢泼;   // 2步制造一個(gè)SCLK的上升沿
        d4 = d4 << 1;   // 最高位丟掉,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3和d4發(fā)出去了讲衫,
   // 并且d1已經(jīng)被d2和d3和d4擠到第4個(gè)595芯片里面缕棵,
  // 但是還沒(méi)有進(jìn)行鎖存,所以QA-QH有東西但是不能保證一直不變

  /*
  至此涉兽,4個(gè)字節(jié)的數(shù)據(jù)d1招驴、d2、d3枷畏、d4已經(jīng)順著74HC595的SER→QH'的串行輸出别厘,
  串行輸出路線,已經(jīng)爬滿了4個(gè)74HC595(最先送出去的到了最后一個(gè)595中)
  // 但是還沒(méi)有進(jìn)行鎖存拥诡,所以QA-QH有東西但是不能保證一直不變
  然后要進(jìn)行一次鎖存触趴,4個(gè)595芯片同時(shí)在進(jìn)行鎖存,各自鎖存住了自己的數(shù)據(jù)渴肉。
  */

    RCLK = 0;    // 電尾一低一高就完成鎖存了
    RCLK = 1;
    // 這兩句之后595就完成了鎖存冗懦,d1-d4就會(huì)影響4個(gè)595芯片的并行輸出端,
   // 進(jìn)而會(huì)影響點(diǎn)陣中LED的正負(fù)極的值仇祭,然后LED就會(huì)亮或者滅
   // 按照我們寫的程序披蕉,d1和d2是負(fù)極,d3和d4是正極
}

6.字模介紹

6.1乌奇、何為字模

(1)如何記錄組成字的LED點(diǎn)陣亮滅信息(1616點(diǎn)陣一共有256點(diǎn)没讲,顯示一個(gè)特定的字需要其中有些亮而不亮,如何記錄哪些點(diǎn)亮哪些點(diǎn)不亮礁苗?用字模)
字模如何工作?
256個(gè)點(diǎn)用256個(gè)二進(jìn)制位表示爬凑,1表示這個(gè)點(diǎn)亮,0表示不亮寂屏。256個(gè)點(diǎn)就是256個(gè)二進(jìn)制位贰谣,也就是256/8=32個(gè)字節(jié)娜搂。所以一個(gè)大小為16
16的字的字模是32個(gè)字節(jié)大小。所以字模的表現(xiàn)形式就是32個(gè)unsigned char型數(shù)據(jù)吱抚。
(2)字模如何獲劝儆睢?
一般都是用專門的字模提取軟件去提取的秘豹。這種軟件的作用就是給一個(gè)字就能自動(dòng)得到這個(gè)字對(duì)應(yīng)的32個(gè)字節(jié)的字模編碼携御。
(3)字模的結(jié)果不是唯一的,和你提取字模的方式有關(guān)的既绕。(橫向縱向啄刹、從上到下之類區(qū)分)提取字模時(shí)是沒(méi)有標(biāo)準(zhǔn)的,怎么做都是對(duì)的或者都是錯(cuò)的凄贩,關(guān)鍵是你提取字模的方式和你用來(lái)在點(diǎn)陣上顯示這個(gè)字模的函數(shù)必須對(duì)應(yīng)誓军。

6.2、字模提取軟件的使用

(1)使用方式:第一步先選擇字形(實(shí)際開(kāi)發(fā)板上點(diǎn)陣多大就選擇多大)疲扎,第二步再選擇合適的字體昵时、字號(hào)等,第三步選擇編碼方式和取模方向椒丧,第四步直接將得到的數(shù)組復(fù)制走壹甥。

6.3、字模的手工分析和驗(yàn)證

(1)手工對(duì)比字模內(nèi)容和屏幕顯示壶熏,從而確認(rèn)取模方式

7.橫向取模的顯示函數(shù)1

7.1句柠、工程建立

7.2、先顯示一行

7.3棒假、多顯示2行去探索規(guī)律

(1)規(guī)律1:d1和d2用字模來(lái)填充溯职,填充時(shí)要取反。因?yàn)樽帜\浖?為亮0為滅帽哑,d1和d2對(duì)應(yīng)負(fù)極缸榄,1為滅0為亮。
(2)規(guī)律2:d3和d4來(lái)選擇哪一行被點(diǎn)亮祝拯,而d1和d2選擇這行中哪一列被點(diǎn)亮。
(3)規(guī)律3:SendData依次送16個(gè)LED的亮滅信息(2字節(jié))她肯,所以必須調(diào)用256/16=16次SendData函數(shù)佳头,才能把整個(gè)點(diǎn)陣全部點(diǎn)亮完畢。
(4)規(guī)律4:每次調(diào)用SendData時(shí)晴氨,d1-d4變化都是有規(guī)律的康嘉,因此有希望通過(guò)循環(huán)來(lái)調(diào)用SendData而無(wú)需手工調(diào)用16次。

#include <reg51.h>

sbit SER   = P3^4;
sbit RCLK = P3^5;
sbit SCLK = P3^6;

#define uchar unsigned char 
// 函數(shù)聲明
void SendData(uchar d1, uchar d2, uchar d3, uchar d4)

unsigned char zhu[32] = 
{
128, 0, 136, 0, 136, 0, 248, 31,
132, 0, 130, 0, 128, 0, 255, 127,
192, 1, 160, 2, 144, 4, 136, 8, 
132, 16, 131, 96, 128, 0, 128, 0
};

void main(void)
{
    
  SendData(~0, ~128, 0x00, 0x01);   // 顯示第1行
  SendData(~0, ~136, 0x00, 0x02);   // 顯示第2行
  SendData(~0, ~136, 0x00, 0x04);   // 顯示第3行
  SendData(~31, ~248, 0x00, 0x08);   // 顯示第4行
  SendData(~0, ~132, 0x00, 0x10);   // 顯示第5行
  SendData(~0, ~130, 0x00, 0x20);   // 顯示第6行
  SendData(~0, ~128, 0x00, 0x40);   // 顯示第7行
  SendData(~127, ~255, 0x00, 0x80);   // 顯示第8行
}

void SendData(uchar d1, uchar d2, uchar d3, uchar d4)
{
    unsigned char i = 0;
  
    SCLK = 0;    
    RCLK = 0;

    for (i =0; i<8; i++)
    {
        SER = d1 >> 7;     // 將d1的最高bit取出來(lái)給SER
        SCLK = 0籽前;
        SCLK = 1亭珍;   // 電位一低一高敷钾,2步制造一個(gè)SCLK的上升沿
        d1 = d1 << 1;   // 最高位丟掉,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)在8個(gè)SLCK上升沿把d1的8位依次全部發(fā)出去了肄梨,
   // 但是還沒(méi)有進(jìn)行鎖存阻荒,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d2 >> 7;     // 將d2的最高bit取出來(lái)給SER
        SCLK = 0;
        SCLK = 1众羡;   // 2步制造一個(gè)SCLK的上升沿
        d2 = d2 << 1;   // 最高位丟掉侨赡,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2發(fā)出去了,并且d1已經(jīng)被d2擠到第2個(gè)595芯片里面粱侣,
    // 但是還沒(méi)有進(jìn)行鎖存羊壹,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d3 >> 7;     // 將d3的最高bit取出來(lái)給SER
        SCLK = 0;
        SCLK = 1齐婴;   // 2步制造一個(gè)SCLK的上升沿
        d3 = d3 << 1;   // 最高位丟掉油猫,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3發(fā)出去了,并且d1已經(jīng)被d2和d3擠到第3個(gè)595芯片里面柠偶,
    // 但是還沒(méi)有進(jìn)行鎖存情妖,所以QA-QH有東西但是不能保證一直不變

    for (i =0; i<8; i++)
    {
        SER = d4 >> 7;     // 將d4的最高bit取出來(lái)給SER
        SCLK = 0;
        SCLK = 1嚣州;   // 2步制造一個(gè)SCLK的上升沿
        d4 = d4 << 1;   // 最高位丟掉鲫售,第二高位排到最高位給第一條語(yǔ)句執(zhí)行取出
    }
    // 至此已經(jīng)把d1和d2和d3和d4發(fā)出去了,
   // 并且d1已經(jīng)被d2和d3和d4擠到第4個(gè)595芯片里面该肴,
  // 但是還沒(méi)有進(jìn)行鎖存情竹,所以QA-QH有東西但是不能保證一直不變

  /*
  至此,4個(gè)字節(jié)的數(shù)據(jù)d1匀哄、d2秦效、d3、d4已經(jīng)順著74HC595的SER→QH'的串行輸出涎嚼,
  串行輸出路線阱州,已經(jīng)爬滿了4個(gè)74HC595(最先送出去的到了最后一個(gè)595中)
  // 但是還沒(méi)有進(jìn)行鎖存,所以QA-QH有東西但是不能保證一直不變
  然后要進(jìn)行一次鎖存法梯,4個(gè)595芯片同時(shí)在進(jìn)行鎖存苔货,各自鎖存住了自己的數(shù)據(jù)。
  */

    RCLK = 0;    // 電尾一低一高就完成鎖存了
    RCLK = 1;
    // 這兩句之后595就完成了鎖存立哑,d1-d4就會(huì)影響4個(gè)595芯片的并行輸出端夜惭,
   // 進(jìn)而會(huì)影響點(diǎn)陣中LED的正負(fù)極的值,然后LED就會(huì)亮或者滅
   // 按照我們寫的程序铛绰,d1和d2是負(fù)極诈茧,d3和d4是正極
}

8.橫向取模的顯示函數(shù)2

8.1、定義行選擇數(shù)組

8.2捂掰、使用for循環(huán)進(jìn)行顯示

8.3敢会、編寫點(diǎn)陣字顯示函數(shù)

#define uchar unsigned char
unsigned char zhu[32] = 
{
128, 0, 136, 0, 136, 0, 248, 31,
132, 0, 130, 0, 128, 0, 255, 127,
192, 1, 160, 2, 144, 4, 136, 8, 
132, 16, 131, 96, 128, 0, 128, 0
};

unsigned char hang[32] = 
{
0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08,
0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 
0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00
};

void main(void)
{
    uchar i = 0;
    
    for (i=0; i<16; i++)
    {
        SendData(~zhu[2*i+1], ~zhu[2*i], hang[2*i], hang[2*i+1]);
    }
}

9.縱向取模的顯示函數(shù)

9.1曾沈、先觀察總結(jié)縱向取模的取模規(guī)律

9.2、顯示第1列

9.3鸥昏、多顯示幾列尋找規(guī)律

9.4狼电、編寫成函數(shù)然后實(shí)驗(yàn)測(cè)定

#define uchar unsigned char
unsigned char zhu[32] = 
{
128, 160, 144, 142, 136, 136, 136, 255, 
136, 136, 136, 136, 136, 128, 128, 0,
32, 32, 16, 8, 4, 2, 1, 255, 
1, 2, 4, 8, 16, 32, 32, 0
};

unsigned char lie[32] = 
{
0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xf7, 
0xff, 0xef, 0xff, 0xdf, 0xff, 0xbf, 0xff, 0x7f, 
0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xf7, 0xff, 
0xef, 0xff, 0xdf, 0xff, 0xbf, 0xff, 0x7f, 0xff, 
};

void main(void)
{
    uchar i = 0;
    
    for (i=0; i<16; i++)
    {
        SendData(lie[2*i], lie[2*i+1], zhu[i+16], zhu[i]);
        // SendData(0xff, 0xfe, 32, 128);    // 最左邊一列
        // SendData(0xff, 0xfd, 32, 160);    // 左邊第2列
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脂矫,一起剝皮案震驚了整個(gè)濱河市信峻,隨后出現(xiàn)的幾起案子焙格,更是在濱河造成了極大的恐慌,老刑警劉巖惫皱,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件像樊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旅敷,警方通過(guò)查閱死者的電腦和手機(jī)生棍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)媳谁,“玉大人涂滴,你說(shuō)我怎么就攤上這事∏缫簦” “怎么了柔纵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锤躁。 經(jīng)常有香客問(wèn)我搁料,道長(zhǎng),這世上最難降的妖魔是什么系羞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任郭计,我火速辦了婚禮,結(jié)果婚禮上椒振,老公的妹妹穿的比我還像新娘昭伸。我一直安慰自己,他們只是感情好澎迎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布庐杨。 她就那樣靜靜地躺著,像睡著了一般夹供。 火紅的嫁衣襯著肌膚如雪辑莫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天罩引,我揣著相機(jī)與錄音,去河邊找鬼枝笨。 笑死袁铐,一個(gè)胖子當(dāng)著我的面吹牛揭蜒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剔桨,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屉更,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了洒缀?” 一聲冷哼從身側(cè)響起瑰谜,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎树绩,沒(méi)想到半個(gè)月后萨脑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饺饭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年渤早,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘫俊。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹊杖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扛芽,到底是詐尸還是另有隱情骂蓖,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布川尖,位于F島的核電站登下,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏空厌。R本人自食惡果不足惜庐船,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘲更。 院中可真熱鬧筐钟,春花似錦、人聲如沸赋朦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宠哄。三九已至壹将,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毛嫉,已是汗流浹背诽俯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留承粤,地道東北人暴区。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓闯团,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親仙粱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子房交,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容