51单片机矩阵键盘与数码管动态显示:Proteus仿真与C51实现
矩阵键盘加数码管动态显示这组合在单片机入门项目里几乎绕不开但也是翻车重灾区。很多人单独玩独立按键时好好的一到4×4矩阵就懵明明照着引脚连了线按下键就是没反应数码管单独点亮也正常一上动态扫描就拖影、闪烁、亮度不均匀。如果你正在Proteus里折腾这个组合或者准备用C51写类似的课设代码这篇内容应该能把从原理到Proteus仿真的整套路子给你捋顺顺带把我在实际调试中踩过的坑都标出来。先说清楚核心思路矩阵键盘靠行扫描和列读取来识别按键数码管动态显示靠位选轮流导通加视觉暂留来“同时”显示多位数字。这套东西的本质是单片机的I/O口分时复用——用有限的引脚干更多的事。理解了这一点代码和电路都不会乱。下面我按项目拆解、硬件搭建、代码实现、仿真调试、问题排查的顺序展开读者可以直接对照着搭建自己的版本。1. 项目拆解矩阵键盘和动态显示到底在做什么1.1 矩阵键盘为什么能省引脚4×4矩阵键盘一共16个按键如果全部采用独立按键接法每个按键一端接I/O、一端接地你需要16个I/O引脚。对51单片机来说P0到P3总共才32个I/O干这么点事就花掉一半后面接LCD、传感器、电机基本就没法玩了。矩阵键盘的省引脚思路是把16个按键排列成4行4列的网格行线和列线交叉处放按键4条行线加4条列线一共8个I/O口就能覆盖16个按键。为什么这样可行关键在于按键按下时会把所在的行线和列线接通。我们平时让所有行线输出低电平列线保持输入状态并依赖内部上拉维持高电平。此时如果某个按键没按下行线和列线之间是断开的列线读到的全是1一旦按下某个按键对应的行线和列线接通该列线就会被拉低到0。通过判断“哪一列变低了”就知道了按键在哪一列但还不知道具体行号——因为同一列上可能挂着多行按键所以还要进一步逐行拉低才能定位到具体的交叉点。这就是行扫描法的由来。1.2 数码管动态显示的“时间切片”多位数码管动态显示的原理说白了就是“轮流欺骗人眼”。四位数码管把8根段码线a到dp并联在一起用4根位选线分别控制每一位的公共端。你要是同时点亮四位就必须给不同的数字段码但段码线是共用的没法同时送四个不同数据。所以只能一位一位轮流来先选中第1位送第一位的段码维持一小段时间然后选中第2位送第二位的段码依次扫完四位再马上回到第1位循环。关键在于刷新速度要足够快。人眼有视觉暂留效应只要整个循环周期控制在20毫秒以内也就是刷新频率高于50Hz人眼就分辨不出“轮流点亮”的过程看起来像是四位同时在稳定显示。实际做的时候每位维持2到5毫秒比较合适四位数码管一轮就是8到20毫秒。如果每位延时太长比如20毫秒一轮要80毫秒肉眼就会看到明显的闪烁和跳动。1.3 两个模块组合的深层意义很多初学者把矩阵键盘和数码管动态显示当成两个独立功能来写先让键盘能识别再让数码管能显示最后拼在一起。但这两个模块放在一个项目里真正要练的是“分时复用”这个编程思路。单片机的CPU同一时刻只能做一件事但通过快速轮询可以让按键扫描和显示刷新看起来是“同时进行”的。按钮按下、数字更新、显示稳定刷新整个系统才能正常运转。这也引出一个编程上的关键点任何模块的扫描函数都不能长时间阻塞主循环。如果按键扫描在那边死等用户松开按键数码管刷新就会停摆显示直接静止。后面我会给出一个能跑通但有点粗犷的版本再用优化建议补上非阻塞扫描的思路大家按需选用即可。2. 硬件电路设计在Proteus里把图纸画对2.1 元件选型与整体布局Proteus仿真环境下用到的核心元件有这几个AT89C51单片机、电阻排RESPACK-8、四位数码管7SEG-MPX4-CC、四个普通按键BUTTON、若干导线和电源终端。矩阵键盘不要直接拖一个KEYPAD-SMALL成品键盘控件虽然那个控件拖出来很省事但它是封装好的黑盒子看不见行列连接关系初学者很难理解扫描原理。自己用16个BUTTON排成4×4网格更能看清每条行线和列线的走向。AT89C51的默认晶振频率在Proteus里双击芯片可以设置一般设成12MHz就行。这个频率直接影响后面延时函数的计算代码里延时参数如果不对仿真时会出现按键消抖不准、显示闪烁的问题。2.2 矩阵键盘接线方式与注意事项设计4×4矩阵我用P1.0到P1.3作为四条行线P1.4到P1.7作为四条列线。每个按键的一端接行线另一端接列线。注意这里按键两端接的都是I/O引脚而不是一端接GND——这是矩阵键盘和独立按键最直观的区别也是很多初学者第一次接线发懵的地方。Proteus里P1口默认有内部上拉列线在空闲时能维持高电平所以不接外部上拉也能仿真。但实物焊接时如果单片机的I/O口内部上拉比较弱抗干扰能力有限通常建议在列线上外接10kΩ上拉电阻让电平状态更稳定。在Proteus里可以先不接等代码跑通了再补上对比一下效果。行线和列线之间不要接反这直接影响后面的代码逻辑。行线作为扫描输出端列线作为输入端接线层次要清晰。我习惯把行线从左上角横向拉列线纵向拉交叉点处放按键这样看图纸时一目了然。2.3 数码管选型与限流电阻计算Proteus里最常用的是7SEG-MPX4-CC也就是共阴四位数码管。共阴意味着所有位数码管的阴极公共负极端汇到一个引脚点亮某一段时需要让该段对应的段码线输出高电平电流从I/O口流入LED再流向公共端。由于P0口本身就是开漏输出结构内部没有上拉电阻所以必须外接上拉才能输出可靠的高电平这也是P0口接了排阻的原因。限流电阻的取值要算一下。51单片机P0口高电平接近5VLED红色段压降约1.8V到2V数码管工作电流一般取10mA到20mA。按15mA算限流电阻R (5 - 2) / 0.015 ≈ 200Ω。为了兼顾亮度和保护引脚实际常用220Ω到330Ω。在Proteus里我直接用330Ω的排阻RESPACK-8公共端接VCC八个独立端分别接P0口到段码线既完成上拉又完成限流一举两得。如果选共阳数码管段码要反相低电平点亮限流电阻接法也不同。这里不推荐初学者混合使用直接在Proteus里选共阴器件代码里的段码表也按共阴来写少踩一层坑。位选电路方面Proteus里可以直接用P2.0到P2.3接四位公共端通过输出低电平选中某一位。但实物做动态显示时如果直接用I/O口灌电流驱动多位公共端电流可能超出单片机的承受范围。所以我在电路里加了四个NPN三极管2N2222做位选驱动P2.x输出高电平三极管导通公共端被拉低到接近0V对应位才点亮。这样一来I/O口只负责给三极管基极提供mA级别的驱动电流大部分电流走三极管的集电极到电源回路对单片机引脚友好得多。3. C51程序实现从按键扫描到动态显示3.1 段码表、位选表与延时函数写代码之前先把基础表准备好。共阴数码管0到F的段码表如下unsigned char code seg_table[16] { 0x3F, 0x06, 0x5B, 0x4F, // 0 1 2 3 0x66, 0x6D, 0x7D, 0x07, // 4 5 6 7 0x7F, 0x6F, 0x77, 0x7C, // 8 9 A B 0x39, 0x5E, 0x79, 0x71 // C D E F };注意0x3F是二进制0011 1111对应共阴数码管的a、b、c、d、e、f六段。调试时最常出现的问题是段码表和实际数码管引脚不匹配导致显示数字完全错乱常见原因是把共阳的段码表抄到了共阴工程里或者某个段位的位序反了需要从头核对。位选控制表直接用P2口的四个低位unsigned char code position_table[4] {0x01, 0x02, 0x04, 0x08};延时函数用简单的双重循环注意这个函数会随Keil优化级别和晶振频率变化12MHz下大概是这样void delay_ms(unsigned int ms) { unsigned int i, j; for (i 0; i ms; i) for (j 0; j 114; j); }如果仿真中发现延时明显偏长或偏短直接调114这个数就行。Proteus软件仿真和实物时钟毕竟有差异这是个正常过程。3.2 矩阵按键扫描逐行清零读列值按键扫描是整个项目的核心我按“先判断有无按键再逐行定位”的顺序写。完整代码如下unsigned char KeyScan(void) { unsigned char row, col, val; unsigned char key_code 0xFF; // 第一步所有行输出低列线读状态判断是否有键按下 P1 0x0F; if ((P1 0xF0) ! 0xF0) { delay_ms(10); // 软件消抖 if ((P1 0xF0) ! 0xF0) { // 第二步逐行拉低查找具体行 for (row 0; row 4; row) { P1 ~(0x01 row); // 第row行输出0其余行输出1 val (P1 4) 0x0F; // 读列状态低4位有效 if (val ! 0x0F) { for (col 0; col 4; col) { if ((val (0x01 col)) 0) break; } if (col 4) { key_code row * 4 col; // 键号0~15 } // 等待按键释放防止一次按下重复触发 while ((P1 0xF0) ! 0xF0); return key_code; } } } } return 0xFF; // 无按键按下 }代码里P1 ~(0x01 row)是行扫描的关键。row等于0时P1等于0xFE也就是P1.0输出0、其他行输出1row等于1时P1等于0xFDP1.1输出0以此类推。这样某一行被拉低后如果该行上某个按键被按下对应列线也会被拉低从高四位读到的数据中就能找到在哪一列。消抖放在检测到按键之后再延时10ms是因为机械按键按下瞬间电平不稳定大约在5到10ms内会有抖动。延时之后再次确认就能过滤掉大部分误触发。不过Proteus里的按键模型是理想开关没有真实的抖动过程所以仿真时即使不写消抖也能跑通。这一点必须单独拎出来说仿真成功不代表实物成功做成实物后消抖是必须的。等待释放的while循环要特别注意。它保证了“按一次只触发一次键值返回”但也带来了阻塞问题如果用户长按不放程序会一直卡在这个循环里数码管刷新暂停。这个版本适合教学演示后续优化可以考虑非阻塞方案。3.3 动态显示消隐与刷新顺序动态显示函数的结构很简单但“消隐”这一步最容易漏写。void Display(void) { unsigned char i; for (i 0; i 4; i) { P0 0x00; // 先清段码消除拖影 P2 position_table[i]; // 选中第i位 P0 seg_table[key_buffer[i]]; // 送段码 delay_ms(2); } }为什么要先P0 0x00再切换位选因为在切换位选的瞬间P0端口上还残留着上一位的段码数据如果直接切换公共端上一位的段码会短暂地亮在下一位置上形成重影和拖尾。把段码清零后再切位选就能避免这个问题。这个细节我在初学阶段经常忽略结果就是数字边缘有虚影排查了好久。key_buffer是全局数组用来保存四个待显示的数字unsigned char key_buffer[4] {0, 0, 0, 0};每次按到新键就做一个移位操作最旧的按键值从第一位被挤出新键值显示在最低位void PushKey(unsigned char key) { key_buffer[0] key_buffer[1]; key_buffer[1] key_buffer[2]; key_buffer[2] key_buffer[3]; key_buffer[3] key; }这里用“最近两次按键记录依次显示”的方式把动态刷新和按键识别两个功能自然结合。按下第一个键时数码管最低位出现第一个键号按下第二个键时第一个键号挪到第二位最低位变成第二个键号依次类推四个位置都动起来了一眼就能看出动态显示在正确工作。3.4 主程序流程主循环比较直接关键是按键扫描和显示刷新轮着跑void main(void) { unsigned char key; P2 0x00; while (1) { key KeyScan(); if (key ! 0xFF) { PushKey(key); } Display(); } }这个写法简洁但有个隐患KeyScan内部如果检测到按键并进入等待释放的死等Display就会长时间不执行。解决方法是把按键扫描改成“非阻塞”模式——每次主循环只查询一次按键状态用状态机记录按键是否在新按下、是否已释放。这里先给初学者保留阻塞版本等整个流程跑通了再去思考怎么优化。4. Proteus仿真实操搭建、调试、避坑4.1 搭建步骤在Proteus里新建工程放置AT89C51。双击芯片在Program File里加载Keil生成的HEX文件晶振频率设为12MHz。放置16个BUTTON排成4×4阵列P1.0到P1.3接行线P1.4到P1.7接列线。放置7SEG-MPX4-CC数码管段码引脚a到dp接P0.0到P0.7公共端通过NPN三极管接P2.0到P2.3。最后放置RESPACK-8排阻公共端接VCC独立端接P0到段码线的节点上。这里特别强调P0口上拉电阻我见过不少初学者在Proteus里把图连好后发现数码管要么不亮要么极暗第一反应是段码表写错了反复检查半天才发现P0口根本没有外接上拉。Proteus里逻辑探针显示高电平正常但驱动能力不够数码管就是亮不起来这个坑相当典型。4.2 常见逻辑错误行列接反导致的按键错乱也很常见。假设代码里行是P1.0到P1.3列是P1.4到P1.7但电路里行线接到了P1.4到P1.7列线接到了P1.0到P1.3那扫描出来的键号就会非常混乱。排查办法是先只按下左上角第一个按键观察返回键号是否为0如果不是说明行列定义有问题。还有一个容易忽略的问题按键消抖延时过长会让扫描周期拉长比如延时设置成50ms仿真里按下按键后要等半天才有反应数码管也会出现明显的迟钝感。消抖延时控制在10ms到20ms足够别贪多。4.3 仿真和实物的差异Proteus仿真的最大特点是有理想化倾向。按键不会抖动上拉电阻可以省略导线没有寄生电容三极管的压降和放大倍数也只是理想模型。所以在仿真里能跑通的代码不代表实物一定没问题。反过来说仿真里经常遇到的“数码管闪烁”“按下按键没反应”这类问题反倒和真实的电路逻辑关系更大仿真阶段解决掉这些逻辑问题实物阶段就能少走很多弯路。我的经验是Proteus适合用来调逻辑不适合用来验证硬件参数。限流电阻该算还得算上拉电阻该加还得加三极管该接还得接养成好习惯之后做实物才不会乱了阵脚。5. 常见问题与排查指南5.1 故障速查表把实际调试中最常见的几类问题整理成一个表大家可以直接对照检查现象可能原因排查与解决数码管全部不亮P0口没有外接上拉排阻在P0口到VCC之间接330Ω排阻数码管显示乱码段码表与数码管阴阳极不匹配确认是共阴管还是共阳管段码表相应取反数码管有重影动态显示切换位选前没有消隐位选切换前先清P0端口数据数码管明显闪烁每位延时太长刷新频率不够每位维持时间控制在2~5ms总周期小于20ms按下按键没反应行列接线反了或代码里行列定义不一致检查电路接线和程序中的行/列定义按键按一下触发多次缺少等待释放逻辑在KeyScan返回值前加入按键释放等待长按按键时显示卡住KeyScan阻塞等待释放改用非阻塞按键状态机只有某一行或某一列按键不识别对应行线或列线接触不良检查Proteus连线节点是否完整实物检查焊点5.2 一些调试技巧排查按键问题时在KeyScan函数里加一个临时变量把扫描到的行号列号直接赋值给P2口驱动LED作为二进制显示比盯着数码管猜键号快得多。或者把键值直接送到数码管最低位单步运行程序看键值变化。排查显示问题时可以先用静态显示测试把四位都显示成同一个数字确认识别数码管正常工作再跑动态扫描这样能把“显示电路问题”和“扫描刷新逻辑问题”分开定位。很多初学者一上来就写完整代码出问题后不知道是段码表错、接线错还是刷新逻辑错前期拆开测试反而是最快的方式。6. 优化方向与更深入一点的想法虽然这个项目以仿真和入门为主但写完之后还是建议大家往前再推一步。第一个可做的改进是把KeyScan的阻塞等待改成状态机扫描。用记录上一次P1状态的方式识别“从无按键到有按键”的跳变沿在主循环里每次只采样一次不阻塞显示刷新。这样做之后长按按键也不会影响数码管刷新系统的实时性会有质的提升。第二个改进是位选驱动可以用74HC138或74HC595这类译码芯片替代P2口的4个I/O。比如74HC138用3个I/O就能选通8个输出端4位数码管只用到3个引脚就控制了4个位选。尤其是后期要扩展更多数码管或者LED阵列时这个节省引脚的优势会非常明显。第三个改进方向是加上按键状态机之后还可以继续扩展功能比如短按和长按的区分、组合键的识别、双击检测。矩阵键盘的扫描原理不变只是把检测结果的逻辑往上层堆叠。数码管这边也可以加入闪烁、滚屏、亮度调节等效果这些都是在现有代码框架上做增量开发很锻炼代码组织能力。做这些东西的过程中积累的调试经验比单纯背会某个模板值钱得多。就我个人实际体验来说矩阵键盘加动态显示这两个模块最大的价值不在于“能把代码跑通”而在于能逼着你理解分时复用和状态检测这些单片机底层思路。我在做这个项目的过程中反复改过好几次行列定义、消隐时序和刷新延时每次改完都要从头理一遍逻辑。理顺之后再去看定时器扫描、外部中断、串口通信这些内容会明显觉得思路开阔很多。如果仿真跑通了建议找个实物的4×4键盘矩阵和四位共阴数码管再焊接一遍有些在仿真里被掩盖的问题会在这个阶段全部还回来而解决它们的经验才是真正属于你的。

相关新闻

MySQL与Redis缓存一致性实战:延迟双删与binlog订阅

MySQL与Redis缓存一致性实战:延迟双删与binlog订阅

缓存和数据库的一致性问题,几乎是每个使用 Redis 的团队都会撞上的一堵墙。我接手过的一个新项目里,业务上只是把商品库存冗余了一份到 Redis,结果活动期间优惠券发超了——原因就是 MySQL 扣减成功,而 Redis 里的库存数据没有同步…

2026/10/13 22:26:01 阅读更多 →
CarPlay硬件开发实战:MFi认证、WAC配对与iAP2协议全解析

CarPlay硬件开发实战:MFi认证、WAC配对与iAP2协议全解析

简介:面向iOS车载系统开发者的CarPlay通信插件源码包,围绕CarPlay与车载硬件之间的媒体交互、数据链路与认证通信细节展开,并依照MFi认证与WAC无线配件配置协议做了轻度定制优化,适合需要研究CarPlay通信机制、进行MFi外设适配或开…

2026/10/13 22:25:00 阅读更多 →
Java入门第二天:变量、数据类型、运算符与流程控制全攻略

Java入门第二天:变量、数据类型、运算符与流程控制全攻略

如果你是零基础开始学Java,第一天搞定了JDK安装、环境变量配置、写下了人生第一行Hello World,那么Day02就是真正开始“变程序员”的一天。这一天学的所有东西——变量、数据类型、运算符、流程控制——都套路固定、信息量大,却是往后所有项目…

2026/10/13 22:25:00 阅读更多 →

最新新闻

程序员如何培养“设计师的眼睛”:从经典包豪斯栅格到日常 UI 找茬训练法

程序员如何培养“设计师的眼睛”:从经典包豪斯栅格到日常 UI 找茬训练法

在前端产研团队中,我们经常能听到这样的争论: 资深 UI 设计师走查页面时,皱着眉头说:“这个图标和旁边的文字不对劲,往上偏了 2 像素;这块卡片的投影太脏了;两个区块之间的呼吸感完全断了。”坐…

2026/10/13 23:18:21 阅读更多 →
SpringBoot 2.3+ MySQL中hibernate_sequence报错解决方案

SpringBoot 2.3+ MySQL中hibernate_sequence报错解决方案

1. 项目概述:为什么这个标题值得深挖?SpringBoot 2.3.0 是一个承前启后的关键版本——它正式移除了对 javax.* 包的默认依赖,全面转向 jakarta.* 命名空间;同时 Hibernate 5.4.17 成为默认 JPA 实现,而该版本对数据库序…

2026/10/13 23:18:21 阅读更多 →
深入理解5g<五十六>UM的接收过程

深入理解5g<五十六>UM的接收过程

5G RLC UM(Unacknowledged Mode,非确认模式)接收端的主要职责是**按序重组并向上层递交RLC SDU**,同时通过窗口机制和定时器来管理乱序、分段和丢失的PDU。其过程严格遵循3GPP TS 38.322规范。### 📦 核心状态变量与重…

2026/10/13 23:18:21 阅读更多 →
WBCE损失重写:动态加权、梯度聚焦与标签可信度建模

WBCE损失重写:动态加权、梯度聚焦与标签可信度建模

1. 项目概述:WBCE损失重写不是调参,而是对分类任务底层逻辑的重新校准“WBCE损失重写”这个标题乍看像一个技术微调动作,但实际它指向的是深度学习分类任务中一个被长期低估、却直接影响模型泛化能力与业务落地效果的核心环节——加权二元交叉…

2026/10/13 23:18:21 阅读更多 →
Python文本预处理与词频可视化:从原始文本到词云图实战

Python文本预处理与词频可视化:从原始文本到词云图实战

1. 从原始文本到可视化:为什么预处理决定了词频图的成败很多人拿到一段文本,第一反应就是直接丢进词频统计工具里跑,结果出来的图要么是一堆"的""了""是"占满画面,要么是各种标点符号和乱码混在一起…

2026/10/13 23:18:21 阅读更多 →
免费帝国插件内容流水线搭建:采集、伪原创、发布与推送全流程避坑指南

免费帝国插件内容流水线搭建:采集、伪原创、发布与推送全流程避坑指南

简介:这是一款面向站长与SEO从业者的帝国CMS配套插件,聚焦关键词采集、文章采集、伪原创改写、自动发布与搜索引擎推送等环节,帮助希望提升站点收录与排名、又缺乏持续内容产出精力的用户搭建半自动化的优化流程。资源以zip压缩包形式提供&am…

2026/10/13 23:17:20 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →