点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87853299?spm=1001.2014.3001.5503
源码获取
主要内容:
本设计是基于51系列的单片机进行的设计,利用所给键盘的八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。并在LED上相应的设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的UVision4软件,采用汇编语言进行编程,并用proteus仿真。
基本要求:
1、利用所给键盘的八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。
2、当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音。
主要参考资料:
[1] 刘润华,刘立山.模拟电子技术[J].山东:石油大学出版社,2003.
[2] 苏成富.彩灯控制器[J].北京:电机电器技术,2000,(01).
[3] 祝富林.音乐彩灯电路CS9482[J].北京:电子世界,1995,(12).
[4] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社,1997.
完 成 期 限:
指导教师签名:
课程负责人签名:
摘 要
在电子音乐领域,自从20世纪末期MIDI(乐器数字化接口)推出和逐步规范化后,各种乐器及众多数码音视频产品中采用MIDI技术已逐渐成为一种潮流。但是当前各厂商的电子琴产品通常使用自己设计的专用音源,并且软硬件均不对外公开,阻碍了MIDI技术的交流。作者在开发基于MIDI模块的音乐发生器的过程中,进行了用单片机控制通用MIDI音源模块的相关功能制作电子琴的实践,制作出具有8个按键的 MIDI电子琴,该琴支持单音和复音弹奏,单片机以标准的MIDI波特率传送信息,通过串口连接蜂鸣器,从而获得优美的乐音。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的UVision4软件,采用汇编语言进行编程,并用proteus仿真。
关键字:计算器;电子琴;AT89C51
目 录
1 概述 1
1.2 电子琴技术状况 1
1.3 本设计任务 2
2 总体方案论证与设计 2
2.1 播放模块 2
2.2 按键控制模块 2
2.3 总体硬件组成框图 3
3.1 中心控制模块的硬件设计 3
3.2 播放模块的硬件设计 3
3.3 按键控制模块的硬件设计 4
4 系统的软件设计 4
4.1 下位机软件流程 5
4.2上位机软件 5
5 系统调试与测试结果分析 9
5.1 使用的仪器仪表 9
5.2 系统调试 9
5.2.1硬件调试 9
5.2.2软件调试 10
5.2.3硬件软件联调 10
5.3 测试结果 10
总结 10
参考文献 10
1 概述
在电子音乐领域,自从20世纪末期MIDI(乐器数字化接口)推出和逐步规范化后,各种乐器及众多数码音视频产品中采用MIDI技术已逐渐成为一种潮流。但是当前各厂商的电子琴产品通常使用自己设计的专用音源,并且软硬件均不对外公开,阻碍了MIDI技术的交流。作者在开发基于MIDI模块的音乐发生器的过程中,进行了用单片机控制通用MIDI音源模块的相关功能制作电子琴的实践,制作出具有8个按键的 MIDI电子琴,该琴支持单音和复音弹奏,单片机以标准的MIDI波特率传送信息,通过串口连接蜂鸣器,从而获得优美的乐音。
1.1电子琴概述
键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。发音音量可以自由调节。音域较宽,和声丰富,甚至可以演奏出一个管弦乐队的效果,表现力极其丰富。它还可模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如人声,风雨声等)。另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。另外,电子琴还安装有混响、回声、延长音、震音和颤音等多项功能装置,表达各种情绪时运用自如。
电子琴是电声乐队的中坚力量,常用于独奏主旋律并伴以丰富的和声。还常作为独奏乐器出现,具有鲜明时代特色。但电子琴的局限性也十分明显:旋律与和声缺乏音量变化,过于协和、单一;在模仿各类管、弦乐器时,音色还不够逼真,模仿提琴类乐器的音色时,失真度更大,还需要不断改进。电子琴的演奏有较大一部分是通过自动和弦伴奏来配合完成的,在音乐中和弦的连接推动了旋律地进行,不同的和声连接,形成了不同的音乐色彩。
1.2电子琴技术状况
本次设计提出了用AT89C51单片机为核心控制元件,设计一个简易的电子琴. 本方案以AT89C51单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块在主控模块上设有16个按键和扬声器.根据使用者的操作随意弹奏想要表达的音乐。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号。
1.3本设计任务
利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个键被按下,则启用中断系统,前面键的发音停止,转到后按的键的发音程序,发出后按的键的音。
2 总体方案论证与设计
本系统采用单片机AT89C51为电子琴的控制核心,系统主要包括播放模块、按键控制模块。下面对各模块的设计逐一进行论证比较。
2.1 播放模块
播放模块是喇叭构成。它几乎不存在噪声,音响效果较好。而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。
2.2按键控制模块
电子琴设有8个按键,其中7个作为音符输入,另外1个作为模式转换按键,实现用户自弹作曲。7个按键分别代表7个音符,包括中音段的全部音符。通过软硬件设计,模式转换按 键触发外部中断,中断使程序跳转,实现模式转换,启动电子琴。然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现自编歌曲。当需要取消电子琴编曲功能时,再次按下模式转换按键引起外部中断.即可退出电子琴功能而返回原 来按键播放处。
2.3总体硬件组成框图
图2-1 总体硬件组成框图
3 系统硬件设计
为使该模块化电子琴控制系统具有更加方便和灵活性,我们对系统的硬件做了精心设计。硬件电路包括中心控制模块、播放模块、按键控制模块三大模块。
3.1 中心控制模块的硬件设计
本次设计中中心控制模块是采用AT89C51单片机来控制整个系统。其中P1口作为输入口,连接蜂鸣器驱动电路,而P2口连接按键控制电路, 从而实现播放音乐的功能。
3.2 播放模块的硬件设计
如下图所示,播放模块其实就是喇叭,它接到P1.0口上当有按键按下时,它就会发出声音…
图 3-1 播放模块硬件连接图
3.3 按键控制模块的硬件设计
在P.2口十连有8个按键并加有8个拉电阻.它们一端接5伏电源,一端接地.在仿真时,只要有一个键被按下,并被单片机扫描到,则会使播放器发出声音.
图3-2按键控制电路图
4 系统的软件设计
软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
4.1 下位机软件流程
本系统中下位机(单片机89C51)的主要功能就是实现音乐播放功能。其主程序流程如图4-1所示。
图4-1 软件程序流程图
4.2上位机软件
本系统的上位机软件主要是编辑电子琴播放状态的内容,在设计中采用c语言编写了电子琴控制系统控制和播放内容的程序。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit BEEP=P2^7;
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit K5=P2^4;
sbit K6=P2^5;
sbit K7=P2^6;
sbit K8=P2^7;
uchar th0_f;
uchar tl0_f;
char code segtable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code freq[36*2]={
0xA9,0xEF,
0x93,0xF0,
0x73,0XF1,
0x49,0xF2,
0x07,0xF3,
0xC8,0xF3,
0x73,0xF4,
0x1E,0xF5,
0xB6,0xF5,
0x4C,0xF6,
0xD7,0xF6,
0X5A,0xF7,
0xD8,0xF7,
0x4D,0xD8,
0xBD,0xF8,
0x24,0XF9,
0x87,0xF9,
0xE4,0xF9,
0x3D,0xFA,
0x90,0xFA,
0xDE,0xFA,
0x29,0xFB,
0x6F,0xFB,
0xB1,0xFB,
0xEF,0xFB,
0x2A,0xFC,
0x62,0xFC,
0x95,0xFC,
0xC7,0xFC,
0xF6,0xFC,
0x22,0xFD,
0x4B,0xFD,
0x73,0xFD,
0x98,0xFD,
0xBB,0xFD,
0xDC,0xFD,
};
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f;
BEEP=~BEEP;
}
void main(void)
{
ulong n;
uchar code jie[21]={0,2,4,5,7,9,11,12,14,16,17,19,21,23,24,26,28,29,31,33,35};
TMOD =0x01;
TR0=0;
ET0=1;
EA=1;
while(1)
{
if(!K1)
{
P0=segtable[1];
tl0_f=freq[jie[8]*2];
th0_f=freq[jie[8]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K2)
{
P0=segtable[2];
tl0_f=freq[jie[9]*2];
th0_f=freq[jie[9]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K3)
{
P0=segtable[3];
tl0_f=freq[jie[10]*2];
th0_f=freq[jie[10]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K4)
{
P0=segtable[4];
tl0_f=freq[jie[11]*2];
th0_f=freq[jie[11]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K5)
{
P0=segtable[5];
tl0_f=freq[jie[12]*2];
th0_f=freq[jie[12]*2+1];
TR0=1;
for(n=0;n<1000;n++);
if(!K6)
{
P0=segtable[6];
tl0_f=freq[jie[13]*2];
th0_f=freq[jie[13]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K7)
{
P0=segtable[7];
tl0_f=freq[jie[14]*2];
th0_f=freq[jie[14]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
if(!K8)
{
P0=segtable[8];
tl0_f=freq[jie[15]*2];
th0_f=freq[jie[15]*2+1];
TR0=1;
for(n=0;n<1000;n++);
}
}
}
5 系统调试与测试结果分析
5.1 使用的仪器仪表
单片机仿真器 KEILC
蜂鸣器 LS1
5.2 系统调试
根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。
5.2.1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
5.2.2软件调试
软件调试采用单片机仿真器KEILC及微机,将编好的程序进行调试,主要是检查语法错误。
5.2.3硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
5.3 测试结果
此次系统设计结果较好,分别播动8个按键会发出8种高低不同的声音,如果送入音乐程序,则会播放歌曲。
总结
经过两周的忙碌,我的电子琴终于仿真成功.虽然失败了几次,但经过老师对硬件连接图的纠正,自己又调整.了程序最后终于方仿真成功.心情很激动,一方面:觉得很有成就感;另一方面:收获很大,:不但锻炼了编程的能力,而且通过编程对硬件的整个流程了解了。在仿真过程中,我犯了两个低级错误:一个是用了没有模型的元件,另一个是喇叭可以不用驱动就能发出声音。经老师提醒,我改正了连接图。结果成功了。用单片机控制播放模块和按键控制模块制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。
参考文献
[1]张毅刚,彭喜元。单片机原理与应用[M](十)北京:高等教育出版社,2007.10
[2] 张毅刚。MCS-51单片机应用设计[M]。哈尔滨。哈尔滨工业大学出版,1999
[3] 李广弟。单片机基础[M]。北京:北京航天航空大学出版社,2001
[4] 杨振江。智能仪器与数据采集系统的新器件及应用[M]。西安:西安电子科技大学出版社,2001
[5] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社,1997.