⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430f149-

📁 MSP430F149实验板实验代码
💻
字号:
/*********************************************************
*               SPI控制DA(TLC5620)同步通信       *
*                      SPI三线主模式                     *
*                        硬件连接图                      *
*                 P5.0----STE1----DA LOAD                *
*                 P5.1----SIMO1----DA DATA               *
*                 P5.2----SOMI1----DA LDAC               *
*                 P5.3----UCLK1----DA CLK                *
*                       采用的是:                        *
Figure 3. Load-Controlled Update Using 8-Bit Serial Word (LDAC = Low)
                     A1=0 A0=0 RNG=0 
*********************************************************/

#include <msp430x14x.h>

#define   uint8 unsigned char
#define   uint32 unsigned int
#define   uint16 unsigned short

#define  DAC_RNG    0                               // 幅值选择

/* TLC5620由P0口控制,控制I/O定义如下 */
#define  CLK1           (1<<3)
#define  DAT1           (1<<1)
#define  LOAD           (1<<0)
#define  LDAC           (1<<2)
//#define  DAC5620CON     (CLK1 | DAT1 | LOAD | LDAC)

/* I/O输出操作函数 */
#define  CCLK1()    P5OUT &= ~CLK1
#define  SCLK1()    P5OUT |= CLK1

#define  CDAT1()    P5OUT &=~DAT1
#define  SDAT1()    P5OUT |= DAT1

#define  CLOAD()    P5OUT &= ~LOAD
#define  SLOAD()    P5OUT |= LOAD

#define  CLDAC()    P5OUT &=~LDAC
#define  SLDAC()    P5OUT |= LDAC

void  DAC5620_Data(uint8 no, uint8 dat);
void  PIN_Init(void);
void  Delay(void);

int  main(void)
{   uint8  i;
   
    PIN_Init();                                     // 初始化CPU的IO口
 
	while(1)                                        // 发生锯齿波
	{
        DAC5620_Data(1, i);
        DAC5620_Data(2, 0);
        DAC5620_Data(3, i);
        DAC5620_Data(4, i);
        i++;
	}
	
	return(0);
}

/****************************************************************************
* 名    称:IRQ_Eint3()
* 功    能:外部中断EINT3服务函数,取反B1控制口。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  PIN_Init(void)                                // CPU的IO口初始化函数        
{   
  WDTCTL = WDTPW + WDTHOLD;                 //关闭关门狗
    //BCSCTL2 &=0xc0;           //XT2CLK+2分频
  P5DIR |=0x0f;     
  
    CCLK1();                                        // CLK1 = 0
	CDAT1();                                        // DAT1 = 0
	SLOAD();                                        // LOAD = 1
	SLDAC();                                        // LDAC = 1
}

/****************************************************************************
* 名    称:DAC5620_Data()
* 功    能:DAC芯片TLC5620的控制函数
* 入口参数:uint8 no  通道选择  uint8 dat 输出数值
* 出口参数:无
****************************************************************************/
void  DAC5620_Data(uint8 no, uint8 dat)
{   unsigned int bak;
    uint8  m;
    
#if DAC_RNG==0    
    bak = (dat<<5) | ((no&0x03)<<14);
#else
    bak = (dat<<5) | ((no&0x03)<<14) | (1<<13);
#endif    
	
	for(m=0; m<11; m++)
	{
	    SCLK1();        // CLK1 = 1
	    Delay();
	    
	    if((bak&0x8000) == 0)
	    {   
	        CDAT1();    // DAT1 = 0
	    }
	    else
	    {   
	        SDAT1();    // DAT1 = 1
	    }    
	    Delay();
	      
		CCLK1();        // CLK1 = 0
		Delay();
		
		bak <<= 1;
	}
	CLOAD();            // LOAD = 0
	Delay();
	SLOAD();            // LOAD = 1
	Delay();
	CLDAC();            // LDAC = 0
    Delay();
	SLDAC();            // LDAC = 1
	Delay();
}

void  Delay(void)
{   uint32  i;

    for(i=0; i<50; i++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -