ARM STM32 MikroC 上带 MAX7219 的 LED 8x8 矩阵
LED 8x8 Matrix with MAX7219 on ARM STM32 MikroC
我想发送一些数据以在其上装有 MAX7219 芯片的 LED 8x8 矩阵上显示。
我的 MCU 是 ARM STM32F4,我使用 MikroC 作为开发工具来对该外设进行编程。
我完全不了解这种编程方式,所以我想知道如何发送文本,即如何从 MCU 发送到 LED 矩阵。
我写了一些代码,当我打开我的 MCU 时,所有 64 个 LED 都在不断闪烁,我不知道为什么。
// MCU's CS/PE11 pin
sbit Chip_Select at ODR11_GPIOE_ODR_bit;
void main() {
// Set PE11 as output pin (ChipSelect pin)
GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_11);
// Initialization method from SPI library from mikroC
SPI2_Init();
while (1) {
// select led matrix
Chip_Select = 0;
// sending data to matrix
SPI2_Write(0x01FF);
// deselect led matrix
Chip_Select = 1;
Delay_ms(500);
}
}
希望任何人都可以帮助我更加熟悉这一点。
提前致谢!
MAX7219使用前必须初始化。我忘记了,所以这是我的工作代码:
void max7219_init() {
GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_11);
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x09); // No decoding
SPI2_Write(0x00);
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0A);
SPI2_Write(0x01); // Segment luminosity intensity
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0B);
SPI2_Write(0x07); // Display refresh
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0C);
SPI2_Write(0x01); // Turn on the display
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x00);
SPI2_Write(0xFF); // No test
Chip_Select2 = 1; // DESELECT MAX
}
我想发送一些数据以在其上装有 MAX7219 芯片的 LED 8x8 矩阵上显示。
我的 MCU 是 ARM STM32F4,我使用 MikroC 作为开发工具来对该外设进行编程。
我完全不了解这种编程方式,所以我想知道如何发送文本,即如何从 MCU 发送到 LED 矩阵。
我写了一些代码,当我打开我的 MCU 时,所有 64 个 LED 都在不断闪烁,我不知道为什么。
// MCU's CS/PE11 pin
sbit Chip_Select at ODR11_GPIOE_ODR_bit;
void main() {
// Set PE11 as output pin (ChipSelect pin)
GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_11);
// Initialization method from SPI library from mikroC
SPI2_Init();
while (1) {
// select led matrix
Chip_Select = 0;
// sending data to matrix
SPI2_Write(0x01FF);
// deselect led matrix
Chip_Select = 1;
Delay_ms(500);
}
}
希望任何人都可以帮助我更加熟悉这一点。
提前致谢!
MAX7219使用前必须初始化。我忘记了,所以这是我的工作代码:
void max7219_init() {
GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_11);
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x09); // No decoding
SPI2_Write(0x00);
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0A);
SPI2_Write(0x01); // Segment luminosity intensity
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0B);
SPI2_Write(0x07); // Display refresh
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x0C);
SPI2_Write(0x01); // Turn on the display
Chip_Select2 = 1; // DESELECT MAX
Chip_Select2 = 0; // SELECT MAX
SPI2_Write(0x00);
SPI2_Write(0xFF); // No test
Chip_Select2 = 1; // DESELECT MAX
}