SHT21程序Word文件下载.docx
- 文档编号:20357522
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:16.44KB
SHT21程序Word文件下载.docx
《SHT21程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《SHT21程序Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
2'
3'
4'
5'
6'
7'
8'
9'
A'
B'
C'
D'
E'
F'
};
【名称】
【功能】模拟IIC使用的引脚定义,注意要上拉电阻
sbitSDA=P2^4;
sbitSCL=P2^3;
【功能】SHT21的I2C地址
#defineSHT21ADDR0x80
【功能】应答位电平定义
#defineACK0
#defineNACK1
【名称】voidDelay(unsignedintt)
【功能】延时长
voidDelay(unsignedintt)
{
unsignedchari;
while(t--)
{
for(i=0;
i<
200;
i++);
}
}
//***********************以下是模拟I2C函数****************************//
【名称】voidI2CDelay(unsignedchart)
【功能】模拟IIC用的短延时
voidI2CDelay(unsignedchart)
while(t--);
【名称】voidI2CInit(void)
【功能】I2C初始化,空闲状态
voidI2CInit(void)
SDA=1;
SCL=1;
【名称】voidI2CStart(void)
【功能】I2C起始信号
【备注】SCL、SDA同为高,SDA跳变成低之后,SCL跳变成低
voidI2CStart(void)
SDA=1;
SCL=1;
I2CDelay(10);
SDA=0;
I2CDelay(20);
SCL=0;
【名称】voidI2CStop(void)
【功能】I2C停止信号
【备注】SCL、SDA同为低,SCL跳变成高之后,SDA跳变成高
voidI2CStop(void)
I2CDelay(10);
【名称】unsignedcharI2CWRByte(unsignedcharWRByte)
【功能】I2C写一个字节数据,返回ACK或者NACK
【备注】从高到低,依次发送
unsignedcharI2CWRByte(unsignedcharWRByte)
SCL=0;
for(i=0;
8;
i++)
if(WRByte&
0x80)
{
SDA=1;
}
else
SDA=0;
SCL=1;
//输出SDA稳定后,拉高SCL给出上升沿,从机检测到后进行数据采样
I2CDelay(50);
SCL=0;
WRByte<
<
=1;
}
I2CDelay(20);
if(SDA==1)//SDA为高,收到NACK
returnNACK;
}
else//SDA为低,收到NACK
returnACK;
【名称】unsignedcharI2CRDByte(unsignedcharAckValue)
【功能】I2C读一个字节数据,入口参数用于控制应答状态,ACK或者NACK
【备注】从高到低,依次接收
unsignedcharI2CRDByte(unsignedcharAckValue)
unsignedchari,RDByte=0;
//释放总线
for(i=0;
i++)
RDByte<
//移位
//给出上升沿
I2CDelay(30);
//延时等待信号稳定
if(SDA==1)//采样获取数据
RDByte|=0x01;
RDByte&
=0xfe;
//下降沿,从机给出下一位值
SDA=AckValue;
//应答状态
I2CDelay
(1);
returnRDByte;
【名称】voidSHT21Init(void)
【功能】SHT21初始化函数,主函数中调用
voidSHT21Init(void)
I2CInit();
//I2C初始化
I2CStart();
//启动I2C
I2CWRByte(SHT21ADDR&
0xfe);
//写SHT21I2C地址
I2CWRByte(0xfe);
I2CStop();
//停I2C
Delay(600);
//短延时
【名称】longReadSht21(charwhatdo)
【功能】读取函数函数
longReadSht21(charwhatdo)
unsignedlongtemp;
unsignedcharHumidity,HumidityH,HumidityL;
unsignedlongwendu;
if(I2CWRByte(SHT21ADDR&
0xfe)==ACK)
if(I2CWRByte(whatdo)==ACK)
do
{
Delay(30);
I2CStart();
}while(I2CWRByte(SHT21ADDR|0x01)==NACK);
HumidityH=I2CRDByte(ACK);
HumidityL=I2CRDByte(ACK);
I2CRDByte(NACK);
I2CStop();
HumidityL&
=0xfc;
temp=HumidityH*256+HumidityL;
if(whatdo==((char)0xf5))
Humidity=(unsignedchar)((temp*125)/65536-6)%0xff;
returnHumidity;
}
else
temp=((long)17572)*temp;
temp=temp/((long)65536);
wendu=temp-((long)4685);
returnwendu;
//输出
//SendStrings("
Humidity:
"
);
//输出到串口
//SendByte(Num2Ascii[Humidity%100/10]);
//SendByte(Num2Ascii[Humidity%10]);
//SendByte('
%'
\n'
return0;
SHT21.h文件
*================================================================
voidDelay(unsignedintt);
voidI2CDelay(unsignedchart);
voidI2CInit(void);
voidI2CStart(void);
voidI2CStop(void);
unsignedcharI2CWRByte(unsignedcharWRByte);
unsignedcharI2CRDByte(unsignedcharAckValue);
voidSHT21Init(void);
longReadSht21(charwhatdo);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SHT21 程序