#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:错误:&#39; digits_disp&#39;的冲突类型 ../exp3.c:44:错误:以前定义&#39; digits_disp&#39;在这里
你能帮我解决一下我做错了什么吗?你能否告诉我如何初始化我的阵列以便我可以显示角色&#39; 3&#39;在我的模拟?换句话说,为了在我的数组中显示字符,我需要添加哪行代码? 谢谢。
答案 0 :(得分:0)
我无法理解你的代码,但这部分代码在语法上是无效的:
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 };
答案 1 :(得分:0)
从第一行的评论中我收集到的是你正在使用其中一款Atmel芯片。如果是这样,这篇文章应该对您有所帮助:
http://www.adnbr.co.uk/articles/max7219-and-7-segment-displays
您可以使用他们的代码作为起点:
https://gist.github.com/adnbr/2352797
如果其他人有兴趣,这里也是Arduino版本: