• 大小: 76KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2023-12-31
  • 语言: 其他
  • 标签: 单片机  

资源简介

实现了AT89C51单片机实时对SHT75温湿度传感器的温度,湿度和露点的计算并显示在LCD液晶显示屏上。

资源截图

代码片段和文件信息

//SCK:串行时钟,输入口用于通信
//DATA:串行数据,双向
//命令00000101表示湿度
//命令00000011表示温度   命令发送后等待时间和相应获取位数,约20/80/320ms  -->8/12/14 bit
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit SHT75_DATA_PIN=P2^7;
sbit SHT75_SCK_PIN=P2^6;
int _data=0;
float result_data=0temp=0;
void SHT75_reset()//SHT75复位
{
uchar i;
SHT75_DATA_PIN=1;
SHT75_SCK_PIN=0;
_nop_();_nop_();_nop_();_nop_();
for(i=0;i<10;i++)
{
SHT75_SCK_PIN=1;
_nop_();_nop_();_nop_();_nop_();
SHT75_SCK_PIN=0;
_nop_();_nop_();_nop_();_nop_();
}
}
void Initialize_connect_SHT75()//初始话发送命令连接
{
// SHT75_reset();
SHT75_SCK_PIN=1;           
_nop_();
SHT75_DATA_PIN=0;
_nop_();
SHT75_SCK_PIN=0;
_nop_();_nop_();
SHT75_SCK_PIN=1;
_nop_();
SHT75_DATA_PIN=1;
_nop_();
SHT75_SCK_PIN=0;
}
void send_byte(uchar cmd)//发送一个字节由高位到低位循环发送
{
char i;
for(i=7;i>=0;i--){
if(cmd&(0x01< SHT75_DATA_PIN=1;
}
else{
SHT75_DATA_PIN=0;
}
SHT75_SCK_PIN=1;  //发送一个电平信号脉冲,该位被送出
_nop_();_nop_();
SHT75_SCK_PIN=0;
}
_nop_();
return;
}
char read_byte()//读取一个字节由高位到低位接收
{
char _data=0;
char i;
SHT75_DATA_PIN=1;   //置高电平,释放数据线
for(i=8;i>0;i--){
_data<<=1;   //左移一位,准备读取下一位数据
SHT75_SCK_PIN=1; //置高电平
_nop_();_nop_();_nop_();_nop_(); //延迟4us
if(SHT75_DATA_PIN){   //读取一个位
_data|=0x01;
}
SHT75_SCK_PIN=0; //拉低sck
_nop_();_nop_();
}
return _data;
}
void send_ACK()//ACK  确认字符
{
//SHT75_DATA_PIN=1;
SHT75_DATA_PIN=0;
_nop_();
SHT75_SCK_PIN=1;
_nop_();_nop_();
SHT75_SCK_PIN=0;
_nop_();
SHT75_DATA_PIN=1;  //拉高data释放数据线
}
char read_ACK() //读取确认字符
{
char ack;
SHT75_DATA_PIN=1;
_nop_();
SHT75_SCK_PIN=1;
_nop_();_nop_();
ack=SHT75_DATA_PIN;
SHT75_SCK_PIN=0;
_nop_();
return ack;
}
float get_measure_data(uchar cmd)//根据对应的指令,获取相应的测量数据
{
Initialize_connect_SHT75();
send_byte(cmd);
if(read_ACK()){
return -1;
}
while(SHT75_DATA_PIN!=0); //延时等待data变低,之后便可读数据
_data=read_byte(); //读取高八位的数据
send_ACK();            //发送一个确认指令,确定已读取了前八位数据
_data=(_data<<8)+read_byte(); //读取后八位,并和前八位合并成为一个16进制的数据
send_ACK();  //发送一个确认符,表示接受完八位字符
read_byte(); //再读取八位数据是CRC,用于数据校验,可忽略校验
send_ACK();
if(cmd==0x05){ //测湿度
temp=-4+(0.0405*_data)-(2.8e-6*_data*_data);
//对湿度进行温度补偿
result_data=(result_data-25)*(0.01+0.00008*_data)+temp;     //由于每次先测量的是温度,所以result_data的值计算前还是温度的值
}
else if(cmd==0x03){  //测温度
result_data=-39.75+0.01*_data;
}
else{
return -1;
}
return result_data;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2894  2015-06-02 15:46  temp_humi\get_SHT75.c

     文件       6557  2015-06-02 15:49  temp_humi\get_SHT75.LST

     文件       7357  2015-06-02 15:49  temp_humi\get_SHT75.OBJ

     文件     104654  2015-06-01 16:04  temp_humi\Last Loaded SHT75温湿度传感器测试.DBK

     文件       1679  2015-06-02 11:36  temp_humi\LM041L_LCD.c

     文件       4174  2015-06-02 15:49  temp_humi\LM041L_LCD.LST

     文件       7360  2015-06-02 15:49  temp_humi\LM041L_LCD.OBJ

     文件     104654  2015-06-02 09:58  temp_humi\SHT75温湿度传感器测试.DSN

     文件        768  2015-06-02 15:49  temp_humi\SHT75温湿度传感器测试.PWI

     文件          0  2015-05-30 16:59  temp_humi\SHT75温湿度传感器测试.SDF (Can‘t open)

     文件      25049  2015-06-02 15:49  temp_humi\temp_humi

     文件       2669  2015-06-02 15:48  temp_humi\temp_humi.c

     文件      13777  2015-06-02 15:49  temp_humi\temp_humi.hex

     文件         72  2015-06-02 15:49  temp_humi\temp_humi.lnp

     文件       6094  2015-06-02 15:49  temp_humi\temp_humi.LST

     文件      26723  2015-06-02 15:49  temp_humi\temp_humi.M51

     文件      10411  2015-06-02 15:49  temp_humi\temp_humi.OBJ

     文件       1585  2015-06-02 15:48  temp_humi\temp_humi.Opt

     文件       1036  2015-06-02 15:49  temp_humi\temp_humi.plg

     文件       2084  2015-06-02 11:32  temp_humi\temp_humi.Uv2

     文件       1585  2015-06-02 11:36  temp_humi\temp_humi_Opt.Bak

     文件       2084  2015-06-02 11:32  temp_humi\temp_humi_Uv2.Bak

     目录          0  2015-06-02 21:26  temp_humi

----------- ---------  ---------- -----  ----

               333266                    23


评论

共有 条评论