「雕爺學編程」Arduino動手做(22)——8X8 LED點陣MAX7219屏


37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒於本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。 

 

【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)

實驗二十二:MAX7219點陣顯示模塊(8X8 LED共陰屏幕)

 

MAX7219 

是美國MAXIM 公司推出的多位LED 顯示驅動器,采用3 線串行接口傳送數據,可直接與單片機接口連接,用戶能方便修改其內部參數,以實現多位LED 顯示。它內含硬件動態掃描電路、BCD譯碼器、段驅動器和位驅動器。此外,其內部還含有8X8 位靜態RAM,用於存放8 個數字的顯示數據。顯然,它可直接驅動64 段LED點陣顯示器。當多片MAX7219 級聯時,可控制更多的LED 點陣顯示器。顯示的數據通過單片機數據處理后,送給MAX7219 顯示。

 

串行輸入/輸出共陰極顯示驅動器
MAX7219/MAX7221是一種集成化的串行輸入/輸出共陰極顯示驅動器,它連接微處理器與8位數字的7段數字LED顯示,也可以連接條線圖顯示器或者64個獨立的LED。其上包括一個片上的B型BCD編碼器、多路掃描回路,段字驅動器,而且還有一個8*8的靜態RAM用來存儲每一個數據。 只有一個外部寄存器用來設置各個LED的段電流。 MAX7221與SPI?、 QSPI?以及 MICROWIRE?相兼容,同時它有限制回轉電流的段驅動來減少EMI(電磁干擾)。 一個方便的四線串行接口可以聯接所有通用的微處理器。 每個數據可以尋址在更新時不需要改寫所有的顯示。MAX7219/MAX7221同樣允許用戶對每一個數據選擇編碼或者不編碼。 整個設備包含一個150μA的低功耗關閉模式,模擬和數字亮度控制,一個掃描限制寄存器允許用戶顯示1-8位數據,還有一個讓所有LED發光的檢測模式。 

 

MAX7219內部結構圖

 

作為一塊專用的LED顯示驅動芯片,MAX7219能夠以動態形式驅動8位數碼顯示器。還可以用 n 片MAX7219進行級連,以驅動8 * n位數碼顯示。MAX7219與數碼顯示器的之間的電路極為簡單,幾乎連限流電阻都不用。MAX7219與單片機之間也僅僅需要連接3條引線。當單片機把數據送到MAX7219后,它就可以獨立的進行動態掃描顯示,無需單片機再進行干預。對於單片機來說,這些數碼顯示器,看起來似乎都是在進行靜態顯示,可以說是驅動多位數碼顯示器的最佳選擇。

 

MAX7219各引腳的功能:
DIN:串行數據輸入端
DOUT:串行數據輸出端,用於級連擴展
LOAD:裝載數據輸入
CLK:串行時鍾輸入
DIG0~DIG7:8位LED位選線,從共陰極LED中吸入電流
SEG A~SEG G DP     7段驅動和小數點驅動
ISET:  通過一個10k電阻和Vcc相連,設置段電流

 

技術參數:
種類: LED顯示驅動器
系列: MAX7219
數位數量: 8
片段數量: 64
安裝風格: SMD/SMT
封裝 / 箱體: SOIC-Wide-24
工作電源電壓: 4 V to 5.5 V
電源電流— 大值: 330 mA
小工作溫度: - 40 C
大工作溫度: + 85 C
封裝: Reel或Tube
高度: 2.35 mm
長度: 15.6 mm
產品: LED Display Drivers
寬度: 7.6 mm
高電平輸出電流: - 2 mA
低電平輸出電流: 5 mA
Pd-功率耗散: 941 mW
工廠包裝數量: 1000
零件號別名: MAX7219
單位重量: 734.500 mg

 

功能特點:
1 10MHz連續串行口
2 獨立的LED段控制
3 數字的譯碼與非譯碼選擇
4 150μA的低功耗關閉模式
5 亮度的數字和模擬控制
6 高電壓中斷顯示
7 共陰極LED顯示驅動
8 限制回轉電流的段驅動來減少EMI(MAX7221)
9 SPI, QSPI, MICROWIRE串行接口(MAX7221)
10 24腳的 DIP和 SO 封裝

 

 

MAX7219的應用電路

 

 

MAX7219點陣顯示模塊(8X8 LED共陰屏幕)

 

模塊參數:
1.單個模塊可以驅動一個8*8共陰點陣
2.模塊工作電壓:5V
3.模塊尺寸:長5厘米X寬3.2厘米X高1.5厘米
4.帶4個固定螺絲孔,孔徑3mm,可使用M3銅柱固定
5.模塊帶輸入輸出接口,支持多個模塊級聯

 

 

模塊電原理圖

8*8 發光管點陣 1088AS 
3mm共陰 8X8 高亮 紅色


★ 能在低電壓、小電流條件下驅動發光
★ 發光響應時間極短(<0.1μs),高頻特性好,單色性好,亮度高
★ 體積小,重量輕,抗沖擊性能好.固態封裝,封裝方式為灌膠型,穩定性高
★ 壽命長,使用壽命在5萬小時以上
★ 可連續掃描驅動各字節
★ 良好的顯示效果、視角寬
★ 推薦恆流使用,恆壓會出現亮度不均勻現象
★ 表面有保護膜的產品,可以在使用前撕下來
★ 焊接溫度: 260℃ 停留時間最長5秒
★ 當工作溫度高於25℃時,Ifm,ifp和Id必須降低;電流降低率是-036mA/℃(直流驅動),或-0.86mA/℃(脈沖驅動)功耗率是-0.75mW/℃。產品的工作電流不能大於對應工作溫度條件Ifm或Ifp的60%。
★ 藍色,翠綠色,白色請采取防靜電措施

 

 

 

接線方式:
(在IN方向的針腳)
Arduino Uno    ---     MAX7219
5V              <--->              VCC
GND           <--->              GND
12               <--->              DIN
11               <--->              CS
10               <--->              CLK

 

實驗接線:
1.模塊左邊為輸入端口,右邊為輸出端口。
2.控制單個模塊時,只需要將輸入端口接到單片機
3.多個模塊級聯時,第1個模塊的輸入端接單片機,輸出端接第2個模塊的輸入端,第2個模塊的輸出端接第3個模塊的輸入端,以此類推...

 

/*

【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)

實驗二十二:MAX7219點陣顯示模塊(8X8 LED共陰屏幕)

安裝庫:IDE--工具--管理庫--搜索“LedControl”--安裝

實驗源代碼

*/



#include <LedControl.h>

int DIN = 12;

int CS =  11;

int CLK = 10;



byte e[8]=    {0x7C,0x7C,0x60,0x7C,0x7C,0x60,0x7C,0x7C};  //E

byte d[8]=    {0x78,0x7C,0x66,0x66,0x66,0x66,0x7C,0x78};  //D

byte u[8]=    {0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x7E};  //U

byte c[8]=    {0x7E,0x7E,0x60,0x60,0x60,0x60,0x7E,0x7E};  //C

byte eight[8]= {0x7E,0x7E,0x66,0x7E,0x7E,0x66,0x7E,0x7E};  //8

byte s[8]=    {0x7E,0x7C,0x60,0x7C,0x3E,0x06,0x3E,0x7E};  //S

byte dot[8]=  {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18};  //.

byte o[8]=    {0x7E,0x7E,0x66,0x66,0x66,0x66,0x7E,0x7E};  //O

byte m[8]=    {0xE7,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0xC3};  //M

LedControl lc=LedControl(DIN,CLK,CS,4);



void setup(){

lc.shutdown(0,false);    //啟動時,MAX72XX處於省電模式

lc.setIntensity(0,8);    //將亮度設置為最大值

lc.clearDisplay(0);      //清除顯示

}



void loop(){

  byte smile[8]=  {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};//笑臉

  byte neutral[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};//標准臉  

  printByte(eight);//顯示8

  delay(1000);//延時1秒

  printByte(neutral);//顯示標准臉

  delay(1000);

}

//點陣顯示函數

void printByte(byte character [])

{

  int i = 0;

  for(i=0;i<8;i++)

  {

  lc.setRow(0,i,character);

  }

}

 

  

 

圖形編程

仿真編程

 

/*
【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
   實驗二十二:MAX7219點陣顯示模塊(8X8 LED共陰)
項目:全屏亮暗各1秒
引腳定義
DIN = D11
CS  = D10
CLK = D13
*/
 
#include <SPI.h>
 
const byte sprite[2][8] = {
     {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111},  
     {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000},     
};
 
const byte DECODEMODE = 0x09;
const byte INTENSITY = 0x0a;
const byte SCANLIMIT = 0x0b;
const byte SHUTDOWN = 0x0c;
const byte DISPLAYTEST = 0x0f;
 
void max7219(const byte reg, const byte data) {
   digitalWrite(SS, LOW);
   SPI.transfer(reg);
   SPI.transfer(data);
   digitalWrite(SS, HIGH);  
}
 
void setup() {
   SPI.begin();
    
   max7219(SCANLIMIT, 7);
   max7219(DECODEMODE, 0);
   max7219(INTENSITY, 2);
   max7219(DISPLAYTEST, 0);
   max7219(SHUTDOWN, 1);  
    
   for(byte i=0; i<8; i++) {
     max7219(i+1, 0);
   }
} 
 
void loop() {
   for(byte j=0; j<2; j++) {
     for(byte i=0; i<8; i++) {
       max7219(i+1, sprite[j]);
     }
   delay(1000);
   }
}

  

/*
【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
   實驗二十二:MAX7219點陣顯示模塊(8X8 LED共陰)
項目四:全屏紅心跳動
引腳定義
DIN = D11
CS  = D10
CLK = D13
*/

#include <SPI.h>
 
const byte sprite[2][8] = {
     { 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x18 },  
     { 0x00, 0x00, 0x24, 0x7E, 0x7E, 0x3C, 0x18, 0x00 }     
};
 
const byte DECODEMODE = 0x09;
const byte INTENSITY = 0x0a;
const byte SCANLIMIT = 0x0b;
const byte SHUTDOWN = 0x0c;
const byte DISPLAYTEST = 0x0f;
 
void max7219(const byte reg, const byte data) {
   digitalWrite(SS, LOW);
   SPI.transfer(reg);
   SPI.transfer(data);
   digitalWrite(SS, HIGH);  
}
 
void setup() {
   SPI.begin();
    
   max7219(SCANLIMIT, 7);
   max7219(DECODEMODE, 0);
   max7219(INTENSITY, 2);
   max7219(DISPLAYTEST, 0);
   max7219(SHUTDOWN, 1);  
    
   for(byte i=0; i<8; i++) {
     max7219(i+1, 0);
   }
} 
 
void loop() {
   for(byte j=0; j<2; j++) {
     for(byte i=0; i<8; i++) {
       max7219(i+1, sprite[j][i]);
     }
   delay(500);
   }
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM