音乐盒的设计
- 格式:doc
- 大小:368.00 KB
- 文档页数:24
音乐盒的设计
1技术要求
能够产生低中高三个音调的7个标准音阶DO,RE,M,FA,SO,LA,SI;并在按下相应的数字键的时候数码管显示相应数字;自选一首歌曲,查找到相关的乐谱,确定音阶和节拍,并编写相关的源程序是蜂鸣器能够播放出该歌曲。
2设计方案及实现
2.1 方案一
任务要求:以89s51为核心,根据设计指标设计电路的框图,画出电路逻辑图和装配图,查阅资料,确定所需各元器件型号和参数,自拟调整测试方法,并调试电路使其达到设计指标要求。
2.1.1方案设计
根据任务要求,可以通过以下原理图(图2-1)来实现该音乐盒的设计。
复位电路
琴键电路
P0.0
|
P0.7
P1.0
时钟电路
单片机
80c51
图2-1
本方案的琴键输入是通过独立式键盘来完成的,这样便于控制且直观,如上图设计原理所示我们可以画出比较直观的流程图如图 2-2所示。
图2-2
主流程图
中断程序流程图
N
Y
等待中断,判断是否中断
判断是否抖动
Y
居于上述流程图我们可以通过proteus软件画出该实验的原理图(图2-3):
图2-3
2.1.2方案实现
对于音乐盒而言发出悦耳的音乐是其最主要的功能,那么对于使用单片机来制作出来的音乐盒怎么实现音符的发声呢?
通过查看资料我们知道音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制引脚的输出音乐(本实验采用P1.0做为输出引脚)。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到
后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O 脚上得到此频率的脉冲。
具体做法如下所示(以中音DO为例):
例如:中音1(DO)的音频=523HZ,周期T=1/523s=1912
定时器/计数器0的定时时间为:T/2=1912/2=956
定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率
=12MHZ)
装入T0计数器初值为65536-956=64580
将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P1.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值
TH0,TL0以产生不同的频率。下表2-1是C调各音符频率与计数初值T的对照表:
表2-1 C调各音符频率与计数初值T的对照表
()()
2.1.2.1 详细参数
本实验以Intel公司的80c51为核心,配合键盘系统,放大电路,时钟电路和数码管显示电路实现音乐的演奏。
80C51:
高性能的静态80C51 设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器全部支持12 时钟和6 时钟操作P89C51X2 和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线 3 个16 位定时/计数器 6 输入4 优先级嵌套中断结构 1 个串行I/O 口可用于多机通信I/O 扩展或全双工UART以及片内振荡器和时钟电路。此外,由于器件采用了静态设计,可提供很宽的操作频率范围,频率可降至0 。可实现两个由软件选择的节电模式,空闲模式和掉电模式,空闲模式冻结CPU但RAM定时器,串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作。由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复。
键盘系统:
键盘系统的链接电路图如图2-31所示:
图2-31
当用手按下一个键时,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。具体编码如下所示
MAI: CLR TR0 ;关闭上一次定时,进入下一次按键判
断
MOV TMOD, #01H
MOV IE, #82H
MOV A, P1
MOV 30H, A;保存键盘状态值
LCALL D10MS ;延迟10ms消除抖动
MOV A , P1 ;再读键盘状态
CJNE A, 30H, MAI;两次结果不同,是抖动引起,转MAI
放大电路分析如图2-4所示:
图2-4放大电路输出原理图
此部分的放大电路简单容易实现。可以采用一个小功率PNP型硅管9012,利用“分压偏置式工作点稳定直流通路”,达到了对静态工作点的稳定。分压电阻分别选择1K和5.5K。蜂鸣器一端接+5V电压,一端接晶体管的发射极。由P1.0输出预定的方波,加到晶体管进行放大,再输出到嗡宁器,很好的实现了频率、声音的转换。
时钟电路如图2-5所示:
此系统的时钟电路设计是采用内部方式,即是利用芯片内部的振荡电路。MCS-51内部有一个用于构成振荡器的高增益反相放大器。电容值选择22μF,所以此系统电路的晶体振荡器的值为6 MHz。
图2-5 MSC-51片内振荡电路
2.1.2.2 程序的编写
源程序如下所示:
NUMTIM EQU 20H
GEWEI EQU 21H
SHIWEI EQU 22H
SCANLED EQU 23H
ORG 0000H
LJMP MAI
ORG 000BH
LJMP TIM
ORG 100H
MAI: MOV R2,#3FH
MOV P2,R2 ;让数码管显示0
CLR TR0 ;关闭上一次定时,进入下一次按键判断
MOV TMOD, #01H
MOV IE, #82H
MOV A, P0 ;再读键盘