如何从AVR打印16 * 16点阵中的字符串

时间:2015-01-24 06:45:16

标签: microcontroller avr led

我想输出字符串" LED GAME"如图所示。但在Dot矩阵中,只有16 + 16 = 32个引脚。有没有办法从avr到dotmatrix打印字符串?

enter image description here

2 个答案:

答案 0 :(得分:3)

大多数LED矩阵都是内部构建的,如下例所示:

LED matrix

对于16x16 LED矩阵,因此行有16个引脚,列有16个引脚。要了解如何构建特定矩阵,您必须找到其数据表。

要在显示屏上写入任何内容,您需要将第一行设置为ON,将所有其他行设置为OFF并激活所需的cols。延迟之后,您将第一行设置为OFF,将第二行设置为ON并激活要在第二行中查看的cols。您将遍历所有这样的行。由于延迟时间很短,你的眼睛不够快,以至于大部分时间都没有LED关闭。

我建议在微控制器上使用定时器中断,并在中断例程中遍历行。通过这种方式,您可以轻松地将微控制器用于其他事情,而无需过多担心时序问题。

答案 1 :(得分:0)

如何识别点阵的Pin 1?

标签对面位置上最左边的点阵针脚#20; 2088BH-B"是针脚1。

您可以从以下两张图片中获得完整的想法。 enter image description here

enter image description here

希望这会对你有所帮助。您还可以尝试以下代码,这些代码是为了在点阵中显示9而编写的(编译器:micro-C)

void main() 
{
     DDRB = 0b11111111;
     DDRC = 0b11111111;
     while(1)
     {
           PORTB=0b00000000;  // 1
           PORTC=0b10000000;
            Delay_us(5);

           PORTB=0b00000000;       //2
           PORTC=0b01000000;
            Delay_us(5);

           PORTB=0b00000000;          //3
           PORTC=0b00100000;
            Delay_us(5);

           PORTB=0b00000000;             //4
           PORTC=0b00010000;
            Delay_us(5);

           PORTB=0b10011110;  // 5
           PORTC=0b00001000;
            Delay_us(5);

           PORTB=0b10010010;       //6
           PORTC=0b00000100;
            Delay_us(5);

           PORTB=0b10010010;          //7
           PORTC=0b00000010;
           Delay_us(5);

           PORTB=0b11111110;             //8
           PORTC=0b00000001;
           Delay_us(5);

     }
}