桂林人论坛/山东济南seo整站优化费用
本文是关于温度传感器的相关内容。
文章目录
- 一、 DS18B20数字温度传感器介绍
- 1.1、 DS18B20温度传感器的特点
- 1.2、DA18B20内部结构
- 1.3、 DS18B20的温度转换规则
- 1.4、 DS18B20的ROM指令表
- 1.6、 计算温度
- 1.7、 读写时序
- 二、DS18B20使用示例
一、 DS18B20数字温度传感器介绍
DS18B20是 DALLAS半导体公司推出的一种“一线总线(单总线)”接口的温度传感器。与传统的热敏电阻等测温元件相比,DS18B20是一种新型的、体积小、使用电压宽、与微处理器接口简单的数字化温度传感器。
1.1、 DS18B20温度传感器的特点
DS18B20温度传感器具有如下特点:
1、使用电压范围更宽,电压范围:3.0V ~ 5.5V
,在寄生电源方式下可由数据线供电。
2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4、DS18B20在使用中不需要任何外围元件,全部传感器元件及转换电路集成在一只形如三极管的集成电路内。
5、温度范围支持-55°C~+125°C
,在-10 ~ +85°C时精度为±0.5°C。
6、可编程的分辨率为9 ~ 12位,对应的可分辨温度分别为0.5°C、0.25°C、0.125°C和0.0625°C,可实现高精度测温。
7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8、测量结果直接输出数字温度信号,以“一根总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
1.2、DA18B20内部结构
DS18B20外观实物如下图所示:
从上图中可以看出来,当正对传感器切面(上图中间)时,传感器的管脚顺序从左到右排列:管脚1为GND,管脚2为数据DQ,管脚3为VDD。如果传感器插反,电源将短路,传感器会发烫,容易损坏。
通常在开发板上会标出传感器的凸起处,所以只需要把传感器凸起的方向对着开发板凸起方向插入即可。
DS18B20内部结构如下图所示:
- ROM中的64位序列号是出厂前被光刻好的,可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20。当接多个DS18B20时,通过64位的序列号可以确定使用的是哪个温度传感器。
64位光刻ROM组成如下:
8位CRC | 48位序列号 | 8位类型标号(28H) |
---|
1.3、 DS18B20的温度转换规则
DS18B20的核心功能是它可以直接读出数字的温度数值。
温度传感器的精度是用户可编程功能的9、10、11或12位,精度分别为0.5、0.25、0.125、0.0625,单位°C。
上电状态下默认精度是12位。
DS18B20启动后保持低功耗等待状态,当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令。转换完以后,产生的温度数据以两个字节的形式被存储到告诉暂存器的温度寄存器中,DS18B20继续保持等待状态。读取温度寄存器中的数据,再根据精度就可以得到当前测得的温度。
1.4、 DS18B20的ROM指令表
指令 | 约定代码 | 功能 |
---|---|---|
读ROM | 33H | 读DS18B20温度传感器ROM中的编码,即64位序列号 |
符合ROM | 55H | 发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之做出响应,为下一步对DS18B20的读写作准备 |
搜索ROM | 0F0H | 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件做好准备 |
跳过ROM | 0CCH | 忽略64位ROM地址,直接向DS18B20发送温度变换命令,适用于单片机工作 |
告警搜索命令 | 0ECH | 执行后只有温度超过设定值上限或下限才做出响应 |
1.5、 DS18B20的RAM指令表
指令 | 约定代码 | 功能 |
---|---|---|
温度变换 | 44H | 启动DS18B20进行温度转换,12位转换时最长为750ms,结果存入内部9字节RAM中 |
读暂存器 | 0BEH | 读内部RAM中9字节的内容 |
写暂存器 | 4EH | 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 |
复制暂存器 | 48H | 将RAM中第3、4字节的内容复制到EEPROM中 |
重调EEPROM | 0B8H | 将EEPROM中内容恢复到RAM中的第3、4字节 |
读供电方式 | 0B4H | 读DS18B20的供电模式,寄生供电时DS18B20发送0,外接电源供电DS18B20发送1 |
1.6、 计算温度
DS19B20温度传感器的内部存储器包括一个高速的暂存器RAM和一个非易失性的可电擦除的EEPROM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
配置寄存器是配置不同的位数来确定温度和数字的转化,配置寄存器结构如下:
TM | R1 | R0 | 1 | 1 | 1 | 1 | 1 |
---|
低五位是1
。
TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。DS18B20出厂时该位被设置为0,用户不需要去改动。
R1和R0用来设置DS18B20的精度(分辨率),可设置为9、10、11或12位,对应的分辨率温度是0.5°C、0.25°C、0.125°C和0.0625°C。R0和R1配置如下:
R1 | R0 | 精度 | 最大转换时间 | |
---|---|---|---|---|
0 | 0 | 9-bit | 93.75ms | ( t C O N V / 8 ) (t_{CONV}/8) (tCONV/8) |
0 | 1 | 10-bit | 187.5ms | ( t C O N V / 4 ) (t_{CONV}/4) (tCONV/4) |
1 | 0 | 11-bit | 375ms | ( t C O N V / 2 ) (t_{CONV}/2) (tCONV/2) |
1 | 1 | 12-bit | 750ms | ( t C O N V ) (t_{CONV}) (tCONV) |
初始状态默认精度是12位,即R1R0=11。
高速暂存存储器由9个字节组成,分配如下:
寄存器内容 | 字节地址 |
---|---|
温度值低位(LS Byte) | 0 |
温度值高位(MS Byte) | 1 |
高温限值(TH) | 2 |
低温限值(TL) | 3 |
配置寄存器 | 4 |
保留 | 5 |
保留 | 6 |
保留 | 7 |
CRC校验位 | 8 |
当温度转换命令(44H)发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。存储的两个字节,高字节的前5位是符号S,单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如下:
寄存器 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|---|
LS Byte | 2 3 2^3 23 | 2 2 2^2 22 | 2 1 2^1 21 | 2 0 2^0 20 | 2 − 1 2^{-1} 2−1 | 2 − 2 2^{-2} 2−2 | 2 − 3 2^{-3} 2−3 | 2 − 4 2^{-4} 2−4 |
MS Byte | S | S | S | S | S | 2 6 2^6 26 | 2 5 2^5 25 | 2 4 2^4 24 |
如果测得的温度大于0,符号位S=0,将测试得到的数值乘以0.0625(默认精度)即可得到实际温度;
如果测得的温度小于0,符号位S=1,将测到的数据取反加1再乘以0.0625即可得到实际温度。
温度与数据对应关系如下:
温度°C | 数据输出(二进制) | 数据输出(十六进制) |
---|---|---|
+125 | 0000 0111 1101 0000 | 07D0H |
+85 | 0000 0101 0101 0000 | 0550H |
+25.0625 | 0000 0001 1001 0001 | 0191H |
+10.125 | 0000 0000 1010 0010 | 00A2H |
+0.5 | 0000 0000 0000 1000 | 0008H |
0 | 0000 0000 0000 0000 | 0000H |
-0.5 | 1111 1111 1111 1000 | FFF8H |
-10.125 | 1111 1111 0101 1110 | FF5EH |
-25.0625 | 1111 1110 0110 1111 | FE6EH |
-55 | 1111 1100 1001 0000 | FC90H |
上电复位时温度寄存器默认值为+85°C。
比如测试到的数据为0x0550,高5位是0表示测试到的温度是正温度,0x0550十进制是1360,将1360乘以0.0625等于85就是得到的温度值,即0x0550对应的是85°C。
1.7、 读写时序
由于DS18B20是单总线器件,所有的单总线器件都要求采用严格的信号时序,以保证数据的完整性。
DS18B20时序包括:初始化时序、写(0和1)时序、读(0和1)时序。
DS18B20发送所有的命令和数据都是字节的低位在前。
(1) 初始化时序
单总线上的所有通信都是以初始化序列开始的。
主机输出低电平,保持低电平时间至少480us(该时间的时间范围可以从480到960us),以产生复位脉冲。
接着主机释放总线,外部的上拉电阻将单总线拉高,延时15~60us,并进入接收模式。
接着DS18B20拉低总线60~240us,以产生低电平应答脉冲,若为低电平,还要做延时,其延时时间从外部上拉电阻将单总线拉高算起算起最少要480us。
初始化时序图如下:
① 数据线拉到低电平0;
②延时480us;
③ 数据线拉到高电平1;
④ 延时等待80us,如果初始化成功则在15~60us内产生一个由DS18B20返回的低电平,根据该状态可以确定它存在;
⑤ 如果CPU读到了数据线上的低电平0后,还要延时,其延时时间从发出的高电平算起(第③步)的时间算起,最少要480us。
根据上述时序,可以编写对应的初始化代码,如下:
/*************************************************************************
* 函数名: DS18B20Init
* 函数功能: DS18B20温度传感器初始化
* 输入: void
* 输出: 初始化成功返回1,失败返回0
**************************************************************************/
uchar DS18B20Init()
{uchar i;DSPORT=0; // 数据线拉低i=80;while(i--); // 延时480usDSPORT=1; // 数据线拉高i=0;while(DSPORT){delay1ms(1); // 数据线拉高后延时至少480usi++;if(i>5){return 1;}}return 0;
}
其中DSPORT
定义如下:
sbit DSPORT = P3^7; // DS18B20的数据线连接到P3.7口
(2) 写时序
写时序包括写0时序和写1时序。
所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,两种写时序均起始于主机拉低总线。
写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。
写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。
写时序图如下:
① 数据线先置低电平0;
② 延时15us;
③ 按从低位到高位的顺序发送数据(一次只发送一位);
④ 延时60us;
⑤ 将数据线拉到高电平。
⑥ 重复1~5步骤,直到发送完整的字节;
⑦ 最后将数据线拉高。
根据上述时序编写出DS18B20写数据的代码,如下:
/*************************************************************************
* 函数名: DS18B20WriteByte
* 函数功能: DS18B20按照时序写一个字节
* 输入: dat:写入的数据
* 输出: void
**************************************************************************/
void DS18B20WriteByte(uchar dat)
{uchar i, j;j=0;for(i=0;i<8;i++){DSPORT=0; // 数据线拉低j++; // 延时15usj++;DSPORT=dat&0x01;j=10; // 延时60uswhile(j--);DSPORT=1;dat=dat>>1;}
}
(3) 读时序
单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在2次读时序之间至少需要1us的恢复时间。
每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us内采样总线状态。
读时序图如下:
① 将数据线拉低0;
② 延时1us;
③ 将数据线拉高1,释放总线准备读数据;
④ 延时10us;
⑤ 读数据线的状态得到1个状态位,并进行数据处理;
⑥ 延时45us;
⑦ 重复1~6步骤,直到读完一个字节。
根据上述时序可以编写DS18B20读数据的时序,如下:
/*************************************************************************
* 函数名: DS18B20ReadByte
* 函数功能: DS18B20按照时序读一个字节
* 输入: void
* 输出: 返回读取到的一个字节的数据
**************************************************************************/
uchar DS18B20ReadByte()
{uchar i, j;uchar bi, dat;j=0;dat=0;for(i=0;i<8;i++){DSPORT=0; // 数据线拉低j++; // 延时1usDSPORT=1;j++; // 延时10usj++;bi=DSPORT;dat= (dat>>1)|(bi<<7);j=7;while(j--);}return dat;
}
(4) DS18B20读取温度
根据ROM指令表,当总线上只有一个DS18B20时,首先发送CCH指令,然后发送RAM温度转换指令44H,
那么如果总线上只挂接了一个DS18B20,那么DS18B20典型温度读取过程为:复位→发SKIP ROM命令(0xCC)→发开始转换命令(0x44)→延时→复位→发送SKIP ROM命令(0xCC)→发读存储器命令(0xBE)→连续读出两个字节数据(即温度)→结束。
二、DS18B20使用示例
本示例实现的功能为:系统运行时,插上DS18B20温度传感器,数码管显示检测的温度值。用到的资源包括数码管和DS18B20,proteus设计如下:
根据上面介绍的时序及读温度流程,DS18B20读取温度代码如下:
// DS18B20转换温度,复位->发送0xcc跳过ROM命令->发送0x44温度转换命令
void DS18B20ChangeTemp()
{DS18B20Init();delay1ms(1);DS18B20WriteByte(0xcc); // 发送0xcc命令DS18B20WriteByte(0x44); // 发送0x44命令
}// DS18B20发送读取温度命令,复位->发送0xcc跳过ROM命令->发送0xBE读存储器命令
void DS18B20ReadTempCom()
{DS18B20Init();delay1ms(1);DS18B20WriteByte(0xcc); // 发送0xcc命令DS18B20WriteByte(0xBE); // 发送0xBE命令
}// DS18B20读取检测到的温度,温度转换->发送读温度命令->读取数据
int DS18B20ReadTemp()
{int temp;uchar tmH, tmL;DS18B20ChangeTemp();DS18B20ReadTempCom();tmL=DS18B20ReadByte();tmH=DS18B20ReadByte();temp=tmH;temp = (temp<<8)|tmL;return temp;
}
主函数main.c
如下:
/*实现功能:使用DS18B20温度传感器检测当前温度,并将结果显示到数码管中[2023-12-25] zoya
*/
#include <reg52.h>
#include "TempDS18B20.h"typedef unsigned char u8;
typedef unsigned int u16;#define GPIO_LED P0
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;u8 code smg[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
u8 display[6];// 延时函数
void delay(u16 i)
{while(i--);
}// 数码管显示函数
void DigDisplay()
{u8 i;for(i=0;i<6;i++){switch(i){case 0: LSA=1; LSB=1; LSC=1; break; // Y7case 1: LSA=0; LSB=1; LSC=1; break; // Y6case 2: LSA=1; LSB=0; LSC=1; break; // Y5case 3: LSA=0; LSB=0; LSC=1; break; // Y4case 4: LSA=1; LSB=1; LSC=0; break; // Y3case 5: LSA=0; LSB=1; LSC=0; break; // Y2case 6: LSA=1; LSB=0; LSC=0; break; // Y1case 7: LSA=0; LSB=0; LSC=0; break; // Y0}GPIO_LED=display[i];delay(500);GPIO_LED=0x00;}
}// 温度处理函数
void TempPros(int temp)
{float tp;if(temp<0){display[0]=0x40; // -temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5;}else{display[0]=0x00;tp=temp;temp=tp*0.0625*100+0.5;}display[1]=smg[temp%10000/1000];display[2]=smg[temp%1000/100]|0x80; // |0x80显示小数点display[3]=smg[temp%100/10];display[4]=smg[temp%10/1];display[5]=0x39;}void main()
{while(1){TempPros(DS18B20ReadTemp());DigDisplay();}
}
仿真结果,DS18B20默认温度是85°,所以系统初始运行时显示85度。
相关文章:

【51单片机系列】DS18B20温度传感器模块
本文是关于温度传感器的相关内容。 文章目录 一、 DS18B20数字温度传感器介绍1.1、 DS18B20温度传感器的特点1.2、DA18B20内部结构1.3、 DS18B20的温度转换规则1.4、 DS18B20的ROM指令表1.6、 计算温度1.7、 读写时序 二、DS18B20使用示例 一、 DS18B20数字温度传感器介绍 DS1…...

ubuntu20.04 conda环境配置Mask2former记录
建议先看完再按照步骤安装 代码地址:GitHub - facebookresearch/Mask2Former: Code release for "Masked-attention Mask Transformer for Universal Image Segmentation" 一、配置环境 1、创建虚拟环境 conda create -n mask2former python3.8conda …...

Git更新远程分支
当本地仓库无法找到新创建的远程分支时使用。 git fetch 是 Git 中的一个命令,用于从远程仓库获取最新的更改。 git fetch 会从指定的远程仓库中获取所有分支的最新提交,并将这些提交存储在本地的远程分支中。但是,这些更改并不会自动合并到…...

2023年软件工程师工作总结范文
各位领导: 你们好!时光飞逝,光阴似箭,转眼间又到了一年的年末。2023年又是一个不平凡的年,今年是国家十四个五年计划的第三年,是全面贯彻党的二十大精神的开局之年。中国XX集团作为中国XX行业中最大的企…...

STM32实战之深入理解I²C通信协议
目录 IC的物理层 IC的协议层 IC特点 IC 总线时序图 软件模拟IC时序分享 软件模拟IIC驱动AT24C02分享 例程简介 例程分享 STM32的IC外设 IIC(Inter-Integrated Circuit),也称为IC或TWI(Two-Wire Interface)&am…...

如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代
如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代 随着人工智能技术的快速发展,OpenAI持续推出更加强大和精准的模型,以改善和扩展用户体验。在聊天机器人领域,特别是OpenAI的ChatGPT系列,每一次迭代都带来了显著…...

blender scripting 编写
blender scripting 编写 一、查看ui按钮对应的代码二、查看或修改对象名称三、案例:渲染多张图片并导出对应的相机参数 一、查看ui按钮对应的代码 二、查看或修改对象名称 三、案例:渲染多张图片并导出对应的相机参数 注:通过ui交互都设置好…...

使用 Elasticsearch 检测抄袭 (二)
我在在之前的文章 “使用 Elasticsearch 检测抄袭 (一)” 介绍了如何检文章抄袭。这个在许多的实际使用中非常有意义。我在 CSDN 上的文章也经常被人引用或者抄袭。有的人甚至也不用指明出处。这对文章的作者来说是很不公平的。文章介绍的内容针对很多的…...

WPF DataGrid
文章目录 SelectionModeHeaderVisibilityBorderBrush SelectionMode DataGrid 控件的 SelectionMode 属性定义了用户可以如何选择 DataGrid 中的行。它是一个枚举类型的属性,有以下几个选项: Single(默认值):只能选择…...

【cesium-5】鼠标交互与数据查询
scene.pick返回的是包含给定窗口位置基元的对象 scene.drillpack返回的是给定窗口位置所有对象的列表 Globe.pick返回的是给光线和地形的交点 Cesium.ScreenSpaceEventType.MIDDLE_CLICK 鼠标中间点击事件 Cesium.ScreenSpaceEventType.MOUSE_MOVE 鼠标移入事件 Cesium.ScreenS…...

Xcode 编译速度慢是什么原因?如何提高编译速度?
作为一个开发者,我们都希望能够高效地开发应用程序,而编译速度是影响开发效率的重要因素之一。然而,有时候我们会发现在使用 Xcode 进行开发时,译速度非常慢,这给我们带来了不少困扰。那么,为什么 Xcode 的…...

Best Arm Identification in Batched Multi-armed Bandit Problems
Q: 这篇论文试图解决什么问题? A: 这篇论文试图解决在批量多臂老虎机问题中进行最佳臂识别(BAI)的挑战,其中必须成批地对臂进行抽样,因为代理等待反馈的时间有限。这种场景出现在许多现实世界的应用中,例如…...

Unity编辑器紫色
紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的,需要动态的去修改shader,主要用到Unity的api : Shader.Find(shaderName); 具体的工具代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine…...
冒泡排序(C语言)
void BubbleSort(int arr[], int len) {int i, j, temp;for (i 0; i < len; i){for (j len - 1; j > i; j--){if (arr[j] > arr[j 1]){temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}} } 优化: 设置标志位flag,如果发生了交换flag设置…...

Unity中Shader观察空间推导(在Shader中实现)
文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标,然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…...

Hive04_DDL操作
Hive DDL操作 1 DDL 数据定义 1.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)];[IF NOT EXISTS] :判断是否存在 [COMMENT database_c…...

odoo17核心概念view4——view.js
这是view系列的第四篇文章,专门介绍View组件。 作为一个Component,它总共包含js、css、xml三个标准文件,当然最重要的是view.js 首先在setup函数中对传入的参数props做了各种校验,然后扩展了subenv useSubEnv({keepLast: new Kee…...

Centos7 openSSL
阅读时长:10分钟 本文内容: 在阿里云Centos7上部署python3.10.6项目时遇到openSSL协议不支持,导致无法下载第三方包 本文目的: 通过手动编译,升级openssl版本centos7 重编译 python3.10.6github下载缓慢解决镜像源记录…...

Web 安全之文件下载漏洞详解
目录 引言 文件下载漏洞原理 文件下载漏洞的危害 文件下载漏洞类型 文件下载漏洞的利用方法 文件下载漏洞示例 文件下载漏洞的防护措施 漏洞检测与测试 小结 引言 在数字化时代,文件下载是网络应用程序的重要的功能之一,用户可以通过这一功能获…...

搬运机器人RFID传感器CNS-RFID-01|1S的RS485(MODBUS|HS协议)通讯连接方法
搬运机器人RFID传感器CNS-RFID-01|1S支持RS485通信,可支持RS485(MODBUS RTU)协议、RS485-HS协议,广泛应用于物流仓储,立库 AGV|无人叉车|搬送机器人等领域,常用定位、驻车等,本篇重点介绍CNS-RF…...

使用ZMQ.proxy实现ZMQ PUB消息转发
MQ.proxy 是 ZeroMQ 库中的一个功能,用于创建一个简单的代理服务器。它可以将消息从一个套接字传递到另一个套接字,实现消息的转发和路由。 要使用 ZMQ.proxy,需要按照以下步骤进行操作: 创建两个 ZMQ.Socket 对象:一个…...

若依SQL Server开发使用教程
1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题,操作流程如下: 解决方案如下 菜单栏->工具->选项 点击设计器,去掉阻止保存要求更新创建表的更改选项,点确认既可以保存了 2 自动生成代码找不表的解决方案…...

Mysql5.7服务器选项、系统变量和状态变量参考
官网地址:MySQL :: MySQL 5.7 Reference Manual :: 5.1.3 Server Option, System Variable, and Status Variable Reference 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. MySQL 5.7 参考手册 / ..…...

【Qt-Qss-Style】
Qt编程指南 ■ Qss■ Style■ setStyleSheet ■ style.qss■ border■ 去除弹框背景圆角■ QProgressBar样式表 ■ Qss Qt 支持很多种常见 符号 “>”代表直属子部件,说明两个控件之间是父子关系。 “#”代表后面的字段是前面控件类型的名称,当然也可…...

基于yolov8,制作停车位计数器(附源码)
大家好,YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…...

C++设计模式:单例模式(饿汉式、懒汉式)
单例模式是什么? 单例模式是一种创建型的软件设计模式。通过单例模式的设计,使得创建的类在当前进程中只有唯一一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。 单例模式有三个要点 私有化…...

Django 访问前端页面一直在转异常:ReferenceError:axios is not defined
访问:http://127.0.0.1:8080/ my.html 一、异常: 二、原因 提示:axios找不到!! 查看代码<script src"https://unpkg.com/axios/dist/axios.min.js"></script>无法访问到官网 三、解决 Using j…...

C语言中关于指针的理解
#include <stdio.h> int main() {int a11;int *p&a; //因为a是整型的,所以我们定义指针p的时候要和a的类型一样char b;char *pa&b; //同理,b是字符型,所以这里的pa也要用字符型return 0; }因为*p指向的是地址&…...

MySQL MVCC精讲
版本链 我们前面说过,对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列): trx_idÿ…...

如何快速删除pdf周围的空白
问题:写论文往往需要pdf格式的图片,但pdf往往四周存在大量空白需要手动截图很麻烦 解决: 打开命令行输入:pdfcrop 图片名.pdf...