(SKU:RB-05L009)8*8點陣模塊
目錄 |
產(chǎn)品概述
還在為驅(qū)動點陣連接復雜的接線煩惱嗎?還在為 Arduino 控制器屈指可數(shù)的 I/O 資源犯愁嗎?2013 最新推出的 8X8 LED Matrix Module v1.0 點陣模塊是哈爾濱奧松機器人科技有限公司研發(fā)的一款易安裝、易連接、可拓展的 8X8 點陣模塊。此模塊采用高速的 74HC595 串并轉(zhuǎn)換芯片。SPI 接口,僅需要 3 根信號線即可驅(qū)動多塊 8x8 點陣屏,最大限度的節(jié)省您寶貴的 Arduino 控制器 I/O 資源。行列信號全部傳輸完畢后再更新顯示,顯示亮麗,可靠性高。適合于 Arduino 控制器、STC 單片機、AVR 單片機等。
規(guī)格參數(shù)
- 產(chǎn)品名稱:8*8點陣模塊
- 產(chǎn)品貨號:RB - 05L009
- 工作電壓:DC 5V
- 接口類型:SPI
- 產(chǎn)品類型:顯示輸出
- 制作工藝:FR4雙面噴錫
- 固定孔尺寸:3.2 mm
- 對角固定孔間距:22.67 mm
- 固定孔距板邊緣:7.93 mm
- 人性化設計:可級聯(lián)應用顯示
- 工作溫度:10℃-30℃
- 工作濕度:10%~90% 無凝結(jié)
- 重量:12g
- 產(chǎn)品尺寸:32mm x 32mm x 23mm
使用方法
工作原理
通過 74HC595 移位寄存器連接 8*8 點陣液晶模塊,模塊與單片機之間使用 SPI 進行通信,只需要占用三個IO接口,兩片 74HC595 模塊使用級聯(lián)的方式連接,實現(xiàn)串行輸入并行輸出,來控制點陣液晶。
編程原理
本例子程序中需要使用一個擴展程序語句,介紹如下:
- shiftOut()語句
描述:將一個數(shù)據(jù)的一個字節(jié)一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開始。依次向數(shù)據(jù)腳寫入每一位,之后時鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。
語法:
shiftOut(dataPin, clockPin, bitOrder, value)
參數(shù):
- dataPin:輸出每一位數(shù)據(jù)的引腳(int)
- clockPin:時鐘腳,當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));
實驗例程
使用硬件
- Carduino UNO R3 控制器 * 1個
- Carduino UNO 傳感器擴展板 v5.0 * 1個
- 8 * 8 LED Matrix Module v1.0 * 1個
- 3P 通用連接線 * 1條
- 2P 電源線 * 1組
- USB 數(shù)據(jù)通信線 * 1條
接線方法
通過 SPI 通信方式中的 DIN、CLK、LTH 對 LED 點陣進行控制。DIN 為數(shù)據(jù),CLK為時鐘,LTH 為鎖存。 將 8 * 8 點陣模塊的 DIN、CLK、LTH 分別連接到 Arduino 傳感器擴展板的數(shù)字 4、5、6 引腳,VCC、GND 分別連接到傳感器擴展板的任意一個 V、G 端口。最后連接Arduino 控制器至計算機。 如下圖所示: 整體連接圖:
接線細節(jié)圖:
例子程序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); //將行顯示設置為低電平 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);//將列顯示設置為高電平 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ù)據(jù)引腳為輸出 pinMode(CLKPin,OUTPUT); //設置鎖存引腳為輸出 pinMode(LTHPin,OUTPUT); //設置時鐘引腳為輸出 } 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ù)據(jù)引腳為輸出 pinMode(CLKPin,OUTPUT); //設置鎖存引腳為輸出 pinMode(LTHPin,OUTPUT); //設置時鐘引腳為輸出 } 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)推薦
購買地址
周邊產(chǎn)品推薦
Arduino LCD12864 點陣液晶擴展板 12864液晶屏
Arduino 12864點陣液晶 51單片機
相關(guān)問題解答
8*8點陣模塊桃心呼吸燈效果 求助
8x8點陣程序燒進去,顯示的圖案沒有規(guī)律