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

📄 tlv5618.c

📁 自己调的tlv5618的程序
💻 C
字号:
#include  <reg52.h>


sbit  SCLK=P1^3;
sbit  SDAT=P1^7;
sbit  CS  =P1^0;

bit   bdata  mode_bit=0;      //方波幅度高低电平标志变量,为0时输出低电平,为1时输出高电平
unsigned char  data   count=0;         //方波的半周期计数器
unsigned int  data   vouta=0;          //方波高低电平电压值存储变量,其幅度与三角波幅度相等
unsigned int  data   config;           //送往DA转换器的配置参数。以全局变量出现,即作为行参,又作为实参


void  initial_5618_io(void);
void  tlv5618_outa(void);
void  da_tlv5618(unsigned int config);
void delay(unsigned int num);

/************************************************************************************************/
void  main(void)
{
    initial_5618_io();               //初始化CPU的IO口
	while(1)                   //周期地进行转换,形成三角波和方波的周期信号
	{
        tlv5618_outa();            //控制通道A输出方波,该方波与上面的三角波幅度相等、周期相同
    //    delay(100);
	}
}
/************************************************************************************************/
void  initial_5618_io(void)          //CPU的IO口初始化函数
{
        SCLK=0;
	SDAT=0;
        CS  =1;
}

//================================================================================================
void  tlv5618_outa(void)           //周期方波生成函数
{
    config=vouta;
	config=config&0x0fff;
    config=config|0xc000;
	da_tlv5618(config);
        vouta=0x0f00;


        count++;
	if(count<0x1a)            //判断方波是否应该改变电平状态
	{
	    if(!mode_bit)         //根据方波幅度高低电平标志变量决定是输出高电平还是低电平
		    vouta=0;
		else
		    vouta=0x0f00;
	}
	else
	{
	    count=0;
            mode_bit=~mode_bit;  //如果已经达到改变电平状态的时刻则改变方波幅度标志变量
	}                     
}

/*************************************************************************************************
;  函数名称:  da_tlv5618
;  功能描述:  TI公司12位双通DAC芯片TLV5618的控制时序
;  形式参数:  config(无符号整型变量)
**************************************************************************************************/
void da_tlv5618(unsigned int config)
{
        
        unsigned int  n;
        unsigned char m=0;
        CS=0;
        for(;m<0x10;m++)
        {
                SCLK=1;
                n=config;
                n=n&0x8000;
                SDAT=(bit)n;
                SCLK=0;
                config<<=1;
        }
        CS=1;
        SCLK=0;
}

//=====================================================================================
//函数名称: delay
//功能描述: 延时
//备注:      程序调试中延时一段时间,方便观察各相关端口的电平信号是否符合时序要求
//====================================================================================
void delay(unsigned int num)
{
        unsigned int i;
        for(i=0;i<num;i++)
        {
                
        }
}

⌨️ 快捷键说明

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