2016-12-14 9 views
0

MAX7219チップを搭載したLED 8x8マトリックス上に表示するために、データを送信したいと思います。ARM STM32上のMAX7219 LED 8x8マトリックスMikroC

マイコンはARM STM32F4で、この周辺機器をプログラムするための開発ツールとしてMikroCを使用しています。

私はこのプログラミング方法の初心者ですから、どのようにテキストを送信するのか、つまりMCUからLEDマトリックスへの変換がどのように行われているか知りたいと思います。

私はいくつかのコードを書いています。マイコンをオンにすると、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をオンにする」コマンドを何も送信しない場合は、半秒ごとに繰り返して、すべての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 
} 
関連する問題