资源简介
实现了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
- 上一篇:破解手机号码去重排序软件
- 下一篇:车标大全资源jpg
相关资源
- 工程1 路口红绿灯.rar
- 基于51单片机的十字路口交通灯控制系
- 单片机通过ESP8266上传温湿度数据
- GA6 gprs模块 51单片机 程序
- 51单片机交通灯电路及代码
- 单片机HTTP通信
- 基于单片机的十字路口交通灯控制系
- 单片机原理及应用哈尔滨工业大学—
- ·基于AT89S52单片机的太阳能环境
- 51单片机交通灯 源代码+proteus仿真图
- [单片机原理与应用设计C51编程+Prote
- 测试STC15W408AS单片机串口收发
- 基于51单片机的直流电机PID控制
- 普中单片机开发工具.rar
- 单片机原理及应用技术-第二版
- 飞思卡尔编程入门菜鸟教程
- 基于51单片机超声波测距毕业设计
- 8051 单片机 模块 程序例程
- 单片机原理及接口技术(余锡存)
- STC-ISP51单片机
- Proteus合集电路图、仿真程序仅供参考
- 基于51单片机电子万年历的设计
- ESP8266AP模式控制51单片机亮灯.docx
- 基于52单片机的打地鼠报告
- 33个毕业设计_单片机类_+毕业论文.z
- 基于单片机的电子时钟设计
- OLED显示汉字
- STM32L152数据手册_中文.pdf
- [Altium_Designer]_STC89C52单片机最小系统原
- 单片机大作业.zip
评论
共有 条评论