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

📄 1.c

📁 TLV5618驱动及简单测试例子(三角波产生程序,波形顶部不大好)
💻 C
字号:
//=====================================================================
//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;
        }
}

⌨️ 快捷键说明

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