基于51单片机的智能晾衣架系统(keil5代码和proteus仿真)
课程最后一道大实验需要学生自己选择项目并跑通。本人选择了智能晾衣架系统花费两天时间完成了代码和仿真。下面分别从系统功能、使用模块、代码逻辑等进行阐述希望对大家有帮助。一、系统功能介绍智能晾衣架系统分为手动和自动模式通过按键控制选择。#define KEY_AUTO 1 // 自动模式 #define KEY_MAN 2 // 手动模式1、手动模式在此模式下可以手动升起和放下晾衣架。#define KEY_UP 4 // 手动上升键 #define KEY_DOWN 5 // 手动下降键2、自动模式在此模式下可以自动检测环境数据本人选取了三个参考量分别是温度、光照、湿度当检测到环境数据不处于适宜环境数据时就会收衣服反之则晒衣服。3、设置模式在此模式下可以进行阈值的设置——分为最大值和最小值。#define KEY_INC 6 // 增加阈值键 #define KEY_DEC 7 // 减少阈值键 #define KEY_NEXT 8 // 下一个参数键 #define KEY_SAVE 9 // 保存键 #define KEY_SUB 10 //切换最大最小值最后在主循环里通过mode状态标志位进行模式选择。//模式选择 if(KeyNumKEY_AUTO) { mode1; flag1; } else if(KeyNumKEY_MAN) { mode0; flag1; } else if(KeyNumKEY_SET) { set(); flag1; }当mode1,进入自动模式当mode0,进入手动模式当检测到按键按下KEY_SET则直接进入设置模式。二、模块介绍1温度我使用的是DS18B20温度传感器它具有精度高的优点但是在仿真中不太能体现出来这个优点然后需要单总线通信所以要包含一个“onewire.h”关于它的代码如下。#include REGX52.H #include OneWire.h //DS18B20指令 #define DS18B20_SKIP_ROM 0xCC #define DS18B20_CONVERT_T 0x44 #define DS18B20_READ_SCRATCHPAD 0xBE /** * brief DS18B20开始温度变换 * param 无 * retval 无 */ void DS18B20_ConvertT(void) { OneWire_Init(); OneWire_SendByte(DS18B20_SKIP_ROM); OneWire_SendByte(DS18B20_CONVERT_T); } /** * brief DS18B20读取温度 * param 无 * retval 温度数值 */ float DS18B20_ReadT(void) { unsigned char TLSB,TMSB; int Temp; float T; OneWire_Init(); OneWire_SendByte(DS18B20_SKIP_ROM); OneWire_SendByte(DS18B20_READ_SCRATCHPAD); TLSBOneWire_ReceiveByte(); TMSBOneWire_ReceiveByte(); Temp(TMSB8)|TLSB; TTemp/16.0; return T; }这里是直接使用江协51的代码如果不清楚的可以去看一下江协51视频讲解然后是主函数的代码。void temper_get() //温度读取 { DS18B20_ConvertT(); //转换温度 data_temper(int)DS18B20_ReadT(); //读取温度 if(data_temper0) //如果温度小于0 { LCD_ShowChar(2,1,-); //显示负号 data_temper-data_temper; //将温度变为正数 } else //如果温度大于等于0 { LCD_ShowChar(2,1,); //显示正号 } LCD_ShowString(1,1,Temp ); LCD_ShowNum(2,2,data_temper,2); //显示温度整数部分 LCD_ShowString(2,4,*C ); }2光照这个我是使用光敏电阻配合ADC进行数据采集的光敏电阻很常见我在proteus中使用的是TORCH-LDR这个型号ADC模块则是使用TLC549这是一个串行数据传输占用的引脚少但是要注意这个模块对时序要求很高一定不能撞引脚因为主包犯过这个错误扶额叹息.jpg代码如下。#include REGX52.H #define uchar unsigned char #define uint unsigned int sbit TLC549_CLKP1^7; sbit TLC549_CSP1^6; sbit TLC549_DOP1^5; void ADC_ms(uint m) { uint i,j; for(im;i0;i--) for(j123;j0;j--); } unsigned char TLC549_ADC(void) { uchar i,temp; TLC549_CLK0; TLC549_CS0; for(i0;i8;i) { temp1; temp|TLC549_DO; TLC549_CLK1; TLC549_CLK0; } TLC549_CS1; ADC_ms(10); return temp; }然后是主函数的代码。void light_get() //光照读取 { adcTLC549_ADC(); data_lightadc*2; LCD_ShowString(1,6,light ); LCD_ShowNum(2,7,data_light,3); //显示光照强度部分 LCD_ShowString(2,10, ); }电压和光照强度有一定的数学关系我懒得算了直接用读出的电压值乘以2进行显示仿真结果表现为二者之间呈正比需要注意的是adc是uchar类型的而data_light是uint类型的如果将adc定义为uint类型则无法读出数据这个必须注意3湿度湿度的模块找了很多尝试过DHT11等最后发现一个比较简单好用的至少对于只仿真很友好——SHT21这是一个湿温度传感器至于为什么不用它同时采集温度因为老师要求要有一部分在板子上体现而且这个传感器的温度精度其实比不上DS18B20这里我们只使用检测湿度代码如下。#include sht21.h #include I2c.h #include Delay.h float humidity; /** * brief 初始化SHT21 */ bit SHT21_Init(void) { SHT21_Reset(); // 复位传感器 Delay(15); // 等待复位完成 return 1; } /** * brief 软复位SHT21 */ void SHT21_Reset(void) { I2C_Start(); I2C_SendByte(SHT21_ADDR 1); // 写地址 I2C_ReceiveAck(); I2C_SendByte(SHT21_CMD_RST); // 发送复位命令 I2C_ReceiveAck(); I2C_Stop(); } /** * brief 读取湿度值关键函数 */ float SHT21_ReadHumidity(void) { unsigned int raw_data; unsigned char retry 0; while(retry 3) { // 发送测量命令 I2C_Start(); I2C_SendByte(SHT21_ADDR 1); // 写地址 if(I2C_ReceiveAck()) { retry; continue; } I2C_SendByte(SHT21_CMD_HUM); // 发送湿度测量命令 if(I2C_ReceiveAck()) { retry; continue; } I2C_Stop(); // 等待测量完成 Delay(30); // 读取数据 I2C_Start(); I2C_SendByte((SHT21_ADDR 1) | 1); // 读地址 if(I2C_ReceiveAck()) { retry; continue; } // 读取2字节湿度数据MSBLSB raw_data I2C_ReceiveByte() 8; I2C_SendAck(0); // 应答 raw_data | I2C_ReceiveByte(); I2C_SendAck(1); // 非应答忽略CRC I2C_Stop(); // 计算湿度值 humidity (raw_data / 65536.0) * 125.0 - 6.0; // 验证数据有效性 if(humidity 0 humidity 100) { return humidity; } retry; } return -1; // 读取失败 }它需要使用I2C进行通信大家需要提前移植好I2C.c和.h的代码模块如果没有可以使用我下面提供的。#include REGX52.H //引脚定义 sbit I2C_SCLP2^1; sbit I2C_SDAP2^0; /** * brief I2C开始 * param 无 * retval 无 */ void I2C_Start(void) { I2C_SDA1; I2C_SCL1; I2C_SDA0; I2C_SCL0; } /** * brief I2C停止 * param 无 * retval 无 */ void I2C_Stop(void) { I2C_SDA0; I2C_SCL1; I2C_SDA1; } /** * brief I2C发送一个字节 * param Byte 要发送的字节 * retval 无 */ void I2C_SendByte(unsigned char Byte) { unsigned char i; for(i0;i8;i) { I2C_SDAByte(0x80i); I2C_SCL1; I2C_SCL0; } } /** * brief I2C接收一个字节 * param 无 * retval 接收到的一个字节数据 */ unsigned char I2C_ReceiveByte(void) { unsigned char i,Byte0x00; I2C_SDA1; for(i0;i8;i) { I2C_SCL1; if(I2C_SDA){Byte|(0x80i);} I2C_SCL0; } return Byte; } /** * brief I2C发送应答 * param AckBit 应答位0为应答1为非应答 * retval 无 */ void I2C_SendAck(unsigned char AckBit) { I2C_SDAAckBit; I2C_SCL1; I2C_SCL0; } /** * brief I2C接收应答位 * param 无 * retval 接收到的应答位0为应答1为非应答 */ unsigned char I2C_ReceiveAck(void) { unsigned char AckBit; I2C_SDA1; I2C_SCL1; AckBitI2C_SDA; I2C_SCL0; return AckBit; }然后是主函数的代码。void hum_get() //湿度读取 { data_humidity SHT21_ReadHumidity(); if(data_humidity 0) { LCD_ShowString(1, 13, Hum); LCD_ShowNum(2, 13, (unsigned int)data_humidity, 2); LCD_ShowString(2, 16, %); } else { LCD_ShowString(2, 12, ERROR); } Delay(1000); // 每秒更新一次 }4、步进电机#include REGX52.H #include Delay.h // 定义步进电机控制引脚连接到ULN2003的输入端 sbit MOTOR1P1^0; sbit MOTOR2P1^1; sbit MOTOR3P1^2; sbit MOTOR4P1^3; // 定义变量 unsigned char step_index 0; // 步进电机当前步骤索引 // 步进电机控制函数 void MotorControl(unsigned char motor_running,unsigned char direction) { if(motor_running) { if(step_index0) {MOTOR11;MOTOR20;MOTOR30;MOTOR40;} else if(step_index1) {MOTOR10;MOTOR21;MOTOR30;MOTOR40;} else if(step_index2) {MOTOR10;MOTOR20;MOTOR31;MOTOR40;} else if(step_index3) {MOTOR10;MOTOR20;MOTOR30;MOTOR41;} if(direction 0) // 顺时针 { step_index; if(step_index 4) step_index 0; } else // 逆时针 { if(step_index 0) step_index 4; step_index--; } Delay(500); // 延时控制速度 } else { MOTOR1 0; MOTOR2 0; MOTOR3 0; MOTOR4 0; } }主函数代码如下。// 步进电机控制 void Motor_Up() { MotorControl(1,1); } void Motor_Down() { MotorControl(1,0); }5、储存模块我们使用了24C02进行数据储存模块代码如下。#include REGX52.H #include I2C.h #define AT24C02_ADDRESS 0xA0 /** * brief AT24C02写入一个字节 * param WordAddress 要写入字节的地址 * param Data 要写入的数据 * retval 无 */ void AT24C02_WriteByte(unsigned char WordAddress,Data) { I2C_Start(); I2C_SendByte(AT24C02_ADDRESS); I2C_ReceiveAck(); I2C_SendByte(WordAddress); I2C_ReceiveAck(); I2C_SendByte(Data); I2C_ReceiveAck(); I2C_Stop(); } /** * brief AT24C02读取一个字节 * param WordAddress 要读出字节的地址 * retval 读出的数据 */ unsigned char AT24C02_ReadByte(unsigned char WordAddress) { unsigned char Data; I2C_Start(); I2C_SendByte(AT24C02_ADDRESS); I2C_ReceiveAck(); I2C_SendByte(WordAddress); I2C_ReceiveAck(); I2C_Start(); I2C_SendByte(AT24C02_ADDRESS|0x01); I2C_ReceiveAck(); DataI2C_ReceiveByte(); I2C_SendAck(1); I2C_Stop(); return Data; }这里依旧是江协51的模块。三、手动模式先看代码。//手动控制 if(mode0) { if(flag) { LCD_Clear(); LCD_ShowString(1, 1, MANUAL MODE); flag0; } if(KeyNumKEY_UP) { Motor_Up(); LCD_ShowString(2,1, Motor: UP ); } else if(KeyNumKEY_DOWN) { Motor_Down(); LCD_ShowString(2,1, Motor: DOWN); } }我们定义一个全局变量KeyNum通过检测矩阵按键的返回值对应上面的宏定义“#define KEY_UP 4 ”等进行按键功能的选择这部分逻辑很简单检测到按下“KEY_UP”,就让步进电机上升同时LCD显示检测到按下“KEY_DOWN”,就让步进电机下降同时LCD显示。四、自动模式先看代码。//自动控制 if(mode1) { if(flag) { LCD_Clear(); LCD_ShowString(1, 1, AUTO MODE ); Delay(1500); LCD_Clear(); flag0; light_get(); } temper_get(); light_get(); hum_get(); //当检测到天气变坏自动收衣服 if(data_temper max_data_temper || data_light max_data_light || data_humidity max_data_humidity|| data_temper min_data_temper || data_light min_data_light || data_humidity min_data_humidity) { bad_weather 1; } else bad_weather 0; if(bad_weather1) //天气坏 { if(clothes_position 1) //如果衣服在外面则收衣服 { LCD_Clear(); LCD_ShowString(1, 1, bad weather!); LCD_ShowString(2, 1, up_clothes); for(i0;i5;i)Motor_Up(); // 收回衣服 clothes_position 0; // 更新状态衣服已收回} Delay(1000); } } else if(bad_weather0) //天气好 { if(clothes_position 0) //如果衣服在里面则晒衣服 { LCD_Clear(); LCD_ShowString(1, 1, good weather!); LCD_ShowString(2, 1, up_clothes); for(i0;i5;i)Motor_Down(); // 晒出衣服 clothes_position 1; // 更新状态衣服已晒 Delay(1000); } } }每次按下AUTO键就会将mode1,flag1。mode1则进入自动模式flag1只是一个初始页面显示告诉使用者“我们现在进入自动模式了哦~”但是防止一直重复提示造成闪烁所以增加标志位显示一次后flag0。因为mode1一直存在所以里面传感器数据获取是实时记录然后就是天气判断。设置两个判断标志位。uchar clothes_position1; //0:衣服已收回(初始状态), 1:衣服已晒出 uchar bad_weather2; //天气好坏标志0天气好1天气坏,2:不确定状态逻辑就是当检测到天气变坏让bad_weather1进入坏天气的循环后再进行一次判断“是否收了衣服”如果衣服已经收起来了那么就不用转动电机如果没有则转动电机。为防止电机一直转动每次使用一次则清除标志位。五、设置模式先看代码。void set() { setting_active 1; LCD_Clear(); LCD_ShowString(1, 1, SETTING MODE); // 显示当前设置类型和参数 LCD_ShowString(2, 1, (setting_type 0) ? MAX: : MIN:); LCD_ShowString(2, 5, (param_index 0) ? TEMP : (param_index 1) ? LIGHT : HUMID); // 显示当前值 if(param_index 0) { current_value (setting_type 0) ? max_data_temper : min_data_temper; } else if(param_index 1) { current_value (setting_type 0) ? max_data_light : min_data_light; } else { current_value (setting_type 0) ? max_data_humidity : min_data_humidity; } LCD_ShowNum(2, 11, current_value, 3); while(setting_active) { KeyNum MatrixKey(); if(KeyNum) { // 有按键按下 switch(KeyNum) { case KEY_NEXT: // 切换参数类型温度/光照/湿度 param_index (param_index 1) % 3; break; case KEY_SUB: // 切换最大值/最小值设置 setting_type (setting_type 1) % 2; break; case KEY_INC: // 增加数值 if(param_index 0) { // 温度 if(setting_type 0) max_data_temper; else min_data_temper; } else if(param_index 1) { // 光照 if(setting_type 0) max_data_light 10; else min_data_light 10; } else { // 湿度 if(setting_type 0) max_data_humidity; else min_data_humidity; } break; case KEY_DEC: // 减少数值 if(param_index 0) { // 温度 if(setting_type 0) max_data_temper--; else min_data_temper--; } else if(param_index 1) { // 光照 if(setting_type 0) max_data_light - 10; else min_data_light - 10; } else { // 湿度 if(setting_type 0) max_data_humidity--; else min_data_humidity--; } break; case KEY_SAVE: // 保存设置到EEPROM // 保存温度 AT24C02_WriteByte(0, max_data_temper); AT24C02_WriteByte(1, min_data_temper); // 保存光照16位值 AT24C02_WriteByte(2, max_data_light 8); AT24C02_WriteByte(3, max_data_light 0xFF); AT24C02_WriteByte(4, min_data_light 8); AT24C02_WriteByte(5, min_data_light 0xFF); // 保存湿度 AT24C02_WriteByte(6, max_data_humidity); AT24C02_WriteByte(7, min_data_humidity); LCD_ShowString(1, 1, SETTINGS SAVED!); Delay(1000); setting_active 0; // 退出设置 break; case KEY_SET: // 退出设置不保存 setting_active 0; break; } // 更新显示 LCD_Clear(); LCD_ShowString(1, 1, (setting_type 0) ? SET MAX: : SET MIN:); // 显示参数名称 LCD_ShowString(2, 1, (param_index 0) ? TEMP: : (param_index 1) ? LIGHT: : HUMID:); // 显示当前值 if(param_index 0) { current_value (setting_type 0) ? max_data_temper : min_data_temper; } else if(param_index 1) { current_value (setting_type 0) ? max_data_light : min_data_light; } else { current_value (setting_type 0) ? max_data_humidity : min_data_humidity; } LCD_ShowNum(2, 7, current_value, 3); // 显示操作提示 LCD_ShowString(1, 10, (setting_type 0) ? MAX : MIN); } // 添加短延时防止按键重复触发过快 Delay(50); } }我们这个系统还使用了24C02的存储模块使数据就算掉电也可以存储在芯片内部注释很清楚我就不多说了。然后还需要每次开机读取24C02的存储模块进行数据初始化。void Load_Settings() { // 读取温度设置 max_data_temper AT24C02_ReadByte(0); min_data_temper AT24C02_ReadByte(1); // 读取光照设置16位值 high_byte AT24C02_ReadByte(2); low_byte AT24C02_ReadByte(3); max_data_light (high_byte 8) | low_byte; high_byte AT24C02_ReadByte(4); low_byte AT24C02_ReadByte(5); min_data_light (high_byte 8) | low_byte; // 读取湿度设置 max_data_humidity AT24C02_ReadByte(6); min_data_humidity AT24C02_ReadByte(7); // 设置默认值如果EEPROM未初始化 if(max_data_temper 0xFF) max_data_temper 35; if(min_data_temper 0xFF) min_data_temper 10; if(max_data_light 0xFFFF) max_data_light 400; if(min_data_light 0xFFFF) min_data_light 100; if(max_data_humidity 0xFF) max_data_humidity 50; if(min_data_humidity 0xFF) min_data_humidity 5; }六、主函数主函数代码如下。void main() { LCD_Init(); SHT21_Init(); DS18B20_ConvertT(); //上电先转换一次温度防止第一次读数据错误 Delay(1000); //等待转换完成 Load_Settings(); while(1) { KeyNumMatrixKey(); //模式选择 if(KeyNumKEY_AUTO) { mode1; flag1; } else if(KeyNumKEY_MAN) { mode0; flag1; } else if(KeyNumKEY_SET) { set(); flag1; } //自动控制 if(mode1) { if(flag) { LCD_Clear(); LCD_ShowString(1, 1, AUTO MODE ); Delay(1500); LCD_Clear(); flag0; light_get(); } temper_get(); light_get(); hum_get(); //当检测到天气变坏自动收衣服 if(data_temper max_data_temper || data_light max_data_light || data_humidity max_data_humidity|| data_temper min_data_temper || data_light min_data_light || data_humidity min_data_humidity) { bad_weather 1; } else bad_weather 0; if(bad_weather1) //天气坏 { if(clothes_position 1) //如果衣服在外面则收衣服 { LCD_Clear(); LCD_ShowString(1, 1, bad weather!); LCD_ShowString(2, 1, up_clothes); for(i0;i5;i)Motor_Up(); // 收回衣服 clothes_position 0; // 更新状态衣服已收回} Delay(1000); } } else if(bad_weather0) //天气好 { if(clothes_position 0) //如果衣服在里面则晒衣服 { LCD_Clear(); LCD_ShowString(1, 1, good weather!); LCD_ShowString(2, 1, up_clothes); for(i0;i5;i)Motor_Down(); // 晒出衣服 clothes_position 1; // 更新状态衣服已晒 Delay(1000); } } } //手动控制 if(mode0) { if(flag) { LCD_Clear(); LCD_ShowString(1, 1, MANUAL MODE); flag0; } if(KeyNumKEY_UP) { Motor_Up(); LCD_ShowString(2,1, Motor: UP ); } else if(KeyNumKEY_DOWN) { Motor_Down(); LCD_ShowString(2,1, Motor: DOWN); } } } }好啦就这些第一次发可能有些讲得不太清楚欢迎大家询问。如果要完整的代码通过网盘分享的文件智能晾衣架系统.rar链接: https://pan.baidu.com/s/1hZIC3_-aK47RClQm4HRjpg?pwdujxv 提取码: ujxv--来自百度网盘超级会员v4的分享。

相关新闻

青岛新品牌如何做好AI搜索布局?3个关键步骤必须掌握

青岛新品牌如何做好AI搜索布局?3个关键步骤必须掌握

在人工智能加速渗透信息检索的今天,越来越多用户通过AI助手查询企业信息——“这家青岛公司靠谱吗?”“XX服务本地有没有推荐?”如果您的品牌在AI回答中“查无此人”,很可能正错失大量潜在客户。尤其对青岛新兴品牌而言&#xff0…

2026/8/1 21:07:40 阅读更多 →
SDC命令详解:使用set_wire_load_model命令进行约束

SDC命令详解:使用set_wire_load_model命令进行约束

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 目录 指定线负载模型名 指定搜索库 指定最大、最小条件 指定对象列表 set_wire_load_model命令用于显式指定一个线负载模型(设置了对象的wire_load_at…

2026/8/1 21:06:40 阅读更多 →
如何彻底解决TranslucentTB启动失败:VCLibs依赖完整修复指南

如何彻底解决TranslucentTB启动失败:VCLibs依赖完整修复指南

如何彻底解决TranslucentTB启动失败:VCLibs依赖完整修复指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是…

2026/8/1 21:06:40 阅读更多 →

最新新闻

AI时代信息过载危机:如何用5个可落地的归类框架,30分钟内重建个人知识体系?

AI时代信息过载危机:如何用5个可落地的归类框架,30分钟内重建个人知识体系?

更多请点击: https://codechina.net 第一章:AI时代信息过载的本质与知识体系坍塌的临界点 信息爆炸不再是隐喻,而是可量化的系统性压力。2024年全球每日新增文本数据超2.5亿GB,其中73%由大语言模型生成或重写——这意味着人类正持…

2026/8/1 22:39:11 阅读更多 →
Docker镜像离线下载革命:无需Docker环境的多架构镜像下载工具

Docker镜像离线下载革命:无需Docker环境的多架构镜像下载工具

Docker镜像离线下载革命:无需Docker环境的多架构镜像下载工具 【免费下载链接】docker-pull-tar 无需 Docker 环境,就能直接搜索、下载多架构(如 arm、x86)的 Docker 镜像并保存为 tar 包。Search and download multi-architectur…

2026/8/1 22:39:11 阅读更多 →
TVBoxOSC终极指南:3步将电视盒子变身高性能Wi-Fi热点

TVBoxOSC终极指南:3步将电视盒子变身高性能Wi-Fi热点

TVBoxOSC终极指南:3步将电视盒子变身高性能Wi-Fi热点 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 还在为家庭Wi-Fi信号死角烦恼吗…

2026/8/1 22:39:11 阅读更多 →
可灵延长功能灰度通道已关闭!仅剩72小时获取旧版稳定API权限——附迁移兼容性检测脚本(Python一键执行)

可灵延长功能灰度通道已关闭!仅剩72小时获取旧版稳定API权限——附迁移兼容性检测脚本(Python一键执行)

更多请点击: https://kaifayun.com 第一章:可灵视频延长功能灰度通道关闭事件概述 近日,可灵(Keling)AI视频生成平台悄然关闭了其“视频延长”功能的灰度发布通道。该功能自2024年Q2起面向部分企业客户与内测开发者开…

2026/8/1 22:39:11 阅读更多 →
零知识证明与ZK-SNARKs技术解析及应用实践

零知识证明与ZK-SNARKs技术解析及应用实践

1. 零知识证明:从神秘概念到现实应用零知识证明(Zero-Knowledge Proof)这个术语听起来像是某种黑魔法,但它的核心思想其实非常直观——如何在不透露任何具体信息的情况下,让别人相信你知道某个秘密。我第一次接触这个概…

2026/8/1 22:39:10 阅读更多 →
LiDAR-IMU时空标定:15秒实现毫米级传感器融合初始化的实战指南 [特殊字符]

LiDAR-IMU时空标定:15秒实现毫米级传感器融合初始化的实战指南 [特殊字符]

LiDAR-IMU时空标定:15秒实现毫米级传感器融合初始化的实战指南 🚀 【免费下载链接】LiDAR_IMU_Init [IROS2022] Robust Real-time LiDAR-inertial Initialization Method. 项目地址: https://gitcode.com/gh_mirrors/li/LiDAR_IMU_Init 想要实现高…

2026/8/1 22:38:10 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →