如何从 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);
}
}
我想输出如图所示的字符串 "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);
}
}