(SKU:RB-05L009)8*8點陣模塊

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航搜索


Ewg1.jpg

目錄

產(chǎn)品概述

還在為驅(qū)動點陣連接復(fù)雜的接線煩惱嗎?還在為 Arduino 控制器屈指可數(shù)的 I/O 資源犯愁嗎?2013 最新推出的 8X8 LED Matrix Module v1.0 點陣模塊是哈爾濱奧松機(jī)器人科技有限公司研發(fā)的一款易安裝、易連接、可拓展的 8X8 點陣模塊。此模塊采用高速的 74HC595 串并轉(zhuǎn)換芯片。SPI 接口,僅需要 3 根信號線即可驅(qū)動多塊 8x8 點陣屏,最大限度的節(jié)省您寶貴的 Arduino 控制器 I/O 資源。行列信號全部傳輸完畢后再更新顯示,顯示亮麗,可靠性高。適合于 Arduino 控制器、STC 單片機(jī)、AVR 單片機(jī)等。

規(guī)格參數(shù)

  1. 產(chǎn)品名稱:8*8點陣模塊
  2. 產(chǎn)品貨號:RB - 05L009
  3. 工作電壓:DC 5V
  4. 接口類型:SPI
  5. 產(chǎn)品類型:顯示輸出
  6. 制作工藝:FR4雙面噴錫
  7. 固定孔尺寸:3.2 mm
  8. 對角固定孔間距:22.67 mm
  9. 固定孔距板邊緣:7.93 mm
  10. 人性化設(shè)計:可級聯(lián)應(yīng)用顯示
  11. 工作溫度:10℃-30℃
  12. 工作濕度:10%~90% 無凝結(jié)
  13. 重量:12g
  14. 產(chǎn)品尺寸:32mm x 32mm x 23mm

使用方法

工作原理

通過 74HC595 移位寄存器連接 8*8 點陣液晶模塊,模塊與單片機(jī)之間使用 SPI 進(jìn)行通信,只需要占用三個IO接口,兩片 74HC595 模塊使用級聯(lián)的方式連接,實現(xiàn)串行輸入并行輸出,來控制點陣液晶。

編程原理

本例子程序中需要使用一個擴(kuò)展程序語句,介紹如下:

  • shiftOut()語句

描述:將一個數(shù)據(jù)的一個字節(jié)一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開始。依次向數(shù)據(jù)腳寫入每一位,之后時鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。
語法:
shiftOut(dataPin, clockPin, bitOrder, value)
參數(shù):

  • dataPin:輸出每一位數(shù)據(jù)的引腳(int)
  • clockPin:時鐘腳,當(dāng)dataPin有值時此引腳電平變化(int)
  • bitOrder:輸出位的順序,最高位優(yōu)先或最低位優(yōu)先
  • value: 要移位輸出的數(shù)據(jù)(byte)

注意:
dataPin和clockPin要用pinMode()配置為輸出。 shiftOut目前只能輸出1個字節(jié)(8位),所以如果輸出值大于255需要分兩步。

//最高有效位優(yōu)先串行輸出
int 數(shù)據(jù)= 500;
//移位輸出高字節(jié)
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));  
//移位輸出低字節(jié)
shiftOut(data, clock, MSBFIRST, data);
//最低有效位優(yōu)先串行輸出
data = 500;
//移位輸出低字節(jié)
shiftOut(dataPin, clock, LSBFIRST, data);  
//移位輸出高字節(jié)
shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); 

實驗例程

使用硬件

接線方法

通過 SPI 通信方式中的 DIN、CLK、LTH 對 LED 點陣進(jìn)行控制。DIN 為數(shù)據(jù),CLK為時鐘,LTH 為鎖存。 將 8 * 8 點陣模塊的 DIN、CLK、LTH 分別連接到 Arduino 傳感器擴(kuò)展板的數(shù)字 4、5、6 引腳,VCC、GND 分別連接到傳感器擴(kuò)展板的任意一個 V、G 端口。最后連接Arduino 控制器至計算機(jī)。 如下圖所示: 整體連接圖:

02L00901.png

接線細(xì)節(jié)圖:

02L00902.png

例子程序1

//Pin connected to ST_CP of 74HC595
int latchPin = 6;//定義LTH引腳為D6
//Pin connected to SH_CP of 74HC595
int clockPin = 5;//定義CLK引腳為D5
//Pin connected to DS of 74HC595
int dataPin = 4;//定義DIN引腳為D4
int tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for(int i = 0; i < 8; i++){
    for(int j = 0; j < 8; j++){
      digitalWrite(latchPin, LOW); 
      shiftOut(dataPin, clockPin, LSBFIRST, tab[i]);//掃描顯示每一列
      shiftOut(dataPin, clockPin, LSBFIRST, 0xff); //將行顯示設(shè)置為低電平
      digitalWrite(latchPin, HIGH); 
      delay(50);  
    }
  }
    for(int i = 0; i < 8; i++){
    for(int j = 0; j < 8; j++){
      digitalWrite(latchPin, LOW);
      shiftOut(dataPin, clockPin, LSBFIRST, 0x00);//將列顯示設(shè)置為高電平
      shiftOut(dataPin, clockPin, LSBFIRST, tab[i]); //掃描顯示每一行
      digitalWrite(latchPin, HIGH); 
      delay(50);  
    }
  }
} 

程序1效果

點陣液晶分別以行掃描和列掃描顯示

例子程序2

const int DINPin = 4;         //數(shù)據(jù)引腳 連接到數(shù)字P4口
const int CLKPin = 5;         //時鐘引腳 連接到數(shù)字P5口
const int LTHPin = 6;         //鎖存引腳 連接到數(shù)字P6口

byte LieScan[16] = {                         //列掃描,點陣只點亮一列
  0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
byte HanZi_1[] = {
  0x1c,0x7c,0x7e,0x3f,0x3f,0x7e,0x7c,0x1c    //顯示心形圖案
};
void setup() {
  pinMode(DINPin,OUTPUT);      //設(shè)置數(shù)據(jù)引腳為輸出
  pinMode(CLKPin,OUTPUT);      //設(shè)置鎖存引腳為輸出
  pinMode(LTHPin,OUTPUT);      //設(shè)置時鐘引腳為輸出
}
void loop() {
  for(unsigned char times_1 = 0;times_1 <250;times_1++) {  //持續(xù)刷新250次
    for(char x = 0;x <8;x++) {
      shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]);  //先選擇列
      shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]);  //再送行數(shù)據(jù)
      digitalWrite(LTHPin, LOW);    //刷新顯示
      digitalWrite(LTHPin, HIGH);
    }
  }
}

程序2效果

點陣液晶屏顯示為心形圖案

例子程序3

const int DINPin = 4;         //數(shù)據(jù)引腳 連接到數(shù)字P4口
const int CLKPin = 5;         //時鐘引腳 連接到數(shù)字P5口
const int LTHPin = 6;         //鎖存引腳 連接到數(shù)字P6口

byte LieScan[16] = {                         //列掃描,點陣只點亮一行
  0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
byte HanZi_1[] = {
  0x04,0xFA,0x89,0xBA,0xC0,0x1C,0x40,0xFF    //創(chuàng)
};
byte HanZi_2[] = {
  0x4A,0xAE,0xFB,0x2E,0x4A,0xFC,0x0A,0xF9    //新
};
byte HanZi_3[] = {
  0x04,0x02,0x24,0x40,0x40,0x24,0x02,0x04    //^_^
};
void setup() {
  pinMode(DINPin,OUTPUT);      //設(shè)置數(shù)據(jù)引腳為輸出
  pinMode(CLKPin,OUTPUT);      //設(shè)置鎖存引腳為輸出
  pinMode(LTHPin,OUTPUT);      //設(shè)置時鐘引腳為輸出
}
void loop() {
  for(unsigned char times_1 = 0;times_1 <250;times_1++) {  //持續(xù)刷新250次
    for(char x = 0;x <8;x++) {
      shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]);  //先選擇列
      shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]);  //再送行數(shù)據(jù)
      digitalWrite(LTHPin, LOW);    //刷新顯示
      digitalWrite(LTHPin, HIGH);
    }
  }
  for(unsigned char times_2 = 0;times_2 <250;times_2++) {  //持續(xù)刷新250次
    for(char x = 0;x <8;x++) {
      shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]);  //先選擇列
      shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_2[x]);  //再送行數(shù)據(jù)
      digitalWrite(LTHPin, LOW);    //刷新顯示
      digitalWrite(LTHPin, HIGH);
    }
  }
  for(unsigned char times_3 = 0;times_3 <250;times_3++) {  //持續(xù)刷新250次
    for(char x = 0;x <8;x++) {
      shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]);  //先選擇列
      shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_3[x]);  //再送行數(shù)據(jù)
      digitalWrite(LTHPin, LOW);    //刷新顯示
      digitalWrite(LTHPin, HIGH);
    }
  }
}

程序3效果

在 8 * 8 LED Martix Module模塊上輪流顯示“創(chuàng) 新 ^_^”

產(chǎn)品相關(guān)推薦

Erweima.png

購買地址

8*8點陣模塊

周邊產(chǎn)品推薦

Arduino LCD12864 點陣液晶擴(kuò)展板 12864液晶屏
Arduino 12864點陣液晶 51單片機(jī)

相關(guān)問題解答

8*8點陣模塊桃心呼吸燈效果 求助
8x8點陣程序燒進(jìn)去,顯示的圖案沒有規(guī)律

相關(guān)學(xué)習(xí)資料

用戶手冊
奧松機(jī)器人技術(shù)論壇