智能循迹小车实战:电路设计、PWM调速与阈值校准全解析

发布时间:2026/9/11 14:16:29
智能循迹小车实战:电路设计、PWM调速与阈值校准全解析 简介面向全国大学生电子设计竞赛的智能循迹小车项目包适合正在备赛或想提升嵌入式开发能力的同学。资源以STC89C52单片机为核心覆盖电路原理图、控制程序与仿真工程包含红外循迹传感器信号检测、电机驱动PWM控制以及高低电平逻辑反馈等关键环节可帮助深入理解循迹小车系统的硬件连接与软件逻辑。包内共34个文件以.c程序、.hex固件、.Sch电路图、.DSN仿真图、.uv2工程文件及.OBJ/.LST编译中间文件为主还附带元器件清单XLS文件便于快速备料压缩包仅129KB精简但案例结构完整。已有135人学习下载可用于对照练习或作为赛题方案的参考模板。通过这份资料能学到C51单片机编程、PID追踪算法、电路仿真调试等关键技能并结合清单文件快速梳理元器件是一条性价比很高的电赛入门路径。1. 智能循迹小车“三件套”先分清主次再开工很多第一次做智能循迹小车的朋友拿到一个包含电路图、程序和仿真图的压缩包第一反应是先把主程序编译烧录进去。常见结果是仿真图里跑得好好的一条直线实物一上电要么原地打转要么直接冲出赛道。问题往往不在程序写错而在三样东西的依赖关系没理顺电路图决定了引脚分配和供电结构程序依赖这份引脚表运行仿真图只负责在理想条件下验证逻辑。换句话说仿真图验证不了电池内阻、传感器高度和环境光而这三个因素恰恰是实车跑线最大的变量。下面按“原理与选型 → 电路图 → 程序 → 仿真差异 → 现场校准”这条线把一套能落地不玄学的循迹小车方案拆开讲清楚。适合正在做课程设计、备赛电子设计竞赛的入门到中级开发者。2. 循迹原理与硬件选型红外对管、电机驱动和供电方案一起定2.1 红外对管循迹的核心逻辑灰度差先变成电平差智能循迹小车最常见的传感器是TCRT5000红外对管里面有一个红外发射管和一个光电晶体管。发射管持续发出940nm左右的红外光光线打到路面后反射回来光电晶体管根据反射光强度改变集电极电流。白色地面对红外光反射强黑色引导线几乎把光吸收于是“看到黑”和“看到白”在电路上就被转化为电流差异。模块背面通常还带一颗LM393比较器把电流差异与电位器设定的电压比较最终输出0或1的数字电平。所以循迹的本质不是图像识别而是阈值比较比较器设在哪一档决定了什么程度的灰被当作黑线。这套逻辑也适用于智能小车摄像头循迹方案。摄像头输出的是连续灰度图算法第一步仍然是把灰度图二值化变成黑和白两种像素再提取中线。红外对管相当于三路离散的二值化传感器摄像头相当于几十路连续的二值化像素二者面对的核心问题一致阈值怎么定。红外方案胜在响应快、算力要求低、成本便宜一个模块几块钱摄像头方案信息量大能处理十字、虚线等复杂元素但百毫秒级的图像处理延迟需要更快的单片机。安装高度与间距对阈值影响很大。TCRT5000的推荐检测距离是5到15mm安装高度取8到10mm比较合适左中右三路传感器的间距建议是黑色引导线宽度的1.5到2倍。线宽2cm时探头间距取3.5cm比较合适太窄转弯时两路同时压在线上太宽则左右两个探头长时间扫不到黑线。固定好机械高度后再调阈值否则一切都是白忙。2.2 电机驱动选L298N还是DRV8833先看堵转电流再看PWM频率底盘电机一般是带减速箱的TT马达额定电流150mA左右堵转电流能到1A以上启动瞬间还要再翻一倍。驱动芯片选型先看这个电流再看饱和压降和PWM频率上限。芯片最大持续电流饱和压降VM电压范围PWM实用频率适合场景L298N常见模块2A/通道1.4~2.5V5V~35V20~40kHz课程设计、大扭矩车模、不介意发热TB6612FNG1.2A/通道0.4~0.6V2.5V~13.5V100kHz3.7V轻量化底盘、竞赛小车DRV88331.5A/通道约0.45V2.7V~10.8V100kHz以上7.4V双节电池、紧凑型智能车L298N是本世纪初智能车教材里的常客引脚大、好插拔、损坏后容易更换但它的饱和压降偏大。两块H桥串联时7.4V电池实际到达电机的电压可能不到6V小车看起来“没劲”。我一般建议电池电压在3.7V到7.4V之间、电机堵转电流不超过1.5A的底盘优先考虑DRV8833或TB6612除了压降小、发热低这些优点外它们的PWM频率可以给到50kHz以上电机换向噪声明显更小。L298N不是不能用而是做演示可以跑比赛或长时间调试会很吃亏。选型时还要注意模块上的逻辑供电引脚。DRV8833和TB6612的VCC只供逻辑电机从VM供电L298N模块的逻辑电源和电机电源如果共用同一路5V电机堵转时会把5V拉低导致单片机和传感器同时复位。这条经验在仿真图里完全看不出来却属于实车电路图里最常埋的坑。2.3 供电方案AMS1117和LM2596在同一个底盘上各管一段一套典型的供电结构是两组18650串联成7.4V主电源分别进入H桥的VM端和降压模块。需要5V的地方是传感器模块和驱动芯片逻辑侧需要3.3V的地方是51单片机如果是STC8系列、ESP8266或OLED屏等外设。5V用LM2596-5.0开关降压模块3.3V用AMS1117-3.3线性稳压。为什么不用LM2596直接出3.3V开关稳压模块在轻载时纹波偏大AMS1117是LDO5V输入、3.3V输出、压差只有1.7V在100mA负载下功耗不到0.2W一个小封装就能扛住。反过来如果拿AMS1117直接把12V降到5V压差7V、电流200mA时功耗1.4W手一摸就烫所以AMS1117比较适合低电流的数字逻辑轨不适合大电流预降压。这个分工在AMS1117稳压电路图和LM2596降压模块电路图里都能看到前者在输出端放22uF钽电容和104陶瓷后者在输入端放电解电容吸收开关噪声。传感器侧也要算电流。两个TCRT5000模块加一个OLED、一片单片机总电流通常100mA出头AMS1117完全能撑住但注意不要在上面再接额外负载。电机的电流不经过任何稳压芯片直接从电池进H桥只是受PWM控制这样电机堵转的尖峰不会把单片机的电压轨拽塌。地线处理上逻辑地、传感器地和电机地在电池负极单点汇接能减少碳刷火花带来的复位问题。3. 电路图拆解最小系统、红外采集和H桥连接的先后顺序3.1 单片机最小系统和传感器接口先消除抖动再接逻辑拿到电路图先看最小系统部分。51最小系统必须包含晶振11.0592MHz或12MHz、复位电路10uF电容10k电阻、电源去耦104电容靠近VCC引脚和下载接口。STM32F103系列还要注意BOOT0下拉到GND、VDDA/VSSA接滤波电容。这部分不需要什么创新但引脚分配必须和程序里定义一致否则仿真正常、实物不动。常见错误是电路图里传感器接P1.0到P1.2程序里却定义在P2口查半天查不出结果。红外对管模块的接口通常是VCC、GND、OUT三根线。数字输出型模块背面的电位器用来调比较器阈值顺时针拧会提高“判定为黑”的亮度门槛。模块输出接单片机GPIO时先确认模块是不是开集电极输出。有的模块只有一颗电阻把输出上拉到VCC有的没有这时需要在单片机的IO上外接一颗4.7k到10k的上拉电阻。为了降低电机启停时传感器输出抖动可以在模块的VCC和GND之间加一颗100nF陶瓷电容输出的信号长度控制在20cm以内。如果买的是模拟输出型模块单独引出AOUT引脚则接单片机的ADC引脚采样率取50到100Hz就够了。ADC模式的好处是阈值可以在程序里动态调整不用每次拧电位器这类代码在第四章给出。电路图上这两类接法差别不大但对程序和调参工作量的影响很大建议优先选带模拟输出引脚的模块。3.2 H桥驱动电路图里最容易接错的四个点H桥驱动电路图是整个底盘的功率核心接错一个点轻则跑不快重则烧芯片。第一个点是使能端ENA/ENB不能悬空。L298N模块默认用跳线帽把ENA和ENB接到高电平表示电机永远使能把跳线帽拔掉之后这两个引脚才接PWM。如果把PWM信号接到IN1和IN2而不是ENA会变成“PWM信号控制方向切换”桥臂在高频下反复换向发热量远大于正常差速控制严重时驱动芯片直接冒烟。第二个点是续流二极管的位置和型号。自搭H桥时四个二极管要尽可能靠近电机接线端子型号选1N5819、SS14这类肖特基管。1N4007虽然便宜但恢复时间在微秒级PWM频率超过10kHz时来不及泄放反电动势管子发热快还可能击穿。成品L298N模块自带续流二极管不用额外加但要检查模块上二极管是不是真的装在电机输出端。第三个点是逻辑地与电机地的汇接。不少自制电路图把两个地画成一片大面积铜箔看起来连接简单实际上电机电流在铜箔电阻上产生压降干扰直接注入逻辑电路。正确做法是各路的GND分别走线最后在电池负极单点汇接。这个点在仿真图里无法体现Multisim仿真电路图里所有地都是理想的0V实物上却会因为汇接点选错而出现跑起来复位、传感器乱变的现象。第四点是电机两端的吸收电容。直流电机碳刷换向时会产生几百MHz的尖峰串进传感器电源线后让LM393的输出在阈值边缘来回抖。在电机两个接线端子之间并联一颗104陶瓷电容再用多股软线把电机线双绞起来能明显降低干扰。下面是典型的GPIO初始化片段画图前先把引脚分配固化下来#include reg52.h sbit SENSOR_L P1^0; // 左探头数字输出 sbit SENSOR_M P1^1; // 中探头 sbit SENSOR_R P1^2; // 右探头 sbit IN1 P2^0; // H桥方向1 sbit IN2 P2^1; // H桥方向2 sbit ENA P2^2; // H桥使能/PWM void GPIO_Init(void) { P1 0xff; // 传感器输入51准双向IO带上拉 IN1 0; // 方向脚复位为低电平 IN2 0; ENA 0; // 使能脚低电平禁止桥臂输出 }这段代码把三个传感器做输入、三个H桥控制脚做输出方向脚复位为低、使能脚也为低保证上电瞬间电机不转。准双向IO口配合高电平输出时内部上拉约几十kΩ按高电平来读传感器没有问题如果使用开漏模式则必须外接上拉电阻否则读到的电平不确定。编译前先确认传感器引脚号与电路图标注一致这是排错成本最低的一步。3.3 一套可照抄的接线顺序从电池到每个模块各走各的路把整车电气连接按功能分成三路功率路、逻辑路、信号路。功率路只服务电机电池正极经过总开关后直接进H桥VM再出OUT1/OUT2到两个电机。逻辑路负责单片机、传感器、OLED这类低电流器件电池电压经过LM2596降压到5V再通过AMS1117降到3.3V。信号路就是各传感器的输出线和PWM线它们只传电平不承载功率。模块电源来源地线去向信号去向LM2596-5.0电池正极7.4V电池负极输出5V给逻辑轨AMS1117-3.3LM2596输出的5V逻辑GND输出3.3V给单片机/OLED单片机和OLED3.3V轨逻辑GND—红外对管模块5V轨逻辑GNDIO口H桥驱动电池正极VM电机GND单点IN/PWM接IO电机H桥OUT1/OUT2电机GND—电源轨上的滤波电容这样安排LM2596输出端放一个470uF电解和一个104陶瓷AMS1117输出端放22uF钽电容单片机VCC脚旁边再放一颗10uF电解四个角放0.1uF陶瓷。看到很多“电路图能跑实物不能跑”的套件问题几乎都出在电源轨过滤波电容以及地线环路这两件事上接线时按这张表逐条核对能省去后面一半调试时间。4. 程序实现与参数整定循迹逻辑、PWM调速和阈值校准4.1 循迹逻辑从固定转向的真值表到连续差速输出三路传感器的循迹逻辑可以用一张真值表描述左中右排列用1表示看到黑线。左右为1、中间为0时小车正骑在黑线上直行左侧为1时说明黑线偏左向右打方向右侧为1时向左打方向三路全为1时多半是遇到了十字路口保持直行三路全为0时表示丢线保持上一次的转向动作继续短时间搜索。这套逻辑本质上是一个离散状态机代码简单、实时性高但问题也很明显转向力度只有几个固定档位出弯时容易左右震荡。工程上更好用的做法是把传感器状态编码成一个误差值再用比例微分控制输出差速。误差编码不需要太复杂例如左探头读到线记error-1右探头记error1中探头不参与误差计算。由于黑线宽度和探头间距匹配多数时刻只有一路探头压在线上所以error通常落在-1、0、1三个值当左右同时压线时error0表示车头骑在十字路口中央保持直行。转向量turn turn_gain × error Kd × (error - last_error)最后左右轮PWM为#define PWM_MAX 255 int base_speed 120; // 基准PWM根据电机和电池电压实测调整 int turn 0; // 转向量正数右转 int left_pwm, right_pwm; int error 0, last_error 0; // 将左右探头映射成误差值左 -1右 1中不参与 error (SENSOR_L 0) ? -1 : 0; // 模块输出低电平表示压到黑线 error (SENSOR_R 0) ? 1 : 0; turn turn_gain * error Kd * (error - last_error); last_error error; left_pwm base_speed turn; // 左轮加速、右轮减速时右转 right_pwm base_speed - turn; if (left_pwm PWM_MAX) left_pwm PWM_MAX; // 限幅 if (right_pwm PWM_MAX) right_pwm PWM_MAX; if (left_pwm 0) left_pwm 0; if (right_pwm 0) right_pwm 0;这里的符号约定是turn为正时左轮加速、右轮减速车身右转。turn_gain初始给30到50对应base_speed120时转向量约为基准速度的三分之一Kd初始给turn_gain的四分之一左右。实际调试时先让车在直道上只调turn_gain把车调到不左右扭再慢慢加Kd抑制弯道甩尾。如果感觉转向太猛优先减小turn_gain而不是降低base_speed因为太慢的基准速度会丢失过弯动量直角弯很难过去。传感器编码有个细节不要直接用三路IO电平拼一个编号然后查表那样代码虽然短但换传感器顺序、调阈值时维护成本高。用上面这种“每路独立累加误差”的写法新增一个外扩探头或改成五路循迹时只需要在error计算里多写两行逻辑主体完全不用动移植性更好。4.2 三个必调参数阈值、死区、转向力度不管程序写得多么花最后决定小车跑得顺畅与否的是三个参数传感器阈值、死区、转向力度。阈值决定了“多黑才算黑”死区决定了“黑白边界上会不会抖”转向力度决定了“弯道里速度与向心力的配合”。三个参数里任何一个偏差过大都会出现可以预测的失败模式所以调试时应该按顺序来而不是同时瞎调。参数代码变量或位置初始参考值调大后的现象调小后的现象传感器阈值THRESHOLD 或模块电位器数字型旋到中点ADC型取黑白读数中值白底反光误判为黑直行乱摆黑线识别不出来过弯丢线死区ADC方案中的滞回区间阈值加减60灰边界响应迟钝过弯晚打轮传感器在边界抖动PWM频繁变化转向力度turn_gainbase_speed的30%至40%出弯甩尾车身画龙弯道推头冲过引导线阈值的最快调法是把车停在线外用串口持续打印传感器的原始值分别记录“白底读数”和“黑线读数”阈值取两者的中位数。不要用平均值因为白底反射和黑线吸收在直方图上通常是两个峰取峰间谷值更合理。死区是ADC方案特有的概念中探头在灰边界上会来回跳动假设当前阈值是2000那么高于2060才判黑、低于1940才判白中间这段保持上次状态这个滞回区间就能吸收掉抖动。转向力度是turn_gain和base_speed的比值赛道弯多就降低base_speed提高turn_gain直道多就反过来。数字量模块没有ADC值调整电位器时用万用表量模块OUT引脚电压让探头对准黑线时输出电压处于0.2V以下对准白底时处于2.5V以上留出足够余量。程序里不需要改阈值常数因为比较器已经在硬件层面完成二值化这时“死区”对应的是软件层面的“连续N次采样一致才更新状态”窗口。4.3 用按键和串口校阈值一段能直接抄的C代码换了一卷黑色胶带或者从教室搬到实验室路面反射率变了固定阈值经常失效。比较实用的做法是在程序里做一次按键标定上电后把车停在白底上按一次按键记录每个传感器ADC的最大值移到黑线上再按一次记录最小值把最大最小值的平均作为当前阈值存在RAM里。下面是适用于ADC型红外模块的标定代码逻辑同样适配STM32或51系列#define SAMPLE_COUNT 10 uint16_t cal_min[3], cal_max[3]; // 三路传感器各自的黑线/白底读数 uint16_t threshold[3]; uint8_t cal_step 0; void ADC_Calibrate(void) { uint8_t i, ch; uint32_t sum 0; if (KEY_Pressed() 0) return; // 未按键则跳过 cal_step; for (i 0; i SAMPLE_COUNT; i) { sum ADC_Read(CHANNEL[0]); // 依次采集三路 sum ADC_Read(CHANNEL[1]); sum ADC_Read(CHANNEL[2]); } if (cal_step 1) { // 第一次按键记录白底读数 cal_max[0] cal_max[1] cal_max[2] sum / SAMPLE_COUNT; UART_SendString(Place on black line, press key\r\n); } else if (cal_step 2) { // 第二次按键记录黑线读数 cal_min[0] cal_min[1] cal_min[2] sum / SAMPLE_COUNT; for (ch 0; ch 3; ch) threshold[ch] (cal_min[ch] cal_max[ch]) / 2; cal_step 0; // 标定完成重新开始 UART_SendString(Calibration done\r\n); } }这段代码用SAMPLE_COUNT10做多次采样取平均用来抹平环境光和电机干扰造成的随机波动第一次按键记录白底值第二次按键记录黑线值阈值直接取中位。累加时用32位变量sum而不用8位是因为三路ADC值相加会超过255上限如果是12位ADC就必须注意类型宽度。标定完成后运行时只需读取当前ADC并与threshold比较大于阈值判白底小于阈值判黑线。ADC的参考电压要选和传感器模块一致的电源比如模块用5V供电、ADC参考也接5V否则换算出来的原始数值会整体偏移。按键防抖也是必做的简单的做法是检测到按下后延迟20ms再读一次电平确认仍为按下才执行标定流程避免一次按键被重复触发。5. 仿真图从“能看着动”到“敢拿它调参”的三个差距5.1 仿真图里的电压源是理想的实车不是在Proteus或Multisim仿真电路图里电源就是一个恒定电压源无论电机堵转还是PWM占空比加到100%5V轨永远纹丝不动。实车上电池存在内阻电机堵转瞬间电流冲到2A电池端电压立刻跌落LM2596输入如果低于最小压差输出就会跌出允许范围单片机跟着复位。这种“低压复位”在仿真里永远复现不出来所以排查实车问题时不能用仿真结果当参照而要用示波器或万用表实测电池在堵转瞬间的电压跌落幅度。传感器模型同样被简化。Proteus里经常用开关加一个上拉电阻来模拟红外对管按下开关代表压到黑线松开代表白底。实际TCRT5000的输出不是干净的高低电平而是随距离变化缓慢爬升再跳变的模拟量环境光、探头高度、轮胎压过灰尘都会影响反射值。仿真里调好的阈值、调好的PID参数直接搬到实物上大概率需要重新标定一遍这属于正常现象。5.2 两个工具的分工Multisim验证电路Proteus验证逻辑刚入门的常见误区是想用一个软件把电路和程序全仿真完。比较高效的分工是Multisim擅长模拟分析用来搭红外发射接收电路验证LM393比较器的翻转电平和滞回量或者搭LM2596降压电路看开关纹波Proteus擅长数字和单片机仿真用来验证程序里的循迹状态机、PWM占空比、串口打印这些逻辑行为。从仿真图向实车迁移时先检查引脚分配表是否和电路图一致再看程序里阈值和死区用的单位是否和实物传感器一致。验证项目仿真工具仿真能看见实车替代方法LM393阈值翻转Multisim电位器调节时输出电平翻转点万用表量OUT电压PWM波形占空比Proteus逻辑分析仪看PWM频率和占空比示波器测驱动芯片ENA脚电机换向逻辑ProteusIN1/IN2真值表翻转万用表二极管档听电机声电池电压跌落无法仿真电压源恒定示波器测电池正负极这张表的核心意思是仿真图的价值在“验证逻辑错误”不在“验证真实世界”。跑得动仿真只能说明程序的判定逻辑没有低级错误不能说明电机转速、传感器阈值这些物理量是合理的。5.3 电磁三轮和摄像头循迹在仿真里的难点完全不同智能车竞赛里的电磁三轮智能小车循迹传感器是工字电感加运算放大电路输出的是经过检波后的包络模拟量需要在仿真里搭谐振电路和整流桥才能看明白信号流程。实际调试时常见做法是用信号发生器代替电感信号的输出给主控一个模拟的场上电压让程序先跑通PID。这类模拟量比红外数字量的仿真复杂得多也说明了一个规律传感器越接近真实物理量仿真价值越低越需要实车调试。摄像头循迹则相反图像传感器本身没法在Proteus里建模通常的做法是直接给程序喂一张灰度数组或者在OpenMV的集成环境里仿真二值化和中线提取。到了这个阶段真正困难的是图像处理算法和相应的帧率控制硬件仿真图的作用已经很小。红外循迹算是介于两者之间硬件简单到可以完整仿真又有足够多的物理量让新手体会到“理论阈值”和“实际阈值”的差距作为入门项目再合适不过。6. 用归一化标定法让循迹阈值自动适应场地变化6.1 固定阈值换场地就失灵归一化阈值一次标定通用第四章的按键标定适合“换地面后手动触发一次”但标定完存成常数仍然不够因为太阳光变化、电池电压下降都会让原始读数漂移。固定阈值最大的痛点是教室的白瓷砖和实验室的灰色地胶对红外光的反射率能差出30%以上写死一个阈值换块地面要么丢线要么误判。更好的做法是归一化标定法每次上电记录三路传感器在白底和黑线上的真实读数运行时把当前ADC值映射到0到100的百分比空间那么阈值恒为50就可以自适应。#define THRESHOLD_NORM 50 uint8_t norm_value 0; // 在线更新每一路自己的最值 if (current_adc cal_max[ch]) cal_max[ch] current_adc; if (current_adc cal_min[ch]) cal_min[ch] current_adc; // 映射到0~100阈值固定为50 norm_value (current_adc - cal_min[ch]) * 100 / (cal_max[ch] - cal_min[ch]); // 按模块特性决定大于还是小于阈值判白底 if (norm_value THRESHOLD_NORM) { // 判定为白底 }把这段逻辑放进主循环后加一个“判断是否停止更新最值”的保护当检测到丢线或者车辆剧烈转向时停止更新避免把极端杂波写进cal_max和cal_min。三路传感器各自的cal_min和cal_max要分开保存因为每一路模块的器件离散性不同探头对准黑线时的反射值差别可能超过15%共用一组最值会让中间探头误判。场景固定阈值归一化阈值从浅灰地胶换到深灰地胶要重新按键标定或拧电位器上电自动更新无需改参数电池从满电到快没电红外发射亮度下降阈值失效cal_min与cal_max同步漂移比值不受影响摄像头在过曝区域二值化阈值固定时直道过曝丢线灰度映射后依然能区分黑白归一化以后调试重心就从“调阈值”变成“看探头的真实读数范围”。如果某一路的归一化值长期低于20或者高于80说明探头高度变了或者发射管和接收管脏了这时候改代码没有用需要检查机械结构。卡尔曼滤波在这里没有必要10ms一次的采样率加滑动平均就足够滤掉电机换向噪声把系统做复杂反而会给新手增加排错难度。把标定好的cal_min和cal_max存在Flash里下次上电直接读如果发现丢线再把更新开关打开一套出厂校准值就足够撑完整场比赛。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询