1.绪论。
1.1课题概述。
基于单片机的****器可应用于***,mp4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"do"、"re"、"me"--等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的"****器",本**器可实现**、暂停、复位等功能。
为了体现乐曲**过程中的动态效果,增加了1只led,作随机闪烁以指示旋律的节奏。由于时间及条件限制,本设计实现了一种简单的****器,其核心器件采用at89c51单片机,本**器具有电路简单,功能强大,易于拓展等特点。在此基础上,可以添加按键,led显示屏等模块,实现切换歌曲,歌名显示,动感**屏等功能。
2.系统硬件原理及设计。
2.1硬件电路设计。
2.1.1设计目的。
设计一个****器,有三个按键及控制按钮:**/暂停、下一曲、上一曲;通过控制按钮控制单片机,**所要求的**,并通过放大电路和喇叭输出声音。同时通过led灯显示器,用来显示所选曲目,该显示器在****中关闭,一曲演奏结束时,或选曲时才显示曲目信息,从而利于操作。
2.1.2总体电路设计。
图1 总体电路图。
2.1.3单片机电路设计。
89c52单片机拥有4kb的片内rom和128b片内ram。rom和ram的片外寻址范围都是64kb,单片机拥有32个并行口和一个串行口,在89c52单片机中存在5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。如图2所示。
图2 89c52单片机。
通过txal1 与txal2输入时钟信号,通过p1.0~p1.7输出控制现实控制信号的显示,有p3.
2、p3.3与p3.5分别作为上一曲、下一曲和开始暂停的控制输入。
2.1.4显示电路设计。
显示电路是一个8位共阴极led数码管。 单片机的p1.0-p1.7分别与数码管的a、b、c、d、e、f、g、dp相连接。如图3所示。
2.1.5晶振时间电路设计。
晶振电路由两个30pf的电容和一个6mhz的晶体振荡器组成。如图4所示。节点1与单片机的xtal2相连接,节点2与单片机的xtal1相连接,从而为单片机提供时间信号,为**的**节拍控制提供基本时间单位:
当晶体振荡频率为定时器工作在方式1下时,若各音阶相对应的定时器计数初值为x,则可根据下式计算x:
图3 8位共阴极led灯图4 晶振电路。
2.1.6控制电路设计。
控制电路,键一与p3.2相连、键二与p3.3相连、键3与p3.
5相连。当电键按下时接口接低电平,从而实现对****器的控制。键一联通实现上一曲更换,键二联通实现下一曲更换,键三联通实现开始暂停操作。
如图5所示。
图5 复位电路。
2.1.7输出电路设计。
发声电路由数字扬声器连接p2.0接口实现**的输出,由控制电路发出操作指令后,单片机调用相应程序,并将**信号由p2.0口输出,通过驱动扬声器发出美妙的**。如图6所示。
图6 输出电路。
3. 系统软件设计。
3.1总体流程图。
主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定歌曲曲目后,数码管再进行显示。然后,子程序对是否**进行循环判断,得到**中断的指令后再进行**。
执行**后,关闭数码管显示并调用查表子程序进行****。在****的过程中,查表子程序循环判断**是否结束。当**结束时,程序跳转回曲目识别子程序。如图7所示。
图7 总体流程图。
3.2单片机音阶**实现。
音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。
将与扬声器连接的p1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。
音阶与频率的关系及如下表:
注:0表示简谱中的空拍。
表1 方式1下定时器的初值。
当晶体振荡频率为6.144mhz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为x,则可根据下式计算x:
音调的长短用节拍数表示(例如1/4拍、2/4拍、……不同节拍数的不同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设定为四分之一拍,节拍值只能是它的整数倍。
3.3单片机产生不同脉冲信号的原理。
1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期的时间再对i/o反相,就可以在i/o脚上得到此频率的脉冲。
2)利用8051的内部定时器使其工作在计数器模式mode1下,改变计数值th0及tl0以产生不同频率的方法如下:
例如,频率为523hz,其周期天/523 s=1912us,因此只要令计数器计时956us/1us=956,在每计数956次时就将i/o反接,就可得到中音do(532hz)。
计数脉冲值与频率的关系公式如下:
n=fi/2/fr
n:计数值,fi:内部计时一次为1us,故其频率为1mhz,fr:要产生的频率 )
3) 其计数值的求法如下:
t=65536-n=65536-fi/2/fr
计算举例:设k=65536,f=1000000=fi=1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的计数值。
低音do的t=65536-500000/262=63627
中音do的t=65536-500000/523=64580
高音do的t=65536-500000/1047=65059
4)c调个音符频率与计数值t的对照表如下表所示:
表2 c调各音符频率与计数值t的对照表。
(5)每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.
1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1delay,则1拍应为4delay,以此类推。所以只要求得1/4拍的delay时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
表3 节拍码对照表。
表4 各调节拍的时间设定表。
四分之一拍延时**设计:
1/4拍的延迟时间=187毫秒。
delay: mov r7,#
d2: mov r4,#
d3: mov r3,#
djnz r3,$
djnz r4,d3
djnz r7,d2
ret3.4****的实现。
3.4.1****库的建立方法。
1)先找出乐曲的最低音和最高音范围,然后确定音符表t的顺序。
2)把t值表建立在table1,构成发音符的计数值放在“table”。
3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“table”处。
4)音符节拍码00h为**结束标记。
3.4.2选曲。
在一个程序中,需要演奏两首或两首以上的歌曲时,****库的建立有两种方法:
1)将每首歌曲建立相互独立的音符表t和发音符计数值table。
2)在建立公用音符表t后,再写每首歌的发音计数值table中的**。
不管采用那种方法,每首歌曲结束时,在table中均需加上**结束符00h。
3.4.3歌曲的设计。
下面以歌曲《军港之夜》的设计为例,讲述歌曲在单片机中的实现。曲谱如下图所示:
图8 《军港之夜》乐谱。
从歌中可看出,最低音为低7si,最高音为高1do。根据**软件的设计方法,简谱对应的简谱码、t值、节拍数如表所示。
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...