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。其他各个输入值均有较大偏差。
请问这是程序原因吗?
#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遇到问题了,输出端没有电压值 ,程序就用的上述,不好使,大神可不可以给我说一下外接电路的情况,那个基准电压输入端怎么接啊?谢大神了