
标准版
74hc595-7x11-demo
2.5k
0
0
14
简介
74HC595驱动7x11点阵屏(LED-7X11-JHM)DEMO
简介:74HC595驱动7x11点阵屏(LED-7X11-JHM)DEMO开源协议
:GPL 3.0
创建时间:2023-08-06 17:08:09更新时间:2023-08-14 09:53:06
描述
起因
由于我之前做了一个点阵时钟 ,但是无奈LED点阵屏价格比较贵,所以想找一个价格较为便宜的点阵来做便宜一点的点阵方案,再淘宝上看到有那种五毛钱一个的7x11的LED点阵,所以就想着试试搞一下这种点阵屏,这个由于是7x11的点阵,没有比较好的驱动芯片,只能自己想办法,此时就想起以前用的74HC595芯片,用这个芯片来驱动LED点阵试试。

原理
- 关于74HC595相关原理的可以参考我这篇 Arduino+2 片 74hc595 驱动 8x8 (共阳) 点阵 (1008BS)
由于点阵是7x11的格式,不是那种标准的8x8,所以代码的处理上都有些许的麻烦,所以可以把三个LED点阵看成一个整体,所以就是 7x33 的格式,需要的引脚就是 33+7= 40 个IO口,然后一个74HC595是可以控制8个IO口,这里用5个74HC595芯片即可。

立创PCB地址
成品图


取模方法
- 这是在线取模地址:点阵取模工具
这个取模主要是受代码控制,我这里的取模是直接用8x8的点阵取模逻辑,所以最末尾列是没有点亮的,这里可自行修改代码,具体请参考我的截图,不做过多解释

arduino代码
- 这里用ESP8266的代码为例,其他板子的代码只需要改改引脚地址即可
int latchPin = D6;
int clockPin = D7;
int dataPin = D5;
/**
这里为啥是 7 - 5
7:表示每一行显示的内容
5:前面第一个是表示每行的行号,后面四个表示每八个一列显示的内容
所以这里取模的时候,第一列的值是固定的,后面每一列为一组,而不是一行为一组
*/
uint8_t nums_font[7][5] = {
{0x3f, 0xe0, 0x7e, 0x10, 0x18},
{0x5f, 0xa0, 0x81, 0x28, 0x3c},
{0x6f, 0xee, 0xa5, 0x44, 0x7e},
{0x77, 0x28, 0x81, 0x44, 0xff},
{0x7b, 0xee, 0x99, 0x7c, 0x18},
{0x7d, 0x0a, 0x81, 0x44, 0x18},
{0x7e, 0x0e, 0x7e, 0x44, 0x18}
};
void setup() {
Serial.begin(115200);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// 首先我们先获取数字取模的结果
// 这里为啥会是7,因为纵向只有七列
for (int i = 0; i < 7; i++) {
digitalWrite(latchPin, LOW);
// 这里为啥是5?因为横向33列是由 4片74hc595 + 第5片74hc595的第一个引脚控制的
for (int j = 0; j < 5; j++) {
shiftOut(dataPin, clockPin, LSBFIRST, nums_font[i][(5-j)%5]);
}
digitalWrite(latchPin, HIGH);
delay(1);
}
}
尾巴
这里本来是想适配我那个点阵时钟代码的,但是由于这个的显示方式是逐行扫描,延迟只有1ms左右,所以搞起来很麻烦,需要一点时间去适配,希望后续可以搞定
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论