数字逻辑实验全过程:移位寄存器计数器与74LS47译码设计
简介面向数字逻辑课程学习者与电子工程低年级本科生的《数字逻辑实验报告.docx》完整呈现同步计数器与七段译码显示电路的实验过程。报告以模5七段译码器显示计数为主线先分析移位寄存器型计数器电路推导激励函数、状态表和状态图并记录修正错误状态表的实测过程随后验证74LS47译码驱动器与共阳极LED显示器的BCD码对应关系最终结合D触发器和门电路设计支持预置初始状态的同步模五计数器完成从逻辑设计到电路实现的闭环实践。资源仅含一个docx文档压缩包约5.1MB文本、电路图与数据表格混排适合课堂报告提交或考前知识点梳理。已有2229人学习下载对掌握数字逻辑实验要点、理解计数器与译码器工作原理具有直接参考价值。1. 数字逻辑实验报告这个资源能直接照着复现的三段实验做数字逻辑课程设计或准备实验考试的人最头疼的不是原理而是对着实验箱不知道先插哪根线、状态表算错了却不知道错在哪。这份数字逻辑实验报告恰好是一份能直接照做的完整路线图。它覆盖了三个典型实验场景移位寄存器型计数器的状态分析、74LS47七段译码驱动器的BCD码显示验证、以及用D触发器和门电路搭出带预置功能的同步模5计数器。从器件选型、引脚标注到激励函数推导再到实测数据修正状态表它把“从理论到实验箱”全流程写清了。适合正在做同步计数器实验的学生、准备数字逻辑实验补考的人以及想快速上手74LS163、74LS74、74LS47这些中规模器件的从业者。而且报告里明确记录了一个常见状况——初版状态表与实测不符这是很多人在实验中会踩的坑。2. 移位寄存器型计数器从激励函数推导到状态表修正2.1 先理解这个电路在干什么实验第一部分的电路本质是一个由四个D触发器两片74LS74每片含两个D触发器构成的移位寄存器型计数器。所谓移位寄存器型计数器就是相邻触发器之间首尾相连前级的输出直接作为后级的输入整个状态序列呈现出“移位”特征而不是普通二进制计数器那种按数值递增的规律。从报告给出的激励函数入手写出逻辑关系D1 y4 · (y1 y3)D2 y1D3 y2D4 y3这里的D1能看出来是一个组合逻辑表达式y1、y3、y4共同决定D1的下一状态而D2、D3、D4则完全是直接移位y1移到y2的位置y2移到y3的位置y3移到y4的位置。也就是说这个电路本质上是一个带反馈的移位寄存器反馈路径决定了它的计数序列。理解了这一点后续状态表的计算就清晰了。计算时只需要逐拍代入先读当前四个触发器的输出y1y2y3y4求出D1的值其他三个D直接等于前级的当前值下一拍到来时所有D值同时锁存到Q端。2.2 手动推状态表的具体步骤实操时我一般会列一张四列的表当前状态y1y2y3y4、D1表达式取值、下一状态y1y2y3y4、对应时钟边沿序号。以初始状态0000为例y10, y30, y40代入D1 y4 · (y1 y3) 1 · (0 1) 1所以D11D2 y1 0D3 y2 0D4 y3 0下一个时钟上升沿到来后y11, y20, y30, y40也就是从0000跳到1000。报告里记录的第一拍实测结果正是cp:0(0000) → cp:1(1000)对上了。再往后推当前1000y11, y30, y40D1 1 · (1 1) 1D2 1D3 0D4 0下一状态1100。实测记录也是1000 → 1100完全一致。这样一路推下去完整的状态序列是0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000这是一个长度为8的循环包含了8个有效状态。2.3 状态表修正这是实验最有价值的部分报告里真实记录了第一次实验后发现的问题初始写的状态表和状态转换图里有几个状态没出现和实测不一致。比如最初可能把某些非法状态也画进了状态图但实际电路不会进入这些状态或者从某个状态跳转到了和预期不同的下一状态。这种“理论与实测不符”的情况几乎是每个做数字逻辑实验的人都会遇到的。错误来源通常有两种一是推导激励函数时化简出错比如漏了一个非号二是状态转换图绘制时把无关状态也纳入了循环路径。报告给出的修正方式是依据实测结果反向修改状态表最终得到的完整序列正是上面那8个状态。修正后的状态表现态 y1y2y3y4次态 y1y2y3y40000100010001100110011101110111111110111011100110011000100010000这里有一个经验值得单独说如果发现实测跳转与理论不符先别急着改电路优先检查连线是否正确、D触发器的置0/置1端是否悬空然后再考虑是不是逻辑表达式推错了。报告里特别强调了“D触发器的置0和置1端不能悬空”这确实是个高频踩坑点后面第5章会单独展开。3. 七段译码驱动电路74LS47与共阳极LED的显示逻辑3.1 74LS47的输入特性与BCD码对应关系实验第二部分把74LS47七段译码驱动器单独拎出来测试用四个开关作为BCD码输入观察七段LED显示器上的数字是否与输入码一一对应。这里74LS47接收的是四位BCD码输出低电平有效内部有上拉电阻可以直接驱动共阳极LED数码管。器件型号里的“LS”代表低功耗肖特基工艺74LS47的输入是高电平有效输出低电平驱动所以必须配共阳极的LED显示器。如果配的是共阴极需要换成74LS48这类高电平输出有效的译码器。实验用到的DL707就是共阳极七段LED显示器六个360Ω电阻做限流一个1KΩ电阻用在其他控制路径上。为什么用360ΩLED正常工作电流大约10mA到20mA共阳极七段显示器的电源电压通常是5VLED导通压降约1.8V到2V用欧姆定律粗略算一下(5-2)V / 360Ω ≈ 8.3mA这个电流足以让LED亮度清晰且不超额定值。这个参数是实验箱上最常见的限流配置做板子时也可以按这个思路自己算。3.2 BCD码与显示数字的完整对照实验中四个开关作为输入X4X3X2X1按8421 BCD码接入74LS47的四个数据输入端。报告里记录的实测对应关系整理如下X4X3X2X1数字显示000000001100102001130100401015011060111710008100191010-1111不规则显示报告明确指出1010到1111这六个非法BCD码对应的显示不规则。这是74LS47的正常行为——BCD码只定义到9超出范围的输入不在编码表内译码器会输出无效组合七段LED上会出现乱码或空白。这一点很多初学者会误以为是电路坏了实际上不需要处理除非设计要求显示特定符号。74LS47内部对6个无效输入有多种硬件处理方式有些版本会点亮特定段有些全灭不同批次可能有细微差异。3.3 接线方法与验证顺序连线时四个开关的输出分别接入74LS47的A0引脚7、A1引脚1、A2引脚2、A3引脚6顺序不要接反。74LS47的LT灯测试引脚是低电平有效实验时应接高电平或悬空内部上拉RBI灭零输入也是低电平有效如果不需要灭零功能就接高电平。但要注意74LS47的某些输入引脚是内部上拉悬空时确实等效高电平不过规范做法是直接接5V避免噪声误触发。验证手法的关键点是每切换一组开关状态就记录一次LED显示结果。不要一次性把四个开关全拨完再看那样出错时无法定位是哪一位接错或哪个开关坏了。逐组验证的好处是如果显示数字与BCD码不一致能立刻根据偏差方向判断是数据位接反、高低位顺序颠倒还是译码器本身坏了。报告记录的结果显示输入与输出一一对应说明接线和器件都是正常的。4. 同步模5计数器设计D触发器加门电路实现预置功能4.1 设计目标与状态分配第三部分要求用D触发器和门电路设计一个同步模5计数器计数范围是0到4通过七段译码器显示计数值。同时要求电路能预置初始状态也就是说上电后可以手动把计数器设置到任意一个目标初始值再开始计数。模5计数器需要3个触发器就够了因为3个触发器有8个状态取其中5个做有效循环。但实验报告选用的是4个D触发器这是为了配合七段译码器显示优先选择与BCD码对应的编码方式。如果用3个触发器虽然状态数够但编码到BCD码需要额外组合逻辑转换直接用4个触发器0000到0100这五个状态本身就是BCD码省去一层转换。实际验证中采用的状态编码就是0000表示数字00001表示数字10010表示数字20011表示数字30100表示数字4对应的D触发器记为D4D3D2D1显示数字通过74LS47驱动。4.2 激励函数推导与逻辑化简报告给出了四个激励函数D4 0D3 y1 · y2D2 y4 · y3 · (y1 ⊕ y2)D1 y4 · y3 · y1这里的y1对应最低位D1触发器y4对应最高位D4触发器。我照着验算了一遍初始0000时D40、D30、D2 1 · 1 · (0⊕0)0、D1 1 · 1 · 11下一状态0001即显示数字0 → 1验证匹配。再看0001时D40、D30、D2 1 · 1 · (0⊕1)1、D1 1 · 1 · 00下一状态0010即1 → 2匹配。以此类推状态序列为0000 → 0001 → 0010 → 0011 → 0100 → 0000这是一个标准的模5计数循环。设计这个电路时的化简手法是从状态表出发把每个D触发器的次态表达式写成最小项之和再用卡诺图化简。其中D3 y1 · y2是个典型的与门实现D2和D1的表达式用到了与非门和异或门的组合正好对应实验箱提供的7408与门、7486异或门和74LS00与非门。4.3 预置功能的硬件实现方法这份报告里最有参考价值的操作细节是预置功能的实现方案。预置利用的是D触发器的异步置1端而不是通过数据输入端做同步预置。具体做法是每个D触发器都有一个置1端通常标注为S或PRE低电平有效。要预置某个触发器的值为1时将对应的置1端开关断开要预置为0时保持或接入高电平。预置完成后把所有置1端开关闭合恢复高电平使触发器回到正常工作状态然后输入单脉冲上升沿计数器开始计数。这里有个细节要特别留意。D触发器的置1端是异步的一旦拉低Q端立即变为1不受时钟控制。预置阶段结束后置1端必须回到高电平否则后续时钟边沿到来时触发器仍然被强制置1计数就完全错乱了。报告里也特意提到“在数字变换的时候可以将之前置1的再置0以防扰乱后面的实验”说的正是这个异步复位的解除操作。另外一个容易忽略的点是预置顺序。如果先预置再闭合开关闭合动作本身会在电路上产生一个跳变沿可能触发触发器翻转。所以规范操作是先断开所有置1端开关按目标值设置哪些位为1哪些位为0然后闭合所有开关等待电路稳定再送出第一个计数脉冲。报告里记录的“预置2再输入一次上升沿→预置4再输入一次上升沿→”就是完整流程每到预置状态显示目标数字后再给一个脉冲计数器继续加一。4.4 实验结果验证报告最后给出了实测数据记录用表格表示现态数字显示cp变化次态数字显示01→0111→0221→0331→0441→00这个表的意思是每输入一个下降沿实验箱的单脉冲按钮按下时产生边沿当前显示数字加1到4之后再回到0。数字显示器的显示结果与状态表完全一致证明设计成功。模5计数器的核心其实不是“设计一个计数器”而是设计“能预置到指定状态的计数器”预置逻辑的可靠性直接影响整个实验的成败。5. 避坑指南D触发器悬空、上电状态不确定与预置开关操作5.1 D触发器的置0和置1端悬空导致随机状态现象接好电路后上电LED显示的数字每次都不一样甚至同一块板子、同一个接线重新上电就跳变到不同数字。原因D触发器的置0CLR和置1PRE端是异步控制端悬空时引脚电平不定可能被噪声拉低一旦拉低就强制Q端置0或置1计数序列直接被打乱。74LS74的这两个引脚内部没有可靠的上拉悬空就是隐患。解决置0和置1端全部接高电平5V或者通过一个电阻上拉到VCC。实验报告中明确要求“不能悬空”实操时最简单的办法是直接把这两个引脚接到实验箱的5V排针上。如果用的是面包板加一颗1KΩ上拉电阻更稳妥既能防止悬空也避免直连5V可能带来的过流风险。5.2 预置开关闭合瞬间产生毛刺导致跳变现象设置好预置值后闭合预置开关还没按计数脉冲LED显示的数字就自己变了。原因开关闭合瞬间存在机械抖动会产生多个脉冲这些脉冲如果进入时钟路径或异步置位路径会额外触发触发器翻转。D触发器的异步置1端对低电平敏感抖动脉冲可能造成不确定的置位操作。解决预置操作完成后等待一两秒让电路稳定再输入计数脉冲。实验箱上的单脉冲按钮通常自带去抖电路但置1端的开关往往没有去抖所以人为等待是必要的。更好的做法是预置用的开关不直接接到D触发器的置1端而是经过一个RC低通滤波或施密特触发器去抖后再接入。5.3 预置完成后忘记恢复置1端导致计数器锁定现象预置完成后计数器不计数LED数字始终停留在预置值上输入脉冲没有反应。原因置1端仍然处于有效电平低电平异步置位一直在起作用Q端始终被强制为1时钟边沿到达时D端数据无法写入。解决严格按照“预置→恢复置1端→输入脉冲”的顺序执行。恢复操作就是把置1端开关拨回高电平确认所有D触发器的PRE端都回到无效电平后再送计数脉冲。如果有多位需要预置恢复时要逐位检查不要漏掉任何一位。5.4 74LS47的无效BCD码显示乱码被误判为故障现象输入1010到1111时七段LED显示不规则符号或乱码有人以为是74LS47损坏。原因BCD码本身只定义0到91010到1111不在编码范围内。74LS47对这些非法输入没有标准输出定义不同型号的译码器内部逻辑对无效输入的处理方式不同有些点亮部分段位有些全部熄灭。这是器件的正常行为不是故障。解决接受这个现象即可。如果项目要求非法输入也有确定显示需要额外加逻辑门对输入做限制或者改用显示驱动芯片并自己扩展译码逻辑。实验场景下只需确保0000到1001这十个有效码显示正确即可。5.5 示波器观察波形时触发边沿选错导致误判现象用示波器观察某个触发器的Q端波形时显示的频率或波形关系与状态表对不上误以为电路有问题。原因计数器是边沿触发观察波形时如果触发电平设得过高或过低或者触发源选错了通道看到的波形相位会错开。特别是观察多个触发器Q端波形时触发通道必须是公共时钟信号否则各通道波形无法对齐。解决把示波器CH1接到时钟信号上触发源选择CH1触发电平调整到时钟幅度的中间位置再观察各触发器的Q端。这样每个通道的波形都相对时钟对齐才能准确判断状态序列。6. 验证方法用真值表反推法快速确认计数器逻辑正确性模5计数器做完怎么确认它真的“对”直接看LED显示固然直观但只能看到最终结果中间某个触发器逻辑错了也可能凑巧显示正确。我习惯的做法是用真值表反推法把每个D触发器的激励函数单独验证一遍比整体看显示数字更能定位问题。具体操作断开计数器输出到74LS47的连线把四个D触发器的Q端或y1到y4接到实验箱的逻辑电平指示灯上把四个D输入端分别接到逻辑开关上手动设置成0000记录一次灯的状态然后手动把输入拨到0001再记录一次。逐行把五组状态输一遍得到下面的反推表输入D4D3D2D1期望次态y4y3y2y10000000000010001001000100011001101000100这个表的含义是当前状态为0000时下一个时钟沿到来前的D输入端组合必须是0001才能使计数器跳到1当前状态为0001时D输入端必须是0010才能跳到2。也就是说把D端看作组合逻辑的输出y端看作当前状态输入分别验证每一拍的“当前状态→D值”是否匹配。验证完四个触发器的D端逻辑后再看整体计数闭环。从0000开始连续输入5个脉冲记录每次脉冲后LED显示的数字。期望值是1、2、3、4、0循环。如果中间某一步跳变不对直接查该步对应的激励函数表达式和连线。比如从3跳到4时需要D31且D20且D10如果实际D3输出恒为0就该查y1和y2的与门逻辑是否接对而不是盲目拆电路。这个方法的优势在于把“状态表理论”和“实测逻辑”做了双向校验先验证每个D触发器的激励函数是否按状态表正确生成再验证闭环后是否按状态表正确转移。两步都通过电路逻辑基本可以确认无误。从那以后我每次做计数器相关实验都会强制走一遍真值表反推法再连译码器看显示。这看起来多花十几分钟实际上一旦出问题排查时间能省出一个下午。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

多主题适配实战:从颜色令牌到深色模式切换的完整方案

多主题适配实战:从颜色令牌到深色模式切换的完整方案

做深色模式适配这几年,已经从前端需求里的“加分项”变成了“标配项”。产品经理很少问我要不要做,而是直接说“别人家有深色模式,我们也得有”。说实话,单纯给页面写一套深色样式并不难,难的是把这套能力沉淀成真正的…

2026/10/16 5:37:38 阅读更多 →
AI写代码前先烤熟需求:用Grill-Me、BFS、AFK构建需求闭环

AI写代码前先烤熟需求:用Grill-Me、BFS、AFK构建需求闭环

前几天有个朋友兴冲冲给我看他的“AI编程成果”:他让AI写了个爬虫脚本抓某个电商网站的商品数据,AI两分钟生成了完整代码,他特别得意。结果我一看,URL解析用的是另一个网站的规则,字段名全靠猜,连请求头里的…

2026/10/16 5:37:38 阅读更多 →
氛围音乐的声音设计:用混响、Drone与留白打造暗黑神秘感

氛围音乐的声音设计:用混响、Drone与留白打造暗黑神秘感

Arcanum Music——秘传之声。这个系列项目说白了就是一场声音实验:用氛围音乐的语汇,把"秘密""未知""沉寂"这类抽象概念翻译成听得见的频段与混响。为什么会有这个项目?因为我一直对"音乐的情绪如何被空间…

2026/10/16 5:37:38 阅读更多 →

最新新闻

Lunar 6.7.11 修复说明:Sync Mode 在 MacBook Air 与 iMac 上改用 nits 同步

Lunar 6.7.11 修复说明:Sync Mode 在 MacBook Air 与 iMac 上改用 nits 同步

桌面应用 【免费下载链接】Lunar Intelligent adaptive brightness for your external monitors 项目地址: https://gitcode.com/gh_mirrors/lu/Lunar 点击查看 免费下载 Lunar 6.7.11 是一个针对 Sync Mode(同步模式) 的定向修复版本。此次…

2026/10/16 6:27:53 阅读更多 →
MooTool Next-Compose 增量演进:MCP stdio 工具链、F03 格式化引擎与更新下载流的工程化落地

MooTool Next-Compose 增量演进:MCP stdio 工具链、F03 格式化引擎与更新下载流的工程化落地

桌面应用开发工具 【免费下载链接】MooTool Handy tool set for developers 项目地址: https://gitcode.com/gh_mirrors/mo/MooTool 点击查看 免费下载 导读 本篇以仓库中的增量开发记录 next-compose/docs/diff/561-mcp-reformat-update-env-net-vault-css-slice…

2026/10/16 6:27:53 阅读更多 →
AtCoder Beginner Contest 478

AtCoder Beginner Contest 478

AtCoder Beginner Contest 478 A - Grapes 题意:有N个人,编号为1到N,现在要把M颗葡萄分给他们。每次按照1, 2, …, N的顺序,每人分一颗,分到第N个人以后再从第1个人开始,直到所有葡萄分完。最后输出每个人分…

2026/10/16 6:27:53 阅读更多 →
google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

google-api-nodejs-client 的 ondemandscanning 模块演进全解读:从 CHANGELOG 版本脉络到容器镜像漏洞扫描实战

后端 【免费下载链接】google-api-nodejs-client Googles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included. 项目地址: h…

2026/10/16 6:27:53 阅读更多 →
用Python和SQLite自建个人财务数据中台:从记账到自由分析

用Python和SQLite自建个人财务数据中台:从记账到自由分析

1. 从"financial-services"到个人财务数据中台:我为什么自建了一套记账分析系统先说个背景。我一直在关注"financial-services"这个方向,但说实话,金融服务的概念太大了——从银行App到支付工具,从个人记账软…

2026/10/16 6:27:53 阅读更多 →
Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

Zabbix 监控 TACACS 服务实战:App TACACS Service 模板(net.tcp.service 简单检查)全解析

【免费下载链接】community-templates Zabbix Community Templates repository 项目地址: https://gitcode.com/gh_mirrors/co/community-templates 点击查看 免费下载 本文围绕 Zabbix Community Templates 仓库中的 App TACACS Service 模板展开,讲解…

2026/10/16 6:26:53 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →