温湿度传感器SHT10驱动程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}