发新话题
打印

TLV5618驱动(以前写的,今天用示波器测过了,感觉还行)

本主题由 YYLT 于 2008-8-15 20:30 解除置顶

TLV5618驱动(以前写的,今天用示波器测过了,感觉还行)

//=====================================================================
//TLV5618驱动及简单测试例子(三角波产生程序,波形顶部不大好)
//IOB15-->DIN
//IOB14-->SCLK
//IOB13-->CS
//DATA15--DATA12分别为:R1.SPD.PWR.R0
//R1R0:00 Write data to DAC B and BUFFER
//     01 Write data to BUFFER
//           10 Write data to DAC A and update DAC B with BUFFER content
//     11 Reserved
//SPD: Speed control bit  1  fast mode 0  slow mode
//PWR: Power control bit  1  power down 0  normal operation
//On power up, SPD and PWD are reset to 0 (slow mode and normal operation)
//参考电压应小于VDD-3.3伏
//输出模拟电压为:V=2*Vref*(dignum/0x1000) 注:dignum后四位为:0x0000~~0x0fff
//
//注:所需输入的数字信号值为16位数,其中D15~~D12为特殊位设置,如上面说明
//   D11~~D0为数据位000~~fff
//
//***********done by:murufy 2007.8.8于EDA实验室***********************
//=====================================================================
#define                P_Watchdog_Clear                (volatile unsigned int *)0x7012
#define                P_IOA_Data                                (volatile unsigned int *)0x7000
#define                P_IOA_Buffer                        (volatile unsigned int *)0x7001
#define                P_IOA_Dir                                (volatile unsigned int *)0x7002
#define                P_IOA_Attrib                        (volatile unsigned int *)0x7003
#define                P_IOA_Latch                                (volatile unsigned int *)0x7004

#define                P_IOB_Data                                (volatile unsigned int *)0x7005
#define                P_IOB_Buffer                        (volatile unsigned int *)0x7006
#define                P_IOB_Dir                                (volatile unsigned int *)0x7007
#define                P_IOB_Attrib                        (volatile unsigned int *)0x7008
//若修改端口可更改此处
#define          P_IO_Data                 *P_IOB_Data                         
#define          P_IO_Buffer             *P_IOB_Buffer                 
#define          P_IO_Dir           *P_IOB_Dir                                 
#define          P_IO_Attrib       *P_IOB_Attrib       
//
#define   DIN   0x8000
#define   SCLK  0x4000
#define   CS    0x2000
//==================================================================
//
//初始化,将三个引脚全设成输出
//
//==================================================================
void DA_init()
{
        P_IO_Dir=DIN+SCLK+CS;
        P_IO_Attrib=DIN+SCLK+CS;//同相输出
       
}
//===================================================================
//
//DA_conver()
//Dignum:根据说明设置转化数据.头四位为特殊位用于选择转化方式,以及用于
//       通道选择.请自行设置.
//===================================================================
void DA_conver(unsigned int Dignum)
{   
        unsigned int i;
        unsigned int Dig;
        P_IO_Buffer|=SCLK;//sclk=1
        P_IO_Buffer&=(~CS);//cs=0;
        for(i=0;i<=15;i++)
        {
                Dig=Dignum&0x8000;               
                if(Dig==0)P_IO_Buffer&=(~DIN);      //DIN=0
                else P_IO_Buffer|=DIN;              //DIN=1
                P_IO_Buffer&=(~SCLK);//sclk=0               
                P_IO_Buffer|=SCLK;                     //sclk=1
                Dignum=Dignum<<1;
        }
        P_IO_Buffer|=SCLK;//cs=1,sclk=1
        P_IO_Buffer|=CS;//cs=1,sclk=1
}
//=====================================================================
//主函数:void main()
//仅供测试用,无实际意义
//通过改变DA_conver(dignum)的参数来观察输出,此程序A通道输出约3.3伏
//=====================================================================         
int main()
{
        unsigned int mm=0x8000;
        DA_init();
        while(1)
        {
        while(mm!=0x8000)         
                {
                        DA_conver(mm);
                        mm=mm-0x0009;//幅度减小一个台阶
                        *P_Watchdog_Clear=0x0001;
                }            
                while(mm!=0x8fff)
                {
                        DA_conver(mm);
                        mm=mm+0x0009; //幅度提高一个台阶
                        *P_Watchdog_Clear=0x0001;
                }
        *P_Watchdog_Clear=0x01;
        }
}


[ 本帖最后由 慕容飞 于 2007-8-19 18:40 编辑 ]
本帖最近评分记录
  • 谷雨 经验值 +10 2007-9-28 13:02
我是个好男人啊 嫁给我吧 我们村很好的 我还有几亩地,家里有一头牛,2个猪 还有很多 够你吃的了
佛曰:人脸是一个苦字,苦今生,修来世!
我的博客:http://hi.baidu.com/murufy

TOP

不顶不行啊,呵呵,太厉害了。

TOP

发新话题
版块跳转