流程:
传感器读取温度、湿度、光照强度 ,通过串口间歇发送给PC。
使用CC2530 读取温湿度传感器SHT10 的温度和湿度数据,并通过CC2530 内部的ADC 得到光照传感器的数据。其中对温湿度的读取是利用CC2530 的I/O(P1.0 和P1.1)
模拟一个类IIC 的过程。对光照的采集使用内部的AIN0 通道。
#include "hal.h"
#include "LCD.h"
#include "stdio.h"
#define noACK 0
#define ACK 1
#define STATUS_REG_W 0x06
#define STATUS_REG_R 0x07
#define MEASURE_TEMP 0x03
#define MEASURE_HUMI 0x05
#define RESET 0x1e
#define SCL P1_0 //SHT10时钟
#define SDA P1_1 //SHT10数据线
unsigned char d1,d2,d3,d4,d5,d6,d7;
void Wait(unsigned int ms);
void QWait(void) ;
char s_write_byte(unsigned char value);
char s_read_byte(unsigned char ack);
void s_transstart(void);
void s_connectionreset(void);
char s_measure( unsigned char *p_checksum, unsigned char mode);
void initIO(void);
/**************************************************************************************************
* 函数名称:Wait
*
* 功能描述:延时函数(不精确延时)
*
* 参 数:ms -- 延时时间
*
* 返 回 值:无
**************************************************************************************************/
void Wait(unsigned int ms)
{
unsigned char g,k;
while(ms)
{
for(g=0;g<=167;g++)
{
for(k=0;k<=48;k++);
}
ms--;
}
}
/**************************************************************************************************
* 函数名称:QWait
*
* 功能描述:延时函数(大约1us的延时)
*
* 参 数:无
*
* 返 回 值:无
**************************************************************************************************/
void QWait()
{
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");asm("NOP");
asm("NOP");
}
/*************************************************************************************