📄 5615.c
字号:
/************************************************************************/
/************************************************************************/
/* */
/* tlc 5615 d/a */
/* */
/* Author: zhiqiang huo */
/* */
/* */
/************************************************************************/
//***********************************************************************/
#include "math.h"
#include "reg52.h"
#include "typedef.h"
#include "function.h"
#include "define.h"
#include "varible.h"
#define DA_K (1023.0/32767.0)
//#define DA_K (1024.0/32767.0)
/**************function declare***************/
void Da_init(void);
void Da_convert(unsigned int da_data);
void Da_data_chang(void);
void Da_prc(void);
sbit DA_CS = P2^0 ;
sbit DA_CLK = P2^1 ;
sbit DA_DATA = P2^2 ;
/********************************************/
void Da_init(void)
{
DA_CLK = 0 ;
DA_CS = 1 ;
da_send_F = 0;
send_bit_count = 0 ;
da_offset = (Read1B(0x35,0)+Read1B(0x36,0)*10+Read1B(0x37,0)*100) ;
}
/********************************************/
void Da_convert(unsigned int da_data)
{
unsigned char i;
DA_CLK = 0 ;
DA_CS = 0 ;
Delay_1us();
for (i=0;i<16;i++)
{
DA_DATA = (bit)(da_data&0x8000) ;
da_data <<= 1 ;
DA_CLK = 0;
Delay_1us();
DA_CLK = 1 ;
Delay_1us();
}
DA_CLK = 0;
DA_CS = 1;
return;
}
/*******************************************/
/*******************************************/
void Da_data_chang(void)
{
unsigned int ad_consult ;
+ ad_consult = da_data*DA_K; // 16bit ad_data is changed to 10 bit da_data
if(ad_consult >1023)
{
//ad_consult=1023;
da_send_data = 1023; //out 4-20mA data convert
}
else
{
// da_send_data = (unsigned int)(4.0*ad_consult/5.0) + (unsigned int)203; // 205 ; //out 4-20mA data convert
da_send_data = (unsigned int)((1.0-da_offset/1023.0)*ad_consult) + da_offset; // 205 ; //out 4-20mA data convert
if(da_send_data > 1023)
da_send_data = 1023 ;
}
// da_send_data= 0x3ff;
da_send_data <<= 2; //get 5615 data
return;
}
extern bit next_F;
/**************************************/
/**************************************/
void Da_prc(void)
{
ET1 = 0 ;
TF1 = 0 ;
DA_CS = 0 ;
DA_CLK = 0 ;
da_send_F = 1 ;
next_F = 0 ;
Da_data_chang();
TR1 = 1 ;
// Da_convert(da_send_data);
ET1 = 1 ;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -