ARM®mbed OS 提高 之max7219 spi 8x8点阵显示8x8点阵屏通过SPI连接 MAX7219,初始化之后交替显示心形和中字. 使用nucleo SPI接口 硬件:- Nucleo070r 板/通用
- LED 8x8点阵连 MAX7219
接线:MAX7219 | nucleo | Note | VCC | 3V3 | Power | GND | GND | Ground | DIN | D11 | MOSI | CS | D10 | Chip select | CLK | D13 | SCLK |
/* nucleo_spi_max7219_led8x8
*
* Simple demo to drive a 8x8-as LED matrix by a MAX7219 LED driver IC
* After initialisation two characters (H and W) are displayed alternatively.
* The MAX7219 IC is driven by hardware SPI: SPI0 module at PTD1, PTD2, PTD3.
*/
#include "mbed.h"
//#include "max7219.h" //此头文件未使用
SPI spi(D11, D12, D13); // Arduino compatible MOSI, MISO, SCLK
//nucleo MOSI, MISO, SCLK
// PTD2, PTD3, PTD1
DigitalOut cs(D10); // Chip select
const unsigned char led1[]= {
0x0,0x66,0x99,0x81,0x42,0x24,0x18,0x0
}; //心
const unsigned char led2[]= {
0x3C,0x24,0x24,0xFF,0xFF,0x24,0x24,0x3C
}; //中
/// Send two bytes to SPI bus
void SPI_Write2(unsigned char MSB, unsigned char LSB)
{
cs = 0; // Set CS Low
spi.write(MSB); // Send two bytes
spi.write(LSB);
cs = 1; // Set CS High
}
/// MAX7219 initialisation 初始化
void Init_MAX7219(void)
{
SPI_Write2(0x09, 0x00); // Decoding off
SPI_Write2(0x0A, 0x08); // Brightness to intermediate
SPI_Write2(0x0B, 0x07); // Scan limit = 7
SPI_Write2(0x0C, 0x01); // Normal operation mode
SPI_Write2(0x0F, 0x0F); // Enable display test
wait_ms(500); // 500 ms delay
SPI_Write2(0x01, 0x00); // Clear row 0.
SPI_Write2(0x02, 0x00); // Clear row 1.
SPI_Write2(0x03, 0x00); // Clear row 2.
SPI_Write2(0x04, 0x00); // Clear row 3.
SPI_Write2(0x05, 0x00); // Clear row 4.
SPI_Write2(0x06, 0x00); // Clear row 5.
SPI_Write2(0x07, 0x00); // Clear row 6.
SPI_Write2(0x08, 0x00); // Clear row 7.
SPI_Write2(0x0F, 0x00); // Disable display test
wait_ms(500); // 500 ms delay
}
int main()
{
cs = 1; // CS initially High
spi.format(8,0); // 8-bit format, mode 0,0
spi.frequency(1000000); // SCLK = 1 MHz
Init_MAX7219(); // Initialize the LED controller
while (1) {
for(int i=1; i<9; i++) // Write first character (8 rows)
SPI_Write2(i,led1[i-1]);
wait(1); // 1 sec delay
for(int i=1; i<9; i++) // Write second character
SPI_Write2(i,led2[i-1]);
wait(1); // 1 sec delay
}
}
源程序
mbed-8x8.zip
(1.36 KB, 下载次数: 62)
|