📄 iic.h
字号:
//**********************************************************
//** IIC驱动程序头文件 **
//** 单片机: AT89C4051 主频: 11.0592MHz **
//** Jumping<2008.04.28> **
//**********************************************************
#define TSL2561_ADDR 0x39<<1 //TSL2561 ADDR GND 地址-0101001X 29
//TSL2561 ADDR 悬空地址-0111001X 39
//TSL2561 ADDR VCC 地址-1001001X 49
#define TSL2561_WR 0
#define TSL2561_RD 1
#define PWUP 0X03 //寄存器00 bit1:0 0x03 器件开启/ 0x00 器件关闭
#define PWDOWN 0X00 //寄存器00 bit1:0 0x03 器件开启/ 0x00 器件关闭
#define GAIN_1X 0
#define GAIN_16X 1
#define ITIME_13MS 0
#define ITIME_100MS 1
#define ITIME_400MS 2
#define FootType_T 0 // T package
#define FootType_CS 1 // T package
#define REG_CTR 0X00 //TSL2561 寄存器地址
#define REG_TIME 0X01
#define REG_G_FL 0X02
#define REG_G_FH 0X03
#define REG_G_TL 0X04
#define REG_G_TH 0X05
#define REG_INT_CON 0X07
#define REG_ID 0X0A
#define REG_CH0_L 0X0C
#define REG_CH0_H 0X0D
#define REG_CH1_L 0X0E
#define REG_CH1_H 0X0F
#define LUX_SCALE 14 // scale by 2^14
#define RATIO_SCALE 9 // scale ratio by 2^9
//...................................................
// Integration time scaling factors
//...................................................
#define CH_SCALE 10 // scale channel values by 2^10
#define CHSCALE_TINT0 0x7517 // 322/11 * 2^CH_SCALE
#define CHSCALE_TINT1 0x0fe7 // 322/81 * 2^CH_SCALE
/*
TMB Package
For 0 < CH1/CH0 ≤0.50 Lux = 0.0304 *CH0 -0.062 *CH0 *((CH1/CH0)1.4)
For 0.50 < CH1/CH0 ≤0.61 Lux = 0.0224 *CH0 -0.031 *CH1
For 0.61 < CH1/CH0 ≤0.80 Lux = 0.0128 *CH0 -0.0153 *CH1
For 0.80 < CH1/CH0 ≤1.30 Lux = 0.00146*CH0 -0.00112*CH1
For CH1/CH0 > 1.30 Lux = 0
*/
//...................................................
// T Package coefficients
//...................................................
// For Ch1/Ch0=0.00 to 0.50
// Lux/Ch0=0.0304-0.062*((Ch1/Ch0)^1.4)
// piecewise approximation
// For Ch1/Ch0=0.00 to 0.125:
// Lux/Ch0=0.0304.0.0272*(Ch1/Ch0)
//
// For Ch1/Ch0=0.125 to 0.250:
// Lux/Ch0=0.0325-0.0440*(Ch1/Ch0)
//
// For Ch1/Ch0=0.250 to 0.375:
// Lux/Ch0=0.0351-0.0544*(Ch1/Ch0)
//
// For Ch1/Ch0=0.375 to 0.50:
// Lux/Ch0=0.0381-0.0624*(Ch1/Ch0)
//
// For Ch1/Ch0=0.50 to 0.61:
// Lux/Ch0=0.0224-0.031*(Ch1/Ch0)
//
// For Ch1/Ch0=0.61 to 0.80:
// Lux/Ch0=0.0128-0.0153*(Ch1/Ch0)
//
// For Ch1/Ch0=0.80 to 1.30:
// Lux/Ch0=0.00146-0.00112*(Ch1/Ch0)
//
// For Ch1/Ch0>1.3:
// Lux/Ch0=0
//...................................................
#define K1T 0x0040 // 0.125 * 2^RATIO_SCALE
#define B1T 0x01f2 // 0.0304 * 2^LUX_SCALE
#define M1T 0x01be // 0.0272 * 2^LUX_SCALE
#define K2T 0x0080 // 0.250 * 2^RATIO_SCALE
#define B2T 0x0214 // 0.0325 * 2^LUX_SCALE
#define M2T 0x02d1 // 0.0440 * 2^LUX_SCALE
#define K3T 0x00c0 // 0.375 * 2^RATIO_SCALE
#define B3T 0x023f // 0.0351 * 2^LUX_SCALE
#define M3T 0x037b // 0.0544 * 2^LUX_SCALE
#define K4T 0x0100 // 0.50 * 2^RATIO_SCALE
#define B4T 0x0270 // 0.0381 * 2^LUX_SCALE
#define M4T 0x03fe // 0.0624 * 2^LUX_SCALE
#define K5T 0x0138 // 0.61 * 2^RATIO_SCALE
#define B5T 0x016f // 0.0224 * 2^LUX_SCALE
#define M5T 0x01fc // 0.0310 * 2^LUX_SCALE
#define K6T 0x019a // 0.80 * 2^RATIO_SCALE
#define B6T 0x00d2 // 0.0128 * 2^LUX_SCALE
#define M6T 0x00fb // 0.0153 * 2^LUX_SCALE
#define K7T 0x029a // 1.3 * 2^RATIO_SCALE
#define B7T 0x0018 // 0.00146 * 2^LUX_SCALE
#define M7T 0x0012 // 0.00112 * 2^LUX_SCALE
#define K8T 0x029a // 1.3 * 2^RATIO_SCALE
#define B8T 0x0000 // 0.000 * 2^LUX_SCALE
#define M8T 0x0000 // 0.000 * 2^LUX_SCALE
extern void InitTsl256x(void);
extern INT GetLux(void);
// *** 外部函数声明 ***
//***************************************************************************************
extern unsigned int CalculateLux(unsigned int iGain, unsigned int tInt, unsigned int ch0, unsigned int ch1, int iType);
extern uchar TSL2561_read_byte( uchar addr);//for test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -