37款傳感器與模塊的提法共缕,在網(wǎng)絡(luò)上廣泛流傳噩凹,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的挫以。鑒于本人手頭積累了一些傳感器和模塊谬莹,依照實(shí)踐出真知(一定要動手做)的理念诫惭,以學(xué)習(xí)和交流為目的翁锡,這里準(zhǔn)備逐一動手試試做實(shí)驗(yàn),不管成功與否夕土,都會記錄下來---小小的進(jìn)步或是搞不定的問題馆衔,希望能夠拋磚引玉。?
【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)二十二:MAX7219點(diǎn)陣顯示模塊(8X8 LED共陰屏幕)
MAX7219?
是美國MAXIM 公司推出的多位LED 顯示驅(qū)動器怨绣,采用3 線串行接口傳送數(shù)據(jù)角溃,可直接與單片機(jī)接口連接,用戶能方便修改其內(nèi)部參數(shù)梨熙,以實(shí)現(xiàn)多位LED 顯示开镣。它內(nèi)含硬件動態(tài)掃描電路、BCD譯碼器咽扇、段驅(qū)動器和位驅(qū)動器邪财。此外,其內(nèi)部還含有8X8 位靜態(tài)RAM,用于存放8 個數(shù)字的顯示數(shù)據(jù)质欲。顯然树埠,它可直接驅(qū)動64 段LED點(diǎn)陣顯示器。當(dāng)多片MAX7219 級聯(lián)時(shí)嘶伟,可控制更多的LED 點(diǎn)陣顯示器怎憋。顯示的數(shù)據(jù)通過單片機(jī)數(shù)據(jù)處理后,送給MAX7219 顯示九昧。
串行輸入/輸出共陰極顯示驅(qū)動器
MAX7219/MAX7221是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動器绊袋,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個獨(dú)立的LED铸鹰。其上包括一個片上的B型BCD編碼器癌别、多路掃描回路,段字驅(qū)動器蹋笼,而且還有一個8*8的靜態(tài)RAM用來存儲每一個數(shù)據(jù)展姐。 只有一個外部寄存器用來設(shè)置各個LED的段電流躁垛。 MAX7221與SPI?、 QSPI?以及 MICROWIRE?相兼容圾笨,同時(shí)它有限制回轉(zhuǎn)電流的段驅(qū)動來減少EMI(電磁干擾)教馆。 一個方便的四線串行接口可以聯(lián)接所有通用的微處理器。 每個數(shù)據(jù)可以尋址在更新時(shí)不需要改寫所有的顯示擂达。MAX7219/MAX7221同樣允許用戶對每一個數(shù)據(jù)選擇編碼或者不編碼土铺。 整個設(shè)備包含一個150μA的低功耗關(guān)閉模式,模擬和數(shù)字亮度控制谍婉,一個掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù)舒憾,還有一個讓所有LED發(fā)光的檢測模式。?
MAX7219內(nèi)部結(jié)構(gòu)圖
作為一塊專用的LED顯示驅(qū)動芯片穗熬,MAX7219能夠以動態(tài)形式驅(qū)動8位數(shù)碼顯示器镀迂。還可以用 n 片MAX7219進(jìn)行級連,以驅(qū)動8 * n位數(shù)碼顯示唤蔗。MAX7219與數(shù)碼顯示器的之間的電路極為簡單探遵,幾乎連限流電阻都不用。MAX7219與單片機(jī)之間也僅僅需要連接3條引線妓柜。當(dāng)單片機(jī)把數(shù)據(jù)送到MAX7219后箱季,它就可以獨(dú)立的進(jìn)行動態(tài)掃描顯示,無需單片機(jī)再進(jìn)行干預(yù)棍掐。對于單片機(jī)來說藏雏,這些數(shù)碼顯示器,看起來似乎都是在進(jìn)行靜態(tài)顯示作煌,可以說是驅(qū)動多位數(shù)碼顯示器的最佳選擇掘殴。
MAX7219各引腳的功能:
DIN:串行數(shù)據(jù)輸入端
DOUT:串行數(shù)據(jù)輸出端,用于級連擴(kuò)展
LOAD:裝載數(shù)據(jù)輸入
CLK:串行時(shí)鐘輸入
DIG0~DIG7:8位LED位選線粟誓,從共陰極LED中吸入電流
SEG A~SEG G DP? ???7段驅(qū)動和小數(shù)點(diǎn)驅(qū)動
ISET:??通過一個10k電阻和Vcc相連奏寨,設(shè)置段電流
技術(shù)參數(shù):
種類: LED顯示驅(qū)動器
系列: MAX7219
數(shù)位數(shù)量: 8
片段數(shù)量: 64
安裝風(fēng)格: 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
產(chǎn)品: LED Display Drivers
寬度: 7.6 mm
高電平輸出電流: - 2 mA
低電平輸出電流: 5 mA
Pd-功率耗散: 941 mW
工廠包裝數(shù)量: 1000
零件號別名: MAX7219
單位重量: 734.500 mg
功能特點(diǎn):
1 10MHz連續(xù)串行口
2 獨(dú)立的LED段控制
3 數(shù)字的譯碼與非譯碼選擇
4 150μA的低功耗關(guān)閉模式
5 亮度的數(shù)字和模擬控制
6 高電壓中斷顯示
7 共陰極LED顯示驅(qū)動
8 限制回轉(zhuǎn)電流的段驅(qū)動來減少EMI(MAX7221)
9 SPI, QSPI, MICROWIRE串行接口(MAX7221)
10 24腳的 DIP和 SO 封裝
MAX7219的應(yīng)用電路
MAX7219點(diǎn)陣顯示模塊(8X8 LED共陰屏幕)
模塊參數(shù):
1.單個模塊可以驅(qū)動一個8*8共陰點(diǎn)陣
2.模塊工作電壓:5V
3.模塊尺寸:長5厘米X寬3.2厘米X高1.5厘米
4.帶4個固定螺絲孔,孔徑3mm鹰服,可使用M3銅柱固定
5.模塊帶輸入輸出接口病瞳,支持多個模塊級聯(lián)
模塊電原理圖
8*8 發(fā)光管點(diǎn)陣 1088AS?
3mm共陰 8X8 高亮 紅色
★ 能在低電壓、小電流條件下驅(qū)動發(fā)光
★ 發(fā)光響應(yīng)時(shí)間極短(<0.1μs),高頻特性好,單色性好,亮度高
★ 體積小,重量輕,抗沖擊性能好.固態(tài)封裝,封裝方式為灌膠型,穩(wěn)定性高
★ 壽命長,使用壽命在5萬小時(shí)以上
★ 可連續(xù)掃描驅(qū)動各字節(jié)
★ 良好的顯示效果悲酷、視角寬
★ 推薦恒流使用,恒壓會出現(xiàn)亮度不均勻現(xiàn)象
★ 表面有保護(hù)膜的產(chǎn)品,可以在使用前撕下來
★ 焊接溫度: 260℃ 停留時(shí)間最長5秒
★ 當(dāng)工作溫度高于25℃時(shí),Ifm,ifp和Id必須降低;電流降低率是-036mA/℃(直流驅(qū)動)套菜,或-0.86mA/℃(脈沖驅(qū)動)功耗率是-0.75mW/℃。產(chǎn)品的工作電流不能大于對應(yīng)工作溫度條件Ifm或Ifp的60%设易。
★ 藍(lán)色,翠綠色,白色請采取防靜電措施
接線方式:
(在IN方向的針腳)
Arduino Uno? ? ---? ???MAX7219
5V? ?? ?? ?? ???<--->? ?? ?? ?? ???VCC
GND? ?? ?? ???<--->? ?? ?? ?? ???GND
12? ?? ?? ?? ?? ?<--->? ?? ?? ?? ???DIN
11? ?? ?? ?? ?? ?<--->? ?? ?? ?? ???CS
10? ?? ?? ?? ?? ?<--->? ?? ?? ?? ???CLK
實(shí)驗(yàn)接線:
1.模塊左邊為輸入端口笼踩,右邊為輸出端口。
2.控制單個模塊時(shí)亡嫌,只需要將輸入端口接到單片機(jī)
3.多個模塊級聯(lián)時(shí)嚎于,第1個模塊的輸入端接單片機(jī),輸出端接第2個模塊的輸入端挟冠,第2個模塊的輸出端接第3個模塊的輸入端于购,以此類推...
/*
【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)二十二:MAX7219點(diǎn)陣顯示模塊(8X8 LED共陰屏幕)
安裝庫:IDE--工具--管理庫--搜索“LedControl”--安裝
實(shí)驗(yàn)源代碼
*/
#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);????//啟動時(shí),MAX72XX處于省電模式
lc.setIntensity(0,8);????//將亮度設(shè)置為最大值
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};//標(biāo)準(zhǔn)臉??
??printByte(eight);//顯示8
??delay(1000);//延時(shí)1秒
??printByte(neutral);//顯示標(biāo)準(zhǔn)臉
??delay(1000);
}
//點(diǎn)陣顯示函數(shù)
void printByte(byte character [])
{
??int i = 0;
??for(i=0;i<8;i++)
??{
??lc.setRow(0,i,character);
??}
}