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

📄 da_tlv5614.h

📁 51单片机控制DAC(TLV5614)的数据输出
💻 H
字号:
#include<intrins.h>
#define uchar unsigned char 
#define uint  unsigned int 

sbit LDAC=P2^4;      //控制DAC刷新
sbit DIN=P3^0;      //数据线
sbit SCLK=P3^1;      //时钟线
sbit FS=P2^3;        //控制帧同步
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_7=P2^7;

unsigned char bdata buffer;    //字节反转寄存器
unsigned char bdata buffer1;
sbit buffer_0=buffer^0;
sbit buffer_1=buffer^1;
sbit buffer_2=buffer^2;
sbit buffer_3=buffer^3;
sbit buffer_4=buffer^4;
sbit buffer_5=buffer^5;
sbit buffer_6=buffer^6;
sbit buffer_7=buffer^7;

sbit buffer1_0=buffer1^0;
sbit buffer1_1=buffer1^1;
sbit buffer1_2=buffer1^2;
sbit buffer1_3=buffer1^3;
sbit buffer1_4=buffer1^4;
sbit buffer1_5=buffer1^5;
sbit buffer1_6=buffer1^6;
sbit buffer1_7=buffer1^7;


void TLV_5614(uchar channel,uint da_value)
{
    bit bit_buffer;
    uint COM;

    switch(channel)
    {
      case 0: COM=da_value|0x1000; break;
      case 1: COM=da_value|0x5000; break;
      case 2: COM=da_value|0x9000; break;
      case 3: COM=da_value|0xd000; break;  // 注意|与||的区别
      default:  break;
    }

    buffer=(uchar)(COM>>8);          //高八位数据反转处理

    bit_buffer=buffer_0;
    buffer_0=buffer_7;
    buffer_7=bit_buffer;

    bit_buffer=buffer_1;
    buffer_1=buffer_6;
    buffer_6=bit_buffer;

    bit_buffer=buffer_2;
    buffer_2=buffer_5;
    buffer_5=bit_buffer;

    bit_buffer=buffer_3;
    buffer_3=buffer_4;
    buffer_4=bit_buffer;



    buffer1=(uchar)(COM&0x00ff);      //低八位数据反转处理

    bit_buffer=buffer1_0;
    buffer1_0=buffer1_7;
    buffer1_7=bit_buffer;

    bit_buffer=buffer1_1;
    buffer1_1=buffer1_6;
    buffer1_6=bit_buffer;

    bit_buffer=buffer1_2;
    buffer1_2=buffer1_5;
    buffer1_5=bit_buffer;

    bit_buffer=buffer1_3;
    buffer1_3=buffer1_4;
    buffer1_4=bit_buffer;

    P2_0=1;
    P2_1=0;
    P2_2=0;
    P2_7=1; //控制片选选通,P2_7置位使138有效。

    LDAC=0; //数据刷新
    FS=1;   
    FS=0;   //下降沿帧同步

	SBUF=buffer;
    while(!TI);
	TI=0;

    SBUF=buffer1;
    while(!TI);
	TI=0;

    LDAC=1;  //停止刷新
    FS=1;  

}



   //用IO口模拟SCLK传送数据,速度慢,故采用串口TXD,RXD通信
   // for(i=16;i>0;i--)
   // { 
   //     DIN=(bit)(COM&0x8000);
   //     SCLK=1;
   //     COM=COM<<1;
   //     SCLK=0;
   // }
   // SCON=0X10; 
/*
void TLV_5614(uchar channel,uint da_value)
{
    uchar i;  
    uint COM;

    switch(channel)
    {
      case 0: COM=da_value|0x1000; break;
      case 1: COM=da_value|0x5000; break;
      case 2: COM=da_value|0x9000; break;
      case 3: COM=da_value|0xd000; break;
      default:  break;
    }

    P2_0=1;
    P2_1=0;
    P2_2=0; //控制片选选通

    LDAC=0; //数据刷新
    FS=1;   
    FS=0;   //下降沿帧同步

    for(i=16;i>0;i--)
    { 
        DIN=(bit)(COM&0x8000);
        SCLK=1;
        COM=COM<<1;
        SCLK=0;
    }

    //LDAC=1;  //停止刷新
    DIN=1;
	SCLK=1;
    FS=1; 

}
*/

⌨️ 快捷键说明

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