**单片机设计介绍
一 概要
本文设计了一款基于STC89C52单片机的音乐盒,首先根据流程图总体介绍了本次设计所需要的模块电路,再分开一个一个介绍,第一个介绍了我们的软件部分分为我们的音乐程序以及LCD显示屏的初始化的一个设计,第二就要介绍硬件部分分为时钟振荡电路,复位电路,蜂鸣器电路,LED闪烁模块和LCD显示模块。最后我们会利用Proteus软件对本次的设计进行仿真。首先功能上实现读取乐谱上的信息并转化为单片机可用数据,通过驱动蜂鸣器实现音乐的播放。同时在液晶屏上显示音乐的相关信息。
关键词:数字音乐盒;单片机;蜂鸣器;LCD。
二、音乐盒设计框图及流程
如图1和图2所示为音乐盒的设计框图和流程图。它是以STC89C52单片机为核心,有时钟振荡电路,复位电路,蜂鸣器电路以及LCD显示屏所组成的。
图1音乐盒设计框图
图2音乐盒设流程图
三、 电路设计总图
四、系统软件设计
4.1音乐设计程序
已知不同的音调有着不一样的频率。每个音调都有着不同的时间周期常数。用定时器T0对单片机进行定时,通过输出不同周期的方波给蜂鸣器来控制,发出需要的音调,从低音到高音每一个音调都有定时器T0对应的一个初值。由此当晶振为12MHz时可以列出音调与定时器T0初值的表3:
表3 音调-频率-初值关系表
通过表4.1音调,频率和初值的关系表我们可以读出歌曲简谱上的每一个音符对应的音调以及定时器T0的初值,当从初值计数到二的十六次方也就是65526这个最大值的时候让定时器T0溢出,从而可以得到音调频率通过在单片机某个管脚信号上产生的,这时候我们可以再通过单片机所连接的蜂鸣器内部金属片的碰合断开来实现发声。任何一段音乐需要音调也同样所需要的是节拍,我们想要不同的节拍是可以根据通过延时的方法来产生的,如果一拍为0.16s,那么四分之一拍为0.4s,我们想要节拍时间就设定延时时间。如下表4就是四分之一拍和八分之一拍的一个设定。
表4 1/4和1/8节拍设定
我们要提前把音符找出来在我们在编写程序之前,然后再去找到音符所对应的简谱码和对应的初值建立节拍关系每一个字节都会被音符使用。在本设计中利用到延时函数用来控制每一个音符的时长,每一个延时函数都可以用十六分的音符的时长来表示,并且以此来做为一个标准去