“(SKU:RB-05L009)8*8点阵模块”的版本间的差异
(以“<br/> 右 ==概述 == :还在为驱动点阵连接复杂的接线烦恼吗?还在为 Arduino 控制器屈指可数的 I/O 资 源...”为内容创建页面) |
(→例子程序2) |
||
| (未显示3个用户的13个中间版本) | |||
| 第1行: | 第1行: | ||
<br/> | <br/> | ||
[[文件:ewg1.jpg|500px|有框|右]] | [[文件:ewg1.jpg|500px|有框|右]] | ||
| − | == | + | ==产品概述 == |
| − | + | 还在为驱动点阵连接复杂的接线烦恼吗?还在为 Arduino 控制器屈指可数的 I/O 资源犯愁吗?2013 最新推出的 8X8 LED Matrix Module v1.0 点阵模块是哈尔滨奥松机器人科技有限公司研发的一款易安装、易连接、可拓展的 8X8 点阵模块。此模块采用高速的 74HC595 串并转换芯片。SPI 接口,仅需要 3 根信号线即可驱动多块 8x8 点阵屏,最大限度的节省您宝贵的 Arduino 控制器 I/O 资源。行列信号全部传输完毕后再更新显示,显示亮丽,可靠性高。适合于 Arduino 控制器、STC 单片机、AVR 单片机等。 | |
| − | + | ||
| − | + | ==规格参数== | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | == | + | |
# 产品名称:8*8点阵模块 | # 产品名称:8*8点阵模块 | ||
| − | # 产品货号:RB-05L009 | + | # 产品货号:RB - 05L009 |
| − | # | + | # 工作电压:DC 5V |
| + | # 接口类型:SPI | ||
# 产品类型:显示输出 | # 产品类型:显示输出 | ||
# 制作工艺:FR4双面喷锡 | # 制作工艺:FR4双面喷锡 | ||
| − | # 固定孔尺寸:3. | + | # 固定孔尺寸:3.2 mm |
| − | # 对角固定孔间距:22. | + | # 对角固定孔间距:22.67 mm |
| − | # 固定孔距板边缘:7. | + | # 固定孔距板边缘:7.93 mm |
# 人性化设计:可级联应用显示 | # 人性化设计:可级联应用显示 | ||
| − | # | + | # 工作温度:10℃-30℃ |
| − | # | + | # 工作湿度:10%~90% 无凝结 |
| − | # | + | # 重量:12g |
| − | # | + | # 产品尺寸:32mm x 32mm x 23mm |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | <pre style='color:blue'> | + | ==使用方法== |
| − | + | ===工作原理=== | |
| − | + | 通过 74HC595 移位寄存器连接 8*8 点阵液晶模块,模块与单片机之间使用 SPI 进行通信,只需要占用三个IO接口,两片 74HC595 模块使用级联的方式连接,实现串行输入并行输出,来控制点阵液晶。 | |
| − | + | ===编程原理=== | |
| − | + | 本例子程序中需要使用一个扩展程序语句,介绍如下:<br/> | |
| − | + | * shiftOut()语句 | |
| − | + | 描述:将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。<br/> | |
| − | + | 语法:<br/> | |
| − | + | shiftOut(dataPin, clockPin, bitOrder, value)<br/> | |
| − | + | 参数:<br/> | |
| − | + | * dataPin:输出每一位数据的引脚(int) | |
| − | + | * clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) | |
| − | + | * bitOrder:输出位的顺序,最高位优先或最低位优先 | |
| − | + | * value: 要移位输出的数据(byte) | |
| − | }; | + | 注意:<br/> |
| − | void setup() { | + | dataPin和clockPin要用pinMode()配置为输出。 shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。<br/> |
| − | pinMode( | + | <pre style='color:blue'> |
| − | pinMode( | + | //最高有效位优先串行输出 |
| − | pinMode( | + | int 数据= 500; |
| − | } | + | //移位输出高字节 |
| − | void loop() { | + | shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); |
| − | for( | + | //移位输出低字节 |
| − | for( | + | shiftOut(data, clock, MSBFIRST, data); |
| + | //最低有效位优先串行输出 | ||
| + | data = 500; | ||
| + | //移位输出低字节 | ||
| + | shiftOut(dataPin, clock, LSBFIRST, data); | ||
| + | //移位输出高字节 | ||
| + | shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); | ||
| + | </pre> | ||
| + | ===实验例程=== | ||
| + | ====使用硬件==== | ||
| + | * [http://www.alsrobot.cn/goods-546.html Carduino UNO R3 控制器] * 1个 | ||
| + | * [http://www.alsrobot.cn/goods-147.html Carduino UNO 传感器扩展板 v5.0] * 1个 | ||
| + | * [http://www.alsrobot.cn/goods-107.html 8 * 8 LED Matrix Module v1.0] * 1个 | ||
| + | * [http://www.alsrobot.cn/goods-107.html 3P 通用连接线] * 1条 | ||
| + | * 2P 电源线 * 1组 | ||
| + | * [http://www.alsrobot.cn/goods-90.html USB 数据通信线] * 1条 | ||
| + | ====接线方法==== | ||
| + | 通过 SPI 通信方式中的 DIN、CLK、LTH 对 LED 点阵进行控制。DIN 为数据,CLK为时钟,LTH 为锁存。 | ||
| + | 将 8 * 8 点阵模块的 DIN、CLK、LTH 分别连接到 Arduino 传感器扩展板的数字 4、5、6 引脚,VCC、GND 分别连接到传感器扩展板的任意一个 V、G 端口。最后连接Arduino 控制器至计算机。 如下图所示: | ||
| + | 整体连接图: | ||
| + | [[文件:02L00901.png|500px|有框|居中]] | ||
| + | 接线细节图: | ||
| + | [[文件:02L00902.png|700px|有框|居中]] | ||
| + | |||
| + | ====例子程序1==== | ||
| + | <pre style='color:blue'> | ||
| + | //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); | ||
| + | } | ||
| + | } | ||
} | } | ||
| − | + | </pre> | |
| − | + | ====程序1效果==== | |
| − | + | 点阵液晶分别以行扫描和列扫描显示 | |
| − | + | ||
| + | ====例子程序2==== | ||
| + | <pre style='color:blue'> | ||
| + | const int DINPin = 4; //数据引脚 连接到数字P4口 | ||
| + | const int CLKPin = 5; //时钟引脚 连接到数字P5口 | ||
| + | const int LTHPin = 6; //锁存引脚 连接到数字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); //设置数据引脚为输出 | ||
| + | pinMode(CLKPin,OUTPUT); //设置锁存引脚为输出 | ||
| + | pinMode(LTHPin,OUTPUT); //设置时钟引脚为输出 | ||
| + | } | ||
| + | void loop() { | ||
| + | for(unsigned char times_1 = 0;times_1 <250;times_1++) { //持续刷新250次 | ||
| + | for(char x = 0;x <8;x++) { | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列 | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]); //再送行数据 | ||
| + | digitalWrite(LTHPin, LOW); //刷新显示 | ||
| + | digitalWrite(LTHPin, HIGH); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| − | + | ====程序2效果==== | |
| − | + | 点阵液晶屏显示为心形图案 | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| + | ====例子程序3==== | ||
| + | <pre style='color:blue'> | ||
| + | const int DINPin = 4; //数据引脚 连接到数字P4口 | ||
| + | const int CLKPin = 5; //时钟引脚 连接到数字P5口 | ||
| + | const int LTHPin = 6; //锁存引脚 连接到数字P6口 | ||
| + | |||
| + | byte LieScan[16] = { //列扫描,点阵只点亮一行 | ||
| + | 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F | ||
| + | }; | ||
| + | byte HanZi_1[] = { | ||
| + | 0x04,0xFA,0x89,0xBA,0xC0,0x1C,0x40,0xFF //创 | ||
| + | }; | ||
| + | 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); //设置数据引脚为输出 | ||
| + | pinMode(CLKPin,OUTPUT); //设置锁存引脚为输出 | ||
| + | pinMode(LTHPin,OUTPUT); //设置时钟引脚为输出 | ||
| + | } | ||
| + | void loop() { | ||
| + | for(unsigned char times_1 = 0;times_1 <250;times_1++) { //持续刷新250次 | ||
| + | for(char x = 0;x <8;x++) { | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列 | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]); //再送行数据 | ||
| + | digitalWrite(LTHPin, LOW); //刷新显示 | ||
| + | digitalWrite(LTHPin, HIGH); | ||
| + | } | ||
| + | } | ||
| + | for(unsigned char times_2 = 0;times_2 <250;times_2++) { //持续刷新250次 | ||
| + | for(char x = 0;x <8;x++) { | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列 | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_2[x]); //再送行数据 | ||
| + | digitalWrite(LTHPin, LOW); //刷新显示 | ||
| + | digitalWrite(LTHPin, HIGH); | ||
| + | } | ||
| + | } | ||
| + | for(unsigned char times_3 = 0;times_3 <250;times_3++) { //持续刷新250次 | ||
| + | for(char x = 0;x <8;x++) { | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列 | ||
| + | shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_3[x]); //再送行数据 | ||
| + | digitalWrite(LTHPin, LOW); //刷新显示 | ||
| + | digitalWrite(LTHPin, HIGH); | ||
| + | } | ||
| + | } | ||
| + | } | ||
</pre> | </pre> | ||
| − | [[文件: | + | ====程序3效果==== |
| + | 在 8 * 8 LED Martix Module模块上轮流显示“创 新 ^_^” | ||
| + | |||
| + | ==产品相关推荐== | ||
| + | [[文件:erweima.png|230px|无框|右]] | ||
| + | ===购买地址=== | ||
| + | [http://www.alsrobot.cn/goods-107.html 8*8点阵模块] | ||
| + | ===周边产品推荐=== | ||
| + | [http://www.alsrobot.cn/goods-128.html Arduino LCD12864 点阵液晶扩展板 12864液晶屏] | ||
| + | <br/> | ||
| + | [http://www.alsrobot.cn/goods-127.html Arduino 12864点阵液晶 51单片机] | ||
| + | ===相关问题解答=== | ||
| + | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3052&highlight=%E7%82%B9%E9%98%B5 8*8点阵模块桃心呼吸灯效果 求助]<br/> | ||
| + | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=2762&highlight=%E7%82%B9%E9%98%B5 8x8点阵程序烧进去,显示的图案没有规律] | ||
| + | ===相关学习资料=== | ||
| + | [http://pan.baidu.com/s/13jrx3 用户手册]<br/> | ||
| + | [http://www.makerspace.cn/portal.php 奥松机器人技术论坛] | ||
2016年4月5日 (二) 16:47的最后版本
目录 |
产品概述
还在为驱动点阵连接复杂的接线烦恼吗?还在为 Arduino 控制器屈指可数的 I/O 资源犯愁吗?2013 最新推出的 8X8 LED Matrix Module v1.0 点阵模块是哈尔滨奥松机器人科技有限公司研发的一款易安装、易连接、可拓展的 8X8 点阵模块。此模块采用高速的 74HC595 串并转换芯片。SPI 接口,仅需要 3 根信号线即可驱动多块 8x8 点阵屏,最大限度的节省您宝贵的 Arduino 控制器 I/O 资源。行列信号全部传输完毕后再更新显示,显示亮丽,可靠性高。适合于 Arduino 控制器、STC 单片机、AVR 单片机等。
规格参数
- 产品名称:8*8点阵模块
- 产品货号:RB - 05L009
- 工作电压:DC 5V
- 接口类型:SPI
- 产品类型:显示输出
- 制作工艺:FR4双面喷锡
- 固定孔尺寸:3.2 mm
- 对角固定孔间距:22.67 mm
- 固定孔距板边缘:7.93 mm
- 人性化设计:可级联应用显示
- 工作温度:10℃-30℃
- 工作湿度:10%~90% 无凝结
- 重量:12g
- 产品尺寸:32mm x 32mm x 23mm
使用方法
工作原理
通过 74HC595 移位寄存器连接 8*8 点阵液晶模块,模块与单片机之间使用 SPI 进行通信,只需要占用三个IO接口,两片 74HC595 模块使用级联的方式连接,实现串行输入并行输出,来控制点阵液晶。
编程原理
本例子程序中需要使用一个扩展程序语句,介绍如下:
- shiftOut()语句
描述:将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。
语法:
shiftOut(dataPin, clockPin, bitOrder, value)
参数:
- dataPin:输出每一位数据的引脚(int)
- clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
- bitOrder:输出位的顺序,最高位优先或最低位优先
- value: 要移位输出的数据(byte)
注意:
dataPin和clockPin要用pinMode()配置为输出。 shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。
//最高有效位优先串行输出 int 数据= 500; //移位输出高字节 shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); //移位输出低字节 shiftOut(data, clock, MSBFIRST, data); //最低有效位优先串行输出 data = 500; //移位输出低字节 shiftOut(dataPin, clock, LSBFIRST, data); //移位输出高字节 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 数据通信线 * 1条
接线方法
通过 SPI 通信方式中的 DIN、CLK、LTH 对 LED 点阵进行控制。DIN 为数据,CLK为时钟,LTH 为锁存。 将 8 * 8 点阵模块的 DIN、CLK、LTH 分别连接到 Arduino 传感器扩展板的数字 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); //将行显示设置为低电平
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; //数据引脚 连接到数字P4口
const int CLKPin = 5; //时钟引脚 连接到数字P5口
const int LTHPin = 6; //锁存引脚 连接到数字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); //设置数据引脚为输出
pinMode(CLKPin,OUTPUT); //设置锁存引脚为输出
pinMode(LTHPin,OUTPUT); //设置时钟引脚为输出
}
void loop() {
for(unsigned char times_1 = 0;times_1 <250;times_1++) { //持续刷新250次
for(char x = 0;x <8;x++) {
shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列
shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]); //再送行数据
digitalWrite(LTHPin, LOW); //刷新显示
digitalWrite(LTHPin, HIGH);
}
}
}
程序2效果
点阵液晶屏显示为心形图案
例子程序3
const int DINPin = 4; //数据引脚 连接到数字P4口
const int CLKPin = 5; //时钟引脚 连接到数字P5口
const int LTHPin = 6; //锁存引脚 连接到数字P6口
byte LieScan[16] = { //列扫描,点阵只点亮一行
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
byte HanZi_1[] = {
0x04,0xFA,0x89,0xBA,0xC0,0x1C,0x40,0xFF //创
};
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); //设置数据引脚为输出
pinMode(CLKPin,OUTPUT); //设置锁存引脚为输出
pinMode(LTHPin,OUTPUT); //设置时钟引脚为输出
}
void loop() {
for(unsigned char times_1 = 0;times_1 <250;times_1++) { //持续刷新250次
for(char x = 0;x <8;x++) {
shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列
shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]); //再送行数据
digitalWrite(LTHPin, LOW); //刷新显示
digitalWrite(LTHPin, HIGH);
}
}
for(unsigned char times_2 = 0;times_2 <250;times_2++) { //持续刷新250次
for(char x = 0;x <8;x++) {
shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列
shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_2[x]); //再送行数据
digitalWrite(LTHPin, LOW); //刷新显示
digitalWrite(LTHPin, HIGH);
}
}
for(unsigned char times_3 = 0;times_3 <250;times_3++) { //持续刷新250次
for(char x = 0;x <8;x++) {
shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列
shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_3[x]); //再送行数据
digitalWrite(LTHPin, LOW); //刷新显示
digitalWrite(LTHPin, HIGH);
}
}
}
程序3效果
在 8 * 8 LED Martix Module模块上轮流显示“创 新 ^_^”
产品相关推荐
购买地址
周边产品推荐
Arduino LCD12864 点阵液晶扩展板 12864液晶屏
Arduino 12864点阵液晶 51单片机
相关问题解答
8*8点阵模块桃心呼吸灯效果 求助
8x8点阵程序烧进去,显示的图案没有规律



