当前位置:文档之家› 单片机电子琴单片机课程设计

单片机电子琴单片机课程设计

单片机电子琴单片机课程设计
单片机电子琴单片机课程设计

郑州科技学院

单片机课程设计

题目:基于51单片的声光电子琴设计学生姓名:苏梦强

专业班级:电子科学与技术

学号: 201131074 院系:电气工程学院

指导教师:饶美丽

完成时间: 2015年1月9日

目录

一、设计任务与要求 0

1.1 设计任务 0

1.2 设计要求 0

1.3 设计意义 0

二、方案总体设计 (1)

2.1 方案对比 (1)

2.2总体设计 (3)

2.3 总体方案工作原理 (3)

三、软件设计 (5)

3.1 系统流程 (5)

3.2延时源代码 (5)

3.3 发音源代码 (6)

3.3单个按键源代码 (6)

3.4所有程序代码 (7)

四、系统仿真与调试 (10)

4.1 仿真软件简介 (10)

4.2软件调试 (10)

4.3 使用说明 (12)

五、设计总结 (13)

附录1:总体电路原理图 (16)

附录2:元器件清单 (17)

一、设计任务与要求

1.1 设计任务

实现电子琴发声控制系统;要求电路实现如下功能:

利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。并在存储一首歌曲的内容,可以实现自动播放。

说明:单片机的工作时钟频率为11.0592MHz。

1.2 设计要求

设计一个带有复位电路,晶振时钟,能显示音调字符的8键电子琴。

1.3 设计意义

该设计具有以下优点:

1)可以方便得知播放的音符和音调;

2)比传统电子琴功能更完善;

3)制作简单,成本低

二、方案总体设计

本次课程设计的课题是基于51单片机的电子琴的设计,所要达到的要求如下:

1)利用蜂鸣器作为发声部件。

2)一个数码管作为显示部件。

3)设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7、8的发音。

本次设计主要是要通过软硬件的配合实现电子琴的上述功能,操作人员可以通过按下键盘上任意一个键来发出相应的音符。

2.1 方案对比

AT89C51具有高速度、低电压、低功耗、且可靠性和成本都比较低的特点。因此本次课程设计采用AT89C51单片机作为整个电路核心控制器件。对于本控制系统使用一片AT89C51系列的单片机,不需要外扩展存储器,就能实现显示、预制状态、动态调节的功能,因而整体结构简单。

设计电路时运用89C51系列单片机的接口来实现各种输入、输出功能。P2.7待定部分口用作输出口,向发声电路输出信号;P1口和P0口共同实现一个键盘的功能。

方案一:采用单个的逻辑器件组合

我们知道计数器8253可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。根据本实验要求,采用8279将键扫描得到的键值通过查表得到相应的8253的频率值,将从

8253得到相对应的按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求

方案二:用VHDL语言编程来实现

利用我们实验室先进的数字电路实验设备,我们可以采用VHDL语言编程来实现。我们可以通过VDHL语言,对实验原理图的各个部分进行设计,通过编译,可以在计算机上下载此实验原理图,利用电路学习机上的芯片。我们很快就可以设计出一个简单的电子琴。并实现其功能。

方案三:采用AT89C51单片机

采用AT89C51单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:一位数码管,和PNP型三极管等。利用按键实现音符和音调的输入;一位的数码管进行被操作的按键显示:用PNP型三极管实现低音频功率放大;最后用蜂鸣器发音。

方案比较:

方案一采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如七个不同的音符是由七个不同的频率来控制发出的,所用仪器之多显而易见。方案二采用VHDL 语言编程来实现电子琴的各项功能。系统主要由电子琴发声模块、选择控制模块和储存器模块组成。和方案一相比较,方案二就显得比较笼统,虽然我们可以看到用超高速硬件描述语言VHDL 的优势,但本质上它只是把整个系统分为了若干个模块,而不牵

涉到具体的硬件电路。方案三与前两种方案相比,主控芯片采用AT89C51单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。而第三种方案具有经济可行性、技术可行性、实物应用性。所以我们选择第三种方案。

2.2总体设计

设计总体框架图如图1所示

图1 单片机总体框架图

2.3 总体方案工作原理

由AT89C51的P1口8个按键控制DO,RE,MI,FA,SO,LA,XI,DO的各个音符,在由位于P0口的一位数码管显示出来,同时位于P3^7口的蜂鸣器发出声音。

发音原理:若要产生音频脉冲,只要算出某一音频的周期,再将周期除以2,即为半周期的时间。利用定时器记时半周期时间,每当记时终止后就将P3^7反相,然后记时再反相。就可在

P3^7上得到此频率的脉冲。利用AT89C51的内部定时器使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。

三、软件设计

3.1 系统流程

在绘制传统流程图时注意几点:

1)熟练绘制传统流程图的基本元素,三种基本结构的流程图

标准画法

2)将复合条件转为多个单一条件

3)循环注意初值、变化和终止

4)算法的重点实现一定体现出来

程序流程如图12所示:

图12 程序流程图

3.2延时源代码

void DelayMS(uint x)

{

uchar t;

while(x--) for(t=0;t<120;t++);

}

3.3 发音源代码

void Play(uchar y)

{

uchar i;

for(i=0;i<100;i++)

{

BEEP=~BEEP;//对蜂鸣器电平求反

DelayMS(y);

}

BEEP=1;//给蜂鸣器一个高电平

}

3.3单个按键源代码:

if(K1==0)

{

DelayMS(10);//按键去抖动

if(K1==0)

{

num=1;

P0=table[num];

Play(1);

}

while(!K1);

相关主题
文本预览
相关文档 最新文档