16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

74HC595芯片具体的编程还要涉及到时序,不是一句两句就能说完的,所以这些基本知识我就不说了,我说一下我对74HC595的理解:上面的软件以及PDF格式的原理图等在单片机贴吧里我都有分享,大家可以去单片机贴吧找或者直接百度“LCD1602初始化问题详解:单片机贴吧”就行。

首先我们需要看一下16X16点阵驱动电路。 以这个电路为例,写一下我编写16X16点阵驱动器的经验。 不喷不喷,O(∩_∩)O,电路图为:

16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

16X16点阵示意图

(注:我在图片上加了一些注释,可能有些人不喜欢,所以想看原图的可以在我微控制器贴吧的帖子里找到。有PDF文件,很清晰! )

从图中我们可以看到74HC138芯片控制列,74HC595芯片控制行。 我们都知道74HC138芯片在同一时间只能有一个引脚输出有效(不了解74HC138和后面要提到的74HC595的朋友不用担心,后面我们也会讲到74HC138和74HC595)文章),这意味着同时只能选择一行,而74HC595是“串行输入和输出”,八个引脚可以同时有效,这将导致编写16X16点阵驱动程序的问题。 第一个容易出错的点:扫描方式。

注1:扫描方式

这个16X16点阵的驱动扫描方式是由电路图决定的(我只参考这个16X16点阵)。 与8X8点阵不同的是,8X8点阵的扫描方式是任意的。

上面说了,74HC138只有一个引脚有效,而且74HC138控制行,所以这次驱动写只能用行扫描和列来发送数据。行扫描的原理在上一篇文章中已经讲解过了,就不说了在这里重复一遍,免得你们觉得我啰嗦…~(≧▽≦)/~喵

在这里我想纠正我犯的一个错误。 我才发现的,别打我! [o(>﹏)其他选项中,软件本身有相当详细的说明,自己看吧。

这样,16X16点阵的注意事项就基本完成了,但是你是否有这样的感觉:“虽然我听你提到了那些注意事项,但我现在脑子里还是一片空白,不知道如何开始?” 是的。 这种感觉很正常(除了那些在阅读本文之前就知道16X16点阵的人)。 毕竟我还没讲过总体思路,也没有讲过上面提到的74HC595和74HC138,大家不要失去信心。 ,下面继续:(约定:分割线)

16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

《刀剑神域》主角:桐谷和人

在说整体思路之前,我们先来说一下上面提到的两个芯片,最后把上面提到的一切都连接起来。

注四:74HC138芯片

下面是我用Altium Designer画的74HC138元件图(我刚学完Altium Designer,才一周,所以不知道怎么用)。 总共有 16 个引脚。

总体功能:138(以下简称138)。 主要功能是用一个三位二进制数来控制其中一个八位输出引脚,常用于动态显示。

A0、A1、A2 组成三位二进制数。

Y0~Y7 为八位输出引脚。

E1、E2、E3用于控制当前138是否工作。 当要控制多个138时,使用这三个引脚。

细节我就不多说了,包括真值表、具体电路连接等等,我这里只讲技术。 最基础的基础知识最好还是自己学来记住!

16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

我自己画了74HC138的原理图,但是网上找不到好的。

注五:74HC595芯片

下面我用“画图”画了一张74HC595的工作原理图:(画这么简单的图我花了将近一个小时,活不下去了……╯﹏╰)

16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

74HC595原理图

74HC595芯片的具体编程还涉及到时序,不是一两句话能解释清楚的,所以我就不深究这些基础知识了。 我说一下我对74HC595的理解:

74HC595的组成:74HC595就像一个水库,有进水口(图中DS引脚为第一列)、储水箱(图中数据存储区为第二列)、放水门。 (图中的OE针,第三列),八个出水口(也是第三列)。

74HC595的工作原理:当收到进水命令(SH_CP引脚)时,开始进水。 如果进入的水过多,就会漏出(下面的 Q7' 引脚)。 当接收到储水命令(ST_CP引脚)时,进水将进入储水箱,最后当接收到放水命令(OE引脚)时,将水释放,8个出水口将在同时。

就这样我就讲完了74HC595(再次强调,这里就不讲基础知识了,呵呵,别怪我,我主要分享经验和技巧,基础知识可以在百度百科上查到,会的)更好更详细!)

这样就完成了知识准备。 现在我们看一下这个示意图:

16X16点阵的驱动电路编写技巧以及写LED灯时应注意的一些小细节

16X16点阵示意图

现在我们已经有了编写代码的总体思路:

扫描方式:线扫描

滚动实现:数据读取位置变化(上面提到过)

使用for循环来控制运动的时间间隔。 for中使用两个74HC138依次选择每一行,然后使用两个74HC595发送每一行的数据,直到扫描完一个屏幕(不是8行,这次是16行); 之后,在外面嵌套一个for循环,改变数据读取的位置(后移两个字节),从而实现16X16点阵的驱动写入。

注意细节,不要忽视它们。 这也是 LED 类型,需要微延迟和消隐操作。 当然,作为一个理想的开发者,标准化的代码格式也是必须的!

让我在这里告诉你一些事情。 我使用的编程软件是TKStudio,非常好用。 我最喜欢的是它的代码提示功能。 这是非常强大的。 Keil C51 没有代码提示,但 Keil MDK for ARM 有。 功能齐全,但是初学者一开始都是写C51,所以写C51代码时TKStudio还是不错的,这对新手来说是个好消息。 本来想讲讲这个软件的,但是时间这么晚了,该睡觉了,明天还要去上课,所以下一篇文章讲一下TKStudio这个软件。 然后我主要讲一下如何改变字体和语法。 强调一下,我也会分享我的编辑样式文件。 你可以直接引用它。 如果你不喜欢我的风格,就自己改变吧。

我已经在MCU贴吧分享了上述软件以及PDF格式的原理图。 你可以去单片机贴吧找或者直接去百度《LCD1602初始化问题详解:单片机贴吧》。

好了,本文就到此为止。

单片机

学习哪种单片机最有前途?这是单片机初学者最关心的问题

2024-2-18 0:04:04

单片机

STM32与单片机单片机(Microcontrollers)的嵌入式技术介绍

2024-2-18 1:03:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索