当前位置: 首页 > news >正文

BH1750光照传感器---附代码

目录

    • BH1750简介
    • BH1750指令集
    • BH1750工作流程

BH1750简介

VCC-->电源正;
ADDR-->地址端口;
GND-->电源负;
PA5-->SDA-->I2C数据线;
PA3-->SCL-->I2C时钟线;
DVI-->I2C端口参考电压;

BH1750一共有2个设备地址:
高电平–>0x5C(7bit地址),0xB8(8bit地址)
低电平–>0x23(7bit地址),0x46(8bit地址)
在这里插入图片描述

注:这个模块只适用于室内环境或者学习使用,户外场景下会超量程。
BH1750用的是模块,模块上已经有接上拉电阻了,因此STM32这边就不 需要再接了。
ADDR引脚默认有一个下拉电阻,因此不接地其实也没关系。

BH1750指令集

在初始化BH1750时,通过发送1个字节的指令即可配置BH1750的模式。
在这里插入图片描述
在这里插入图片描述
注:lx,光照强度的单位,勒克斯。
L分辨率模式采集时间短,但精度差,适用于采集光照变化大且变化非常快的场景;H分辨率模式采集时间长,但精度高,适用于光照变化速度不快的场景。
一次采集模式适用于采集间隔时间长或者需要省电的场景;连续采集模式适用于对设备节能没有要求的大多数场景。

BH1750工作流程

  • 第1步:给BH1750供电。
  • 第2步:BH1750上电后默认为断电模式(此断电模式不是说芯片没有电,而是芯片没有进入工作模式)。
  • 第3步:通过发送指令,把BH1750配置为通电模式(此时芯片进入工作模式)。
  • 第4步:发送测量指令。
  • 第5步:读取测量结果并转换成光照值。
#ifndef __BH1750_H
#define __BH1750_H
#include "stm32f10x.h"// 位带操作宏定义
#define BITBAND(addr, bitnum) ((addr & 0xF0000000) + 0x2000000 + ((addr & 0xFFFFF) << 5) + (bitnum << 2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))// GPIOA的ODR和IDR寄存器地址
#define GPIOA_ODR_ADDR    (GPIOA_BASE + 12) // GPIOB的输出数据寄存器地址,0x4001080C 
#define GPIOA_IDR_ADDR    (GPIOA_BASE + 8)  // GPIOB的输入数据寄存器地址,0x40010808// 定义PBout和PBin宏
#define PAout(n)   BIT_ADDR(GPIOA_ODR_ADDR, n)  //输出 
#define PAin(n)    BIT_ADDR(GPIOA_IDR_ADDR, n)  //输入 /************************************************************************/
// 配置GPIOA的第3个引脚为SCL,第5个引脚为SDA
#define I2C_SCL     PAout(3) // SCL
#define I2C_SDA     PAout(5) // SDA
#define READ_SDA    PAin(5)  // 读取SDA线状态#define SDA_IN()     { GPIOA->CRL &= 0XFF0FFFFF; GPIOA->CRL |= (uint32_t)8 << 20; } 
#define SDA_OUT()    { GPIOA->CRL &= 0XFF0FFFFF; GPIOA->CRL |= (uint32_t)3 << 20; } /************************************************************************/#define	BH1750_ADDR_GND_REG	    0x23	//ADDR引脚接低电平
#define	BH1750_ADDR_VCC_REG	    0x5C	//ADDR引脚接高电平#define	BH1750_ADDR_Write		0x46    //从机地址+最后写方向位
#define	BH1750_ADDR_Read 		0x47    //从机地址+最后读方向位#define BH1750_POWER_DOWN   	0x00	//关闭模块	
#define BH1750_POWER_ON			0x01	//打开模块等待测量指令
#define BH1750_RESET_REG		0x07	//重置数据寄存器值在PowerOn模式下有效#define BH1750_CON_H_RES_MODE	0x10	//连续高分辨率 单位1lx 测量时间120ms
#define BH1750_CON_H_RES_MODE2	0x11	//连续高分辨率模式2 单位0.5lx 测量时间120ms
#define BH1750_CON_L_RES_MODE	0x13	//连续低分辨率 单位4lx 测量时间16ms#define BH1750_ONE_H_RES_MODE	0x20	// 一次高分辨率 单位1lx 测量时间120ms
#define BH1750_ONE_H_RES_MODE2	0x21	// 一次高分辨率模式2 单位0.5lx 测量时间120ms
#define BH1750_ONE_L_RES_MODE	0x23	// 一次低分辨率 单位4lx 测量时间16ms     /*---测量后模块转到 PowerDown模式*//************************************************************************/void BH1750_Init(void);
void Single_Write_BH1750(unsigned char REG_Address);
void BH1750_WriteReg(uint8_t RegAddress);
uint16_t BH1750_ReadReg(void);/************************************************************************/void BH1750_I2C_Start(void); 						//发送I2C开始信号
void BH1750_I2C_Stop(void); 						//发送I2C停止信号
void BH1750_I2C_Ack(void);	   						//I2C发送ACK信号 
void BH1750_I2C_NAck(void);							//I2C不发送ACK信号
uint8_t BH1750_I2C_Wait_Ack(void);					//I2C等待ACK信号
void BH1750_I2C_Send_Byte(uint8_t Byte); 			//I2C发送一个字节
uint8_t BH1750_I2C_Receive_Byte(unsigned char ACK);	//I2C读取一个字节#endif
#include "stm32f10x.h"                  // Device header
#include "BH1750.h"
#include "Delay.h"/************************通信层***************************/
/*产生I2C起始信号*/
void BH1750_I2C_Start(void)
{SDA_OUT(); //SDA线输出I2C_SDA = 1;I2C_SCL = 1;Delay_us(4);I2C_SDA = 0; //START:当CLK为高时,DATA从高变低Delay_us(4);I2C_SCL = 0; //钳住I2C总线,准备发送或接收数据 
}/*产生I2C终止信号*/
void BH1750_I2C_Stop(void)
{SDA_OUT(); //SDA线输出I2C_SCL = 0;I2C_SDA = 0; //STOP:当CLK为高时,DATA从低变为高Delay_us(4);I2C_SCL = 1; I2C_SDA = 1; //发送I2C总线结束信号Delay_us(4);
}//产生ACK应答
void BH1750_I2C_Ack(void)
{I2C_SCL = 0;SDA_OUT();I2C_SDA = 0;Delay_us(2);I2C_SCL = 1;Delay_us(2);I2C_SCL = 0;
}//不产生ACK应答		    
void BH1750_I2C_NAck(void)
{I2C_SCL = 0;SDA_OUT();I2C_SDA = 1;Delay_us(2);I2C_SCL = 1;Delay_us(2);I2C_SCL = 0;
}/*等待应答信号到来*/
//返回值:1,接收应答失败
//        0,接收应答成功
uint8_t BH1750_I2C_Wait_Ack(void)
{uint8_t ucErrTime = 0;SDA_IN(); //SDA设置为输入I2C_SDA = 1; Delay_us(1); I2C_SCL = 1; Delay_us(1);while(READ_SDA){ucErrTime++;if(ucErrTime > 250){BH1750_I2C_Stop();return 1;}}I2C_SCL = 0;	   return 0; 
}/*I2C发送一个字节*/
//返回从机有无应答,1:有应答;0:无应答
void BH1750_I2C_Send_Byte(uint8_t Byte)
{SDA_OUT(); I2C_SCL = 0; //拉低时钟开始数据传输for(uint8_t i = 0; i < 8; i++){if((Byte & 0x80) >> 7)I2C_SDA = 1;	elseI2C_SDA = 0;		Byte<<=1;Delay_us(2);I2C_SCL = 1; //释放SCL,从机在SCL高电平期间读取SDADelay_us(2); I2C_SCL = 0; //拉低SCL,主机开始发送下一位数据Delay_us(2);		}
}/*I2C接收一个字节*/
//ACK=1时,发送ACK,ACK=0,发送nACK
uint8_t BH1750_I2C_Receive_Byte(unsigned char ACK)
{uint8_t i, Byte = 0x00;	SDA_IN();//SDA设置为输入	for(i = 0; i < 8; i++){I2C_SCL = 0; Delay_us(2);I2C_SCL = 1;Byte<<=1;if(READ_SDA)Byte++;Delay_us(1);		}if (!ACK)BH1750_I2C_NAck(); //发送nACKelseBH1750_I2C_Ack(); //发送ACK   return Byte;
}/************************应用层***************************/
/*BH1750寄存器写*/
void BH1750_WriteReg(uint8_t RegAddress)
{do{BH1750_I2C_Start();              			//I2C起始信号BH1750_I2C_Send_Byte(BH1750_ADDR_Write);    //发送器件地址}while(BH1750_I2C_Wait_Ack());          	//等待从机应答BH1750_I2C_Send_Byte(RegAddress);           //发送指令BH1750_I2C_Wait_Ack();                      //等待从机应答BH1750_I2C_Stop();                       	//I2C停止信号
}/*BH1750寄存器读*/
uint16_t BH1750_ReadReg(void)
{	uint16_t buf;	BH1750_I2C_Start();			 				//I2C起始信号BH1750_I2C_Send_Byte(BH1750_ADDR_Read);     //发送器件地址+读标志位BH1750_I2C_Wait_Ack();                      //等待从机应答buf = BH1750_I2C_Receive_Byte(1);           //读取数据buf = buf<<8;                       		//读取并保存高八位数据buf += 0x00ff & BH1750_I2C_Receive_Byte(0); //读取并保存低八位数据BH1750_I2C_Stop();                     		//发送停止信号 return buf; 
}void Single_Write_BH1750(unsigned char REG_Address)
{BH1750_I2C_Start();                  	//起始信号BH1750_I2C_Send_Byte(BH1750_ADDR_Write); //发送设备地址+写信号BH1750_I2C_Send_Byte(REG_Address);   	//内部寄存器地址,BH1750_I2C_Stop();                 		//发送停止信号
}/*BH1750初始化*/
void BH1750_Init(void)
{	RCC->APB2ENR |= 1 << 2; //使能PORTA时钟GPIOA->CRL &= 0XFF0F0FFF; GPIOA->CRL |= 0X00303000; //PA3 5 推挽输出GPIOA->ODR |= 1<<3;      //PA3 输出高GPIOA->ODR |= 1<<5;      //PA5 输出高Single_Write_BH1750(BH1750_POWER_ON);
}
char light[] = "0000Lx"; // 光照值
void UpdateLightDisplay(uint16_t lux) 
{// 限制最大显示值为9999(4位)uint16_t display_val = lux > 9999 ? 9999 : lux;for(uint8_t i = 0; i < 4; i++){light[3 - i] = display_val % 10 + '0'; // 从个位开始填充display_val /= 10;}OLED_Show_String(1, 10, light);
}int main(void)
{/* 初始化部分 */OLED_Init();BH1750_Init();/* BH1750配置 */	BH1750_WriteReg(BH1750_POWER_ON);BH1750_WriteReg(BH1750_RESET_REG);BH1750_WriteReg(BH1750_CON_H_RES_MODE);/* 界面初始化 */OLED_Show_Chinese_String(1,1,CurrentLightIntensity_Str); //显示光照强度OLED_Show_Char(1, 9, ':'); while(1){/* 光照强度处理 */uint16_t lux = BH1750_ReadReg(); // 读取光照值UpdateLightDisplay(lux);Delay_ms(500);}
}

在这里插入图片描述

相关文章:

BH1750光照传感器---附代码

目录 BH1750简介BH1750指令集BH1750工作流程 BH1750简介 VCC-->电源正&#xff1b; ADDR-->地址端口&#xff1b; GND-->电源负&#xff1b; PA5-->SDA-->I2C数据线&#xff1b; PA3-->SCL-->I2C时钟线&#xff1b; DVI-->I2C端口参考电压&#xff1b…...

docker harbor私有仓库登录报错

docker harbor私有仓库登录报错如下&#xff1a; [rootsrv-1 ~]# docker login -u user1 -p pwd1 harbor.chinacloudapi.cn WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://harbor.chinacloudapi.…...

浔川AI翻译v7.0更新预告

亲爱的浔川AI翻译用户&#xff1a; 感谢您一直以来的支持&#xff01;浔川AI翻译自推出以来&#xff0c;已迭代6个版本&#xff0c;其中**v2.0和v4.0因技术问题&#xff08;翻译结果显示异常、注册失败、密码找回功能失效等&#xff09;**被迫下架。我们深知这些问题影响了您…...

Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南

网路通信的三大要素&#xff1a;协议&#xff0c;端口和IP 知识点1【字节序】 多字节在主机中的存放数据 把多字节看成一个整体存储的顺序。 为什么我们在文件中没有这个概念呢&#xff1f; 因为文件是字节流&#xff08;流指针&#xff09;&#xff0c;流是以一个字节为操…...

Java基础知识面试题(已整理Java面试宝典pdf版)

什么是Java Java是一门面向对象编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地实现了面向对象理论…...

速盾:高防CDN访问多了会影响源站吗?

在当今数字化时代&#xff0c;内容分发网络&#xff08;CDN&#xff09;已经成为保障网站性能和用户体验的重要工具。特别是高防CDN&#xff0c;它不仅能够加速内容传输&#xff0c;还能有效抵御各种类型的网络攻击&#xff0c;确保业务的连续性和稳定性。然而&#xff0c;一些…...

Python(19)Python并发编程:深入解析多线程与多进程的差异及锁机制实战

目录 一、背景&#xff1a;Python并发编程的必要性二、核心概念对比2.1 技术特性对比表2.2 性能测试对比&#xff08;4核CPU&#xff09; 三、线程与进程的创建实战3.1 多线程基础模板3.2 多进程进阶模板 四、锁机制深度解析4.1 资源竞争问题重现4.2 线程锁解决方案4.3 进程锁的…...

赛灵思 XCVU440-2FLGA2892E XilinxFPGA Virtex UltraScale

XCVU440-2FLGA2892E 属于 Xilinx Virtex UltraScale 系列&#xff0c;是面向高端应用的旗舰 FPGA 器件。该系列产品以出色的高并行处理能力、丰富的逻辑资源和高速互联能力闻名&#xff0c;广泛用于 高性能计算、数字信号处理等对计算能力和带宽要求极高的场景。采用先进的 20n…...

UE5 相机裁剪面

UE5无法单独修改相机的裁剪面&#xff0c;不论是场景相机还是游戏相机都不可以 只能在配置里统一修改 项目设置里直接搜clip...

uniapp自定义底部导航栏,解决下拉时候顶部空白的问题

一、背景 最近使用uniapp开发微信小程序&#xff0c;因为使用了自定义的顶部导航栏&#xff0c;所以在ios平台上&#xff08;Android未测试&#xff09;测试的时候&#xff0c;下拉的时候会出现整个页面下拉并且顶部留下大片空白的问题 二、任务&#xff1a;解决这个问题 经…...

vue2 element-ui 中 el-radio 单选框点击事件失效问题

前情提要 点进这篇文章的小伙伴&#xff0c;应该和博主一样&#xff0c;都是遇到了这种单选框可点击取消的需求。也就只有这种不同寻常的需求&#xff0c;才能让我们发现element框架的缺陷点&#xff0c;话不多说&#xff0c;下面博主来提供一个解决思路。 click为什么无法触发…...

yolov8复现

Yolov8的复现流程主要包含环境配置、下载源码和验证环境三大步骤&#xff1a; 环境配置 查看电脑状况&#xff1a;通过任务管理器查看电脑是否有独立显卡&#xff08;NVIDIA卡&#xff09;。若有&#xff0c;后续可安装GPU版本的pytorch以加速训练&#xff1b;若没有&#xff0…...

提高Qt工作线程的运行速度

1. 使用线程池&#xff08;QThreadPool&#xff09;替代单一线程 做过&#xff0c;但是当时没想到。。。 目的&#xff1a;减少线程创建和销毁的开销&#xff0c;复用线程资源。 实现步骤&#xff1a; 创建自定义任务类&#xff1a;继承QRunnable&#xff0c;实现run()方法。…...

ZStack文档DevOps平台建设实践

&#xff08;一&#xff09;前言 对于软件产品而言&#xff0c;文档是不可或缺的一环。文档能帮助用户快速了解并使用软件&#xff0c;包括不限于特性概览、用户手册、API手册、安装部署以及场景实践教程等。由于软件与文档紧密耦合&#xff0c;面对业务的瞬息万变以及软件的飞…...

网络规划设计之广域网结构设计,6种架构模式对比

在数字化转型的浪潮中&#xff0c;网络基础设施的设计理念正在发生深刻变革。传统的基于点线拓扑的研究方法已无法满足现代复杂网络的需求&#xff0c;取而代之的是更具系统性的网络结构设计理念。本文将深入解析网络结构的定义特征&#xff0c;并重点剖析六种主流广域网架构的…...

FortiAI 重塑Fortinet Security Fabric全面智能化进阶

专注推动网络与安全融合的全球性综合网络安全解决方案供应商 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日宣布&#xff0c;旗下 Fortinet Security Fabric 安全平台成功嵌入了 FortiAI 关键创新功能。这一举措将有效增强用户对各类新兴威胁的防护…...

uniapp h5接入地图选点组件

uniapp h5接入地图选点组件 1、申请腾讯地图key2、代码接入2.1入口页面 &#xff08;pages/map/map&#xff09;templatescript 2.2选点页面&#xff08;pages/map/mapselect/mapselect&#xff09;templatescript 该内容只针对uniapp 打包h5接入地图选点组件做详细说明&#x…...

Openfein实现远程调用的方法(实操)

文章目录 环境准备一、URL中接收参数二、接收一个参数三、接收多个参数四、传递对象五、传递JSON格式数据 环境准备 下面的配置&#xff0c;服务调用方加入即可。 依赖导入&#xff1a; <!-- openfeign依赖--><dependency><groupId>org.springframe…...

Matter如何终结智能家居生态割据,重构你的居住体验?

现阶段&#xff0c;Zigbee、Z-Wave、Thread、Wi-Fi与蓝牙等多种通信协议在智能家居行业中已得到广泛应用&#xff0c;但协议间互不兼容的通信问题仍在凸显。由于各协议自成体系、彼此割据&#xff0c;智能家居市场被迫催生出大量桥接器、集线器及兼容性软件以在不同生态的设备间…...

Thin-Agent服务(TAS)概述

### **Thin-Agent服务&#xff08;TAS&#xff09;概述** **Thin-Agent服务&#xff08;TAS&#xff09;** 是一种轻量级监控服务&#xff0c;通过 **BMC/IPMI**&#xff08;基板管理控制器/智能平台管理接口&#xff09;收集**硬件和操作系统特定数据**&#xff0c;为系统管…...

2025.4.17学习日记 初识JavaScript 以及Java和JavaScript有什么区别

Java 和 JavaScript 虽然名字相似&#xff0c;但实际上是两种不同的编程语言。 1. 语言背景和设计目的 Java&#xff1a;由 Sun Microsystems&#xff08;现被 Oracle 收购&#xff09;在 1995 年推出。设计初衷是为了实现 “一次编写&#xff0c;到处运行&#xff08;Write O…...

python学习—合并多个word文档

系列文章目录 python学习—合并TXT文本文件 python学习—统计嵌套文件夹内的文件数量并建立索引表格 python学习—查找指定目录下的指定类型文件 python学习—年会不能停&#xff0c;游戏抽签抽奖 python学习—循环语句-控制流 python学习—合并多个Excel工作簿表格文件 pytho…...

01、单片机简介

单片机简介 1、什么是单片机2、STM32F103ZET6介绍2.1、参数的含义2.2、存储器映射 3、外设寄存器介绍 1、什么是单片机 单片机(Single-Chip Microcomputer)是一种微型计算机&#xff0c;是一种集成电路芯片。把具有数据处理能力的中央处理器CPU、随机存储器RAM、闪存flash、多…...

常用UI设计工具及平台概览

在当今快速发展的数字世界中,UI设计平台成为设计师和开发者创建用户界面不可或缺的利器。这些平台不仅支持从简单原型到复杂交互设计的各种需求,而且许多还提供将设计直接转换为代码的功能,极大地提高了开发效率。下面将为您介绍几个主流的UI设计工具及其特点,帮助您根据项…...

考研单词笔记 2025.04.17

associate v联系&#xff0c;联想n同事&#xff0c;伙伴&#xff0c;朋友a副的&#xff0c;准的&#xff0c;非正式的 association n联系&#xff0c;联想&#xff0c;协会&#xff0c;社团&#xff0c;关系&#xff0c;交往 associative a联想的 bond n纽带&#xff0c;联系…...

MySQL常用SQL语句的示例

概述 MySQL 常用 SQL 语句的示例&#xff0c;涵盖数据定义、操作、查询等常见场景 一、数据库操作 创建数据库 CREATE DATABASE mydb;选择数据库 USE mydb;删除数据库 DROP DATABASE mydb;二、表操作 创建表 CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VAR…...

java 多线程之Worker Thread模式(Thread Pool模式)

Worker Thread模式 Worker的意思是工作的人&#xff0c;在Worker Thread模式中&#xff0c;工人线程Worker thread会逐个取回工作并进行处理&#xff0c;当所有工作全部完成后&#xff0c;工人线程会等待新的工作到来。 Worker Thread模式也被成为Background Thread&#xff…...

4月17日星期四今日早报简报微语报早读

4月17日星期四&#xff0c;农历三月二十&#xff0c;早报#微语早读。 1、国家统计局&#xff1a;一季度国内生产总值同比增长5.4%&#xff1b; 2、我国博士后已超40万人&#xff0c;2024年招收人数再创新高&#xff1b; 3、神舟二十号计划近日择机实施发射&#xff0c;船箭组…...

【最新版】芸众商城独立版源码 425+插件 全新后台框架

一.系统介绍 芸众商城系统最新版 已经更新425全插件版&#xff0c;一套系统支持各种新零售、商城、模式&#xff0c;天天美丽链动商城。不要相信那些外面的旧版本。旧版本等于是废品&#xff0c;无法小程序运营的&#xff0c;框架还是旧的&#xff01; 芸众系统最新版 服务器可…...

android liveData observeForever 与 observe对比

LiveData 是一个非常有用的组件,用于在数据变化时通知观察者。LiveData 提供了两种主要的观察方法:observe 和 observeForever。这两种方法在使用场景、生命周期感知以及内存管理等方面有所不同。 一、observe 方法​​ ​​1. 基本介绍​​ ​​生命周期感知​​:observe…...

定制化 Docsify 文档框架实战分享

&#x1f31f; 定制化 Docsify 文档框架实战分享 在构建前端文档平台时&#xff0c;我们希望拥有更友好的用户界面、便捷的搜索、清晰的目录导航以及实用的代码复制功能。借助 Docsify&#xff0c;我实现了以下几个方面的定制优化&#xff0c;分享给大家 &#x1f64c;。 &…...

蓝桥杯题目:二维前缀和

首先分析一下二维数组的差分。s[x2][y2]-s[x1][y1]s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]s[x1-1][y1-1] 因为对于二维数组x2y2-x1y1范围内的值需要通过x2y2减去从x1&#xff0c;y2-1的这段存储的前缀和以及减去x2-1&#xff0c;y1这两部分的前缀和&#xff0c;但是还有一个x1-1&a…...

数字孪生城市技术应用典型实践案例汇编(22个典型案例)(附下载)

近年来&#xff0c;数字孪生技术在我国从战略框架逐步向系统性落地推进&#xff0c;成为推动数字中国建设的重要技术引擎。随着《数字中国建设整体布局规划》《"十四五"数字经济发展规划》《深化智慧城市发展推进城市全域数字化转型的指导意见》等政策的实施&#xf…...

Linux——信号(1)信号的产生

我们在讲进程的多种状态时提到过&#xff0c;一个进程的退出有三种情况&#xff1a;正常退出&#xff0c;结果出错退出&#xff08;代码也执行完了&#xff09;&#xff0c;异常终止退出&#xff08;代码未执行完&#xff09;&#xff0c;其中最后一种退出相当于进程在运行时&a…...

【模型常见评价指标(分类)】

目录 常见指标 其他的评估指标 3.1 BLEU 3.2 ROUGE 3.3 困惑度PPL(perplexity) 常见指标 其他的评估指标 3.1 BLEU BLEU&#xff08;Bilingual Evaluation Understudy&#xff0c;双语评估替补&#xff09;分数是评估一种语言翻译成另一种语言的文本质量的指标。它将“质…...

个人博客系统后端 - 用户信息管理功能实现指南(上)

本文记录了如何实现用获取户信息&#xff0c;用户信息更新&#xff0c;用户头像上传三大基础功能 先上接口实现截图&#xff1a; 一、项目结构概览 先介绍一下 个人博客系统采用了标准的 Spring Boot 项目结构&#xff0c;用户功能相关的文件主要分布在以下几个目录&#xff1a…...

CyberAgentAILab 开源数字人项目TANGO,heygen的开源版来了~

简介 TANGO 是 CyberAgentAILab 开源的一项前沿研究成果&#xff0c;其初衷在于探索高效生成模型在实际应用场景中的表现。项目诞生于 CyberAgent 在整合创意与人工智能的实践中&#xff0c;旨在为数字内容生成、交互和实时渲染等领域提供一个高性能、模块化、可扩展的解决方案…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 A 卷

上册期中同步测试卷A卷 一、单项选择题(本大题共5小题,每小题3分,总计15 分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分&#xff0c;总计30分) 11. …...

4.16 AT好题选做

文章目录 前言[ARC103D] Distance Sums(确定树的形态,trick)[AGC062B] Split and Insert(区间 d p dp dp)[AGC012E] Camel and Oases(状压&#xff0c;可行性dp转最优性dp)[ARC094D] Normalization(trick&#xff0c;转化)[ARC125F] Tree Degree Subset Sum(结论&#xff0c;a…...

数据库-day06

一、实验名称和性质 分类查询 验证 综合 设计 二、实验目的 1&#xff0e;掌握数据查询的Group by &#xff1b; 2&#xff0e; 掌握聚集函数的使用方法。 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机(单机) 使用的软件名称、版本号以及模块&#xff1a; …...

基于Flask的漏洞挖掘知识库系统设计与实现

基于Flask的漏洞挖掘知识库系统设计与实现 一、系统架构设计 1.1 整体架构 本系统采用经典的三层Web架构&#xff0c;通过Mermaid图展示的组件交互流程清晰呈现了以下核心模块&#xff1a; 前端展示层&#xff1a;基于Bootstrap5构建响应式界面业务逻辑层&#xff1a;Flask…...

小白从0学习网站搭建的关键事项和避坑指南

以下是针对小白从零学习网站搭建时需要注意的关键事项和避坑指南&#xff0c;帮助你高效学习、少走弯路&#xff1a; 一、学习路径注意事项 不要跳过基础 误区&#xff1a;直接学习框架&#xff08;如 React、Laravel&#xff09;而忽视 HTML/CSS/JS 基础。 正确做法&#xff…...

OpenAI 推出一对 AI 推理模型 o3 和 o4-mini

OpenAI 于 2025 年 4 月 16 日&#xff08;美国东部时间&#xff09;宣布推出两款全新的 AI 推理模型——o3 与 o4-mini&#xff0c;它们能够在给出最终回答前进行思考与推理。 本文中所有的 ChatGPT 服务&#xff0c;由 ChatShare 镜像站 提供&#xff0c;无需担心网络和地区限…...

知识了解03——怎么解决使用npm包下载慢的问题?

1、为什么使用npm下载包会下载的慢 因为使用npm下载包时&#xff0c;默认使用国外服务器进行下载&#xff0c;此时的网络传输需要经过漫长的海底电缆&#xff0c;因此下载速度会变慢 2、怎么解决&#xff1f;&#xff08;切换镜像源&#xff09; &#xff08;1&#xff09;方…...

【网络】IP层的重要知识

目录 1.IP层的作用 2.主机和节点 3.网络层和数据链路层的关系 4.路由控制 4.1.路由控制的过程 4.2. IP地址与路由控制 4.3.路由控制表的聚合 4.4.静态路由和动态路由 4.5.动态路由的基础 5.数据链路的抽象化 5.1.数据链路不同&#xff0c;MTU则相异 5.2.路径MTU发…...

【随身WIFI】随身WiFi Debian系统优化教程

0.操作前必看 本教程基于Debian系统进行优化&#xff0c;有些操作对随身WiFi来说可能会带来负优化&#xff0c;根据需要选择。 所有操作需要在root用户环境下运行&#xff0c;否则都要加sudo 随身wifi Debian系统&#xff0c;可以去某安的随声WiFi模块自行搜索刷机 点赞&am…...

IPCC指南主要变化(各版本)

1996年IPCC国家温室气体清单指南 背景&#xff1a;是IPCC较早发布的指南之一&#xff0c;为国家温室气体清单编制提供了基础方法。 内容&#xff1a;包括了对温室气体排放源和汇的估算方法&#xff0c;涵盖了能源、工业、农业等多个部门。 2006年IPCC国家温室气体清单指南 背…...

关于Diamond机械手的运动学与动力学的推导

1.关于Diamond机械手 &#xff08;1&#xff09;位置模型推导 逆解&#xff1a;机械末端平台的位置与驱动关节之间的关系。 设p点在xy平面的坐标是&#xff08;x&#xff0c;y&#xff09;T&#xff0c;此时根据向量求解 OP等于向量r等于e向xy轴的向量主动臂长度向xy轴的向量…...

@JsonSerialize注解自定义序列化方式

JsonSerialize注解自定义序列化方式 文章目录 JsonSerialize注解自定义序列化方式**前言****创建自定义序列化器****应用自定义序列化器****测试序列化结果****高级用法&#xff1a;全局注册序列化器****关键点解析****常见问题解决****问题1&#xff1a;序列化结果不符合预期*…...

第二篇:linux之Xshell使用及相关linux操作

第二篇&#xff1a;linux之Xshell使用及相关linux操作 文章目录 第二篇&#xff1a;linux之Xshell使用及相关linux操作一、Xshell使用1、Xshell安装2、Xshell使用 二、Bash Shell介绍与使用1、什么是Bash Shell(壳)&#xff1f;2、Bash Shell能干什么&#xff1f;3、平时如何使…...