08-51_可调音乐闹钟_仿真
基于51单片机的可调音乐闹钟系统
定时闹铃 · 音乐播放 · 按键调时 · LCD显示
一、项目简介
本项目设计了一个带音乐播放功能的可调闹钟。系统除了基本的电子时钟功能外,还支持设定闹钟时间,到点后播放音乐旋律提醒。音乐通过单片机IO口驱动蜂鸣器,利用不同频率的方波产生不同音调,按节拍组合成旋律。
闹钟功能包括:当前时间显示、闹钟时间设定、到点音乐提醒、按键停止闹铃。音乐播放采用定时器产生不同频率方波,通过音符数组定义旋律,每个音符包含频率和持续时间。系统可预设多首音乐旋律,按键切换选择。
项目属性 | 说明 |
主控平台 | AT89C52(Proteus仿真) |
开发语言 | C语言 |
开发环境 | Keil C51 / Keil MDK |
仿真工具 | Proteus(部分项目) |
图1-1 系统整体效果图
二、系统总体架构
本系统以单片机为核心,外围连接传感器、显示模块、按键模块和执行机构。系统总体架构如下:单片机通过相应接口与各外设通信,采集传感器数据后进行处理,结果输出至显示模块,同时根据逻辑控制执行机构动作。
图2-1 系统总体架构框图
模块 | 功能描述 |
主控模块 | 系统核心,负责数据采集、逻辑处理和输出控制 |
传感器模块 | 采集环境参数(温度/光照/按键输入等) |
显示模块 | LCD1602/OLED实时显示数据和状态 |
按键模块 | 用户输入,参数调整和模式切换 |
执行机构 | 蜂鸣器/LED/电机等,执行报警和驱动动作 |
三、硬件设计
3.1 核心器件选型
器件 | 型号 | 说明 |
主控芯片 | AT89C52 | Proteus仿真 |
蜂鸣器 | 无源蜂鸣器 | 播放音乐旋律 |
液晶显示屏 | LCD1602 | 显示时间和闹钟设置 |
独立按键 | ×4 | 调时/调分/设定闹钟/停止 |
图3-1 核心器件实物图
3.2 引脚分配
单片机各引脚分配如下表所示,在设计时需注意引脚复用和电平匹配问题:
引脚 | 连接 | 功能描述 |
P1.0 | BUZZER | 蜂鸣器(PWM驱动) |
P1.1~P1.4 | KEY1~KEY4 | 调时/调分/闹钟设定/停止 |
P2.5~P2.7 | LCD控制 | LCD1602 |
P0 | LCD数据 | LCD1602 |
图3-2 引脚分配电路原理图
四、软件设计
4.1 软件流程
定时器T0用于时钟计时(1ms中断),T1用于音乐频率产生。主循环维护当前时间和闹钟时间,当两者匹配时启动音乐播放。音乐播放函数根据音符数组依次设置T1的重装值产生对应频率方波,每个音符持续对应节拍时间。按停止键可中断播放。
图4-1 主程序流程图
4.2 模块划分
源文件 | 模块名称 | 功能描述 |
music.c | 音乐播放 | 音符频率表、旋律播放、节拍控制 |
lcd1602.c | LCD驱动 | 显示 |
timer.c | 定时器 | 时钟计时+音乐频率产生 |
main.c | 主程序 | 时钟、闹钟判断、音乐播放、按键 |
4.3 关键代码
以下代码均从项目工程源文件中直接提取,完整展示了各模块的核心实现:
📄 main.c




📄 LCD1602.c




📄 MatrixKey.c



📄 Timer0.c

五、项目文件结构
项目工程的目录结构如下,展示了源代码文件的组织方式:

六、功能演示
系统功能演示步骤如下:
1. LCD显示当前时间"12:00:00"
2. 按设定键进入闹钟设置,调时调分设定闹钟为12:01
3. 时间到达12:01时蜂鸣器播放音乐旋律
4. 按停止键关闭闹铃
图6-1 功能演示照片/截图
图6-2 运行状态特写
七、总结
本项目将电子时钟和音乐播放巧妙结合,利用定时器产生不同频率方波实现音调控制。音符-频率对照表是音乐播放的核心数据结构。项目涵盖了定时器、中断、IO控制等多个知识点。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
— END —

浙公网安备 33010602011771号