#define F_CPU 16000000UL // AVRJazz28PIN Board Used 16MHz
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define SPI_PORT PORTB
#define SPI_DDR DDRB
#define SPI_CS PB2
void SPI_Write(uint8_t addr, uint8_t dataout)
{
// Enable CS Pin
SPI_PORT &= ~(1<<SPI_CS);
// Start Address transmission (MOSI)
SPDR = addr;
// Wait for transmission complete
while(!(SPSR & (1<<SPIF)));
// Start Data transmission (MOSI)
SPDR = dataout;
// Wait for transmission complete
while(!(SPSR & (1<<SPIF)));
// Disable CS Pin
SPI_PORT |= (1<<SPI_CS);
}
char digit[10] = {0,0,0,0,0,0,0,0,0,0};
digit[0] = 0x7E
digit[1] = 0x30
digit[2] = 0x6D
digit[3] = 0x79
digit[4] = 0x33
digit[5] = 0x5B
digit[6] = 0x5F
digit[7] = 0x70
digit[8] = 0x7F
digit[9] = 0x7B
void main()
{
char ch;
char digits_disp[10] = {0,0,0,0,0,0,0,0,0,0};
ch = digits_disp[3];
}
这是一个非常基本的代码。我正在使用 MAX 7219 显示驱动器设计时钟。在详细介绍之前,我想获得一个基本代码,我将初始化 SPI,然后使用 MAX7219 的数据表声明每个字符的值,然后编写一个短数组来显示随机数。但这段代码无法正常工作,并且一直显示: ../exp3.c:45:错误:“digits_disp”的类型冲突 ../exp3.c:44:错误:“digits_disp”的先前定义位于此处
你能帮我解决我做错了什么吗?你能告诉我如何初始化我的数组,以便我可以在模拟中显示字符“3”吗?换句话说,我需要添加哪行代码才能显示数组中的字符? 谢谢。
最佳答案
我无法真正理解您的代码,但这部分代码在语法上无效:
char digit[10] = {0,0,0,0,0,0,0,0,0,0};
digit[0] = 0x7E
digit[1] = 0x30
digit[2] = 0x6D
digit[3] = 0x79
digit[4] = 0x33
digit[5] = 0x5B
digit[6] = 0x5F
digit[7] = 0x70
digit[8] = 0x7F
digit[9] = 0x7B
您可能想这样做:
char digit[10] = { 0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B };
关于c - 使用 MAX7219 启用 SPI 并创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807725/