2016-12-14 20 views
0

MAX7219 칩을 가진 LED 8x8 매트릭스에 표시 할 데이터를 보내고 싶습니다.ARM STM32에서 MAX7219 LED 8x8 매트릭스 MikroC

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

누구나 나를 더 잘 이해할 수 있기를 바랍니다.

미리 감사드립니다.

+0

해당 디스플레이의 데이터 시트를 읽어야하므로 소리가납니다. "모든 LED를 켜십시오"라는 명령을 0.5 초마다 반복적으로 보내면 모든 LED가 켜져 있다는 사실을 놀래켜서는 안됩니다. – Notlikethat

답변

0

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 
}