lm75ad 程序
以下是使用STM32 HAL库驱动LM75AD温度传感器的中文程序示例,包含初始化、温度读取和转换逻辑:
1. 宏定义与全局变量
#include "stm32f1xx_hal.h"
#define LM75_ADDR_WRITE 0x90 // I2C写地址 (默认A0=A1=A2=0)
#define LM75_ADDR_READ 0x91 // I2C读地址
#define TEMP_REGISTER 0x00 // 温度寄存器地址
I2C_HandleTypeDef hi2c1; // I2C句柄(根据实际使用的I2C修改)
2. I2C初始化函数
void I2C_Init(void) {
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000; // 100kHz标准模式
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK) {
Error_Handler(); // 初始化错误处理
}
}
3. 读取温度函数
float LM75_ReadTemp(void) {
uint8_t tx_data = TEMP_REGISTER;
uint8_t rx_data[2] = {0};
int16_t raw_temp;
float temperature;
// 步骤1: 发送温度寄存器地址
if (HAL_I2C_Master_Transmit(&hi2c1, LM75_ADDR_WRITE, &tx_data, 1, HAL_MAX_DELAY) != HAL_OK) {
return -999; // 传输错误
}
// 步骤2: 读取两个字节温度数据
if (HAL_I2C_Master_Receive(&hi2c1, LM75_ADDR_READ, rx_data, 2, HAL_MAX_DELAY) != HAL_OK) {
return -999; // 接收错误
}
// 步骤3: 数据转换
raw_temp = (rx_data[0] << 8) | rx_data[1]; // 合成16位数据
raw_temp >>= 5; // 丢弃低5位(无效位)
// 处理负数温度(补码转换)
if (raw_temp & 0x0400) { // 检查第10位(符号位)
raw_temp |= 0xFC00; // 扩展符号位(16位补码)
}
temperature = raw_temp * 0.125; // LSB = 0.125°C
return temperature;
}
4. 主函数调用示例
int main(void) {
HAL_Init();
I2C_Init();
while (1) {
float temp = LM75_ReadTemp();
printf("当前温度: %.2f°C\n", temp); // 通过串口输出
HAL_Delay(1000);
}
}
关键说明:
- I2C地址:默认地址
0x48(7位),若A0/A1/A2接VCC则需调整:0x48 + (A2<<2 | A1<<1 | A0)计算后左移1位
- 数据格式:
- 接收两个字节(MSB + LSB)
- 有效位为高11位(低5位可忽略)
- 温度值 = 原始数据 × 0.125(°C)
- 负温度处理:
- 当第10位(bit10)为1时是负数
- 通过符号位扩展转换为16位有符号数
调试建议:
- 用逻辑分析仪检查I2C波形
- 检查LM75AD供电(3.3V)
- 确认上拉电阻(SCL/SDA需接4.7kΩ上拉)
- 若读取失败,返回-999可快速定位问题
实际使用时需根据硬件修改:
I2C_HandleTypeDef实例名(如hi2c2)- STM32型号对应的I2C初始化参数
- 串口输出部分替换为实际调试方式
探索LM75B和LM75C数字温度传感器:设计与应用指南
探索LM75B和LM75C数字温度传感器:设计与应用指南 在电子设计领域,温度监测是许多系统的关键功能,从通信基础设施到电子测试设备,准确的温度测量对于确保系统的稳定性和性能至关重要。今天,让我们
2026-02-26 11:20:06
LM75BIMMX-5+ LM75BIMMX-5+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMMX-5+相关产品参数、数据手册,更有LM75BIMMX-5+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIM-3+ LM75BIM-3+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIM-3+相关产品参数、数据手册,更有LM75BIM-3+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIMM-5+ LM75BIMM-5+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMM-5+相关产品参数、数据手册,更有LM75BIMM-5+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIMX-3+ LM75BIMX-3+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMX-3+相关产品参数、数据手册,更有LM75BIMX-3+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIMX-5+ LM75BIMX-5+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMX-5+相关产品参数、数据手册,更有LM75BIMX-5+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIM-5+ LM75BIM-5+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIM-5+相关产品参数、数据手册,更有LM75BIM-5+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIMM-3+ LM75BIMM-3+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMM-3+相关产品参数、数据手册,更有LM75BIMM-3+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
LM75BIMMX-3+ LM75BIMMX-3+ - (Maxim Integrated) - 温度传感器 - 模拟和数字输出
电子发烧友网为你提供()LM75BIMMX-3+相关产品参数、数据手册,更有LM75BIMMX-3+的引脚图、接线图、封装手册、中文资料、英文资料,LM75
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机