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

how to print a string in 16*16 Dot Matrix from AVR

我想输出如图所示的字符串 "LED GAME"。而在点阵中,只有16+16=32个管脚。有什么方法可以将字符串从 avr 打印到 dotmatrix 吗?

大多数 LED 矩阵都是内部构建的,就像这里的这个例子:

对于 16x16 LED 矩阵,您因此有 16 个用于行的引脚和 16 个用于列的引脚。要查看您的特定矩阵是如何构建的,您必须找到它的数据表。

要在显示屏上书写任何内容,您需要将第一行设置为开启,将所有其他行设置为关闭并激活您需要的列。延迟一段时间后,您将第一行设置为 OFF,第二行设置为 ON 并激活您希望在第二行中看到的列。您将像这样遍历所有行。由于延迟时间非常短,您的眼睛速度不够快,无法看到 LED 大部分时间都处于关闭状态。

我建议在您的微控制器上使用定时器中断并遍历中断例程中的行。这样您就可以轻松地将微控制器用于其他事情,而不必太担心时序问题。

如何识别点阵的Pin 1?

标签“2088BH-B”对面点阵最左边的引脚为引脚1。

你可以从下面两张图中得到一个完整的概念。

希望这会对您有所帮助。您还可以尝试以下代码,该代码是为在点阵中显示 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);

     }
}