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

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

enter image description here

0
您需要进行光栅扫描 - 连续循环所有行,打开每行的相关列位。只要你足够快地做到这一点,眼睛就会把它视为一个连续的显示器,就像老式的CRT一样。
额外 作者 Paul R,
您需要进行光栅扫描 - 连续循环所有行,打开每行的相关列位。只要你足够快地做到这一点,眼睛就会把它视为一个连续的显示器,就像老式的CRT一样。
额外 作者 Paul R,
您需要进行光栅扫描 - 连续循环所有行,打开每行的相关列位。只要你足够快地做到这一点,眼睛就会把它视为一个连续的显示器,就像老式的CRT一样。
额外 作者 Paul R,
考虑使用4个8x8 LED矩阵显示器,并使用类似 MAX7219 。有很多代码可以用AVR来驱动这些东西,以及如何将它们连接起来。简单的“一次一行”多路复用可能看起来不够亮,占空比为1/16。
额外 作者 Brett Hale,
考虑使用4个8x8 LED矩阵显示器,并使用类似 MAX7219 。有很多代码可以用AVR来驱动这些东西,以及如何将它们连接起来。简单的“一次一行”多路复用可能看起来不够亮,占空比为1/16。
额外 作者 Brett Hale,
考虑使用4个8x8 LED矩阵显示器,并使用类似 MAX7219 。有很多代码可以用AVR来驱动这些东西,以及如何将它们连接起来。简单的“一次一行”多路复用可能看起来不够亮,占空比为1/16。
额外 作者 Brett Hale,
您还可以购买内置控制硬件的16x16 LED矩阵显示器,但我没有使用它们的经验。
额外 作者 Brett Hale,
您还可以购买内置控制硬件的16x16 LED矩阵显示器,但我没有使用它们的经验。
额外 作者 Brett Hale,
您还可以购买内置控制硬件的16x16 LED矩阵显示器,但我没有使用它们的经验。
额外 作者 Brett Hale,

6 答案

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

LED matrix

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

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

我建议在你的微控制器上使用一个定时器中断,并在中断程序中迭代这些行。这样,您可以轻松地将微控制器用于其他事情,而无需过多担心时序问题。

3
额外

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

LED matrix

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

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

我建议在你的微控制器上使用一个定时器中断,并在中断程序中迭代这些行。这样,您可以轻松地将微控制器用于其他事情,而无需过多担心时序问题。

3
额外

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

LED matrix

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

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

我建议在你的微控制器上使用一个定时器中断,并在中断程序中迭代这些行。这样,您可以轻松地将微控制器用于其他事情,而无需过多担心时序问题。

3
额外

如何识别点阵的Pin 1?

标签“2088BH-B”的相对位置上的最左边的点阵针是针脚1。

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

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);

     }
}
0
额外

如何识别点阵的Pin 1?

标签“2088BH-B”的相对位置上的最左边的点阵针是针脚1。

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

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);

     }
}
0
额外

如何识别点阵的Pin 1?

标签“2088BH-B”的相对位置上的最左边的点阵针是针脚1。

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

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);

     }
}
0
额外