“(SKU:RB-05L009)8*8點陣模塊”的版本間的差異
(→?規(guī)格參數(shù)) |
(→?使用方法) |
||
第21行: | 第21行: | ||
==使用方法== | ==使用方法== | ||
? | ===使用硬件=== | + | ===工作原理=== |
? | * Carduino UNO 控制器 * 1個 | + | 通過 74HC595 移位寄存器連接 8*8 點陣液晶模塊,模塊與單片機之間使用 SPI 進行通信,只需要占用三個IO接口,兩片 74HC595 模塊使用級聯(lián)的方式連接,實現(xiàn)串行輸入并行輸出,來控制點陣液晶。 |
? | * Carduino UNO 傳感器擴展板 v5.0 * 1個 | + | ===編程原理=== |
? | * | + | 本例子程序中需要使用一個擴展程序語句,介紹如下:<br/> |
? | * 3P 通用連接線 * 1條 | + | * shiftOut()語句 |
+ | 描述:將一個數(shù)據(jù)的一個字節(jié)一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開始。依次向數(shù)據(jù)腳寫入每一位,之后時鐘腳被拉高或拉低,指示剛才的數(shù)據(jù)有效。<br/> | ||
+ | 語法:<br/> | ||
+ | shiftOut(dataPin, clockPin, bitOrder, value)<br/> | ||
+ | 參數(shù):<br/> | ||
+ | * dataPin:輸出每一位數(shù)據(jù)的引腳(int) | ||
+ | * clockPin:時鐘腳,當dataPin有值時此引腳電平變化(int) | ||
+ | * bitOrder:輸出位的順序,最高位優(yōu)先或最低位優(yōu)先 | ||
+ | * value: 要移位輸出的數(shù)據(jù)(byte) | ||
+ | 注意:<br/> | ||
+ | dataPin和clockPin要用pinMode()配置為輸出。 shiftOut目前只能輸出1個字節(jié)(8位),所以如果輸出值大于255需要分兩步。<br/> | ||
+ | <pre style='color:blue'> | ||
+ | //最高有效位優(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)); | ||
+ | </pre> | ||
+ | ===實驗例程=== | ||
+ | ====使用硬件==== | ||
+ | * [http://gharee.com/goods-546.html Carduino UNO R3 控制器] * 1個 | ||
+ | * [http://gharee.com/goods-147.html Carduino UNO 傳感器擴展板 v5.0] * 1個 | ||
+ | * [http://gharee.com/goods-107.html 8 * 8 LED Matrix Module v1.0] * 1個 | ||
+ | * [http://gharee.com/goods-107.html 3P 通用連接線] * 1條 | ||
* 2P 電源線 * 1組 | * 2P 電源線 * 1組 | ||
? | * USB 數(shù)據(jù)通信線 * 1條 | + | * [http://gharee.com/goods-90.html 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 控制器至計算機。 如下圖所示: | |
? | === | + | |
+ | ====例子程序1==== | ||
<pre style='color:blue'> | <pre style='color:blue'> | ||
//Pin connected to ST_CP of 74HC595 | //Pin connected to ST_CP of 74HC595 | ||
? | int latchPin = 6; | + | int latchPin = 6;//定義LTH引腳為D6 |
//Pin connected to SH_CP of 74HC595 | //Pin connected to SH_CP of 74HC595 | ||
? | int clockPin = 5; | + | int clockPin = 5;//定義CLK引腳為D5 |
? | ////Pin connected to DS of 74HC595 | + | //Pin connected to DS of 74HC595 |
? | int dataPin = 4; | + | int dataPin = 4;//定義DIN引腳為D4 |
int tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; | int tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; | ||
void setup() { | void setup() { | ||
第50行: | 第81行: | ||
for(int i = 0; i < 8; i++){ | for(int i = 0; i < 8; i++){ | ||
for(int j = 0; j < 8; j++){ | for(int j = 0; j < 8; j++){ | ||
? | digitalWrite(latchPin, LOW); | + | digitalWrite(latchPin, LOW); |
? | + | shiftOut(dataPin, clockPin, LSBFIRST, tab[i]);//掃描顯示每一列 | |
? | shiftOut(dataPin, clockPin, LSBFIRST, tab[i]); | + | shiftOut(dataPin, clockPin, LSBFIRST, 0xff); //將行顯示設(shè)置為低電平 |
? | shiftOut(dataPin, clockPin, LSBFIRST, 0xff); | + | |
digitalWrite(latchPin, HIGH); | digitalWrite(latchPin, HIGH); | ||
delay(50); | delay(50); | ||
第61行: | 第91行: | ||
for(int j = 0; j < 8; j++){ | for(int j = 0; j < 8; j++){ | ||
digitalWrite(latchPin, LOW); | digitalWrite(latchPin, LOW); | ||
? | + | shiftOut(dataPin, clockPin, LSBFIRST, 0x00);//將列顯示設(shè)置為高電平 | |
? | shiftOut(dataPin, clockPin, LSBFIRST, 0x00); | + | shiftOut(dataPin, clockPin, LSBFIRST, tab[i]); //掃描顯示每一行 |
? | shiftOut(dataPin, clockPin, LSBFIRST, tab[i]); | + | |
digitalWrite(latchPin, HIGH); | digitalWrite(latchPin, HIGH); | ||
delay(50); | delay(50); | ||
第70行: | 第99行: | ||
} | } | ||
</pre> | </pre> | ||
+ | ====程序1效果==== | ||
+ | 點陣液晶分別以行掃描和列掃描顯示 | ||
+ | |||
+ | ====例子程序2==== | ||
+ | <pre style='color:blue'> | ||
+ | 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 //創(chuàng) | ||
+ | }; | ||
+ | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | ====程序2效果==== | ||
+ | 點陣液晶屏顯示為心形圖案 | ||
+ | |||
+ | ====例子程序3==== | ||
+ | <pre style='color:blue'> | ||
+ | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | ====程序3效果==== | ||
+ | 在 8 * 8 LED Martix Module模塊上輪流顯示“創(chuàng) 新 ^_^” | ||
? | |||
? | |||
==產(chǎn)品相關(guān)推薦== | ==產(chǎn)品相關(guān)推薦== | ||
[[文件:erweima.png|230px|無框|右]] | [[文件:erweima.png|230px|無框|右]] |
2016年4月5日 (二) 15:46的版本
目錄 |
產(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
- 人性化設(shè)計:可級聯(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 控制器至計算機。 如下圖所示:
例子程序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 //創(chuàng) }; 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)推薦
購買地址
周邊產(chǎn)品推薦
Arduino LCD12864 點陣液晶擴展板 12864液晶屏
Arduino 12864點陣液晶 51單片機
相關(guān)問題解答
8*8點陣模塊桃心呼吸燈效果 求助
8x8點陣程序燒進去,顯示的圖案沒有規(guī)律