目录

1. 绪论

1.1 研究背景与意义

1.2 系统总体设计

2. 系统硬件设计

2.1 主控模块设计

2.1.1 STC89C51/52单片机简介

2.1.2 单片机最小系统电路

2.2 显示模块设计

2.2.1 1602液晶显示屏介绍

2.2.2 1602与单片机的接口设计

2.3 存储模块设计

2.3.1 24C02 EEPROM介绍

2.3.2 24C02与单片机的接口设计

2.4 输入模块设计

2.4.1 按键电路设计

2.5 输出指示模块设计

2.5.1 LED指示电路

2.5.2 蜂鸣器驱动电路

3. 系统软件设计

3.1 主程序流程设计

3.3 游戏逻辑设计

3.3.1 游戏难度设置

3.3.2 分数计算规则

3.3.3 游戏时间控制

3.4 数据存储设计

3.4.1 玩家数据结构

3.4.2 24C02存储管理

3.4.3 排名更新算法

4. 系统仿真设计

4.1 Proteus仿真环境搭建

4.1.1 仿真元件选择

4.1.2 仿真电路连接

4.2 仿真测试方案

4.2.1 模块功能测试

4.2.2 系统集成测试

4.3 仿真结果分析

源文件下载 


0040 基于单片机的打地鼠游戏设计 (仿真+程序+论文)(51+1602+24C02+LED9+BZ+KEY11)

1. 绪论

1.1 研究背景与意义

随着电子技术的快速发展,嵌入式系统在各个领域得到了广泛应用。基于单片机的游戏系统因其成本低、体积小、功耗低等特点,成为嵌入式系统应用的一个重要方向。打地鼠游戏作为一种经典的娱乐方式,将其与单片机技术相结合,不仅能够实现传统游戏的电子化,还能通过硬件设计加深对嵌入式系统的理解。

本设计以51单片机为核心,结合多种外设模块,实现了一个完整的打地鼠游戏系统。该系统不仅具有娱乐功能,还能作为单片机教学的典型案例,帮助学生理解嵌入式系统的硬件设计、软件编程以及各模块间的协同工作原理。

1.2 系统总体设计

本系统采用模块化设计思想,主要由以下几个部分组成:

  1. 主控模块:采用51/52系列单片机作为核心控制器

  2. 显示模块:1602液晶显示屏用于显示游戏界面和菜单

  3. 存储模块:24C02 EEPROM芯片用于存储玩家分数和排名

  4. 输入模块:11个按键用于游戏控制和玩家输入

  5. 输出指示模块:9个LED灯模拟地鼠洞,蜂鸣器提供声音反馈

系统通过各模块的协同工作,实现了游戏主菜单显示、游戏过程控制、分数记录与排名、玩家命名等功能,构成了一个完整的嵌入式游戏系统。

2. 系统硬件设计

2.1 主控模块设计

2.1.1 STC89C51/52单片机简介

本设计采用STC89C51/52单片机作为主控芯片,该芯片是宏晶科技推出的增强型51系列单片机,具有以下特点:

  • 8位CPU,兼容标准MCS-51指令系统

  • 4KB/8KB Flash程序存储器(STC89C51为4KB,STC89C52为8KB)

  • 512B RAM数据存储器

  • 32个I/O口线

  • 3个16位定时器/计数器

  • 全双工串行通信口

  • 工作频率范围宽(0-40MHz)

  • 低功耗模式支持

2.1.2 单片机最小系统电路

单片机最小系统包括以下几个部分:

  1. 时钟电路:采用12MHz晶振,配合两个30pF电容,为系统提供稳定的时钟信号

  2. 复位电路:采用上电复位加按键复位方式,确保系统可靠启动

  3. 电源电路:采用5V直流电源供电,配合0.1μF去耦电容滤除高频干扰

2.2 显示模块设计

2.2.1 1602液晶显示屏介绍

1602液晶是一种字符型液晶显示模块,能够显示16列×2行共32个字符,其主要特点包括:

  • 内置HD44780控制器

  • 支持5×8点阵字符显示

  • 低功耗(工作电流约2mA)

  • 提供8位和4位并行接口模式

  • 内置字符发生器ROM,包含常用ASCII字符

2.2.2 1602与单片机的接口设计

1602液晶采用8位并行接口方式与单片机连接,主要信号线包括:

  • DB0-DB7:数据总线,连接至单片机P0口

  • RS:寄存器选择信号,高电平选择数据寄存器,低电平选择指令寄存器

  • RW:读写控制信号,本设计只使用写功能,直接接地

  • E:使能信号,由单片机控制

  • V0:对比度调节,通过10K电位器调节

2.3 存储模块设计

2.3.1 24C02 EEPROM介绍

24C02是Atmel公司生产的2Kbit(256×8)串行EEPROM存储器,具有以下特点:

  • 支持I2C总线接口

  • 工作电压范围宽(1.8V-5.5V)

  • 可进行100万次擦写操作

  • 数据保存时间超过100年

  • 支持页写模式(每页8字节)

2.3.2 24C02与单片机的接口设计

24C02通过I2C总线与单片机连接,主要信号包括:

  • SCL:串行时钟线,由单片机产生

  • SDA:串行数据线,双向通信

  • A0-A2:器件地址选择线,本设计全部接地,地址为0x50

由于51单片机没有硬件I2C接口,需要通过软件模拟I2C时序实现对24C02的读写操作。

2.4 输入模块设计

2.4.1 按键电路设计

系统共使用11个按键,分为两类:

  1. 功能按键(3个):

    • 开始/确认键

    • 返回/取消键

    • 模式切换键

  2. 游戏按键(8个):对应8个地鼠洞,当对应LED亮起时按下表示击中地鼠

按键采用独立式连接方式,通过10KΩ上拉电阻连接到单片机I/O口,未按下时为高电平,按下时为低电平。

2.5 输出指示模块设计

2.5.1 LED指示电路

系统使用9个LED灯模拟地鼠洞(实际游戏使用8个,1个备用),LED采用共阳连接方式,通过PNP三极管驱动。单片机I/O口输出低电平时LED点亮,输出高电平时LED熄灭。

2.5.2 蜂鸣器驱动电路

蜂鸣器采用电磁式有源蜂鸣器,通过NPN三极管驱动。当单片机相应I/O口输出高电平时,三极管导通,蜂鸣器发声;输出低电平时,三极管截止,蜂鸣器停止发声。

3. 系统软件设计

3.1 主程序流程设计

系统主程序采用状态机设计思想,主要状态包括:

  1. 初始化状态:完成各硬件模块初始化,加载存储的排名数据

  2. 主菜单状态:显示游戏、排名、退出三个选项

  3. 游戏准备状态:输入玩家名称,选择游戏难度

  4. 游戏进行状态:执行游戏逻辑,记录分数

  5. 排名显示状态:显示前几名玩家分数

  6. 退出状态:显示再见信息,准备关机

主程序通过检测按键输入和定时器中断实现状态切换和游戏逻辑处理。

3.3 游戏逻辑设计

3.3.1 游戏难度设置

游戏提供三个难度级别,通过以下参数区分:

  1. 初级:地鼠出现间隔1.5秒,停留时间1秒

  2. 中级:地鼠出现间隔1秒,停留时间0.7秒

  3. 高级:地鼠出现间隔0.7秒,停留时间0.5秒

3.3.2 分数计算规则

游戏分数计算遵循以下规则:

  • 击中一个地鼠得10分

  • 连续击中额外奖励5分(最多连续奖励3次)

  • 误击(按下无地鼠的洞)扣2分

3.3.3 游戏时间控制

游戏总时长为60秒,通过定时器中断实现精确计时。每秒钟更新一次时间显示,时间归零时游戏结束。

3.4 数据存储设计

3.4.1 玩家数据结构

每个玩家记录包含以下信息:

  • 名称:4个字符

  • 分数:16位无符号整数

  • 日期:6字节(年月日各2字节)

3.4.2 24C02存储管理

24C02的256字节存储空间按如下方式组织:

  • 前16字节:存储系统配置信息

  • 后续每10字节存储一个玩家记录,最多可存储24个记录

3.4.3 排名更新算法

当游戏结束时,系统执行以下步骤更新排名:

  1. 从24C02读取所有玩家记录

  2. 将新记录插入到适当位置

  3. 如果记录超过24条,删除最低分记录

  4. 将更新后的记录写回24C02

4. 系统仿真设计

4.1 Proteus仿真环境搭建

4.1.1 仿真元件选择

在Proteus仿真环境中,需要添加以下元件:

  1. 单片机:AT89C51或AT89C52

  2. 显示模块:LM016L(1602液晶仿真模型)

  3. 存储芯片:24C02C

  4. 输入元件:BUTTON按键

  5. 输出元件:LED-YELLOW、BUZZER

4.1.2 仿真电路连接

仿真电路按照实际硬件连接方式进行设计:

  1. 单片机P0口连接1602数据线

  2. P2.0-P2.2连接1602控制线(RS、RW、E)

  3. P1.0-P1.7连接8个游戏按键

  4. P3.0、P3.1连接24C02的SDA、SCL

  5. P3.2-P3.4连接功能按键

  6. P2.3-P2.5连接LED驱动电路

  7. P3.7连接蜂鸣器驱动电路

4.2 仿真测试方案

4.2.1 模块功能测试
  1. 1602显示测试

    • 验证各显示界面能否正常显示

    • 检查光标定位是否准确

    • 测试字符串显示功能

  2. 24C02存储测试

    • 验证玩家记录写入和读取功能

    • 测试排名更新逻辑

    • 检查数据断电保存功能

  3. 游戏逻辑测试

    • 验证地鼠随机出现算法

    • 测试分数计算准确性

    • 检查游戏时间倒计时功能

4.2.2 系统集成测试
  1. 菜单导航测试

    • 测试各菜单项之间的切换

    • 验证功能按键响应

  2. 完整游戏流程测试

    • 从主菜单进入游戏

    • 输入玩家名称

    • 完成游戏过程

    • 查看排名更新

  3. 边界条件测试

    • 测试分数溢出情况

    • 验证存储空间满时的处理

    • 检查极端游戏难度下的系统响应

4.3 仿真结果分析

通过Proteus仿真,可以观察到以下系统行为:

  1. 正常游戏流程

    • 系统能够正确显示各界面

    • 按键响应及时准确

    • 游戏分数计算正确

    • 排名更新符合预期

  2. 异常情况处理

    • 按键抖动被有效滤除

    • 存储错误能够被检测并处理

    • 系统不会因为异常输入而崩溃

  3. 性能表现

    • 游戏响应时间满足实时性要求

    • 显示刷新率足够高,无闪烁现象

    • 随机数生成算法分布均匀

仿真结果表明,系统设计满足功能需求,各模块协同工作正常,为实际硬件实现提供了可靠参考。

源文件下载 

资源- 基于单片机的打地鼠游戏设计https://www.bilibili.com/video/BV11kZiYAEsV/关注公众号-电子开发圈,首页回复“游戏” 获取

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐