工具/软件:Code Composer Studio
我有一个项目需要使用msp430f5529在5x7 LED矩阵中显示预定义消息。 我还在使用一个名为MAX6952的驱动程序来驱动矩阵。 我已经编写了一些编码,但遗憾的是,LED矩阵没有响应我的编码。 我想知道是否有人能帮助我发现我的错地方。
感谢您抽出宝贵的时间来了解这一情况并提供帮助。
// Ali Louangrath
//主项目- LED显示
//版本1.1
//
//
//
// MSP430F552x
//-----------
///|\||
//||||
//--|RST |
//||
//| WFP 3.3 |->数据输出(UCA0SIMO)
//||
//| WFP 3.4 |<-数据输入(UCA0SOMI)
//||
//从属复位<|WFP 1.1 2.7 |->串行时钟输出(UCA0CLK)
//
// ACLK =~32.768kHz,MCLK = SMCLK = DCO ~ 1048kHz。 BRCLK = SMCLK/2
//
#include <msp430f5529.h>
#define blink BIT3 // 2.3
#定义CS BIT4 // 2.4
#define DOUT BIT3 // 3.3 SIMO
#define DIN BIT4 //SOMI 3.4
#define CLK BIT7 // 2.7 未使用USCI时钟
//unsigned char init_max6952[12]={0x04,0x01,0x03,0x01,0x01,0x0f,
// 0x02,0x0f,0x01,0xf0,0x02,0xf0};
//unsigned char letter_a[2]={0x60,0x41};
//ASCII字符为十六进制//
字符A=0x41;
字符E=0x45;
//MSP430F5529//
void ConfigWDT (void);
//void ConfigTimerA (void);
void ConfigSPI(void);
void init_max6952 (void);
void send (无符号字符值);
void send_addr_data(unsigned char addr,unsigned char data);
作废配置WDT (void)
{
WDTCTL = WDTPW + WDTHOLD;
}
void ConfigSPI(void)
{
易失性无符号int I;
P2OUT ||闪烁+ CS;
P2DIR ||闪烁+ CS;//将WFP 2.3 ,WFP 2.4 设置为输出方向
P3SEL || DIN+DOUT;//WFP 3.3 - DATAOUT 3.4 - datain
P2SEL || CLK;/WFP 2.7 -串行时钟输出SMCLK
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL0 || UCMST+UCSYNC+UCCKPH+UCMSB;// 3引脚,8位SPI主控制器
//时钟极性高,MSB
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0x01;// 1.
UCA0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0IE |= UCTXIE;//启用USCI_A0 TX中断
__bis_sr_register(LPM0_bits + GIE);// CPU关闭,启用中断
}
void init_max6952 (void)
{
send_addr_data(0x04,0x01);//配置寄存器正常模式+禁用闪烁
send_addr_data(0x03,0x01);//扫描限制为0-3
send_addr_data(0x01,0x0f);//数字0的最大强度
send_addr_data(0x02,0x0f);//数字1的最大强度
send_addr_data(0x01,0xf0);//数字2的最大强度
send_addr_data(0x02,0xf0);//数字3的最大强度
}
void led数据()
{
send_addr_data(0x60,a);
__DELAY周期(2);
send_addr_data(0x60,E);
__DELAY周期(2);
}
void send (无符号字符值)
{
//unsigned char I;
UCA0CTL0 |=~UCCKPL;//时钟引脚低
同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?
UCA0TXBUF =值和0x80;
值=值<1;
__DELAY周期(2);
同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?
UCA0CTL0 |= UCCKPL;//时钟引脚高
}
void send_addr_data(unsigned char addr,unsigned char data)
{
P2OUT &=~CS;/CS低
send (addr);
发送(数据);
P2OUT |= CS;/CS高
}
void main()
{
void ConfigWDT();
void ConfigSPI();
void init_max6952();
//void ConfigTimerA();
同时(1)
{
LED_DATA();
__DELAY周期(2);
}
}