最近公司里的一个小的项目:基于冰库的温度检测,采用无线通讯的方式,将采集到的温度信息传送给基站,基站通过UDP传输给上位机。
实验平台
编译软件: IAR Embedded Workbench for ARM version 6.40
KEIL Keil uVision4
硬件平台:(1) 测温度标签: Nrf24LE1与SHT20 (2) 基站: STM32F107与NRF24LE1
SHT20的驱动代码可以点击这里
在原来网上找到的源码,发现IIC写寄存器的时候,有些偏差。因此自己参考了之前驱动ADXL345加速度传感器的模拟IIC程序,对写寄存器部分进行了优化。
以下是读取的函数,将该函数放在while(1)的循环里,即可实现对温度的读取。
float ReadSht20(char whatdo)
{
float temp;
uchar MSB,LSB;
float Humidity;
float Temperature;
SET_Resolution();
I2CStart();
if(I2C_Write_Byte(SHT20ADDR&0xfe)==ACK)
{
if(I2C_Write_Byte(whatdo)==ACK)
{
do
{
Delay(6);
I2CStart();
}while(I2C_Write_Byte(SHT20ADDR