📄 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 + -