观前提醒,代码已经在我的github库上面发布了,实践以及复现视频在我的抖音上面,感兴趣的可以去看看,以下纯属碎碎念流水账,准大一还没开学自己随便瞎捅咕的,只是感兴趣做出小项目,没啥含金量,单纯图一乐
1. 项目背景
打三角洲,猛攻打不过别人,跑刀也抢不到保险。
没有放弃,我决定用最近刚学的51单片机,用51单片机,复刻三角洲里那个开保险小游戏
2. 需求分析
在动手之前,梳理一下,这个小游戏其实就三个状态:
3. 设计思路
3.1 密码设定
我最初的想法是 1:1 还原游戏里的保险密码 6DFUP。但只会数码管 所以果断放弃,改成用户自己设定密码
3.2 输入逻辑
输入密码的程序,本来打算直接 CV 大法,从网上抄一段。结果一用全是坑:
- 滚动输入密码时,要等对应数字出现;
- 用户同时按下确认键;
- 里面还要判断对错;
- 程序嵌套,套娃套到怀疑人生。 分开都不是很难,但是如何组合是个问题,函数这一块学的不咋样。。。 去上网查了一圈,发现没有同类项目。抄作业都找不到 所以这部分直接交给 Codex。这玩意真好用啊
3.3 按键与边界处理
我设定了三个核心按键:
- 数字键:确认当前滚动到的数字;
- 删除键:回退上一位;
- 确认键:提交当前位验证。
同时,还确立了边界处理逻辑,防止数字溢出。
4. 数码管滚动显示
真正做起来才发现,数码管滚动显示远没有想象中简单。踩过的坑包括但不限于:
- 当前位滚动:只有当前验证位在滚动;
- 已验证位常亮:已经验证通过的数字要固定显示;
- 滚动顺序:1 → 2 → … → 9 → 1,无限循环;
- 停留时间:每个数字常亮 1 秒,到时间自动切换下一个。
这些细节,每一个单独看都不难,但合在一起调试了很久
5. 验证环节
按下 S16 的瞬间,程序要做的事如下:
- 以当前数码管显示的数字为输入值;
- 与正确密码的「当前验证位」进行比对;
- 正确:当前验证位数码管停止滚动,固定常亮显示该数字,蜂鸣器发出低频正确提示音(单响),「当前验证位」向后移动一位;
- 错误:当前验证位数码管熄灭,蜂鸣器发出双响,提示音结束后,当前验证位重新从数字 1 开始循环滚动。
6. 验证成功,音乐响起
当 5 位密码全部验证通过,系统进入最终状态:
- 5 位数码管全部常亮,保持显示正确密码;
- 蜂鸣器播放一段简单旋律(上网直接找的,感觉这东西拓展性也挺强,下次做个钢琴试试);
- 旋律播放完毕后,数码管保持常亮,蜂鸣器停止;
- 按下任意按键可重置系统,回到密码设置状态,重新开始全部流程。
这一刻,终于体会到了「开保险成功」的快乐。虽然是在单片机上(但看着自己搞出来的成功还是成就感满满)
7. 编程中的一些问题与反思
在编程过程中,我遇到了一系列具体问题,很多都是边遇到问题边学习的:
- 输入时的显示逻辑:滚动数字时,当前位和已验证位的显示规则;
- 生效规则:数字键、删除键、确认键各自的触发时机;
- 删除键边界:删到第 0 位时怎么办;
- 「闪烁」的具体表现:是整位闪烁还是数字切换闪烁;
- 输错后的重置范围:是重置当前位,还是重置所有位;
- 数码管状态规则:常亮、熄灭、滚动的状态切换;
- 错误提示音细节:单响和双响的区分。 最开始感觉都不是啥难题,但是自己做起来发现很困难,也是AI辅助才完成的
8. 一些分享
AI是真好用,以前以为AI都想豆包一样纯傻福,用了chatGPT发现这玩意真的是远超预期,给大家分享一个我觉得挺好用的使用方法
把自己当作 AI,把你项目的想法构思发给 AI,让 AI 向你提问题。 具体操作就是,对 AI 说: 【一堆自己程序的想法,和对项目的要求】以上的所有要求你有什么不懂的地方请向我提出,并且帮我生成一段详细的提示词,让 AI 能够看懂我的需求,提示词可以无限长,不用生成具体代码。
就这一句话出去,等着 AI 给你提问题吧。 很多时候,自己的想法和项目会出现很多冲突的,也会出现一些逻辑上的错误。通过 AI 的嘴说出来,比自己翻代码半天好用得多,虽然老被 AI 问得哑口无言 但与此同时,也能对自己程序的不足理解得更深刻。这真的是很好的学习方法,能积累处理问题的经验。
网硕互联帮助中心

评论前必须登录!
注册