单片机八音盒设计知识讲解

  • 格式:doc
  • 大小:146.00 KB
  • 文档页数:19

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机八音盒设计

黑龙江工业学院

单片机综合实训报告

院系:电气与信息工程系

专业班级:电气工程及自动化本(三)姓名:陈强

学号:04991303037

指导教师:魏喜雯

报告成绩:

1、设计目的

(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、芯片选择、模块化编程等多项知识。

(2)用单片机模拟实现具体应用,使个人设计系统能够真正使用。

(3)把原理和实践相结合,充分发挥个人和团体的合作能力,并在实践中得到锻炼。

(4)提高利用已学知识分析和解决问题的能力。

(5)利用AT89C51单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。

2、设计任务要求

本设计利用AT89C51单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。本设计可以学习AT89C51定时器程设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。

其基本功能为:

(1)使用数码显示管来显示目前演奏的歌曲编号;

(2)具有8个按键操作来选择演奏哪一首歌曲;

(3)内建8首歌曲旋律,按下单键可以演奏歌曲。

3、设计方案选取与论证

(1)选用Keil软件和Protues软件,选用AT89C51单片机,它有4kB内部ROM,2个定时/计数器,5个中断源。

(2)通过中断实现歌曲的播放和暂停。

(3)通过定时实现LED闪烁和音乐频率的变化。

(4)通过按键实现歌曲的选择。

3.1八音盒的发音原理

一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

3.2音符频率的产生

3.2.1音符及定时器初始值:

μ。定时器/计数例如:中音1(do)的音频=523HZ,周期T=1/523s=1912s

μ=956sμ。定时器956sμ的计数值=定时时间器0的定时时间为:T/2=1912/2s

μ/1sμ=956(时钟频率=12MHZ)。装入T0计数器初值为65536-/机器周期=956s

956=64580。

将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表2-1是C调各音符频率与计数初值T的对照表:

表2-1 C调各音符频率与计数初值T的对照表

3.2.2音符、音符编码及定时器初始值:

为了产生音符,必须求出音符低音5—高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-

500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。

表2-2 音符编码表

3.2.3节拍频率的产生、节拍的产生与编码:

音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。

表2-3 节拍数编码表

表2-4 乐谱节拍编程时的时间延时表

音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。

4、硬件电路设计

4.1 总体设计框图

本设计中用到了AT89C51单片机,8个开关,扬声器,数码管等硬件电路常用元器件。

4.2 晶振与复位电路

晶振电路为系统提供基本的时钟频率信号,它结合单片机内部电路产生所需的时钟频率。

复位电路由单片机XTAL1、 XTAL2引脚外接晶振(12MHz)及起振电容

C1、C2(均为30pf)组成。当复位按钮按下时,内存和相关的寄存器,计数器,计时器所具有状态表示的器件全部被复位,回到初始状态。(如下图所

示)

4.3 按键输入电路

按键输入电路由8个开关组成, P1口作为输入控制按键。

4.4 输出显示电路

用P0.0~P0.7作为数码管的D0~D7的控制信号。由于P0口作为输出,应加上拉电阻。用P2.0口控制发光二极管以及扬声器。

5 、仿真过程及仿真结果

6、心得体会

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

对于我们这些工科学生来说,这是一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会