温湿度传感器SHT10驱动文档格式.docx
- 文档编号:17590349
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:8
- 大小:17.37KB
温湿度传感器SHT10驱动文档格式.docx
《温湿度传感器SHT10驱动文档格式.docx》由会员分享,可在线阅读,更多相关《温湿度传感器SHT10驱动文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
P6.3
SCK:
P6.4
SDA:
P6.5
********************************************************************************************************/
#include<
msp430x14x.h>
/*宏定义,延时函数,参数为1时相应延时分别为1us和1ms*/
#defineCPU_F
(double)1000000
#definedelay_us(x)
__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#definedelay_ms(x)
__delay_cycles((long)(CPU_F*(double)x/1000.0))
/*常量定义*/
#defineuintunsignedint
#defineucharunsignedchar
#defineulongunsignedlong
//adrcommandr/w
#defineSTATUS_REG_W0x06
//000
0011
0
#defineSTATUS_REG_R0x07
1
#defineMEASURE_TEMP0x03
0001
#defineMEASURE_HUMI0x05
0010
#defineRESET
0x1e
1111
#definebitselect
0x01
//选择温度与湿度的低位读
#definenoACK
#defineACK
#defineHUMIDITY
2
#defineTEMPERATURE
#defineSCK
BIT4
#defineSDA
BIT5
#defineSVCC
BIT3
#defineSCK_H
P6OUT|=SCK
#defineSCK_L
P6OUT&
=~SCK
#defineSDA_H
P6OUT|=SDA
#defineSDA_L
=~SDA
#defineSVCC_H
P6OUT|=SVCC
#defineSVCC_L
=~SVCC
typedefunion
{
unsignedinti;
floatf;
}value;
uinttable_temp[3];
uinttable_humi[3];
uinttemten;
uinthumi_true;
/**********************************************************************************************************
**FunctionName:
S_Init
**Description:
初始化
**InputParameters:
无
**OutputParameters:
**********************************************************************************************************/
voidS_Init()
{
P6SEL&
=~(SCK+SDA+SVCC);
//选择P6.3P6.4为IO端口,输出P6.5输入
P6DIR|=(SCK+SVCC);
P6DIR&
=~SDA;
BCSCTL1=(XT2OFF+RSEL2);
//关闭XT2,1MHzDOC
DCOCTL=DCO2;
//设定DCO频率为1MHz
}
S_Transstart
发送开始时序
generatesatransmissionstart
_____
________
DATA:
|_______|
___
___
SCK:
___|
|___|
|______
voidS_Transstart()
P6DIR|=SDA;
SDA_H;
SCK_L;
_NOP();
SCK_H;
SDA_L;
S_WriteByte
写时序
charS_WriteByte(unsignedcharvalue)
unsignedchari,error=0;
for(i=0x80;
i>
0;
i/=2)
//shiftbitformasking
if(i&
value)
SDA_H;
//maskingvaluewithi,writetoSENSI-BUS
else
SDA_L;
SCK_H;
//clkforSENSI-BUS
_NOP();
//pulswithapprox.5us
SCK_L;
//releaseDATA-line
//ChangeSDAtobeinput
//clk#9forack
error=P6IN;
//checkack(DATAwillbepulleddownbySHT11)
error&
=SDA;
if(error)
return1;
//error=1incaseofnoacknowledge
return0;
S_ReadByte
读时序
ack--->
readsabyteformtheSensibusandgivesanacknowledgeincaseof"
ack=1"
charS_ReadByte(unsignedcharack)
unsignedchari,val=0;
if(P6IN&
SDA)
val=(val|i);
//readbit
if(ack)
//incaseof"
ack==1"
pulldownDATA-Line
else
returnval;
S_Connectionreset
通讯复位时序
communicationreset:
DATA-line=1andatleast9SCKcyclesfollowedbytransstart
_____________________________________________________
_
__||__||__||__||__||__||__||__||__||______|
voidS_Connectionreset()
unsignedcharClkCnt;
//Initialstate
for(ClkCnt=0;
ClkCnt<
9;
ClkCnt++)
//9SCKcycles
}
S_Transstart();
//transmissionstart
S_Softreset
软件复位时序resetsthesensorbyasoftreset
charS_Softreset()
unsignedcharerror=0;
S_Connectionreset();
//resetcommunication
error+=S_WriteByte(RESET);
//sendRESET-commandtosensor
returnerror;
//error=1incaseofnoresponseformthesensor
S_WriteStatusReg
写状态寄存器
*p_value
charS_WriteStatusReg(unsignedchar*p_value)
error+=S_WriteByte(STATUS_REG_W);
//sendcommandtosensor
error+=S_WriteByte(*p_value);
//sendvalueofstatusregister
//error>
=1incaseofnoresponseformthesensor
S_Mearsure
读时序
makesameasurement(humidity/temperature)withchecksum
*p_value
*p_checknum
mode
unsignedcharS_Measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)
unsignederror=0;
switch(mode)
{
caseTEMPERATURE:
error+=S_WriteByte(MEASURE_TEMP);
break;
caseHUMIDITY:
error+=S_WriteByte(MEASURE_HUMI);
for(i=0;
i<
65535;
i++)
//waituntilsensorhasfinishedthemeasurement
if((P6IN&
SDA)==0)
if(P6IN&
error+=1;
//ortimeout(~2sec.)isreached
*(p_value)=S_ReadByte(ACK);
//readthefirstbyte(MSB)
*(p_value+1)=S_ReadByte(ACK);
//readthesecondbyte(LSB)
*p_checksum=S_ReadByte(noACK);
//readchecksum
return(error);
S_Calculate
计算
humi[Ticks](12bit)
temp[Ticks](14bit)
humi[%R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温湿度 传感器 SHT10 驱动