http://www.alsrobot.cn/goods-107.html
请问大神,我购买了一个8*8点阵屏,根据自带的说明书,已经测试通过了显示“桃心”的效果。
但我看不懂说明书里的代码,不知道控制原理。
经过测试、修改后,发现说明书中的代码有一些没有用处,就给删了。
总结出来一份精简版,并且可以正常显示桃心效果。
const int DINPin = 2; //数据引脚 连接到数字2 口
const int CLKPin = 4; //时钟引脚 连接到数字4 口
const int LTHPin = 7; //锁存引脚 连接到数字7 口
byte LieScan[4] = { //列扫描,点阵只点亮一行
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
byte HanZi_1[] = {
0x1c,0x3e,0x7e,0xfc,0xfc,0x7e,0x3e,0x1c //心形图案
};
void setup() {
pinMode(DINPin,OUTPUT); //设置数据引脚为输出
pinMode(CLKPin,OUTPUT); //设置锁存引脚为输出
pinMode(LTHPin,OUTPUT); //设置时钟引脚为输出
}
void loop() {
{
for(char x = 0;x <4;x++) {
shiftOut(DINPin, CLKPin, MSBFIRST, LieScan[x]); //先选择列
shiftOut(DINPin, CLKPin, MSBFIRST, HanZi_1[x]); //再送行数据
digitalWrite(LTHPin, LOW); //刷新显示
digitalWrite(LTHPin, HIGH);
}
}
}
问题1:我想把桃心做成呼吸灯的效果,可以渐强减弱,请问代码怎么写?我没有编程基础。。
问题2:哪位大神能讲一下,控制点阵屏的代码规则,假如我想换图案呢?应该怎么写,目前找不到规律。
非常感谢!
【这个是说明书中,原始的代码,供参考】
const int DINPin = 2; //数据引脚 连接到数字2 口
const int CLKPin = 4; //时钟引脚 连接到数字4 口
const int LTHPin = 7; //锁存引脚 连接到数字7 口
byte LieScan[16] = { //列扫描,点阵只点亮一行
0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F
};
byte HanZi_1[] = {
0x1c,0x3e,0x7e,0xfc,0xfc,0x7e,0x3e,0x1c //心形图案
};
byte HanZi_2[] = {
0x1c,0x3e,0x7e,0xfc,0xfc,0x7e,0x3e,0x1c //心形图案
};
byte HanZi_3[] = {
0x1c,0x3e,0x7e,0xfc,0xfc,0x7e,0x3e,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 <9;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);
}
}
} |
|