LM75 --温度采集(时序及代码)
一、 LM75A传感器介绍
二、寄存器介绍
三、时序图
四、代码
#define LM75A_SCL_GPIO GPIOB
#define LM75A_SCL_PIN GPIO_Pin_8
#define LM75A_SDA_GPIO GPIOB
#define LM75A_SDA_PIN GPIO_Pin_7#define LM75A_SCL(value) GPIO_WRITE_BIT(LM75A_SCL_GPIO, LM75A_SCL_PIN, value);
#define LM75A_SDA(value) GPIO_WRITE_BIT(LM75A_SDA_GPIO, LM75A_SDA_PIN, value);
#define LM75A_READ_GPIO(value) {value = GPIO_READ_IDB(LM75A_SDA_GPIO, LM75A_SDA_PIN);}#define SDA_H LM75A_SDA(1)
#define SDA_L LM75A_SDA(0)
#define SCL_H LM75A_SCL(1)
#define SCL_L LM75A_SCL(0)
#define SDA_read GPIO_READ_IDB(LM75A_SDA_GPIO, LM75A_SDA_PIN)
#define I2C_delay() LM75A_DELAY
#define I2C_TM_ERR 0
#define I2C_TM_OK 1
#define LM75_ADDRESS 0x94// 0x00 temperature 0x01 conf 0x00 temperature 0x00 temperature
#define LM75A_addr 0x94
#define LM75A_REG_TEMPERATUYA 0x00
#define LM75A_REG_CONF 0x01
#define LM75A_REG_THYST 0x02
#define LM75A_REG_TOS 0x03//1NOP = 1CLOCK = 5.95ns
/*
TP min: 2.5us
TH min: 0.6us
TL min: 1.3us
*/
#define LM75A_DELAY NOP_1000;//2.975usvoid LM75A_MDIO_Out()
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//MDIOGPIO_InitStructure.GPIO_Pin = LM75A_SDA_PIN;GPIO_Init(LM75A_SDA_GPIO, &GPIO_InitStructure);
}void LM75A_MDIO_In()
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//MDIOGPIO_InitStructure.GPIO_Pin = LM75A_SDA_PIN;GPIO_Init(LM75A_SDA_GPIO, &GPIO_InitStructure);
}void LM75A_InitGpio()
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//MDCGPIO_InitStructure.GPIO_Pin = LM75A_SCL_PIN;GPIO_Init(LM75A_SCL_GPIO, &GPIO_InitStructure);LM75A_MDIO_Out();LM75A_SCL(0);LM75A_SDA(1);
}/********************************************************************************
* 使用I2C1读写AT24C256,LM75
*******************************************************************************/u16 I2C_Start(void)
{SDA_H;SCL_H;I2C_delay();SDA_L;I2C_delay();SCL_L;I2C_delay();return (I2C_TM_OK);
}void I2C_Stop(void)
{SCL_L;I2C_delay();SDA_L;I2C_delay();SCL_H;I2C_delay();SDA_H;I2C_delay();SCL_L;I2C_delay();
}void I2C_Ack(void)
{SCL_L;I2C_delay();SDA_L;I2C_delay();SCL_H;I2C_delay();SCL_L;I2C_delay();
}void I2C_NoAck(void)
{ SCL_L;I2C_delay();SDA_H;I2C_delay();SCL_H;I2C_delay();SCL_L;I2C_delay();
}u16 I2C_WaitAck(void) //返回为:=1有ACK,=0无ACK
{SCL_L;I2C_delay();SCL_H;LM75A_MDIO_In();I2C_delay();if(SDA_read){SCL_L;return(I2C_TM_ERR);}SCL_L;LM75A_MDIO_Out();return(I2C_TM_OK);
}void I2C_SendByte(u8 SendByte) //数据从高位到低位//
{u8 i=8;while(i--){SCL_L;I2C_delay();if(SendByte&0x80){SDA_H;}else{SDA_L;}SendByte<<=1;I2C_delay();SCL_H;I2C_delay();}SCL_L;}u8 I2C_ReceiveByte(void) //数据从高位到低位//
{ u8 i=8;u8 ReceiveByte=0;SDA_H;while(i--){ReceiveByte<<=1;SCL_L;I2C_delay();SCL_H;I2C_delay();if(SDA_read){ReceiveByte|=0x01;}}SCL_L;return ReceiveByte;
}/*******************************************************************************
* Function Name : I2C_LM75_Read
* Description : Reads Temperature data from the LM75.
* Input : None
* Output : 0xFFFF -- Error
* 0x0000 ~ 0x01FF -- Valid data
* Temp Binary Hex
* +125 0111 1101 0xxx xxxx 0FAh
* +25 0001 1001 0xxx xxxx 032h
* +0.5 0000 0000 1xxx xxxx 001h
* 0 0000 0000 0xxx xxxx 000h
* -0.5 1111 1111 1xxx xxxx 1FFh
* -25 1110 0111 0xxx xxxx 1CEh
* -55 1100 1001 0xxx xxxx 192h
* Return : None
*******************************************************************************/
float I2C_LM75_Read(void)
{float temp;vu16 TempH,TempL;if(I2C_Start()==I2C_TM_ERR)return(I2C_TM_ERR);I2C_SendByte(LM75_ADDRESS); //器件地址if(I2C_WaitAck()==I2C_TM_ERR){I2C_Stop(); return(I2C_TM_ERR);}I2C_SendByte(0x00); //设置温度寄存器地址if(I2C_Start()==I2C_TM_ERR)return(I2C_TM_ERR);I2C_SendByte(LM75_ADDRESS | 0x01); //设置器件地址 if(I2C_WaitAck()==I2C_TM_ERR){I2C_Stop(); return(I2C_TM_ERR);}LM75A_MDIO_In();TempH = I2C_ReceiveByte();I2C_Ack();TempL = I2C_ReceiveByte();I2C_NoAck();LM75A_MDIO_Out();I2C_Stop();temp=TempH+(TempL>>5)*0.125;return(temp);
}
LM75 --温度采集(时序及代码)相关推荐
- C#上位机与单片机的完美结合(内附有用户登录,注册,截图,温度采集,历史数据展示,左边菜单右边内容展示的主界面)
基于C#的用户登录,注册界面,头像截屏,左侧菜单右边显示内容的主界面,与单片机结合的温度检测,历史数据分析,完美与SQLServer结合 1用户登录界面 2注册界面 3用户头像拍摄截取 4灯光展示 5 ...
- 【STM32学习】(30)STM32实现18B20温度采集(标准库和HAL库实现)
单片机型号:STM32F103 源码下载链接:(2条消息) STM32实现18B20温度采集(标准库和HAL库实现)-电信文档类资源-CSDN下载 现要求完成温度采集并在串口或液晶屏上显示.我们这里使 ...
- 基于51单片机的温度采集与报警系统】
引言 单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将设计一种基于单片机控制的温度器,本温度计属于多功能温度计,可以利用温度传感器对环境温度进行监测和显示,可以通 ...
- 带内部参考电压(VREFINT)校正的STM32 DMA 内置温度采集
笔者今天来介绍一下STM32ADC内置温度的采集,重点是通过内置参考电压来避免ADC参考电压VDDA对温度ADC采集的影响. 1.STM32ADC简介 stm32F4系列ADC,逐次趋近型AD.1 ...
- DS18B20温度采集报警系统,原理及汇编、C语言实现
单片机课程设计已完成,现供以参考. DS18B20单总线的工作方式 数据手册说明1: DS18B20数字温度传感器提供9-Bit到12-Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低 ...
- 基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙OLED数字钟的设计与实现
基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙OLED数字钟的设计与实现 作者: 颜孙炜 文章目录 基于STM32F103C8T6与ESP8266的物联网智能温度采集与蓝牙O ...
- NTC热敏电阻温度采集与adc转换
前言: ntc热敏电阻的R值是10k,B值是3950 使用的是STM32F103RCT6的ADC 文章目录 1.电路理论 2. NTC热敏电阻阻值与温度之间的转换 3.NTC热敏电阻温度采集与adc转 ...
- STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码
STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码 本文采用的芯片为STM32F103RCT6 温度芯片为MAX6675 因为芯片的spi口只有3个,有部分需要外接W25Q128 ...
- Proteus 8086模拟温度采集 使用LM35温度传感器
一.思路 使用LM35温度传感器进行温度采集,将采集到的电压值(模拟量)经过ADC0808芯片转换成数字信号经数据总线传入8086的寄存器中. 二.8086接线方式 8086的接线方式如上图所示.74 ...
- 多路温度采集计算机网络监测设计,多路温度信号测量与监测,数据采集 温度采集模块...
原标题:多路温度信号测量与监测,数据采集 温度采集模块 5路热电阻温度信号转RS-485/232,温度采集转换模块 WJ25 产品特点: ● 5路温度信号采集,隔离转换 RS-485/232输出 ● ...
最新文章
- 牛客小白月赛25 补题+题解[A-J]
- linux shell 数组元素带空格,在bash中解析带有空格的JSON数组
- dr.web for android version 9,DrWeb安全防护
- 若依项目linux部署
- 每天一道LeetCode-----将字符串拆分成有效的ip地址
- Java笔记-DH密钥交换
- VueJS项目报错解决:router.map is not a function - 方法大全
- ProtoBuf3语法指南(Protocol Buffers)_下
- 创建你自己的AngularJS -- 第一部分 Scopes(一)
- go的string正则匹配_Go正则匹配 regexp | Go
- 缓存穿透,缓存击穿,缓存雪崩以及解决方案
- YYF的一些简单配置 2016-10-13
- 科普:一片晶圆可以切多少个芯片?
- python-漫天星星turtle and random
- 完成静态服务器——Node.js摸石头系列之四
- 微信公众号最佳实践 ( 9.6)地图导航
- Cesium实现聚光灯向舞台照射并旋转运动的效果含全部源码
- SAP CO组织结构及概念
- 游戏平台,游戏私服选择三方支付的优势
- 美拍应该如何引流?如何利用美拍引流?美拍引流方法