文章目录
- 题目要求
- 如何根据简谱编曲
- 仿真图
- 代码介绍
- 宏定义部分
- 全局变量部分
- LCD 控制函数
- 按键检测和处理函数
- 蜂鸣器控制函数
- 主函数部分
- 获取代码和仿真
题目要求
86
数字音乐盒的制作
1
设计要求
制作一个数字音乐盒,盒内存有3首乐曲,每首不少于30s。采用LCD显示乐曲信息,
开机时有英文欢迎提示字符,播放时显示歌曲序号及名称。1可通过按下功能键K1、K2、K3
之一,选择3首乐曲中的1首;然后按下播放键K4,即开始播放所选择的乐曲;K5键为暂
停。
原理说明
利用I/0口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。音
乐的播放原理请参考上题。
如何根据简谱编曲
https://qq742971636.blog.csdn.net/article/details/107528580
仿真图
代码介绍
这段代码实现了一个数字音乐盒,具有以下功能:
-
LCD 显示功能:使用 LCD 屏幕显示欢迎信息和当前播放的歌曲信息。
-
按键检测和处理功能:通过按下不同的按键选择并播放不同的音乐,还可以暂停播放。
-
蜂鸣器功能:根据预设的音乐频率和节拍播放音乐。
现在让我们来逐步介绍代码的各个部分和功能。
宏定义部分
这部分定义了一些常量、频率、延时函数以及音乐的频率和节拍等信息,便于后续使用。
全局变量部分
这部分定义了一些全局变量,如音乐索引、播放标志等,用于控制音乐播放状态。
LCD 控制函数
这些函数用于初始化 LCD 屏幕、向 LCD 屏幕写入指令或数据、设置光标位置以及显示字符和字符串等操作。
按键检测和处理函数
get_key()
函数用于检测按键输入,返回按下的键值。delay_key()
函数根据按下的键值进行相应的处理,如选择音乐、播放、暂停等。
蜂鸣器控制函数
set_fre()
函数用于设置蜂鸣器的频率,根据传入的频率来调节蜂鸣器的声音。BEEPCLOSE
宏用于关闭蜂鸣器。
主函数部分
-
初始化:配置端口方向,初始化 LCD 屏幕,设置蜂鸣器模式等。
-
欢迎信息显示:在 LCD 屏幕上显示欢迎信息,持续一段时间后清除。
-
按键检测和音乐播放:进入主循环后,持续检测按键输入,根据按键的不同选择播放对应的音乐。根据当前选择的音乐索引,通过循环播放预设的音符和节拍。
-
蜂鸣器控制:在播放音乐时,根据预设的频率和节拍控制蜂鸣器的声音。
-
LCD 显示更新:根据当前播放的音乐信息更新 LCD 屏幕的显示内容。
整体结构清晰,功能模块化,便于理解和维护。
获取代码和仿真
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2