SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx

上传人:b****3 文档编号:13787137 上传时间:2022-10-13 格式:DOCX 页数:16 大小:29.86KB
下载 相关 举报
SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx_第1页
第1页 / 共16页
SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx_第2页
第2页 / 共16页
SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx_第3页
第3页 / 共16页
SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx_第4页
第4页 / 共16页
SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx

《SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

SHT11温湿度传感器与1602应用代码及仿真Word格式文档下载.docx

32^

Zj

22:

ITT

RP1;

呻F氐曲

P1P1F1P1P1門FP1

P3.WR^O

P3.irra>

Fj.g/rjwpa.sThTT

P3.-4/TOF3.5H1

PMB殛

P97.W

EX1>

仿真图形

TEnP:

026.?

5:

C

HUni:

077.2^RH

<

TE.

i■

ine

RD.DTACOTO.1/W1

PCI.2/哒

P0.3/她3F0.即糾PO.a/flMPWB/純阳FQ,7/fiC7

U2

P2MB

P2.1朋P22/AK)PZ^AHP2.4/A12F2.5/A13RJS/AMIP2.7/A15

2?

P1D

P1.1

P12

P13

H耳

PW

P2

P3.0fR^E>

P3.1jTXI>

P32/iwT5P3.3iiNfi

P3<

TQ

P3.&

T1

P3日殛

P2.7/R&

rtxTi

运行后结果

 

#ifndef_TOU_H

#define__TOU_H__

#include<

reg52.h>

#ineludevintrins.h>

〃#include<

math.h>

//Keillibrary

#defineucharunsignedcharenum{TEMP,HUMI};

sbitDATA=P1A1;

sbitSCK=P1A0;

sbitRS=P2A0;

sbitRW=P2A1;

sbitE=P2A2;

sfrDBPort=0x80;

〃P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

/********DS1602

voidLCD_Initial();

函数声明

********/

voidGotoXY(unsignedcharx,unsignedchary);

voidPrint(unsignedchar*str);

voidLCD_Write(bitstyle,unsignedcharinput);

/********

SHT10

voids_connectionreset(void);

chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);

voidcalc_sth10(float*p_humidity,float*p_temperature);

//floatcalc_dewpoint(floath,floatt);

#endif

***************************************************************************************************

****************************************************

//SHT10程序(SHT10.c):

实用文档

〃#include<

tou.h>

#definenoACK0

#defineACK1//

//继续传输数据,用于判断是否结束通讯结束数据传输;

//地址命令读/写

#defineSTATUS_REG_W0x06〃00000110

#defineSTATUS_REG_R0x07〃00000111

#defineMEASURE_TEMP0x03〃00000011

#defineMEASURE_HUMI0x05//00000101

#defineRESET0x1e//00011110

//写字节程序

chars_write_byte(unsignedcharvalue){

unsignedchari,error=0;

for(i=0x80;

i>

0;

>

=1)//

{

if(i&

value)DATA=1;

//

elseDATA=0;

SCK=1;

_nop_();

_nop_();

_nop_();

SCK=0;

}

DATA=1;

error=DATA;

returnerror;

〃error=1

//读字节程序

chars_read_byte(unsignedcharack)

//

unsignedchari,val=0;

for(i=0x80;

高位为1,循环右移

和要发送的数相与,结果为发送的位

延时3us

释放数据线

检查应答信号,确认通讯正常

通讯错误

高位为1,循环右移

if(DATA)val=(val|i);

//读一位数据线的值

DATA=!

ack;

returnval;

//启动传输

voids_transstart(void)

//generatesatransmissionstart

//

//DATA:

||

//______

//SCK:

___||___||

SCK=0;

DATA=0;

_nop_();

如果是校验,读取完后结束通讯;

准备

//连接复位

voids_connectionreset(void)

//communicationreset:

DATA-line=1andatleast9SCKcyclesfollowedbytransstart

//_______________

__||__|L_||__|」||__|」||__||||—1|

unsignedchari;

//准备

for(i=0;

i<

9;

i++)//DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位

SCK=O;

启动传输

启动连接复位

发送复位命令

s_transstart();

//软复位程序

chars_softreset(void)

//resetsthesensorbyasoftreset

unsignedcharerror=0;

s_connectionreset();

error+=s_write_byte(RESET);

//returnerror;

/*读状态寄存器

chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum)

//readsthestatusregisterwithchecksum(8-bit)

//transmissionstart

error=s_write_byte(STATUS_REG_R);

//sendcommandtosensor*p_value=s_read_byte(ACK);

//readstatusregister(8-bit)*p_checksum=s_read_byte(noACK);

//readchecksum(8-bit)

returnerror;

//error=1incaseofnoresponseformthesensor

//写状态寄存器

chars_write_statusreg(unsignedchar*p_value)

//writesthestatusregisterwithchecksum(8-bit)

error+=s_write_byte(STATUS_REG_W);

//sendcommandtosensorerror+=s_write_byte(*p_value);

//sendvalueofstatusregister

//error>

=1incaseofnoresponseformthesensor

}*/

//温湿度测量

chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)

//进行温度或者湿度转换,由参数mode决定转换内容;

//enum{TEMP,HUMI};

//已经在头文件中定义

unsignederror=0;

unsignedinti;

//启动传输

switch(mode)//选择发送命令

caseTEMP:

error+=s_write_byte(MEASURE_TEMP);

break;

//测量温度

caseHUMI:

error+=s_write_byte(MEASURE_HUMI);

//测量湿度

default:

for(i=0;

65535;

i++)if(DATA==0)break;

//if(DATA)error+=1;

*(p_value)=s_read_byte(ACK);

*(p_value+1)=s_read_byte(ACK);

等待测量结束

如果长时间数据线没有拉低,说明测量错误

读第一个字

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1