音乐盒设计(单片机课程设计)1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要 (1)
第一章设计方案的对比 (2)
第二章总体方案设计 (3)
2.1 原理简介 (3)
2.2 方案设计思想 (3)
第三章方案实现 (4)
3.1、音频脉冲的产生 (4)
3.2.音乐节拍的生成 (5)
3.3.建立音乐的步骤 (5)
第四章硬件设计 (6)
4.1 硬件电路 (6)
4.1.1、AT89C51的工作特性 (6)
4.2 原理说明 (7)
4.3 电路各模块说明 (7)
4.3.1 键盘系统 (7)
4.3.2 放大电路 (8)
4.3.3 时钟电路 (9)
4.3.4 复位电路 (9)
5.3.5 显示电路 (10)
第五章软件设计 (11)
5.1 主模块的设计 (11)
第六章仿真、安装和调试 (13)
总结 (14)
致谢 (15)
参考文献 (15)
附录 (16)
附录一:音乐程序 (16)
附录二:基于单片机的数字音乐盒总电路图 (33)
摘要
本设计是基于单片机的数字音乐盒设计,由单片机AT89C51芯片和LCD显示器为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。要求利用I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用LCD显示信息,从而演奏乐曲(最少三首乐曲,每首不少于30秒),开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。
本设计采用4*4键盘,用Protel99来画系统硬件图,采用汇编语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。该音乐盒的设计可以通过按键选择不同的曲目,播放和暂停,并通过LCD显示歌曲号及播放时间。
本设计键盘采用动态扫描方式。每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。同时启动定时器T1,计算音乐的播放的时间。
关键词:数字音乐盒AT89C51 LCD显示器Proteus软件4*4键盘动态扫描 KEIL C5
第一章 设计方案的对比
方案一:本设计以89C51为核心,配合键盘系统,放大电路,时钟电路和数码管显示电路实现音乐的演奏。音乐盒设计采用独立的键盘做为音符的输入以89C51为核心。
本设计中用到了89C51单片机,4*4矩阵式键盘,蜂鸣器,14引脚的LCD ,可以通过以下原理框图(图1.1)来实现该音乐盒的设计。
方案二:该方案以AT89S52单片机为核心,主要设计模块包括数码管显示部分,功能键盘部分,蜂鸣器发声部分,彩灯部分。数码管采用共阳极数码管,通过单片机P1口控制,实现歌曲序号的显示;功能键盘采用1*8键盘按键开关,通过单片机P3口控制,实现歌曲播放顺序的调换和暂停播放功能;蜂鸣器由单片机的P2口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效。
综上所述:由于方案一的琴键输入是通过独立式键盘来完成的,这样便于控制且直观。且本方案是采用我们所熟知的单片机类型和显示电路,便于我们理解。而方案二中其他电路部分与方案一相差不大,但系统实现比较困难。且主控芯片采用的是我们少用的AT89S51,所以我们选择方案一。
图1.1 系统结构框图
琴键电路
放大 电路
P0.0 | P0.7
P3.7
时钟电路
复位电路
单片机
89C51
显示电路
第二章总体方案设计
2.1 原理简介
当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号。
2.2 方案设计思想
(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲
(2)利用8951的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。
记数脉冲值与频率的关系公式如下:
N=Fi/2/Fr N:记数值
Fi:内部计时一次为1微秒.故其频率为1MHZ
Fr;要产生的频率
(3):起记数值的求法如下:
T=65536-N=65536-Fi/2/Fr
例如:设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音D0的T=65536-500000/262=63627
中音D0的T=65536-500000/523=64580
低音D0的T=65536-500000/1047=65059
第三章 方案实现
3.1、音频脉冲的产生
对于音乐盒而言发出悦耳的音乐是其最主要的功能,那么对于使用单片机来制作出来的音乐盒怎么实现音符的发声呢?
通过查看资料我们知道音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制引脚的输出音乐(本实验采用P1.0做为输出引脚)。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对I/O 反相,就可在I/O 脚上得到此频率的脉冲。
具体做法如下所示(以中音DO 为例):
例如:中音1(DO )的音频= 523HZ,周期T=1/523s=1912s μ 定时器/计数器0的定时时间为:T/2=1912/2s μ=956s μ
定时器956s μ的计数值=定时时间/机器周期=956s μ/1s μ=956(时钟频率=12MHZ)
装入T0计数器初值为65536-956=64580
将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P1.0引脚的输出值进行取反,就可得到中音DO (523HZ )的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表3-1是C 调各音符频率与计数初值T 的对照表: