摘要
本文设计了一款基于STC89C52单片机的音乐盒,首先根据流程图总体介绍了本次设计所需要的模块电路,再分开一个一个介绍,第一个介绍了我们的软件部分分为我们的音乐程序以及LCD显示屏的初始化的一个设计,第二就要介绍硬件部分分为时钟振荡电路,复位电路,蜂鸣器电路,LED闪烁模块和LCD显示模块。最后我们会利用Proteus软件对本次的设计进行仿真。首先功能上实现读取乐谱上的信息并转化为单片机可用数据,通过驱动蜂鸣器实现音乐的播放。同时在液晶屏上显示音乐的相关信息。
关键词:数字音乐盒;单片机;蜂鸣器;LCD。
引言
世界上非常著名的音乐家贝多芬曾经说过:“音乐应当使人类的精神爆发出火花,音乐比一切智慧、一切哲理都具有更高的启示。”任何只要有人类足迹的地方,就会有着音乐存在。音乐是无处不在的,它与人们的生活紧密相连,密不可分。人们陶冶情操的一个非常好的方式就是听音乐。世界上最早出现的音乐盒就是由瑞士的安托法布尔在1796年所发明出来的,他实际上就是一个钟表匠,它所发明的这个最早的音乐盒是属于机械发音乐器,它的工作原理其实是通过转动音乐盒内部的链环便可以自动的发出美妙的音乐。目前在上海的八音盒珍品陈列馆内收藏着这项最早的音乐盒古董。在当时音乐盒非常受大家的喜爱,如果想要了解音乐盒的历史就要追溯到文艺复兴时期,那时候的人们都将各种各样的的表都装上了机械装置为了能够给当时的教会的钟塔报时,当时称这个为可发出声音的组钟。但是我国史书中最早记录的八音盒其实是在1598年由一个意大利的人带到了中国,但是直到1992年我国的第一台具有知识产权的八音盒才真正的诞生。音乐盒具有它独特的魅力,尤其是在过去大家都疯狂的追求音乐盒,每当音乐盒响起美妙的音乐人们就会开始情不自禁的对过去的美好事物回忆,它甚至都会令人们魂牵梦萦。音乐盒所存在的独特的魅力是在于它能够将抽象的音乐凝固起来成为一种艺术品。我们一般会用天然蛋壳材质,水晶,玻璃,金属,塑胶,树脂,贝壳,甚至还有骨头等来制作音乐盒,木质和水晶的是比较受欢迎的,大家都可以通过自己的选择和喜好对音乐盒进行制作选择。现如今随着科技的飞速发展,电子技术开始了一段非常辉煌的时期,每一个领域都会涉及到其产生的电子产品,单片机就在其中发挥着非常重要的作用。它可以与传统的机械产品相结合,使传统的机械产品结构简单化、控制智能化,构成了新一代的机电一体化产品。例如:家用电器、办公设备、机床设备、纺织机械等工业设备。单片机在人工智能、自动控制、通信领域以及智能化家用电 器等方面都被广泛应用。我们就可以把单片机和音乐盒相结合,在一块小芯片就可以实现单片机的大部分功能并且它还具有一个完整的计算机所需要的部件。我们本次设计的音乐盒主要由STC89C52单片机,蜂鸣器电路,12864LCD显示电路这几部分来组成。
第1章 音乐盒设计框图及流程
如图1和图2所示为音乐盒的设计框图和流程图。它是以STC89C52单片机为核心,有时钟振荡电路,复位电路,蜂鸣器电路以及LCD显示屏所组成的。
第2章 系统硬件设计
2.1单片机内部结构
STC89C52 是一种耗能低、性能高CMOS8位微控制器,它基本都是51内核的种类,是新一代增强型单片机,具有8K在系统可编程Flash存储器,加密性好,抗干扰强。STC89C52具有的可编程的Flash是8k字节的,I/O 端口线为32位,内部RAM有256个字节,具有一个看门狗定时器,拥有的中断结构是6向量2级的,含有的数据指针为两个,内部含有的16位定时器/计数器有三个,并且是全双工串行口,单片片内部含有晶振电路以及时钟电路。拥有灵巧的8位cpu,这样能够使得单片机为很多的系统提供非常灵活非常高效的解决办法。
40引脚的VCC是电源电压,20引脚的VSS是接地。其中P0口是一个的双向I/O口并且拥有八位漏极开路。当他作为一个输出端口的时候,每一位都能够驱动8个逻辑电平。当该引脚被当作高阻抗用来输入的时候P0端口应该为高电平。并且P0端口也同样是可以被用作为低8位的地址/数据但使用的前提应该要是在访问外部程序和数据存储器的时候。P1.0和P1.2端口分别作定时器/计数器2的外部计数输入和时器/计数器2 的触发输入,具体可以看下表1。在flash编程和校验时,P1口接收低8位地址字节。
表1 P1.0和P1.1引脚复用功能
引脚号 | 功能特性 |
P1.0 | T2(定时器/计数器2外部计数输入) |
P1.1 | T2EX(定时器/计数器2捕获/重装触发和方向控制) |
四个TTL的逻辑电平是能够被P2口输出缓冲器所驱动。当端口内部的电阻被拉高并且端口为高电平的时候,这个时候就可以作为一个输入端口来使用,并且会有八个负载能够被引脚驱动。想要电阻有效就需要P0口的复用总线。当在访问外部程序存储器的时候,P2口输送的地址是高八位的。P3口也是一个双向I/O 口也是具有内部电阻的并且是八位,同样四个TTL的逻辑电平是能够被它的输出缓冲器所驱动。同时P3端口也可以作为一种特殊功能在STC89C52的使用,如表2所示。
表2 P3口引脚复用功能
引脚号 | 复用功能 |
P3.0 | RXD(串行输入口) |
P3.1 | TXD(串行输出口) |
P3.2 | (外部中断0) |
P3.3 | (外部中断1) |
P3.4 | T0(定时器0的外部输入) |
P3.5 | T1(定时器1的外部输入) |
P3.6 | (外部数据存储器写选通) |
P3.7 | (外部数据存储器读选通) |
在复位输入当中RST是输入引脚,当该引脚出现高电平并且是两个机器周期以上的此外前提是振荡器在工作状态中,那么单片机复位。PSEN引脚就是程序存取器选择端,程序会从内部进行,当STC89C52由外部程序存储器取指令或数据的时候,机器周期要两次PSEN才会有效,就是要输出两个脉冲,在这当中,访问外部数据存储器时将直接跳过两次PSEN信号。
EA/VPP是最小系统31脚,想要让CPU仅仅只去访问外部程序存储器,EA端口必须保持低电平,当EA=1为高电平的时候,CPU访问的是内部程序存储器。而VPP是内部程序存储器擦除和写入的时候提供编程脉冲的端口。
2.2时钟振荡电路
如图3所示是时钟振荡电路图。它一般是由晶体振荡器,晶体控制芯片和电容一起组成的。时钟振荡电路是利用了晶体的压电效应,它的动作原理就是在内部晶体振荡器晶片的两面都加上一个交变电压的时候,他就会发生动作会反复的机械变形而产生振动,而这种动作又会反过来产生一定的反应那就是交变电压。好多有源晶振还需要一些温度补偿电路,加入温度补偿电路的目的就是为了让频率振荡的更加精准。外部时钟电路一般都还要附加在晶振上为了能够产生一定的振荡。所以我们一般还会用到一个放大反馈电路。晶振振荡器的等效电路也可以认为是一个LCR振荡电路。
图3 时钟振荡电路图
STC89C52单片机最高运作频率为35MHz,晶振为12MHz我们选用的姐弟电容为20pF到30pF之间的都可以,在本次设计中我们选用的是30pF的电容。52MCU的运行速度和其稳定性依赖于微控制器时钟频率,时钟电路直接关系到设备是否正常使用,本设计时钟电路采用的是内部时钟模式下,单片机有一个内部高增益反相放大器,通过接入外部晶体振荡器的另一端,片内是一个振荡电路反相放大器的输入端XTAL1,接入外部晶体振荡器的一端,片内是一个振荡电路反相放大器的输出端XTAL2,构成自激振荡电路。
2.3复位电路
如图4为复位电路,他是STC89C52单片机最小系统中另外一个重要组成部分。它都是用比较简单的电容串联电阻所构成的,电阻的一端接地,另一端接入单片机RST引脚并且和电容的一端相连,另一端则接入EA引脚。再复杂点就有三极管等来配合这个程序。复位电路是首先给电容充电,RST引脚会出现一段时间的高电平一段时间后会通过电阻进行放电过程,在这一段过程中RST引脚会保持高电平从而进行了复位操作。复位电路的目的是用来使电路恢复到初始状态,它的启动方式一是在给电路通电时马上就可以自动的进行复位操作;二是在必要时可以由我们的人为的手动操作;三是根据程序或者电路运行的需要它会自动的进行。目前为止,单片机复位电路主要有四种类型:微分型复位电路;积分型复位电路;比较型复位电路;看门狗型复位电路。当RST脚的高电平持续两个机器周期以上就可以实现复位。
图4 复位电路图
2.4蜂鸣器电路
如图5是蜂鸣器电路图,我们得知蜂鸣器的一端接了一个电阻接到了地,另一端接到了三极管的一端再接入单片机的P1.0引脚。 加入电阻那端的目的是为了保护这个电路,而另一端接入三极管原因在于要驱动蜂鸣器让他工作需要比较大的电流,而单片机的内部提供电流无法满足这个电流需求 ,所以我们使用三极管进行电流的放大,从而满足这个使蜂鸣器正常工作的一个电流需求。
图5 蜂鸣器原理图
蜂鸣器的发声原理是因为他的内部有两个金属片,当他们不断地碰合又分开,就会产生声音。蜂鸣器可以分有源蜂鸣器和无源蜂鸣器,最以前的的蜂鸣器都是无源的蜂鸣器,它的使用条件比较严格需要电和方波或着正弦波才能来驱动它使他工作,这就需要提供一定的方波给蜂鸣器,但是这样就会带来了不必要的麻烦,因为提供这样稳定的方波并不简单,所以我们后面为了操作简单在蜂鸣器内部放入了一个振荡器。而有源蜂鸣器也有一个缺点那就是它的频率是由内部的振荡器提供的而且这个频率还是一定的,无法变动。但是实际上,我们每次用不同的频率去操作蜂鸣器,也可以让它工作,所以通过这样的测试,我们可以知道无源的蜂鸣器是被包含在有源的蜂鸣器内的。我们可以通过控制蜂鸣器内部金属片的闭合和分开的时间来控制它的音调,也就是控制频率。蜂鸣器音量的大小由金属片的厚度、所给电流的大小等来提供的,但是现阶段我们无法使用软件来控制它,所以现阶段蜂鸣器声音的大小是无法控制的。
我们所需要注意的一点就是如果我们没有听到蜂鸣器的发声可能是因为这个频率的范围处于低于20Hz和高于2000Hz的。我们人的耳朵能听到的频率大概在20到2000Hz,所以这个地方我们需要注意。
我们不停地让金属片碰合再分开来实现蜂鸣器的发声。所以只要让蜂鸣器内部的金属片不再闭合分开就可以让它在通电状态下不发出声音。而我们让蜂鸣器唱歌就是利用他发声和不发声的时间长短来控制的。
蜂鸣器模块连接到单片机的P1.0口,当工作电压给蜂鸣器两端加上之后,蜂鸣器就可以发出声音了。我们可以利用到三极管Q1来使蜂鸣器的发声被电路来控制,当三机管处于开关状态的时候,要求它工作在截止区这就需要P1.0为高点平,蜂鸣器两端需要断开电源,这个时候就不会再发出声音;当三极管工作在饱和区的时候就要求P1.0口为低电平,这个时候发射极与集电极造成短路,从而使得蜂鸣器两端有电压然后可以发出声音。
2.5LCD显示电路
如图6是LCD显示模块,这里采用的是带中文字库的点阵型晶12864。如图字面可知有128个点可以在它的液晶范围的横向被显示,64个点同样的可以在它的液晶范围的纵向被显示。并且时钟频率为2MHZ。该芯片内部共有8192个中文汉字,常用的汉字都在其范围内,但是这不包含所有的文字所以比较偏的汉字就可以通过造字来实现。此模块需要在零摄氏度到五十五摄氏度的温度下工作,在零下二十摄氏度到零上六十摄氏度的温度范围内进行储存。每个汉字就会占据上16*16个点,所以8*4个汉字使能够在屏幕被一次性显示出来的最多的,还有很多控制芯片是液晶的。由于中国汉字的特殊性,我们这次设计会采用的是ST7920控制屏幕的显示,因为他会内部带有中文大字库,可以显示本设计所需要的很多信息。最终音乐盒在LCD显示屏幕上可以显示出来音乐信息,包括音乐的序号,音乐名称等。下面介绍一下该电路的引脚:和单片机一样,VSS是它的电源,VDD是正电源,它的电压输入端是V0-LCD,从DB0H/L到DB7H/L是数据0到7,这里强调的是空脚NC。它的低电源电压为+3到+5.5伏。在给IC1一定的指令之前,微处理器必须先确认它的内部是处于一种不忙碌得状态状态,在BF接受新的指令之前要读取BF时它的值为零;如果没有这样做没有检查BF,那么就必须要延长一段时间在上一个指令和这个指令之间,这段时间是在等待上一个指令完成。
图6 LCD显示原理图
第3章 电路设计总图
图7电路设计总图
第4章 系统软件设计
4.1音乐设计程序
已知不同的音调有着不一样的频率。每个音调都有着不同的时间周期常数。用定时器T0对单片机进行定时,通过输出不同周期的方波给蜂鸣器来控制,发出需要的音调,从低音到高音每一个音调都有定时器T0对应的一个初值。由此当晶振为12MHz时可以列出音调与定时器T0初值的表3:
表3 音调-频率-初值关系表
C调音符 | 低音 | 中音 | 高音 | |||
频率/Hz | TH TL | 频率/Hz | TH TL | 频率/Hz | TH TL | |
DO | 262 | F8 8C
(63628) | 523 | FC 44
(64580) | 1046 | FE 22
(65058) |
RE | 294 | F9 5B
(63853) | 587 | FC AC
(64684) | 1175 | FE 57
(65110) |
MI | 330 | FA 15
(64021) | 659 | FD 09
(64777) | 1318 | FE 85
(65157) |
FA | 349 | FA 67
(64103) | 698 | FD 33
(64820) | 1397 | FE 98
(65178) |
SO | 392 | FB 04
(64260) | 784 | FD 82
(64898) | 1568 | FE C1
(65217) |
LA | 440 | FB 90
(64400) | 880 | FD C8
(64968) | 1760 | FE E4
(65252) |
SI | 494 | FC 0C
(64524) | 988 | FE 06
(65030) | 1967 | FF 03
(65283) |
通过表4.1音调,频率和初值的关系表我们可以读出歌曲简谱上的每一个音符对应的音调以及定时器T0的初值,当从初值计数到二的十六次方也就是65526这个最大值的时候让定时器T0溢出,从而可以得到音调频率通过在单片机某个管脚信号上产生的,这时候我们可以再通过单片机所连接的蜂鸣器内部金属片的碰合断开来实现发声。任何一段音乐需要音调也同样所需要的是节拍,我们想要不同的节拍是可以根据通过延时的方法来产生的,如果一拍为0.16s,那么四分之一拍为0.4s,我们想要节拍时间就设定延时时间。如下表4就是四分之一拍和八分之一拍的一个设定。
表41/4和1/8节拍设定
1/4节拍 | 1/8节拍 | ||
曲调值 | 延时时间/ms | 曲调值 | 延时时间/ms |
4/4 | 125 | 4/4 | 62 |
3/4 | 187 | 3/4 | 94 |
2/4 | 250 | 2/4 | 125 |
我们要提前把音符找出来在我们在编写程序之前,然后再去找到音符所对应的简谱码和对应的初值建立节拍关系每一个字节都会被音符使用。在本设计中利用到延时函数用来控制每一个音符的时长,每一个延时函数都可以用十六分的音符的时长来表示,并且以此来做为一个标准去衡量其他音符时长,因此十六音符就是调用一次的时长,八分音符就是去循环去调用该函数两次,四分音符就是调用四次,二分音符就是循环调用该函数八次。
音符频率计算: T = 65536 – 1/Fr/2/MC
T:要算得的定时器初值
Fr: 各音阶对应的频率
MC: 一个机器周期所需的时间 ,11.0592MHz的晶振对应的机器周期为1.085μsEX:低音Do对应的频率为262,则T = 65536 – 1/2/1.085/262*(10^6)=63777,对应十六进制数为0xF921,分别写进TH0和TL0。音调和节拍关系处理:从简谱可以读出每个音符的音调和节拍存在数组中,每三个表示一个音符,每一个数字表示音符名1 2 3 4 5 6 7;第二个数字表示音调所在音区:0是重音,1是中音,2是高音;第三个数字表示延时函数的调用次数:1是16分音符调用次数,2是8分音符调用次数,4是4分音符调用次数,8是2分音符调用次数,16是全音符调用次数。而简谱到音乐的编码我们可以这样来表示数组第一个数字6表示第一个音符6,第二个数字是表示音符的音高,简谱上不带•的是2,表示第二个八度,简谱上面带•的是3,是第三个八度,简谱下面带•的是1,是第一个八度。第三个数字表示他的时长,通过这样就可以构成一个音乐的数组。
4.2LCD显示程序设计
如图8为LCD显示程序初始化过程,它需要在工作显示之前完成初始化,对数字汉字的一个完整确认输入,之后再通过单片机对他进行写指令或者数据。
图8 LCD显示程序初始化
本设计中LCD初始化过程会利用8位数据并行方式,向LCD在当DL为高电平,RE为低电平时候写入0x30的指令,0x30写入功能设定中。向LCD在DBC指令都为高电平的时候写入0x0f指令,等待时间大于100us,这是我们的显示开关控制指令。当全部清除指令之后,把0x01指令写入LCD,等待时间大于10ms,把0x06指令写入LCD,这时就进入了模式设置。完成初始化设置,根据控制端使用单片机向LCD写入指令或者数据。
第5章 结语
本次设计中我们主要由单片机电路,时钟振荡电路,复位电路,蜂鸣器电路和LCD显示电路着几大模块组成。我们首先根据音调节拍频率初值得关系来把我们选定的音乐来转换成我们做能够输入到单片机中的编码。我们通过单片机的P1.0口来和蜂鸣器连接,以及把LCD显示电路,复位电路和时钟振荡电路和单片机相连接,首先要通过复位电路RST引脚为高电平实现一个初始化过程,我们还要对LCD显示电路进行初始化过程,把我们在显示屏中所要显示的汉字从他的汉字库中调出来,当我们开始工作把乐谱的信息转换为单片机可用数据,通过驱动蜂鸣器实现音乐的播放,同时在液晶屏上显示音乐的相关信息。
参考文献
[1]李泉溪.单片机原理与应用实例仿真[M].北京:北京航天大学出版社,2009.8.
[2]孙惠芹.单片机项目设计教程[M],北京:电子工业出版社,2009,6;105-109.
[3]宗光华,李大寨.多单片机系统应用技术[M].北京:国防工业出版社,2003.10.
[4]赵振德.单片机原理及实验/实训[M].西安:西安电子科技大学出版社,2009;97-101.
[5]艾永乐,付子仪.数字电子技术基础[M].北京:中国电力出版社,2008;29-33.
致谢
在这过去的四年时间我非常感谢学校学院给予我的学习平台,感谢所有教过我的老师,他们不仅传授给我知识,更是让我从高中的一个懵懂的女孩变成了一个有想法有一定能力的一个女孩,人生道路会遇到的人很多,我也会记住这四年来给过我帮助的所有人,我也非常感谢我的论文指导老师,和他接触只有短短的几个月但是他的知识储备和认真严谨的工作作风让我感受颇多,我也会继续努力加油,成为更好的自己。
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:打字小能手,如若转载,请注明出处:https://www.447766.cn/chachong/67363.html,