-
光强传感器TSL2561和微处理器JN5139的光强传感器节点
2020-07-13 07:51:58为了实现对光强的监测,本文选用高速、可编程芯片TSL2561作为光强传感器,对光照强度进行测量。微处理器采用英国Jennic公司推出的高性能、低功耗、高速率无线芯片JN5139。该芯片集处理器、收发器于一体,通过无阻塞... -
TSL2561光强传感器资料
2017-06-08 20:08:29TSL2561光强传感器资料 -
基于TSL2561的无线光强传感器节点设计
2021-01-19 16:39:43本文选用光强传感器TSL2561和JN5139无线芯片,设计了一种光强传感器节点,给出了具体的软硬件设计,并进行了MATLAB仿真。 引言 农业生产、气象环保等工作中,光照强度是环境监测中的重要参数;尤其是在温室... -
GY30-数字光强传感器51代码
2018-02-08 09:37:42基于51单片机,iic 协议 ,读取GY30数字光强传感器的光强,其传感器的测量范围:最小11lux--最大10万LUX -
tsl2561光强传感器
2015-05-09 10:45:31基于51单片机,在keil上开发的tsl2561的光强传感器程序,用12864液晶显示光照强度,单位:流明。程序完整,简洁,注释齐全,可根据个人需要随意转接到其他程序上,但不可以以自己名义随意传给他人。 -
传感技术中的基于TSL2561的无线光强传感器节点设计
2020-11-06 20:00:39本文选用光强传感器TSL2561和JN5139无线芯片,设计了一种光强传感器节点,给出了具体的软硬件设计,并进行了MATLAB仿真。 引言 农业生产、气象环保等工作中,光照强度是环境监测中的重要参数;尤其是在温室... -
BH1750光强传感器51驱动代码
2014-07-18 17:42:16BH1750光强传感器51驱动代码 -
Arduino提高篇09—数字光强传感器
2019-11-29 08:57:08数字光强传感器光敏电阻是常用的光感元件,但是其感应范围比较窄,响应速度慢,且受外界干扰较大。要接收强光时,需要更加精准的数字光照传感器。本篇介绍GY-30模块的使用,其板载BH1750数字光传感器专用IC。
1. 光强传感器介绍
GY-30模块基于BH1750FVI芯片,模块采用IIC通讯方式,内置16bit ADC转换器,可以直接数字输出,光照强度范围:0~65525 lx,勒克斯「lux,通常简写为lx」是照度的国际单位。
主要特点
- 内置16Bit ADC转换器。
- IIC通讯协议,直接输出数字量。
- 供电:3~5V。
- 范围:0~65535lx。
- 不区分环境光源,接近视觉灵敏度的分光特性。
- 板载通信电平转换。
2. 实验材料
- Uno R3开发板
- 配套USB数据线
- 面包板及配套连接线
- 数字光强传感器GY-30模块
3. 实验步骤
1. 根据原理图搭建电路图。
GY-30模块的VCC、GND分别连接开发板的5V、GND,模块的SDA、SCL分别连接开发板的A4、A5引脚,模块的ADD引脚不连接。
实验原理图如下图所示:
实物连接图如下图所示:
2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
/* * BH1750 * 数字光照传感器实验 */ #include <Wire.h> //IIC int BH1750address = 0x23; byte buff[2]; uint16_t val = 0; void setup() { Wire.begin(); BH1750_Init(BH1750address); Serial.begin(9600); } void loop() { if (2 == BH1750_Read(BH1750address)) { if (buff[0] == 255 && buff[1] == 255) { val = 65535; } else { val = ((buff[0] << 8) | buff[1]) / 1.2; //芯片手册中规定的数值计算方式 } Serial.print(val, DEC); Serial.println("[lx]"); } delay(500); } int BH1750_Read(int address) { int i = 0; Wire.beginTransmission(address); Wire.requestFrom(address, 2); while (Wire.available()) { buff[i] = Wire.read(); // receive one byte i++; } Wire.endTransmission(); return i; } void BH1750_Init(int address) { Wire.beginTransmission(address); Wire.write(0x10); Wire.endTransmission(); }
3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
4. 实验现象
打开串口监视器,波特率设置成与程序中相一致的9600。监视器中将显示环境光强度,可以通过遮挡或照射模块来改变光强度。
关注微信公众号:TonyCode
Arduino学习交流群:868283450更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注:
-
TSL2561光强传感器程序
2012-09-22 09:47:38TSL2561光强传感器是采用I2C的通讯方式,可利用单片机的IO口模拟 SDA,SCL读出内部寄存器的光强数据。这种数字芯片可在工农业生产中 得到广泛的应用。 -
基于光强传感器TSL256x的感测系统设计
2020-08-07 05:41:31TSL256x是TAOS公司推出的一种高速、低功耗、宽量程、可编程灵活配置的光强传感器芯片。本文简要介绍了TSL256x的基本特点、引脚功能、内部结构和工作原理,给出了TSL2561的实用电路、软件设计流程以及核心程序。 -
传感技术中的基于光强传感器TSL256x的感测系统设计
2020-12-13 08:50:37摘要 TSL256x是TAOS公司推出的一种高速、低功耗、宽量程、可编程灵活配置的光强传感器芯片。本文简要介绍了TSL256x的基本特点、引脚功能、内部结构和工作原理,给出了TSL2561的实用电路、软件设计流程以及核心程序... -
传感技术中的基于光强传感器TSL256x的感测系统设计--光敏传感器与控制技术
2020-12-06 21:13:20摘要 TSL256x是一种高速、低功耗、宽量程、可编程灵活配置的光强传感器芯片。本文简要介绍了TSL256x的基本特点、引脚功能、内部结构和工作原理,给出了TSL2561的实用电路、软件设计流程以及核心程序。 关键词 ... -
GY-30数字光强传感器通过I²C接入Arduino
2016-06-08 15:16:27作者:颜哲锟GY-30数字光强传感器通过I²C通信协议接入Arduino过程中的一些问题和解决方案前言刚拿到GY-30数字光强传感器的时候,真心感觉比原来的模拟输出的光强传感器要精确好几倍。没被拆封的GY-30模块,排针是...作者
颜哲锟
简介
GY-30数字光强传感器通过I²C通信协议接入Arduino过程中的一些问题和解决方案
前言
刚拿到GY-30数字光强传感器的时候,真心感觉比原来的模拟输出的光强传感器要精确好几倍。
没被拆封的GY-30模块,排针是需要自己焊的。
注:I²C,这是正确的写法,但也有简写成IIC或I2C。
1.单个GY-30接入Arduino UNO
焊完用杜邦线和Arduino板子相连即可,淘宝商家提供的手册是基于UNO板的,GY-30的VCC接Arduino的5v,GND接GND,SDA接A4,SCL接A5,ADD是地址引脚,单个sensor工作时不用接。一个UNO板子和一个GY-30传感器连接起来很容易就调试成功了。
附上代码
附上代码 #include <Wire.h> //IIC库 #include <math.h> int BH1750address = 0x23;//芯片地址为16位23 byte buff[2]; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { int i; uint16_t val=0; BH1750_Init(BH1750address); delay(1000); if(2==BH1750_Read(BH1750address)) { val=((buff[0]<<8)|buff[1])/1.2; Serial.print(val,DEC); Serial.println("[lx]"); } delay(150); } int BH1750_Read(int address) // { int i=0; Wire.beginTransmission(address); Wire.requestFrom(address, 2); while(Wire.available()) // { buff[i] = Wire.read(); // read one byte i++; } Wire.endTransmission(); return i; } void BH1750_Init(int address) { Wire.beginTransmission(address); Wire.write(0x10);//1lx reolution 120ms Wire.endTransmission(); }
2.尝试让多个GY-30接入Arduino MEGA2560
我需要让4个GY-30同时接入,所以尝试更换成接口更多的MEGA2560,以实现将串口模拟成IIC接口并实现通信,但Arduino的串口监视器没有数据读出。
此坑略去几百字,附上总结:
我理解成“SDA接A4,SCL接A5”是通过Arduino的模拟口传输的,所以把UNO换成其他型号的板子也应该是A4和A5口,但MEGA2560的串口监视器上的光强数据不再读出,翻墙找到UNO和MEGA的电路图,秒懂错误原因。这I²C压根不是通过A4A5口的模拟输出口传输的,而是UNO的A4A5口还是有SDA和SCL功能。
附上翻墙拿到的2个电路图。
3.GY-30数字光强传感器的地址问题的解决方案以及在IIC协议下的总结发现
3.1GY-30的地址解决方案
解决了串口引脚接线问题,接下来需要解决一下基于Arduino利用IIC协议和GY-30通行时的地址问题。
我起先对IIC地址的理解是像IP地址那样可以自己设置,最后发现并不全对,这需要看芯片是否支持更改地址。
此坑略去几千字,附上总结:
对于这个GY-30数字光强传感器,内置BH1750FVI,sensor外接有5个引脚,GND ADD SDA SCL VCC。通过阅读芯片技术手册(英文版淘宝自取或中文版http://wenku.baidu.com/link?url=rXMAHAejMui15JWn20Rr8pR-came8Oo5WA3N5H29PGOLh_YL5a7_YUsKtuFk6dqHCpnxoMbfPNx52yJt8sOL2m6-FQyPYZsIjlQoQt_eMBe)遗憾地发现,这芯片只支持2个I²Cslave地址
,1011100是高电平地址为0x5c,0100011为低电平,地址是0x23。不用ADD引脚或者接GND时,芯片默认为低电平即0x23,当ADD接5V或者3.3V时,芯片为高电平即0x5c。
3.2 IIC协议下的地址解决方案
3.2.1
其实本来考虑的是想更改sensor的地址,然后让4个sensor同时连接在I²C总线上,但内置BH1750FVI只能实现2个地址,所以方案最终改成了用2个Arduino板子分别控制横向和纵向方向上的2个sensor。
在寻找更改芯片地址的技术资料和初始化命令的时候,找到过这种思路的先例,一般sensor的技术手册、数据手册会有详细的地址和引脚接线信息,这是一个普遍的寻址思路。
3.2.2
当然还有一种设置地址的方法。比如,BLinkM(有I²C功能的已装配完毕的彩色LED模块),它的地址是需要自己设置的,需要从http://code.google.com/p/blinkm-projects/下载BlinkMTester的测试程序。编译并上传BlinkMTester测试程序,将每个BlinkM模块逐一连接到Arduino,使用BlinkMTester测试程序的扫描命令S显示当前连接模块的地址,并使用A命令来给每个模块设置不同的地址。
3.3总结
I²C Bus 的通信协议对于多个不同传感器的接入有很大方便,能减少大量线路。
但对于接多个相同的传感器,问题变得复杂,上限数量需要看sensor的内置芯片是否支持重置地址;如果不能重置,则上限要看芯片支持分配几个地址。
附上示意图
-
光强传感器TSL256x的原理及应用.pdf
2011-03-12 22:57:05光强传感器TSL256x的原理及应用,共享一下~ -
Arduino GY-30数字光强传感器 问题解决方案
2018-05-25 15:09:56GY-30数字光强传感器通过I²C通信协议接入Arduino过程中的一些问题和解决方案: 网上流行着两个版本: 版本一: https://blog.csdn.net/zjnsky/article/details/51732943 版本二: ...GY-30数字光强传感器通过I²C通信协议接入Arduino过程中的一些问题和解决方案:
网上流行着两个版本:
版本一:
https://blog.csdn.net/zjnsky/article/details/51732943
版本二:
https://blog.csdn.net/ubibots/article/details/51613360我用版本一的代码,发现并不对,串口打印一直显示光照强度为 0 ,很奇怪,也研究了很久,去 Wire 这个库文件看了函数实现,后来发现
Wire.requestFrom(ADDR, 2); // 2byte every time
这一行代码出现了问题。
这个 requestFrom
网上对它的描述都是:Wire.requestFrom()
描述:主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受。
Wire.requrstFrom(addtess,quantity)
Wire.requrstFrom(addtess,quantity,stop)参数 :
addtess : 7位的器件地址
quantity : 请求得到的数量 stop :布尔形,‘1’
则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接。返回:
字节形 ,从从机接受到的字节数目。然而并没有提,要用 requestFrom 前后必须要加:
Wire.beginTransmission(ADDR);
Wire.endTransmission();
这两句,分别为开始一次传输数据,和结束一次传输。
也就是将 requestFrom 这行代码改为以下,即可完成从设备向主设备发送数据
在这里也就是 gy30(从设备) 向 arduino 板(主设备)传输光强度的采集量Wire.beginTransmission(ADDR); Wire.requestFrom(ADDR, 2); Wire.endTransmission();
-
OPT3001光强传感器驱动实现(STM32F407)
2019-04-05 14:13:42写了个光强传感器的代码。 产品特点: 精密光学滤波以匹配人眼:拒绝IR> 99%(典型值) 自动满量程设定功能简化了软件,并确保正确的配置 0.01勒克斯至83K勒克斯 23位有效动态范围,自动增益范围 12二进制...上面是我的微信和QQ群,欢迎新朋友的加入。
写了个光强传感器的代码。
产品特点: 精密光学滤波以匹配人眼:拒绝IR> 99%(典型值) 自动满量程设定功能简化了软件,并确保正确的配置 0.01勒克斯至83K勒克斯 23位有效动态范围,自动增益范围 12二进制加权满量程范围设置:<0.2%(典型值)范围之间的匹配 低工作电流:1.8μA(典型值) 工作温度范围:-40°C至+ 85°C 宽电源电压范围:1.6 V至3.6 V 5.5-V容错I / O PCB尺寸:14*13.5mm OPT3001数字环境光传感器(ALS)高精度的人眼响应分线板 OPT3001是测量可见光的强度的传感器。传感器的光谱响应紧密匹配的人眼的明视响应并包括显着红外线排斥。 所述OPT3001是一个单芯片照度计,由人眼测量光作为??可见光的强度。精密光谱响应和强大的红外抑制装置的使OPT3001精确计人眼所看到不管光源的光的强度。强劲的IR抑制,也有助于保持高精确度时的工业设计为深色玻璃下安装传感器的美学要求。该OPT3001是专为创造人类基于光的经验系统,和理想的首选替代品光电二极管,光敏电阻,或者用更少的人眼匹配的IR抑制等环境光传感器。 测量可以从0.01勒克斯到83K勒克斯而不通过使用内置的,全面设置功能手动选择满量程范围进行。这个功能允许在一个23位的有效动态范围光测量。 数字操作灵活的系统集成。测量可以是连续的或单次。控制和中断系统具有自主运行,允许处理器睡觉而适当唤醒事件传感器搜索,通过中断引脚报告。 低功率消耗和OPT3001的低电源电压的能力提高电池供电系统的电池寿命。
模块是一个IIC驱动的传感器
这里提供底层IIC驱动源码
/* 功能:产生IIC起始信号 输入:无 输出:无 */ void IIC_Start(void) { SDA_OUT(); //sda线输出 IIC_SDA=1; IIC_SCL=1; delay_us(5); IIC_SDA=0; //START:when CLK is high,DATA change form high to low delay_us(5); IIC_SCL=0; //钳住I2C总线,准备发送或接收数据 } /* 功能:产生IIC停止信号 输入:无 输出:无 */ void IIC_Stop(void) { SDA_OUT();//sda线输出 IIC_SDA=0;//STOP:when CLK is high DATA change form low to high IIC_SCL=1; delay_us(5); IIC_SDA=1;//发送I2C总线结束信号 delay_us(5); IIC_SCL=0; delay_us(5); } /* 功能:等待应答信号到来 输入:1,接收应答失败 0,接收应答成功 输出:无 */ uint8_t IIC_Wait_Ack(void) { uint8_t res=0; IIC_SDA=1; SDA_IN(); //SDA设置为输入 IIC_SCL=1;delay_us(5); res = READ_SDA; delay_us(5); IIC_SCL=0;//时钟输出0 return res; } /* 功能:产生ACK应答 输入:1,产生应答 0,不产生应答 输出:无 */ void IIC_Ack(uint8_t ack) { SDA_OUT(); IIC_SDA=ack; delay_us(5); IIC_SCL=1; delay_us(5); IIC_SCL=0; } /* 功能:IIC发送一个字节 输入:txd:发送数据 输出:无 */ void IIC_Send_Byte(uint8_t txd) { uint8_t t; SDA_OUT(); for(t=0;t<8;t++) { if(txd&0x80) IIC_SDA=1; else IIC_SDA=0; delay_us(5); IIC_SCL=1; delay_us(5); IIC_SCL=0; delay_us(5); txd<<=1; } IIC_Wait_Ack(); } /* 功能:IIC读取一个字节 输入:无 输出:返回数据 */ uint8_t IIC_Read_Byte(void) { unsigned char i,receive=0; SDA_IN();//SDA设置为输入 IIC_SDA=1; for(i=0;i<8;i++ ) { receive <<= 1; IIC_SCL=1; delay_us(5); receive |= READ_SDA; IIC_SCL=0; delay_us(5); } return receive; }
然后是阅读该传感器的数据手册
1、设备地址
从手册可知道,这个模块有四种地址配置
通过设置ADDR的连接,可以改变不同的设备地址
//定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 拉低0x88 拉高0x8A 接SDA-0x8C 接SCL-0x8E
#define SLAVEADDR 0x88
2、设备子地址
一共是6个地址,还蛮简单的,有一点要注意的是,这个芯片是16位的数据寄存器
3、只读寄存器
这是传感器数据保存的地址,要从传感器拿环境光强数据,就是在这拿,这个地方是只读的
4、配置寄存器
这是个十分重要的寄存器,不同的配置可能会导致读取的数据不一样
5、下限寄存器、上限寄存器
我没用到
6、ID寄存器
这个地方挺重要的
这个东西有两个ID:1.厂商ID 2.设备ID
为什么说他重要,可以通过读取ID,确定IIC驱动是否正常,如果这个ID读取不到,那后面的程序也没必要写下去了
从数据手册可以知道,设备厂商ID是0x5449,也就是ACSII码的"TI",设备ID是0x3001
7、初始化寄存器配置
上面就是芯片手册里面比较重要的寄存器的内容
现在根据配置寄存器的内容,实现芯片的配置,当然,这段配置我也是抄的,非专业我懒得去折腾
/* 功能:配置寄存器 输入:无 输出:无 */ void opt3001_config(void) { uint16_t vCfg = 0; //12:15 RN - 配置测量光照的范围 见手册20页表9 当配置位1100传感器测量范围自动选择 //11 CT - 测量时间配置 0- 100Ms 1-800Ms //10:9 M[1:0] - 转换模式 00-关闭模式 01 - 单次转换 10、11 - 连续多次转换 //8 OVF - 测量光照超出设定的范围或最大测量值 溢出标志 //7 CRF - 转换就绪字段 1-转换完成 //6 FH - 转换的光照值 大于上限值 置位 //5 FL - 转换的光照值 小于下限值 置位 //4 L - 中断输出的两种模式 1-窗口模式 这种模式下高限置位和低限置位INT输出 0-滞后模式 高限置位INT输出 具体看手册 //3 POL - INT 中断被触发输出极性 0-拉低 1-拉高 //2 ME - 掩码字段 //0:1 FC - 超出上限范围故障计数 如果超出次数 大于等于计数设定次数 INT输出中断 vCfg = (0x0C<<12); vCfg |= (0x01<<11); vCfg |= (0x01<<9); vCfg |= (0x01<<4); opt3001_write(REG_CONFIGURATION, vCfg); }
8、实现ID的读取
/* 功能:读取厂商ID 输入:无 输出:无 */ uint16_t ID=0; void opt3001_manufacturer_id(void) { ID = opt3001_read(REG_MANUFACTURER_ID); } /* 功能:读取设备ID 输入:无 输出:无 */ void opt3001_device_id(void) { ID = opt3001_read(REG_DEVICE_ID); }
9、实现数据的获取
/* 功能:读取传感器数据 输入:无 输出:无 */ #define ARRY_SIZE 10 uint32_t opt3001_data[ARRY_SIZE]; uint8_t arry_wpr=0; uint8_t opt3001_get_lux(void) { uint8_t vRval = 0; uint16_t vCfg = 0; uint16_t vDat = 0; uint16_t vDatE = 0; uint16_t vDatR = 0; float vFval = 0.0; float vLsbSize = 0.0; float vFlux = 0; vCfg = opt3001_read(REG_CONFIGURATION); vCfg |= (0x01<<9); opt3001_write(REG_CONFIGURATION, vCfg); //单次采集光照 vCfg = opt3001_read(REG_CONFIGURATION); delay_ms(900); //大于800Ms vCfg = opt3001_read(REG_CONFIGURATION); if((vCfg&(0x01<<7)) ) //光照采集完成 { vDat = opt3001_read(REG_RESULT); vDatE = ((vDat&0xF000)>>12); vDatR = (vDat&0x0FFF); vFval = (0x01<<vDatE); vLsbSize = (0.01f * vFval); vFlux = (vLsbSize * (float)vDatR); opt3001_data[arry_wpr] = ((vFlux)*100.0f);//透明外壳不需要矫正 ,乳白色外壳推荐*1.8矫正 *vp_Lux = ((vFlux*1.8)*100.0) arry_wpr++; if(arry_wpr >= ARRY_SIZE) { arry_wpr = 0; } } else { vRval = 0x01;//光照采集失败 } return vRval; }
10、DEBUG看结果
首先检查厂商ID
然后查设备ID,可以看到,和数据手册是一致的
最后实现光强测试
可以看到数据会因为光强变化而变化
-
⑧ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 BH1750 光强传感器】
2019-08-02 01:41:30本章介绍 在ESP8266上使用IIC总线驱动BH1750光强传感器的方法。 一、BH1750是什么 BH1750是一个光强传感器,能够对环境光强度进行量化,转化为环境中的光强度lux。它是使用IIC总线进行通信,通过读取寄存器来获得... -
光强传感器(BH1750).zip
2019-06-11 14:49:42此代码是基于stm32的标准库,引脚已经通过宏定义,使用的话只需要修改两个宏定义即可,代码验证可行.其中还包含相关资料。 -
BH1750光强传感器的STM32程序
2018-10-01 20:27:17使用STM32F103芯片,亲测可用,串口发送数据至上位机。 -
GY2561 TSL2561 光强传感器资料 程序 手册 介绍
2019-04-02 09:02:18都是从网上花积分找的资料,51程序,手册,程序也有几套,使用说明。。。 -
采用光强传感器TSL256x的感测系统设计方案
2020-10-19 17:58:40TSL2560和TSL2561是TAOS公司推出的一种高速、低功耗、宽量程、可编程灵活配置的光强度数字转换芯片。该芯片可广泛应用于各类显示屏的监控,目的是在多变的光照条件下,使得显示屏提供最佳的显示亮度并尽可能降低电源... -
基于stm32f103的tsl2561光强传感器程序
2018-04-07 00:27:46程序下载即用,如遇光照强度过高可自行在模块外表添加菲涅尔透镜,可降低直射光照的影响。 -
GY-30光强传感器模块的应用原理及控制程序
2019-11-26 00:13:27GY-30模块是一款基于IIC通信的16bit的数字型传感器。模块主要是以BH1750数字型光强感应芯片为核心及一些外围驱动电路。模块整体电路如图: 其中C1、C2 为电源滤波电容,R1、R3 为 I2C 上拉电阻,ADDR 是 I2C 通讯时... -
Arduino提高篇10—光强传感器控制OLED背光
2019-12-02 09:53:02数字光强传感器GY-30模块 2. 实验步骤 1. 根据原理图搭建电路图。 OLED屏的VCC、GND、SDA、SCL与GY-30模块的VCC、GND、SDA、SCL相对应连接,然后连接到开发板的5V、GND、A4、A5。两个模块都使用了硬件IIC,...
-
网上订餐系统 javaweb项目 (完整源码)
-
PlantCARE_24263__plantCARE.tar.gz
-
希望一辈子只做一个专业
-
实现 MySQL 读写分离的利器 mysql-proxy
-
Kubernetes概述.pdf
-
NFS 实现高可用(DRBD + heartbeat)
-
Samba 服务配置与管理
-
微信小程序原生实现好看的日期选择插件-万年历
-
2005-2020信息系统项目管理师历年真题(含上午题、案例分析、论文)试题和答案.rar
-
投标方法论
-
MySQL 触发器
-
大数据开发之Hadoop学习6--HDFS的Shell操作
-
ACID (数据库事务正确执行的四个基本要素的缩写)
-
2016 年中级通信工程师考试综合能力真题.pdf
-
【布道者】Linux极速入门
-
EaUS Video Editor(视频剪辑软件)官方中文版V1.6.8.53
-
成绩文件合并.txt
-
超简单挖矿CryptoTab Browser
-
2021年 系统架构设计师 系列课
-
C++ STL(十七):常用集合算法(set_intersection、set_union、set_difference)