好文档 - 专业文书写作范文服务资料分享网站

基于89C51单片机SHT11温湿度传感器电路图于程序作者

天下 分享 时间: 加入收藏 我要投稿 点赞

.

基于89C51单片机SHT11温湿度传感器电路图于程序作者: 张志杰

SHT11.h文件:

#ifndef __SHT11_H__ #define __SHT11_H__

/************************* SHT11相关命令

**************************/ #define uchar unsigned char #define uint unsigned int

#define TEM_TEST 0x03//温度检测命令 #define HUM_TEST 0x05//湿度检测命令 #define REG_READ 0x07//读寄存器 #define REG_WRITE 0x06//写寄存器

#define FUNCTION_SET 0x01//设置SHT11的工作精度为8位/湿度 12位温度 /************************** SHT11端口定义

***************************/

sbit SHT11_DATA=P3^1; sbit SHT11_SCK=P3^0; sbit P33=P3^3; sbit P32=P3^2;

'.

.

sbit P36=P3^6; sbit P37=P3^7;

uchar flag_tempeture=0; //显示温度位置的标志 uchar flag_humidity=0; //显示湿度位置的标志

uchar code str1[]={ 0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//温度图标 uchar code str6_sht11[]=\ \ uchar code str4_sht11[]=%uchar code str2_sht11[]=\

uchar code str7_sht11[]=\ \清除没不要的显示 /*************************** 函数名称:Delay()

函数功能:SHT11内部延时

****************************/ void Delay() { ; ; }

/*************************** 函数名称:Delay_Ms()

函数功能:SHT11检测等待延时

函数说明:11ms/55ms/210ms 分别对应8位/12位/14位 测量结果 对应的形参为N 则延时Nms

****************************/

void Delay_Ms(uint ms) // ms延时函数 (AT89C51 @ 11.0592MHz) {

uint i; uchar j;

for(i=0;i

for(j=0;j<200;j++); for(j=0;j<102;j++); } }

/************************** 函数功能:SHT11启动时序 ***************************/ void SHT11_Start() {

SHT11_SCK=1; SHT11_DATA=1; Delay();

SHT11_DATA=0;

'.

.

Delay();

SHT11_SCK=0; Delay();

SHT11_SCK=1; Delay();

SHT11_DATA=1; }

/****************************** 函数名称:SHT11_Sendbyte(uchar dat) 函数功能: 向SHT11发送8bite数据

******************************/ void SHT11_Sendbyte(uchar dat) {

uchar i;

SHT11_SCK=0; Delay();

for(i=0;i<8;i++) {

if(dat&0x80) {

SHT11_DATA=1; Delay(); } else {

SHT11_DATA=0; Delay(); }

dat=dat<<1; SHT11_SCK=1; Delay();

SHT11_SCK=0; } }

/********************************* 函数名称SHT11_Answer():

函数功能:检测SHT11的响应信号(在第九个时钟周期) ***********************************/ void SHT11_Answer() {

SHT11_SCK=1; Delay();

while(SHT11_DATA==1);

'.

.

SHT11_SCK=0; SHT11_DATA=1; }

/************************************ 函数名称:SHT11_Test_Finish()

函数功能:检测SHT11温湿度检测是否完毕 *************************************/ void SHT11_Test_Finish() {

while(SHT11_DATA==1); }

/************************************ 函数名称:SHT11_Receivebyte() 函数功能:从SHT11接收8bite数据

*************************************/ uchar SHT11_Receivebyte() {

uchar i; uchar dat;

SHT11_SCK=0; Delay();

for(i=0;i<8;i++) {

SHT11_SCK=1; Delay();

dat=dat<<1; if(SHT11_DATA) {

dat=dat|0x01; Delay(); } else {

dat=dat&0xfe; Delay(); }

SHT11_SCK=0; Delay(); }

SHT11_DATA=1; //释放数据总线 return(dat); }

'.

.

/*********************************** 函数名称:MCU_Answer()

函数功能:单片机向SHT11发送应答信号

*************************************/ void MCU_Answer() {

SHT11_SCK=0; Delay();

SHT11_DATA=0; Delay();

SHT11_SCK=1; Delay();

SHT11_SCK=0; Delay();

SHT11_DATA=1; //释放数据总线 这条指令非常重要 不加的话导致单片机不能读取低8位

}

/*********************************** 函数名称:SHT11_End()

当接收两个8byte数据后部接收CRC校验码

************************************/ void SHT11_End() {

SHT11_DATA=1; SHT11_SCK=1; Delay();

SHT11_SCK=0; Delay(); }

/*************************************

函数名称:void SHT11_Write_Register(uchar command ,uchar dat) 函数说明:向SHT11的状态寄存器设置功能

command为REG_WRITE 0x06写寄存器

dat为 设置SHT11的功能 可以设置检测的数据位数 */

void SHT11_Write_Register(uchar command ,uchar dat) {

SHT11_Start();

SHT11_Sendbyte(command); SHT11_Answer();

SHT11_Sendbyte(dat); SHT11_Answer();

'.

基于89C51单片机SHT11温湿度传感器电路图于程序作者

.基于89C51单片机SHT11温湿度传感器电路图于程序作者:张志杰SHT11.h文件:#ifndef__SHT11_H__#define__SHT11_H__/*************************SHT11相关命令**************************/
推荐度:
点击下载文档文档为doc格式
8ndfu5b9pm52amw9lhr375cln2z0an008gt
领取福利

微信扫码领取福利

微信扫码分享