微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > TLV5616的程序,测出来的电压值不对,求指导!

TLV5616的程序,测出来的电压值不对,求指导!

时间:10-02 整理:3721RD 点击:
#include <reg52.h>          //通用的头文件定义
#include <intrins.h>  
#define uchar unsigned char
#define uint unsigned int
//*************************函数声明********************************************
void tlv5616_da(uint da);                          //DA转换函数
//**************tlc5615的信号线************************************************
sbit tlv5616_clk=P0^2;                           //TLC5615的时钟线
sbit tlv5616_data=P0^1;                           //TLC5615的输入数据线
sbit tlv5616_cs=P0^3;                             //TLC5615的片选线
sbit tlv5616_fs=P0^4;
//****************tlc5615的驱动程序************************************
//da:要输出的DA值
void tlv5616_da(uint da)
{
   uchar i;         
   tlv5616_clk=1;
   tlv5616_fs=0;
   for(i=0;i<16;i++)
   {
      _nop_();
      _nop_();
      tlv5616_data=(bit)(da&0x8000);
      tlv5616_clk=0;
      _nop_();
      _nop_();
      da<<=1;  
      tlv5616_clk=1;
      _nop_();
      _nop_();         
    }   
  tlv5616_fs=1;   
  tlv5616_clk=0;      
}
void main(void)
{
//uint a;
//for(a=0;a<200;a++)
                //  {   
                        tlv5616_da(2048);
                        _nop_();
              //    }
}

这个是5616的程序,可是测出来的电压值不对,我输入的基准电压时5V;当我输入2048时不是2.5V而是3.99V。其他各个输入值均有较大偏差。


请问这是程序原因吗?

求指导啊!

帮顶啦

谢谢分享。

哪位大哥教教小弟哇~~

找到了数据不准的原因了,输出电压是参考电压的两倍,所以5V芯片供电,参考电压不能超过2.5V、

请教  tlv5616_data=(bit)(da&0x8000); 这条指令什么意思,为什么使用&0x8000啊。冥思苦想了好长时间

您的基准电压可能选错了,还有就是输出您是怎么检测的?用示波器还是万用表

1,当VDD是5v时,参考电压REF为2.048v,
2,在keil c里bit是一位的,属于对标准c扩展的数据类型,
举个例子说明bit的强制转换规则,例如有变量unsigned char num,变量bit tmp
那么tmp =(bit) num就是把unsigned char型变量强制转换为bit型,
过规则有点和一般的强制转换不一样,bit进行强制转换时,只要num不等于0(或者0x00)
那么tmp =(bit) num的结果就是1,自然地如果num=0,那么tmp=0。

        谢谢分享。

同问,下午准备继续调试

大神们,小弟调试TLV5616遇到问题了,输出端没有电压值 ,程序就用的上述,不好使,大神可不可以给我说一下外接电路的情况,那个基准电压输入端怎么接啊?谢大神了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top