数字音乐盒的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆大学本科学生课程设计
数字音乐盒的设计
学生:
学号:
指导教师:
专业:机械电子工程
重庆大学机械工程学院
二O一五年一月
重庆大学本科学生课程设计任务书
我的主要任务:
主程序的设计和调试
(即第五章的内容)
目录
摘要 (1)
第一章音乐盒总体设计 (2)
1.1 设计功能要求 (2)
1.2 总体设计原理 (2)
1.3 总体设计框图 (3)
第二章系统软件设计 (4)
2.1 编程语言的选择 (4)
2.2 系统程序设计 (4)
2.2.1 主程序流程图 (4)
第三章硬件接线图及原理 (6)
3.1硬件设计 (6)
3.1.1 硬件电路 (6)
3.1.2原理说明 (6)
第四章音频脉冲产生 (7)
1.节拍的定义 (8)
2.节拍的产生 (9)
3、码表 (10)
第五章程序设计 (11)
第六章收获与体会 (15)
附录 (16)
摘要
为了实现单片机控制音乐播放,此次课程设计做出了尝试,即数字音乐盒的设计。本设计采用了蜂鸣器发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲。现选用AT89C51单片机。
主要设计模块包括蜂鸣器发声部分。。蜂鸣器由单片机的P1.7口控制,实现歌曲播放;彩灯是由普通发光二极管代替,能实现单色长亮和闪烁效果。
主要工作过程是通过按下开关键实现循环播放。
此次设计要利用单片机及KeilC51编程软件编程和PROTEUS单片机仿真软件和电子电工等方面知识。用KeilC51编程软件编程,用PROTEUS单片机仿真软件仿真。最后制作实物,将程序下载到单片机中,利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。
关键词:AT89C51单片机;方波; 音调
第一章音乐盒总体设计
1.1 设计功能要求
当开关按下时,判断开关状态,启动定时器T1,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
2、歌曲《两只老虎》
1.2 总体设计原理
通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。如中音D0,频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时1912/2=956,在每计数956次时将I/O口反相,就可得到中音D0(523HZ)。
当开关按下时,判断开关状态,启动定时器T1,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
1.3 总体设计框图
单片机接+5V 电源供电,晶振电路产生单片机所需时钟信号,通过功能键产生外部中断,再由I/O 接口输出控制蜂鸣器发声,LED 显示,在程序出错时,重新启动单片机工作。
→
↓ →
→
编程设置好定时时间,通过编程器写入AT89C51单片机系统。由AT89C51单片机的定时器每秒钟通过P1.7口控制蜂鸣器。电源,晶振部分,单片机,蜂鸣器部分后面均有详细介绍。
第二章系统软件设计
2.1 编程语言的选择
基于单片机的交通灯控制这次采用汇编语言编程,它是一种面对机器的语言,可以直接控制硬件的语言。因为这次还要进行硬件连接,所以可以方便控制各个硬件接口如I/O接口,并且目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。具有保持了机器语言的优点,具有直接和简捷的特点。
就是因为汇编语言的这些特点,所以70%以上的系统软件是用汇编语言编写的。例如某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。很多高级绘图程序、视频游戏程序是用汇编语言编写的。
所以汇编语言是我们理解整个计算机系统的最佳起点和最有效途径,通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。单片机烧录的代码,用来编程单片机。
2.2 系统程序设计
2.2.1 主程序流程图
开始要定义音频输出端口,歌曲总数以及每首歌曲的入口地址;然后对定时器初始化,确定工作方式,赋初值,开放中断,启动定时器工作;对音频输出端口初始化;设置音节起始位置和节拍间距,把音节和节拍的入口地址信息存放在固定存储单元中;将取出的音符数+节拍数保存在存储单元中,查询音乐的节拍表;
程序流程图如下:
《两只老虎》程序流程图
第三章硬件接线图及原理
3.1硬件设计
3.1.1 硬件电路
本设计中用到89C51单片机,蜂鸣器,电源。
3.1.2原理说明
开关按下时,判断开关状态,启动计数器T1,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。
1.用p1.7控制蜂鸣器。
2.电路为12MHZ晶振频率工作,起振电路中C1,C2均为30pf
第四章音频脉冲产生
要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲
利用8051的内部定时器使其工作在计数器模式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;要产生的频率
起记数值的求法如下:
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
对应不同音调的音符频率表