在本次会议中,我们将设计一个具有8x8 LED矩阵和ATmega8微控制器的8x8 LED显示器,它可以显示字母或名称。典型的8x8 led矩阵如下所示:
一个8x8 LED矩阵包含以矩阵形式排列的64个LED(发光二极管),因此称为LED矩阵。这些矩阵可以通过将64个LED进行电路连接而制成。但是,此过程非常耗时。现在,它们以紧凑的形式可用,如图所示。这些紧凑的模块具有不同的尺寸和多种颜色。可以方便地选择它们。
模块的成本与64个LED的成本相同,因此对于业余爱好者而言,这最容易实现。模块的PIN配置如图所示。PIN码应完全与图片中所示的数字相同,以免出错。我们将在描述中详细讨论模块的内部电路配置。
组件
硬件: ATMEGA8,电源(5v),AVR-ISP编程器,100 uF电容器(跨电源连接),1KΩ电阻(8个)。
软体: Atmel studio 6.1,progisp或flash magic。
电路图和工作
下图显示了ATMEGA8与LED矩阵模块之间的连接。
PORTD,PIN0 ------------------ LED模块的PIN13
PORTD,PIN1 ------------------ PIN03的LED模块
PORTD,PIN2 ------------------ PIN04的LED模块
PORTD,PIN3 ------------------ LED模块的PIN10
PORTD,PIN4 ------------------ PIN06的LED模块
LED模块的PORTD,PIN5 ------------------ PIN11
LED模块的PORTD,PIN6 ------------------ PIN15
PORTD,PIN7 ------------------ LED模块的PIN16
PORTB,LED模块的PIN0 ------------------ PIN09
LED模块的PORTB,PIN1 ------------------ PIN14
PORTB,PIN2 ------------------ PIN08的LED模块
PORTB,PIN3 ------------------ LED模块的PIN12
PORTC,LED模块的PIN0 ------------------ PIN01
PORTC,LED模块的PIN1 ------------------ PIN07
PORTC,PIN2 ------------------ PIN02的LED模块
PORTC,PIN3 ------------------ PIN05 LED模块
下图显示了8x8 LED矩阵显示器的电路图。
矩阵形式排列有64个LED。因此,我们有8列8行,如图所示。在那些行和列上,一行中的所有正极端子都聚集在一起。对于每一行,该行中的所有8个LED都有一个公共正极端子。如下图所示,
因此,对于8行,我们有8个公共正极端子,请考虑第一行。如图所示,D1至D8的LED具有公共正极端子,并从LED模块中引出为PIN9。
应当看到,行的所有常见正极都没有以有序的方式带出LED模块。在每种情况下,公共终端上都非常不规则。在连接终端时,应牢记这一点。
假设如果我们希望矩阵的第一个行中的任何一个或所有LED点亮,那么我们应该给LED MATRIX MODULE的PIN9而非PIN0供电。
假设如果我们希望矩阵的第三行中的任何一个或所有LED点亮,那么我们应该给LED MATRIX MODULE的PIN8而非PIN2供电。
因此,只要我们希望一行中的一个或所有LED都点亮,就可以为LED模块的相应引脚供电。
仅仅留下强大的ROWS收益还没有结束。我们需要将另一端接地。我们将在下面讨论。
现在,对于此实例,我们将忽略公共的正行,而将重点放在公共的负列上。
因此,在该模块中,第一列的所有负极端子都连接到PIN13。如下图所示。
此处模块的PIN OUTAGE也存在异常。第一列LED的公共负极在PIN13处引出。第二列LED的公共负极在PIN3处引出。
连接时应注意引脚。现在,如果第一列中的任何一个或所有LED都接地,则将MATRIX MODULE的PIN13接地。这样一来,所有其他七个常见的负数列都可以使用。当这两种情况放在一起时,我们会遇到如下所示的电路,
上面的电路是LED模块的完整内部图。 假设如果要打开矩阵中的LED D10,则需要给模块的PIN14供电,并将PIN3接地。这样,D10将打开。如下图所示。首先应该检查一下MATRIX,以了解所有顺序。
假设如果要打开D1,则需要为矩阵的PIN9供电并将PIN13接地。这样,LED D1将发光。下图显示了这种情况下的当前方向。
现在,对于棘手的部分,考虑我们要一次打开D1和D10。因此,我们同时为PIN9,PIN14和PIN13,PIN3都供电。这样,我们将使D2和D9以及D1和D10处于打开状态。这是因为它们共享公用端子。因此,如果我们想沿对角线方向打开LED,我们将被迫沿途打开所有LED。如下图所示。
因此,要消除此问题,我们一次只能打开一个LED。假设在t = 0m SEC时,LED D1接通。在t = 1m SEC时,LED D1调整为关,LED D2打开。再次在t = 2 m SEC,LED D2关闭,LED D1打开。这样下去。
现在的诀窍是,人眼无法捕获超过30 HZ的频率。也就是说,如果LED以30HZ或更高的频率连续打开和关闭。眼睛看到LED持续亮着。然而,这种情况并非如此。LED将不断地打开和关闭。这种技术称为多路复用。
通过使用多路复用,我们一次将仅翻转一行,并且将连续围绕这八行进行循环。可视化为肉眼完全打开的矩阵。
现在说我们要在矩阵上显示“ A”。
如前所述,我们将立即打开一行,
在t = 0m SEC时,此时PIN09设置为高电平(此时其他ROW引脚为低电平),PIN3,PIN4,PIN10,PIN6,PIN11,PIN15接地(此时其他COLUMN引脚为高电平)
在t = 1m SEC时,此时PIN14设置为HIGH(此时其他ROW引脚为LOW),PIN13,PIN3,PIN4,PIN10,PIN6,PIN11,PIN15,PIN16接地(其他COLUMN引脚此时为HIGH)。 )
在t = 2m SEC时,此时PIN08设置为高(此时其他ROW引脚为LOW),PIN13,PIN3,PIN15,PIN16接地(此时其他COLUMN引脚为HIGH)。
在t = 3m SEC时,此时PIN12设置为HIGH(此时其他ROW引脚为LOW),PIN13,PIN3,PIN15,PIN16接地(此时其他COLUMN引脚为HIGH)。
在t = 4m SEC时,此时PIN01设置为高电平(此时其他ROW引脚为低电平),PIN13,PIN3,PIN4,PIN10,PIN6,PIN11,PIN15,PIN16接地(其他COLUMN引脚此时为高电平) )
在t = 5m SEC时,此时PIN07设置为高电平(此时其他ROW引脚为低电平),PIN13,PIN3,PIN4,PIN10,PIN6,PIN11,PIN15,PIN16接地(其他COLUMN引脚此时为高电平) )
在t = 6m SEC时,此时PIN02设置为高(此时其他ROW引脚为LOW),PIN13,PIN3,PIN15,PIN16接地(此时其他COLUMN引脚为HIGH)。
在t = 7m SEC时,此时PIN05设置为高电平(此时其他ROW引脚为低电平),PIN13,PIN3,PIN15,PIN16接地(此时其他COLUMN引脚为高电平)
以这种速度,显示屏将被视为连续显示“ A”字符。如图所示。
这是所有字符在显示屏上显示的方式。正确连接电路后,如电路图所示。我们可以直接给控制器指令以有序方式执行多路复用,以显示名称。