OPT3001 MSP430G2553完整程序Word格式.docx
- 文档编号:18409080
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:13
- 大小:16.84KB
OPT3001 MSP430G2553完整程序Word格式.docx
《OPT3001 MSP430G2553完整程序Word格式.docx》由会员分享,可在线阅读,更多相关《OPT3001 MSP430G2553完整程序Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
{
start();
//起始信号
write1byte(0x88);
//发送设备地址+写信号
mack();
write1byte(registerName);
//发送存储单元地址
write1byte((unsignedchar)(value>
>
8));
write0();
//aa=OPT3001IIC_Wait_Ack();
write1byte((unsignedchar)(value&
0x00FF));
write1();
stop();
//停止信号
}
//*********************************************************
//读出BMP085内部数据,连续两个
shortOPT3001Multiple_read(unsignedcharST_Address)
{
unsignedint_data=0;
////发送设备地址+写信号
write1byte(ST_Address);
//停止信号
//起始信号
write1byte(0x89);
//发送设备地址+读信号
msb=read1byte();
//BUF[0]存储
delay();
lsb=read1byte();
_data=msb<
<
8;
_data|=lsb;
return_data;
//获取OPT3001的出厂编号默认值读出来应该是0x5449
unsignedintGetOPT3001ManufacturerID()
unsignedintIDNum=0;
IDNum=OPT3001Multiple_read(MANUFACTURER_ID);
//读取
returnIDNum;
//获取OPT3001的设备ID初始值为0x3001
unsignedintGetOPT3001DeviceID()
IDNum=OPT3001Multiple_read(DEVICE_ID);
voidOPT3001IIC_Init()
;
//OPT3001初始化函数
//返回值:
0为初始化成功
//1为初始化失败
unsignedcharOPT3001Init()
unsignedintManufacturerIDNum=0;
unsignedintDeviceIDNum=0;
OPT3001IIC_Init();
//OPT3001端口初始化
OPT3001Config();
//配置OPT3001并且唤醒OPT3001
ManufacturerIDNum=GetOPT3001ManufacturerID();
DeviceIDNum=GetOPT3001DeviceID();
if(ManufacturerIDNum==0x5449&
&
DeviceIDNum==0x3001)//如果读出来的ID都正确表示初始化成功
return0;
else//否则初始化不成功
return1;
//OPT3001寄存器配置
//12-15位RN[0,3]:
0x1100,设置为Full-ScaleMode
//9-10:
M[0,1]:
0x10,设置OPT3001为连续转换模式
//4bit:
Latch=1,其他位初始化为00即可
voidOPT3001Config(void)
Opt3001WriteRegister(0x01,0xc410);
//获取光强度得到的是放大100后的值占4个字节
unsignedlongGetLuxValue()
//unsignedcharMSB=0,LSB=0;
unsignedlongResult=0;
//unsignedlongResult1=0;
Result=OPT3001Multiple_read(RESULT);
Result=(1<
((Result&
0xF000)>
12))*(Result&
0x0FFF);
//得到计算的值是真实值的100倍
returnResult;
intmain(void)
floatLux;
WDTCTL=WDTPW+WDTHOLD;
//int_clk();
//时钟出使化
system_int();
OPT3001Init();
//w1byte();
while
(1)
Lux=(float)GetLuxValue()/100.0;
2.IIC.H
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//iic.h
#ifndef__IIC_h__
#define__IIC_h__
externvoiddelay(void);
externvoidstart(void);
externvoidstop(void);
externvoidmack(void);
externvoidmnack(void);
externunsignedcharcheck(void);
externvoidwrite1(void);
externvoidwrite0(void);
externvoidwrite1byte(unsignedcharwdata);
externunsignedcharwriteNbyte(unsignedchar*outbuffer,unsignedcharn);
externunsignedcharread1byte(void);
externvoidreadNbyte(unsignedchar*inbuffer,unsignedcharn);
#endif
3.IIC.c
//iic.c
typedefunsignedcharuchar;
typedefunsignedintuint;
#defineSCL_HP1OUT|=BIT2
#defineSCL_LP1OUT&
=~BIT2
#defineSDA_HP1OUT|=BIT3
#defineSDA_LP1OUT&
=~BIT3
#defineSDA_inP1DIR&
=~BIT3//SDA改成输入模式
#defineSDA_outP1DIR|=BIT3//SDA变回输出模式
#defineSDA_valP1IN&
BIT3//SDA的位值
#defineTRUE1
#defineFALSE0
/*******************************************
函数名称:
delay
功能:
延时约15us的时间
参数:
无
返回值:
********************************************/
voiddelay(void)
uchari;
for(i=0;
i<
15;
i++)
_NOP();
}
start
完成IIC的起始条件操作
voidstart(void)
SCL_H;
SDA_H;
SDA_L;
SCL_L;
stop
完成IIC的终止条件操作
voidstop(void)
mack
完成IIC的主机应答操作
voidmack(void)
_NOP();
mnack
完成IIC的主机无应答操作
voidmnack(void)
/**********检查应答信号函数******************/
/*如果返回值为1则证明有应答信号,反之没有*/
check
检查从机的应答操作
从机是否有应答:
1--有,0--无
ucharcheck(void)
ucharslaveack;
SDA_in;
slaveack=SDA_val;
//读入SDA数值
SDA_out;
if(slaveack)returnFALSE;
elsereturnTRUE;
write1
向IIC总线发送一个1
voidwrite1(void)
write0
向IIC总线发送一个0
voidwrite0(void)
write1byte
向IIC总线发送一个字节的数据
wdata--发送的数据
voidwrite1byte(ucharwdata)
for(i=8;
i>
0;
i--)
if(wdata&
0x80)write1();
elsewrite0();
wdata<
=1;
writeNbyte
向IIC总线发送N个字节的数据
outbuffer--指向发送数据存放首地址
的指针
n--数据的个数
发送是否成功的标志:
1--成功,0--失败
ucharwriteNbyte(uchar*outbuffer,ucharn)
n;
write1byte(*outbuffer);
if(check())
{
outbuffer++;
}
else
stop();
returnFALSE;
returnTRUE;
read1byte
从IIC总线读取一个字节
读取的数据
ucharread1byte(void)
ucharrdata=0x00,i;
ucharflag;
SDA_H;
delay();
SCL_H;
flag=SDA_val;
rdata<
if(flag)rdata|=0x01;
SCL_L;
returnrdata;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPT3001 MSP430G2553完整程序 MSP430G2553 完整 程序