1. 项目概述:用STC89C51打造经典打地鼠游戏
这个项目是我在指导电子设计竞赛学生时开发的经典案例,用STC89C51单片机配合矩阵键盘和LCD1602显示屏,完整复现了街机厅里的打地鼠游戏。相比市面上的成品玩具,自制版本不仅能深入理解硬件交互原理,还能自由定制游戏规则。整个系统成本不到30元,但涵盖了嵌入式开发的核心技术点:IO口扩展、定时器中断、人机界面设计等关键技术。
选择STC89C51作为主控有几个实际考量:首先它是国内电子竞赛的指定型号,资料丰富;其次其4组IO口正好满足矩阵键盘和LCD的并行连接需求;最重要的是它内置的EEPROM可以保存游戏最高分记录。我在实际调试中发现,虽然STM32性能更强,但对于这种简单控制场景,51系列反而更易上手且稳定。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计详解
2.1 核心器件选型与电路设计
主控采用STC89C52RC(兼容89C51但Flash更大),显示模块使用LCD1602(带背光款),输入设备是4×4矩阵键盘。这里特别说明键盘选型:虽然游戏只需要9个键(对应3×3地鼠洞),但采用4×4矩阵可以预留设置键。实际焊接时要注意加装10kΩ上拉电阻,我在初期测试时就因为漏接上拉导致按键检测不稳定。
电路连接方案:
- P0口接LCD数据线(需加1kΩ排阻上拉)
- P2.0-P2.2接LCD控制线(RS,RW,E)
- P1口接矩阵键盘行线
- P3口接矩阵键盘列线
- 地鼠洞用LED表示,接在P2剩余IO口
关键提示:LCD的VO引脚需接10kΩ可调电阻调节对比度,这是很多新手容易忽略的点,会导致显示白屏。
2.2 电源与抗干扰设计
采用USB转5V供电方案,在VCC与GND间并联104电容和10μF电解电容。调试中发现,当快速按键时LCD会出现乱码,后来在单片机电源引脚就近增加0.1μF去耦电容后问题解决。如果要做成产品级设计,建议:
- 所有IO口到连接器走线串联100Ω电阻
- 矩阵键盘引脚加TVS二极管防静电
- 按键触点并联0.01μF电容防抖
3. 软件架构设计
3.1 主程序流程图解析
采用时间片轮询架构,通过定时器0产生10ms时基:
code复制初始化硬件 → 显示欢迎界面 → 进入主循环:
1. 扫描键盘(每50ms)
2. 更新游
