Professional Documents
Culture Documents
******************************************************************************
* Ten Tep
sht.c
* Tac Gia
* Cong Ty
MinhHaGroup
* Website
BanLinhKien.Vn
* Phien Ban
V1.0.0
* Ngay
31-07-2012
* Tom Tat
*
*
******************************************************************************
* Chu Y
*
: Phai dinh nghia cac chan su dung cho sht vao file main.h
Vi Du:
PIC
AVR
#define
SHT_DATA_IN
#define
SHT_DATA_OUT
#define
SHT_CLK
8051
PINB0
PINB.0
PORTB0
PORTB1
P2_0
PORTB.0 P2_0
PORTB.1 P2_1
AVR
#define
SHT_DDR_DATA
#define
SHT_DDR_CLK
8051
DDRB0
DDRB1
DDRB.0
DDRB.1
P2_0
P2_1
******************************************************************************
**/
/*********************************** VI DU ************************************
float nhiet_do,do_am;
SHT_Init(SHT_14_12_BIT);
SHT_ReadTemHumi(&nhiet_do,&do_am);
*******************************************************************************/
#include "sht.h"
static uint8_t SHT_Resolution;
/*******************************************************************************
Noi Dung
: Khong.
********************************************************************************/
void SHT_Start()
{
SHT_DDR_CLK = DDROUT; // SHT la chan ra
SHT_DDR_DATA = DDROUT; // Data la chan ra
SHT_DATA_OUT = 1;
SHT_CLK = 0;
SHT_CLK = 1;
SHT_DATA_OUT = 0;
SHT_CLK = 0;
SHT_CLK = 1;
SHT_DATA_OUT = 1;
SHT_CLK = 0;
}
/*******************************************************************************
Noi Dung
: Khong.
********************************************************************************/
void SHT_ResetConection()
{
uint8_t i;
SHT_DDR_DATA = DDROUT; //Data la chan ra
SHT_DATA_OUT=1;
for (i=0; i<9; i++)
{
SHT_CLK=1;
SHT_CLK=0;
}
SHT_Start();
}
/*******************************************************************************
Noi Dung
: 1:
0:
********************************************************************************/
uint8_t SHT_WriteByte(uint8_t Data)
{
uint8_t i, error = 0;
SHT_DDR_DATA = DDROUT;
delay_us(2);
// Data la chan ra
SHT_DATA_OUT = 0;
delay_us(1);
SHT_CLK = 1;
delay_us(1);
}
SHT_CLK = 0;
SHT_DDR_DATA = DDRIN;
delay_us(1);
SHT_CLK = 1;
delay_us(1);
error = SHT_DATA_IN;
SHT_CLK = 0;
delay_ms(250);
return(error);
}
/*******************************************************************************
Noi Dung
: Khong.
********************************************************************************/
uint8_t SHT_ReadByte(uint8_t ack)
{
uint8_t i, val = 0;
SHT_DDR_DATA = DDRIN;
// Data la chan ra
delay_us(1);
SHT_DATA_OUT = ! ack;
SHT_CLK = 1;
delay_us(1);
SHT_CLK = 0;
return(val);
}
/*******************************************************************************
Noi Dung
: Khong.
********************************************************************************/
void SHT_Init(uint8_t resolution)
{
SHT_ResetConection();
SHT_WriteByte(SHT_STATUS_REG_W);
delay_ms(300);
SHT_WriteByte(resolution);
SHT_Resolution=resolution;
}
/*******************************************************************************
Noi Dung
: Reset SHT.
: Khong.
********************************************************************************/
void SHT_ResetChip()
{
SHT_ResetConection();
SHT_WriteByte(SHT_RESET);
delay_ms(100);
}
/*******************************************************************************
Noi Dung
: 16 bit du lieu.
********************************************************************************/
uint16_t SHT_ReadSenSor(uint8_t Command)
{
uint8_t msb, lsb, crc;
SHT_ResetConection();
SHT_WriteByte(Command);
while(SHT_DATA_IN);
msb = SHT_ReadByte(SHT_ACK);
lsb = SHT_ReadByte(SHT_ACK);
crc = SHT_ReadByte(SHT_NOACK);
return(((uint16_t) msb << 8) | (uint16_t) lsb);
}
/*******************************************************************************
Noi Dung
Tham Bien : *tem: con tro luu tru du lieu nhiet do.
*humi: con tro luu tru du lieu do am.
Tra Ve
: Khong.
********************************************************************************/
void SHT_ReadTemHumi(float *tem, float *humi)
{
uint16_t SOT;
uint16_t SORH;
SOT=SHT_ReadSenSor(SHT_MEASURE_TEMP);
SORH=SHT_ReadSenSor(SHT_MEASURE_HUMI);
if(SHT_Resolution==SHT_14_12_BIT)
{
*tem=(H_D1+H_D2*SOT);
*humi=((H_D1+H_D2*SOT-25)*(H_T1+H_T2*SORH)
+H_C1+H_C2*SORH+H_C3*SORH*SORH);
}
else
{
*tem=(L_D1+L_D2*SOT);
*humi=((L_D1+L_D2*SOT-25)*(L_T1+L_T2*SORH)
+L_C1+L_C2*SORH+L_C3*SORH*SORH);
}
}
/******************************KET THUC FILE******************************
______________________________NGUYEN QUY NHAT______________________________*/