天天看点

DAC7811的程序代码

 H文件

#ifndef _DAC7811_H_

#define _DAC7811_H_

#include  "Header.h"

//Define SCLK

#define  DA_SCLK_PERIPH  SYSCTL_PERIPH_GPIOC

#define  DA_SCLK_PORT    GPIO_PORTC_BASE

#define  DA_SCLK_PIN     GPIO_PIN_4

//Define SDIN

#define  DA_SDIN_PERIPH  SYSCTL_PERIPH_GPIOC

#define  DA_SDIN_PORT    GPIO_PORTC_BASE

#define  DA_SDIN_PIN     GPIO_PIN_5

//Define SYNC

#define  DA_SYNC_PERIPH  SYSCTL_PERIPH_GPIOC

#define  DA_SYNC_PORT    GPIO_PORTC_BASE

#define  DA_SYNC_PIN     GPIO_PIN_6

//Define SDO

#define  DA_SDO_PERIPH  SYSCTL_PERIPH_GPIOC

#define  DA_SDO_PORT    GPIO_PORTC_BASE

#define  DA_SDO_PIN     GPIO_PIN_7

/*********************************Define again*************************************/

#define  SCLK_UP    GPIOPinWrite(DA_SCLK_PORT,DA_SCLK_PIN,1<<4)

#define  SCLK_DOWN  GPIOPinWrite(DA_SCLK_PORT,DA_SCLK_PIN,0X00)

#define  SDIN_UP    GPIOPinWrite(DA_SDIN_PORT,DA_SDIN_PIN,1<<5)

#define  SDIN_DOWN    GPIOPinWrite(DA_SDIN_PORT,DA_SDIN_PIN,0X00)

#define  SYNC_UP    GPIOPinWrite(DA_SYNC_PORT,DA_SYNC_PIN,1<<6)

#define  SYNC_DOWN    GPIOPinWrite(DA_SYNC_PORT,DA_SYNC_PIN,0X00)

//Foward 4-bit control

extern unsigned char DA_ON[4];

//Init the DAC7811

extern void dacInit(void);

////Write the data to DAC7811

extern void dacWrite(unsigned int daData);

#endif

C文件

#include "dac7811.h"

#include "systemInit.h"

unsigned char DA_ON[4] ={0,0,0,1};

//Enable the DAC7811's pins

void dacInit()

{

    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOC);

    GPIOPinTypeOut(GPIO_PORTC_BASE,DA_SCLK_PIN|DA_SDIN_PIN|DA_SYNC_PIN);

    SYNC_DOWN;

    SDIN_UP;

    SCLK_DOWN;

}

//Write the data to DAC7811

void dacWrite(unsigned int daData)

{    

     SYNC_DOWN;

     SCLK_UP;

    for(unsigned char i=0;i<4;i++)

    {

        SCLK_UP;

        if(DA_ON[i])

        {

            SDIN_UP;

        }

        else

            SDIN_DOWN;

        SCLK_DOWN;

    }

    for(unsigned char i=0;i<12;i++)

        if(daData&0x800)

        daData<<=1;

        SDIN_UP;

        SYNC_UP;

        SysCtlDelay(1*(TheSysClock/3000));

继续阅读