温湿度传感器SHT10驱动程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

温湿度传感器SHT10驱动程序——基于MSP430

这是暑假时用430的单片机写的温湿度传感器SHT10的程序,参考了官方的51例程,分享一下~~

/****************************************Copyright

(c)**************************************************

******************************************LiPeng********************* ***********************************

**--------------File

Info-------------------------------------------------------------------------------

** File Name: Sht10_Driver.c

** Created by: LiPeng

** Created date: 2008-09-15

** Version: 1.0

** Descriptions: The original version

**

**------------------------------------------------------------------------------------------------------

** Modified by:

** Modified date:

** Version:

** Descriptions:

**

**------------------------------------------------------------------------------------------------------

** System Function: Sht10 Driver------温湿度传感器SHT10驱动

** 使用MSP430-F413连接方式:

** VCC: P6.3

** SCK: P6.4

** SDA: P6.5

**

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

#include

/*宏定义,延时函数,参数为1时相应延时分别为1us和1ms*/

#define CPU_F (double)1000000

#define delay_us(x) __delay_cycles((long)(CPU_F * (double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F * (double)x/1000.0))

/*常量定义*/

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

//adr command r/w

#define STATUS_REG_W 0x06 //000 0011 0

#define STATUS_REG_R 0x07 //000 0011 1

#define MEASURE_TEMP 0x03 //000 0001 1

#define MEASURE_HUMI 0x05 //000 0010 1

#define RESET 0x1e //000 1111 0

#define bitselect 0x01 //选择温度与湿度的低位读

#define noACK 0

#define ACK 1

#define HUMIDITY 2

#define TEMPERATURE 1

#define SCK BIT4

#define SDA BIT5

#define SVCC BIT3

#define SCK_H P6OUT|=SCK

#define SCK_L P6OUT&=~SCK

#define SDA_H P6OUT|=SDA

#define SDA_L P6OUT&=~SDA

#define SVCC_H P6OUT|=SVCC

#define SVCC_L P6OUT&=~SVCC

typedef union

{

unsigned int i;

float f;

}value;

uint table_temp[3];

uint table_humi[3];

uint temten;

uint humi_true;

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

**Function Name: S_Init

**Description: 初始化

**Input Parameters: 无

**Output Parameters: 无

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

void S_Init()

{

P6SEL&=~(SCK+SDA+SVCC); //选择P6.3 P6.4 为IO端口,输出 P6.5输入

P6DIR|=(SCK+SVCC);

P6DIR&=~SDA;

BCSCTL1=(XT2OFF+RSEL2); //关闭XT2,1MHz DOC

DCOCTL=DCO2; //设定DCO频率为1MHz

}

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

**Function Name: S_Transstart

**Description: 发送开始时序

**

** generates a transmission start

** _____ ________

** DATA: |_______|

** ___ ___

** SCK : ___| |___| |______

**Input Parameters: 无

**Output Parameters: 无

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

void S_Transstart()

{

P6DIR|=SDA;

SDA_H;SCK_L;

_NOP();

SCK_H;

_NOP();

SDA_L;

_NOP();

SCK_L;

_NOP();_NOP();_NOP();

SCK_H;

_NOP();

SDA_H;

_NOP();

SCK_L;

P6DIR&=~SDA;

}

相关文档
最新文档