找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6826|回复: 0
打印 上一主题 下一主题
收起左侧

基于STC89C52单片机的可控数字音乐盒的程序设计

[复制链接]
跳转到指定楼层
楼主
ID:243379 发表于 2017-10-27 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.1 课题背景  
目前,单片机正朝着高性能和多品种方向发展,发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。  
本设计是以STC89C52芯片的电路为基础,加上蜂鸣器、液晶显示器等,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值。
1.2 单片机数字音乐盒有关介绍
发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。  
音符的发音主要靠不同的音频脉冲。利用单片机内部定时器/计数器0,使其工作在模式1,定时中断,然后控制引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
1.2.1 歌曲简谱的编码规则
do re mi fa so la si分别编码为1~7。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。
举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。
举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22。
歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。
1.2.2 确定定时器0对应于音调的初值
不同的音调对应着不同的物理频率,而若要产生一定频率的声音,我们只需用一定频率的方波来驱动蜂鸣器即可。对于固定频率的产生方法,本系统中用定时器0设置为工作方式1(TMOD=0x01),对不同的音调依据频率装入对应的计数初值,定时器计数完时将输出端取反(编程中采用异或),进而产生对应的方波。具体计算如下:  
如对于低音SO,其频率为392HZ,我们实验中采用的为12M晶振,因此机器周期为1us,那么该音调对应的计数初值为:65536-1000000/(2*392)=65536-1276=64270  
解释:由于工作方式0中计数器的THO和TL0所有位均用于装载计数初值,因此最大计数值为256*256=65536,周期为1x 10^6 -s,频率为392HZ,每定时一次对 输出取反,因此计数初值应除以2。

数字音乐盒设计.doc

1.59 MB, 下载次数: 107, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表