摘 要
随着大众经济的发展和生活水平的提高,对于身心健康和生活环境的好坏也越来越受到大众的重视。加之近些年国家对城市环境保护力度的增加,很多利于公众观赏和保护环境的音乐喷泉应用而生。音乐喷泉的出现让城市景观的吸引力得到了进一步提升,现在,由于互联网的发展,很多具有音乐喷泉的公园和游乐园,都成为网红打卡地,从而进一步带动了当地旅游产业的发展,由此也让音乐喷泉更加受欢迎。
本次所设计的音乐喷泉,是一种以51单片机作为主控芯片的小型喷泉控制系统。主要由51单片机系统模块、ADC0832音乐信号转换模块、PWM电机调速控制模块、灯光控制模块以及ADC数模转换模块等组成。控制系统主要利用ADC数模转换功能,对音乐信号采集并处理后传递到单片机,由单片机对该信息进行处理,输出给PWM电机及灯光模块,控制其进行喷泉的启停和灯光的变化等过程。
关键词:音乐喷泉;控制系统;ADC0832;调速控制
Abstract
With the development of the mass economy and the improvement of living standards, the public is paying more and more attention to physical and mental health and the quality of the living environment. Coupled with the increase in the country's efforts to protect the environment in cities in recent years, many musical fountains have emerged that are beneficial to the public to watch and protect the environment. The emergence of musical fountains has further enhanced the attractiveness of urban landscapes. Now, due to the development of the Internet, many parks and amusement parks with musical fountains have become online celebrity check-in locations, which has further promoted the development of the local tourism industry. This also makes the musical fountain more popular.
The musical fountain designed this time is a small fountain control system with 51 single chip microcomputer as the main control chip. It is mainly composed of 51 single chip microcomputer system module, ADC0832 music signal conversion module, PWM motor speed control module, lighting control module and ADC digital-to-analog conversion module. The control system mainly uses the ADC digital-to-analog conversion function to collect and process the music signal and then transfer it to the single-chip microcomputer. The single-chip processor processes the information and outputs it to the PWM motor and lighting module to control the start and stop of the fountain and the change of the light.
Key Words:music fountain; Control System;ADC0832; Speed control
目录
1引言 1
1.1 设计的目的和意义 1
1.2 国内外的相关研究现状 2
1.3 本次设计的主要研究内容 3
2控制系统的方案设计 4
2.1 音乐喷泉工作原理 4
2.2 控制系统的整体设计方案 4
2.3 硬件的选择 5
3 硬件电路设计 9
3.1 时钟电路的设计 9
3.2 复位电路的设计 9
3.3 系统供电电路的设计 10
3.4 单片机最小电路的设计 10
3.5 LM386功率放大电路的设计 11
3.6 A/D转换电路的设计 12
3.7 LED灯光电路的设计 13
3.8驱动电机控制电路设计 15
3.9基于Altium Designer的原理图设计 15
4 软件设计 18
4.1编程语言的选择 18
4.2编程软件的选择及介绍 18
4.3系统流程图的设计 20
4.4音频信号转换流程 21
附录 程序 26
引言
1.1 设计的目的和意义
在现代化城市快速发展的过程中,在享受城市发展带来的便捷服务的同时,城市生活的喧闹和钢筋水泥的世界,让大众的生活和工作压力无法得到有效的缓解。现在,随着生活水平和社会经济的不断提高,大众对城市生活的公共需求也在增加。而音乐喷泉的出现,也为大众的业余生活增添了一道风景。在现代城市中,很多公园甚至一些高档办公区都开始建设喷泉,以此作为建筑物的标志和自身形象的代表。而音乐喷泉更是在此基础上,把音乐和光线充分结合,让喷泉构成一幅幅美丽的画面,这也是音乐喷泉受大众喜欢的原因之一。
音乐喷泉已经不单单是一种科技性的展现,更是现代技术和艺术的一种结合和调配,通过现代控制技术的处理,让喷泉和音乐以及灯光实现完美的配合。随着音乐的起伏和旋律的变化,喷泉的水花和起落以及适时的灯光效应,让整个气氛达到高潮。正是这种视觉和听觉结合的方式,音乐喷泉才让人赏心悦目,叹为观止。例如,有世界吉尼斯记录的迪拜音乐喷泉,其喷射高度和水花的种类都堪称世界之最,其美观和宏伟也堪称世界第一,如图1-1所示:
图1-1 迪拜音乐喷泉
虽然现在世界各地的音乐喷泉很多,其规模和观赏性较强。但是,现在大多数用于商业化的音乐喷泉采用PLC或者工控机的控制方式实现,这种控制系统大多成本较高,适用于工业性音乐喷泉的设计,对于一些小型的,功能性一般的音乐喷泉,使用这种控制系统比较浪费资源,而且系统的复杂程度大,无法做到资源的充分利用。而单片机作为一种控制系统的核心处理器,在很多中小型控制系统中都有所使用,所以,本次主要利用51单片机,设计一种音乐喷泉。本次所设计的基于51单片机的音乐喷泉,对于未来小型喷泉的广泛推广有一定帮助,同时对单片机控制系统的相关研究也会起到一定借鉴作用。
1.2 国内外的相关研究现状
1.2.1 国外的相关研究现状
最早关于喷泉的相关理论研究在十八世纪初就被提出,而在此之后,喷泉就受到了国外贵族的青睐,到十八世纪中叶,在德国、英国等国家,喷泉就被贵族广泛建造,而音乐喷泉的出现也正由此而来。在1930年,同样由德国提出并建造了音乐喷泉,虽然这种音乐喷泉的功能相对简单,也无法让喷泉的水花和灯光配合,但是这种新型的艺术性概念设计也让很多人感到惊讶。
到上世纪,由于计算机技术的出现,音乐喷泉的实现已经变得相对简单,想德国、韩国等一些国家,由于自身科技力量的支持,再加上对于建筑艺术的重视,音乐喷泉得到了很大程度的提高。到现在,绝大部分的国家,包括一些发展中国家,对于音乐喷泉的理论知识和研究都有了一定程度的能力,而且也可以利用自身的能力进行建造。但是,在一些大型喷泉音乐的建造中,尤其是依赖于精密的控制和传感系统的音乐喷泉设计上,掌握其技术的国家依旧不多。
1.2.2国内的相关研究现状
我国在喷泉方面的研究时间相对较短,但是由于我国改革开放的影响,音乐喷泉在我国虽然起步较晚,但是发展速度相当迅速。从改革开放一来至今,我国已经完全可以自主设计并建立大型音乐喷泉,在基础建设方面已经能够达到世界先进水平。但是在控制系统方面,我国由于基础技术的欠缺,尤其是高精度、高精密芯片方面,我国尚且还无法做到自给自足,也就使得在音乐喷泉的控制技术上,还需要依赖于其它相对领先的国家。
但是,随着我国自身基础科技水平的提高,在加上我国强大的建筑实力,在音乐喷泉的研究和设计上,现在总体也可以做到世界先进水平。而且,现在我国很多相关建筑公司所建设的音乐喷泉在世界上也享有一定声誉,例如洛阳的音乐喷泉,如图1-2所示:
图1-2 洛阳音乐喷泉现场
而且,由图可以看出,音乐喷泉配合灯光的变幻,具有很高的观赏性。
1.3 本次设计的主要研究内容
根据以上对音乐喷泉的相关介绍可知,音乐喷泉主要依靠水花、音乐和灯光之间的配合完成。所以,在本次设计中,主要研究的内容如下:
能够对音乐或者音频进行识别并放大;
能够通过单片机对音频信息进行处理;
能够通过对水泵的控制,实现喷泉启停和高度的控制;
可以利用单片机对LED灯的颜色和开关进行控制;
2控制系统的方案设计
2.1 音乐喷泉工作原理
首先,喷泉的工作原理是通过改变出口水压,让出口流出的水具有一定压力所实现的,而这一过程又是利用水泵和电机实现的。也就是电机驱动水泵,让水泵出水端的水压增加,从而让喷泉出口的水压增加的过程。
而音乐喷泉则在此基础上,让电机的转速可以调整,这样也就会使喷泉出口的水压不断变化,当水压变高时喷出的水柱高度随之变高,电机转速变慢,水压相对降低,喷出水柱的高度也随之降低。而电机转速的控制就依靠音乐来完成,控制系统通过对音乐强度和节奏信号的处理,再输出到电机控制端的过程,再由电机控制水泵的过程,其如图2-1所示:
图2-1 音乐喷泉工作原理示意
由图可知,整个音乐喷泉的实现,控制系统主要需对驱动电机的启停和转速进行控制,而控制信号的产生则是根据外放音乐的音频来确定。
2.2 控制系统的整体设计方案
根据上述对音乐喷泉工作原理的阐述以及基于单片机控制系统的功能介绍可知,所以,结合单片机功能和音乐喷泉硬件模块的功能,整体方案的设计主要包括以下几部分内容:以单片机为核心的主控系统模块、以放大器模块为音乐信号处理模块、以ADC数模转换模块、LED灯光模块组成。同时,在整个系统中,单片机功能的实现还需要设计相关的基本电路,即复位和时钟电路,所以,基于51单片机的音乐喷泉控制系统的结构如图2-2所示:
图2-2 控制系统结构图
由上图可知,该音乐喷泉以单片机为系统控制模块,搭配外部电路和功能模块,实现喷泉的基本功能。在整个功能结构中,除了为实现喷泉功能设计的模块外,单片机本身还需要搭建自身的最小系统,及时钟和复位电路,以及系统的供电模块。
2.3 硬件的选择
2.3.1 单片机的选择
作为本次设计中的主要控制芯片,单片机的使用和选择至关重要。现在,由于相关领域的发展,单片机已经成为一种被广泛使用的控制芯片,在各个领域都展露出其独特的优点。正是因为广泛的市场需求,近些年来,单片机的种类和型号也在不断增加,而且,随着技术的成熟,单片机除了在性能上有所改变外,在体积上也越来越小,做到了小体积,大功能的特点。现在,单片机在智能电子产品、智能控制设备、智能汽车等多领域都被使用。
由于单片机被广泛应用,所以现阶段市场上单片机的种类较多,例如有STM系列单片机、MSP430系列单片机、AT89C51系列单片机等。虽然相较于本次设计的功能而言,以上单片机都可实现,但是,考虑到设计的复杂程度、单片机的利用率、成本等问题,要满足在实现功能的基础上,尽量做到物尽其责的目的。
到现在为止,市场上最为常用的单片机大多为51系列以及STM系列的单片机,而STM单片机体积小、功能强大、运行和处理速度快,所以,这种单片机大多用于控制系统复杂,运算需求大的系统中,例如手机、平板电脑等,会用到此类单片机。而51系列的单片机,使用时间较久,对于很多相关专业的人都较为熟悉。AT89C51单片机的生产时间长,技术已经成熟,其各方面的大部分常见问题已经被解决,在设计时遇到的问题较少且容易解决。而且由于51单片机的广泛使用,很多功能已经被设计成模块化,可以直接使用,无需浪费时间成本。所以,本次设计选择使用AT89C51单片机,AT89C51单片机的引脚图如图2-3所示:
图2-3 AT89C51单片机引脚图
由图可知,51单片机有四组I/O端口,可接外部晶振电路。由于51单片机引脚的功能及相关使用资料已经成熟,而且由于51单片机的应用时间久,外围电路的设计已经基本成型,这里不做过多的说明。
2.3.2 功率放大器的选择
关于音频放大器的选择,需要从放大的倍数、功耗、放大质量以及价格等多方面来考虑,根据对现在市场的流行放大器调查可知,在单片机控制系统以及工控类控制系统中,放大器模块大多使用型号为LM386的功率放大器。这种放大器的体积小,由美国一家半导体公司生产,主要应用于收音机和扬声器,具有失真率低、供电电压范围广、外围搭接电路简单等优点。LM386功率放大模块的引脚如图2-4所示:
图2-4 LM386放大器引脚图
由图可知,该放大器有8个引脚,其中引脚4为接地,引脚5为输出端,也就是音频放大段,即扬声器的接入端。LM386模块实物如图2-5所示:
图2-5 LM386放大器实物图
该功率放大模块的外围电路如图2-6所示:
图2-6 LM386放大器工作电路图
根据该电路图进行设计,即可实现音频电路的放大功能,但是在现代电子模块的集成化背景下,这些可以实现某种功能的模块,已经被做成集成式的模块,例如使用LM386功率放大器模块的电路,已经被集成为PCB模块,在很多设计上,只需要直接使用现有模块即可,便于维护、检修,且方便更换。
2.3.3 A/D转换模块的选择
对于数字和模拟信号的转换,所能实现的方式较多,而且在电子电路的设计中无法避免模数信号的转换,其需求也较多,所以A/D转换是控制电路设计中较为常见的。这里选择最为常用的ADC0832模块作为A/D信号的转换模块。这种模块同样是由美国一家半导体公司研究制作,具有兼容性良好、体积小、容易搭载等优点,而且经过多年的实践打磨,这种模块的应用已经成熟,有很高的普及率。ADC0832转换模块的引脚如图2-7所示:
图2-7 ADC0832模块引脚图
由图可知,ADC0832转换模块共有8个引脚,其中引脚4为GND接地,引脚8为VCC电源,引脚5为数据信号输入端,引脚6为转换后数据信号的输出端。
DC0832实物如图2-8所示:
图2-8 ADC0832模块实物图
3 硬件电路设计
3.1时钟电路的设计
总所周知的,在单片机系统设计中,需要设计外部的时钟电路。其主要作用是能够确保单片机在运行时有基准频率,类似于节拍器,能够让单片机按照有效的节奏工作。一般的,时钟电路中由电容和石英晶体的晶振组成,所以该电路也被称为晶振电路。查阅AT89C51单片机的相关资料,这种单片机运行频率最高为35MHz,但是达到此频率后会严重影响单片机工作的稳定性,从而影响整个控制系统的稳定,所以,根据近些年各方面的研究和实践经验,单片机的工作频率一般设置为12MHz,限制单片机的工作频率也为12MHz,这样,就能够保证单片机系统的正常运行。晶振电路如图3-1所示:
图3-1 单片机时钟电路图
3.2复位电路的设计
在使用例如智能手机等智能电子设备时,我们会发现都会设计重启按键,当手机因
为操作、碰撞等产生死机、卡顿现象后,只需要按动重启按键,让系统重新启动,基本可以解决问题,上述这一过程就是复位电路在控制系统中的作用。同样的,在设计基于单片机的控制系统电路时,复位电路是必不可少的。单片机定义了相关的复位引脚,当需要进行复位操作时,按动外接复位电路中的微动按键,单片机系统就会重新启动,自动寻找初始位置开始重新工作。复位电路是控制系统运行的基本点,对于单片机控制系统的运行来说非常重要。本次主回路设计中,对复位电路的设计如图3-2所示:
图3-2 单片机复位电路图
3.3系统供电电路的设计
根据AT89C51单片机的相关资料可知,该单片机的电压范围为3.3~5.5V的直流供电,理论上,当供电电压达到3.3V单片机即可工作。但是,在实际的设计中,根据经验可知,为保证系统的运行稳定,以及电压的通运性,一般单片机的供电电压选择为直流5V,可以实现与多种功能模块兼容。这里,按照单片机引脚的定义可知,把5V直流电源的引脚与单片机的20脚GND和40脚VCC连接即可。如图3-3所示:
图3-3 控制系统供电电路图
3.4单片机最小电路的设计
单片机的最小系统就是在使用单片机作为核心控制芯片进行控制电路的设计时,单片机必须要搭建的电路集合,被称为单片机的最小系统设计。一般的,最小系统设计就单片机必不可少的时钟电路和复位电路,单片机只需要有这两种基本电路即可正常使用。对于单片机最小系统中的时钟和复位电路前述已经说明,这里,对于单片机最小系统的设计如图3-4所示:
图3-4 单片机最小系统电路图
3.5 LM386功率放大电路的设计
根据上述对LM386功率放大模块以及实现放大功能的相关电路图可知,该模块的放大信号输出为引脚5VOUT,音频信号的输入为引脚3IN+。而根据上述可知,在本次设计中,可以使用搭载该模块的一种集成化PCB,及基于LM386的功放板模块。这种模块在使用上更加方便,只需要直接与外部音频接收端和扬声器端分别连接即可,该模块外形如图3-5所示:
图3-5 功率放大集成模块实物图
由图可知,该模块的2P端子处功放输入端连接,而左端4P端子中,其中左右最外两个端子分别为接地和供电,中间IN端子为音频信号的输入端,中间GND端子为音频信号的地。所以,使用这种模块更加省时、方便,在现代化的设计中,很多集成设备的控制系统大多采用PCB模块化方式进行设计。
LM386集成模块的特点如表3-1所示:
表3-1 功率放大集成模块参数
型号
供电电压
静态电流
带宽
输入阻抗
总谐波失真
LM386
5~12V
4mA
300KHZ
50K
0.2%
3.6 A/D转换电路的设计
由于单片机是一种依靠数字信号工作的控制芯片,而在实际的电子电路设计中,很多元器件模块产生的信号都为模拟信号,A/D转换的作用就是把电路中元器件工作产生的模拟量转换成单片机可以识别的数字量的一种过程。也就是说,通过这种信号的转换,让单片机能够正常工作。
本次设计中所使用的ADC0832信号转换模块可以实现双数据输出功能,能够对转换的数据进行校对,可有效减少数据误差。ADC0832的工作时序如图3-6所示:
图3-6 ADC0832时序图
根据ADC0832转换模块的工作原理,查阅相关的引脚定义及外围电路的设计,该芯片的接口定义及说明内容主要为以下几点:
引脚1--CS:低电平芯片使能;
引脚2—CH0:模拟输入通道0;
引脚3—CH1:模拟输入通道1;
引脚4—GND:接地;
引脚5—DI:信号输入通道;
引脚6—DO:信号输出通道;
引脚7—CLK:时钟信号;
引脚8—Vcc:供电。
可以对其进行电路引脚设计,如图3-7所示:
图3-7 ADC0832电路图
由图可知,引脚2为外部模拟信号的输入端,引脚5与6则为转换后数字信号的输出通道,由上图也可知该模块为两个输出通道。
ADC0832A/D转换模块的特点如表3-2所示:
表3-2 ADC0832参数表
型号
工作电压
频率
转换时间
功耗
工作温度
ADC0832
0~5V
250KHZ
32us
15mW
0~+70℃
3.7 LED灯光电路的设计
LED灯光设计是音乐喷泉中比较重要的,灯光与音乐和喷泉水柱水花的完美配合能够为音乐喷泉的观赏增加亮点。现在除了一些特殊行业和设备外,绝大多数的发光灯都采用LED的方式。这种LED灯也就是俗称的发光二极管,有正向导通反向截止的功能,使用更加安全,而且这种LED灯可以根据电流大小的不同,变换不同的颜色和强度。LED灯具特殊的物理和化学结构,颜色的改变取决于电流的大小,当为小电流时,为红色,bai当电流逐渐增大,颜色改变为橙、黄、绿、蓝、靛、紫等颜色。
由于LED灯的使用范围广,现在LED灯已经被制作成各式各样,例如有PCB板使用的贴片LED灯,有家庭使用的螺纹口LED灯,以及设备使用的引脚LED灯等。这里,选择使用普通插针LED灯即可,这种LED灯通常被称为发光二极管。其外形如图3-8所示:
图3-8 LED发光二极管实物图
LED发光二极管的结构较为简单,共有2个外部引脚,连接电源的两端即可,当引脚两端为正向电压时,LED发光二极管导通发光,引脚示意如图3-9所示:
图3-9 LED发光二极管引脚图
在本次设计中,音乐喷泉的LED灯光模块设计按照音乐的音阶数量来设计,当系统识别到音乐中某个音阶时,相对应的灯光被点亮,音乐音阶辨识表如下所示:
表3-3 音阶对应识别表
1
2
3
4
5
6
7
8
Do
Re
Mi
Fa
Sol
La
Si
Do
所以按照该功能,其电路设计如图3-10所示:
图3-10 LED电路图
3.8 驱动电机控制电路设计
根据上述对音乐喷泉工作原理的介绍可知,想要实现音乐喷泉的正常工作,需要通过水泵改变水的压力来完成,而这一过程,又需要电机驱动水泵,为水泵提供动力。所以这里对驱动电机的控制电路设计,也就是对水泵工作电路的设计,及喷泉工作电路的设计。其电路设计如图3-11所示:
图3-11 驱动电机电路图
3.9 基于Altium Designer的原理图设计
在单片机音乐喷泉控制系统的设计中,电路原理图的设计采用Altium Designer为设计软件,该软件功能强大,使用方便,不但可以设计电路原理图,还可以建立元器件库,设计PCB走线图等。本次设计采用Altium Designer15.0版本,软件打开界面如图3-12所示:
图3-12 Altium Designer15.0界面
所以,根据以上对各功能模块的介绍以及相关电路图的设计,这里利用Altium Designer软件进行总体设计即可,在原理图绘制过程中,常用芯片及元器件可以直接在软件自带元件库中选择,如图3-13所示:
图3-13 Altium Designer15.0库界面
如上图所示,可以在元件库中输入相关元件的缩写进行搜索,而且点击到某个元件的名称后,会显示该元件的引脚图,可以直接拖拽使用。这里,对于51单片机的音乐喷泉原理图的总体设计如下图3-14所示:
图3-14 基于51单片机音乐喷泉总电路图
4 软件设计
4.1编程语言的选择
完成对硬件电路的设计后,就需要根据水库水位检测系统的功能要求结合各选择的功能模块和传感器模块,对单片机主控芯片进行程序的编制,从而实现系统的运行。现在,编制单片机程序语言的方式也较多,例如通常基础所学的汇编语言以及现在通用的C语言,本次设计考虑到使用程度和系统的维护、修改等,选择现在最为常用的C语言。
C语言程序和传统的汇编语言相比,具有以下优点:
不需要了解存储器的结构构成;
寻址和寄存由编译器管理,在程序编制过程中无需考虑地址和数据类型,减少编程的复杂程度;
程序更加简单,容易上手,减省开发成本;
C语言有常用模块的例程,可以直接调用和使用,减省开发时间
C语言的可移植性较强,能够在新程序中直接加入已经编写完成的程序;
可维护性好,由于使用人数多,语言构造简单,在后期维护和修改上更加迅速;
作为现阶段市场较为流行的编程语言,有较多成熟的经验和资料可以借鉴,方便初学者的学习和使用。
4.2编程软件的选择及介绍
完成单片机的音乐喷泉控制系统的硬件电路设计和软件功能流程图的设计后,即可对其进行编程。这里使用现阶段最常使用的Keil uVision4软件作为编程辅助软件。这种软件是近些年单片机控制系统设计中程序编写最为常用的一种软件,该软件系统可以调用大多数芯片和单片机,除了可以编写程序外,还可以对程序进行检查、编译,并导出HEX格式文件,方便后续对控制系统进行仿真模拟过程。
这种软件的操作界面简单,而且对于各按键的布局合理,把最为常用的按键功能单独放置,方便操作,能够有效提高编写效率。最重要的是这款软件一个全新的、整洁且高效的环境可以让用户去开发与使用。
首先,打开软件主界面后选择本次设计的AT89C51单片机,进入到程序编写界面,开始编写相应的程序。KeiluVision4的使用界面如图4-1所示:
图4-1 KeiluVision4软件界面
完成程序的编写后,还可以利用KeiluVision4软件对程序进行编译运行和检查,当软件运行程序无误后,即代表程序正确。KeiluVision4对程序的编译执行过程如图4-2所示:
图4-2 KeiluVision程序编写流程图
由图可知,在基于单片机音乐喷泉控制系统程序的编写过程中,需要不断进行编译和检查,并进行实际调试,才能够发现并完善程序中的某些错误和不足,这也是实践过程中逐渐积累的一种经验。
在利用C语言编写单片机的程序时,首先需要对单片机各引脚进行定义,例如定义P0口为sfr P0 = 0x80,该定义不是随意赋值,单片机的引脚定义可以查阅相关的资料手册得到。而利用Keil软件编程时,可以根据查阅的资料进行定义,但是这种方式较为繁琐,浪费时间,在Keil中还可以通过头文件的方式对单片机的所有端口进行定义,在后续的编程中可直接使用,无需再进行定义。51单片机的头文件为#include<reg51.h>,在编写界面中首先编写该语句,并且可以通过鼠标对该头文件下的51单片机各端口定义进行查看,如图4-3所示:
图4-3 程序编写示意图
4.3系统流程图的设计
音乐喷泉系统运行主程序首先对时钟芯片的初始化,之后对定时器进行初始化,开始控制系统的运行。首先需要判断是否有音频需要被转换,如判断需要进行处理,则AD转换模块运行,对音频进行采集处理,执行后单片机把相应的信号输出到LED灯模块中,执行LED灯的灭亮,并把电机启停和旋转速度的命令输出到电机驱动控制模块中,使其控制水泵并实现水柱水花的工作过程。控制流程如图4-4所示:
图4-4 控制总流程图
由图可知,程序运行开始后,需要对整个程序进行初始化,确保程序可以从开始位置执行。随后,程序按照音乐喷泉的工作方式逐一对音频信号进行搜集处理,利用单片机对LED灯和电机控制模块发送相关指令,由各功能模块执行的过程。
4.4 音频信号转换流程
在音乐喷泉的控制系统设计中,音频信号的数模转换是实现功能的关键所在,其声音的输入、信号的处理转换以及输出,是整个设计中的重点。根据前述可知,A/D转换是使用一种特定电路,把模拟信号转换为数字信号的过程,再由单片机对转换后的数字信号进行处理和运行。此过程的流程如图4-5所示:
图4-5 A/D转换控制流程图
由图可知,A/D转换的过程相对简单,程序运行开始后,启动A/D转换模块功能并判断A/D转换是否中断,也即是否转换完成,完成后,把转换结果输出到单片机中即可。
结论
本次设计主要是对基于51单片机的音乐喷泉的设计,主要使用AT89C51单片机作为控制系统主要块作为输出核心处理器,以ADC0832作为主要的信号转换模块,以LM386作为主要的放大模块,以LED发光二极管作为主要的灯光显示模设计。满足了音乐喷泉的设计要求,能够实现对音乐的信号采集、放大和处理,能够实现对喷泉水柱高低大小的控制、能够实现对LED灯光的亮灭和颜色控制。实践证明,可以完成设计之初对音乐喷泉的主要功能需求。
本次对于音乐喷泉控制系统的设计,主要分为硬件和软件部分的设计,其中,硬件部分的设计主要对各重要模块的型号进行了选择,并根据各模块的功能和引脚定义,对相关电路做了设计;利用音乐喷泉各模块的功能需求,对其进行工作流程进行设计,并根据工作流程编写程序。在本次设计中,除了利用了单片机的相关知识外,C语言、模电、电路控制等学科的知识也得到了应用,算得上是一次真正的综合性设计。
以单片机为基础的音乐喷泉设计有效地实现了各个组件之间的联结,主要是单片机上的各个模块工作良好,具有信号稳定、低耗能等优点。从而可以实现对音乐的采集和水柱及灯光变化的控制。而且本设计电路板能够大程度模拟实际控制情况,以及在收到控制信息时单片机无法控制等情况进行多次调试,证明了系统的稳定可靠性。结合其它模块,结合整个电路的设计以及考虑实际使用和生产时的综合性能要求等,做出最合适的选择。
致谢
随着毕业设计的完成,也代表着四年的大学生活即将结束。在这三年里,我学到了很多,包括对专业知识的学习,也包括对做人、做事的学习;在这三年里,我的认知也得到了提高,我的综合思维能力和学习能力也得到了加强。总的来说,大学不单单是在为了完成教学任务为目的的,它还在教育我们做人,教育我们在面对社会时应该出现的状态。
所以,在这里我非常感谢学院给与我的这次机会,感谢在大学里给与我们关怀的各位老师。在本次毕业设计过程中,我非常感谢我的指导老师XXX老师。在设计过程中,我遇到过很多无法解决的问题和困难,对芯片的不熟悉,对电路设计的错误等等,指导老师都给予了我帮助,悉心为我讲解。正是由于老师的帮助,才让我顺利的完成了本次的设计,所以,真的十分感谢您!
最后,我还要感谢我的同学给我的帮助,感谢在大学期间我的各位授课老师,感谢你们诲人不倦的精神。同时,也感谢各位现场的老师,感谢老师参加本次答辩。再次感谢!
参考文献
[1]倪军远. 基于AT89C51型单片机的小型音乐喷泉的设计[J]. 山西电子技术,2016(03):10-11.
[2]王选诚,苏凤,孙玉梅,尹德汇. 基于AT89C51单片机的音乐喷泉控制系统设计[J]. 传感器世界,2016,22(03):39-42.
[3]王彤. 基于51单片机的音乐喷泉设计[J]. 中国新通信,2020,22(01):143.
[4]余肖飞,沈瑛. 基于单片机的多功能音乐喷泉[J]. 中外企业家,2018(21):121.
[5]张可菊,黄金菡. 基于单片机的音乐喷泉控制系统的设计[J]. 电子制作,2014(04):5.
[6]余佳宾,阳泳,赵龙飞,孟阳. 基于STC12C2052AD单片机的音乐喷泉控制[J]. 电子制作,2014(18):6.
[7]栗兴良,马牧燕,莫蔚靖. 基于单片机的微型音乐喷泉的设计[J]. 现代计算机(专业版),2015(03):61-64.
[8]单红娇,高涵,徐迎俊,武阳,陈岚峰. 基于51单片机的音乐喷泉系统设计[J]. 山东工业技术,2015(09):177.
[9]陈文辉. 基于MCS-51单片机的音乐喷泉控制[J]. 福建轻纺,2009(06):47-49.
[10]蒙启熟. 基于51单片机的音乐喷泉设计[J]. 数码世界,2019(12):101.
[11]张开碧,罗蓉,许倩忆. 基于STC89C52单片机音乐喷泉控制的设计[J]. 科技信息,2012(33):51-52.
[12]张长君,王连涛. 单片机控制在音乐喷泉中的应用[J]. 计算机工程与设计,2006(10):1905-1907+1910.
[13]王方华,周永宏,赵雪娇,马玉林. 基于AT89S52单片机的室内音乐喷泉设计[J]. 科技资讯,2010(29):13-15.
[14]徐宏英.单片机基础及应用项目式教程[M].机械工业出版社.2018-01
[15]周润德.数字集成电路——电路、系统与设计(第二版)[M].电子工业出版社.2017-01
[16]刘大铭.单片机原理与实践——基于STC89C52与Proteus的嵌入式开发技术[M].清华大学出版社.2018-10
[17]蒋立平.数字逻辑电路与系统设计(第3版)[M].电子工业出版社.2019-01
[18]张迎新.单片机基础(D3版)-单片机初级教程[M].北京航空航天大学出版社.2015-09
附录 程序
#include<reg51.h>
#include<inteins.h>
#define uint unsigned int
#define uchar unsigned char
AD定义
sbit CLK=P1^0;//ADC0832时钟端口
sbit DIO=P1^1;//ADC0832数据输入输出端口
sbit AD_CS=P1^2;//ADC0832片选端口
sbit pq=P2^0;//喷泉控制端口
uint dat;//对AD赋值
/***************************
AD转换函数
***************************/
uint ADC0832()
{
uchar i = 0;
uchar Value1 = 0;
uchar Value2 = 0;
AD_CS = 1;//关闭AD
CLK = 0;
DIO = 0;
AD_CS =0;//开启AD
DIO = 1;//开始位
CLK = 0;
CLK = 1;
DIO = 1;
CLK =0;
CLK =1;
DIO =0;
CLK =0;
CLK =1;
DIO =1;//空闲位
CLK =0;
CLK =1;
for(i = 0;i<8;i++) //读第一次数据,判断
{
CLK =1;
CLK =0;
if(DIO)
{
CLK =1;
CLK =0;
If(DIO)
{
Value1|= 0x80>>I;
}
for(i =0;i<8;i++) //第二次数据,判断
{
if(DIO)
{
Value2|=0x01<<1;
}
CLK =1;
CLK =0;
}
AD_CS = 1; //关掉ADC0832
if(Value1==Value2) //数据校对
{
return Value1;
}
else
{
Return 0;
}
}
void delay(uint ms) //延时函数
{
uchar i;
while(1)
{
dat=ADC0832();//读取声音输出的信号并对音阶变化处理
if(dat>=15) //声音信号在10us内无数据变化
{
for(i=0;i<30;i++)
{
P0=0X00;
pq=1;
delay(dat*10); //延时保持
P0=0Xff; //LED灯模块关闭
pq=0;
delay(100); //延时保持
}
}
else
{
P0=0Xff;
Pq=0;
}
}
}