找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于单片机的小型音乐喷泉控制系统设计论文

  [复制链接]
跳转到指定楼层
楼主
基于单片机的小型音乐喷泉控制系统设计


计算机控制技术课程答辩论文
摘 要

随着人们生活水平的提高和建立绿色城市的向往,音乐喷泉以其独特的魅力和特殊的功能,愈来愈成为休闲娱乐产业中的一项重要产品,音乐喷泉的兴建也越来越多。

根据目前音乐喷泉的发展现状,介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路,分析了输出地址,描述了不同类型的输出电路和输入电路;介绍了从特定构造的喷池中获得决定喷池动作的喷池数据的原理;给出了主程序框图和看门狗子程序。采用程序控制来控制花型。音频信号还影响灯光色彩和灯光光线明暗的变化。从而使灯光色彩、灯光的闪烁和喷泉水姿随音乐节奏而变化。


目录
摘 要
目录
第1章 绪 论
1.1课题背景
1.2 音乐喷泉的发展和现状
第2章 音乐喷泉控制系统硬件设计
2.1 控制系统硬件总体设计方案
2.2音乐信号的采集
2.2.1 音频放大电路的设计
2.2.2 采样定理
2.3 单片机电路
2.3.1 单片机的概述
2.3.2 时钟电路的设计
2.4 AD转换电路
2.4.1 ADC0809与单片机89C51的连接
2.4.2输入电路
2.5潜水泵调速硬件方案设计
2.6灯光硬件方案设计
2.7解决系统时间滞后硬件电路设计
第3章  喷泉控制系统软件设计
3.1喷池数据
3.2主程序框图
3.3 控制潜水泵软件设计模块
3.3.1 潜水泵开关调速的原理
3.3.2潜水泵开关调速的软件设计
3.4控制电磁阀软件设计模块
3.5 歌曲存储模块
3.5.1音频脉冲的产生
3.5.2音乐程序
3.6灯光控制模块
3.7看门狗子程序
3.8实验仿真
结 论
参考文献
附 录
附录1
附录2
1



计算机控制技术课程答辩论文
第1章 绪 论1.1课题背景

随着人们生活水平的提高,人们对环境的要求越来越高,城市环境建设日益为人们所重视。喷泉作为一种观赏性较高的艺术水景,不断的出现在城市的广场、公园及其它公共场所,早些的喷泉都是固定不可调的,显得有些单调,随着科技的发展音乐喷泉也进入了我们的城市。音乐喷泉是现代科技与艺术的综合,音乐喷泉将喷水图形、彩色灯光及音乐旋律构成一个有机的整体,随着乐曲旋律和节奏的变化,各种不同的喷水花形相应的配合变换,在五彩绚丽的变幻灯光照耀下,构成一幅幅奇妙无比的景观、令人赏心悦目,叹为观止,在视听上获得极大的享受。音乐喷泉的起源于1930年,德国人首先带出喷泉的概念,此后经过多年的发展,其音乐喷泉的设计及构造已变得更大型及复杂。随着我国改革开放政策的不断实施,80年代中,我国也相继引进和自行设计建造了多座音乐喷泉,为美化环境,活跃人民的文化生活起了良好的作用。通过学习和引进国外先进技术,加上自行研究和开发,喷泉的面貌不断更新,各种新水型层出不穷,音乐喷泉还可以同水幕电影、激光表演和舞台表演相结合,产生令人难忘的艺术效果。我国现有上百家喷泉水景设备制造厂,经过市场竞争、优胜劣汰,我国已经出现了几家综合实力较强的大型喷泉水景工程公司,能够独立建设投资上千万元的特大型喷泉水景工程,并创造了一些世界之最的新记录。总体上说,我国的喷泉水景技术已经达到了国际先进水平,其建设规模和市场需求更是其他国家所难以相比的。

1.2 音乐喷泉的发展和现状

    北京石景山古城公园的音乐喷泉,在悠扬动听的音乐声中,喷水可产生五六种变化,时而转动如银伞,时而飘忽如玉带,时而如金蛇狂舞,时而旋转飞溅···喷出的花形有昙花、菊花、扶桑花、百合花和曼陀罗花,这是在80年代初期中国较早建设的一个音乐喷泉。

南昌的秋水广场是由“落霞与孤鹜齐飞,秋水共长天一色”的意境得名,秋水广场就是以喷泉为主题,集旅游、观光、购物的大型休闲广场。他的音乐喷泉最吸引人注目,是国内最大的音乐喷泉群,泉水面积1.2万平方米,主喷高达128米,是南昌的一俏丽景观,人们可以一边欣赏音乐,一边观看滕王阁的美景。

新加坡圣淘沙旅游区的音乐的设计与效果也是值得参考的,它布置在一个空旷而略有坡度的空间,面积很大,与圣淘沙车站前的长形喷水池共同组成为一个长达数百米的综合系列喷泉,音乐喷泉位于系列喷泉的顶端。舞台为一假山堆叠的西洋式半圆柱廊组成,共分3层。白天,假山瀑布及两侧的喷泉群与3层水池形成一处动静结合的较为文雅悠扬的水景园,入夜则有五光十色,优美动听的喷泉景观,整个舞台区域东西面阔近百米,南北深度约40m,成为目前亚洲最大的音乐喷泉之一。表现出壮阔、绚丽的水景之美。

    以上几处音乐喷泉从建筑形势、音乐曲调及水舞表演的角度展现了音乐喷泉的美丽姿态,但是都属于大型的音乐喷泉,其控制系统也多采用PLC逻辑编程控制,造价高,流量需求大,一般为专门的定量设计。即使这样,国内外的音乐喷泉控制系统设计均以达到成熟的水平,而且还有专门的生产设计厂家,提供设计、喷泉设备及安装等服务。目前,国内的音乐喷泉逐渐向智能化、分散化、综合化、多样化的方向发展,于是对喷泉控制系统的设计也提出了更高的要求。



第2章 音乐喷泉控制系统硬件设计2.1 控制系统硬件总体设计方案

该音乐喷泉控制系统的总体结构如图2.1所示,由音乐输入系统、数模转换系统、单片机控制系统和输出控制系统等组成。

   

                          图2.1 系统总体结构框图

2.2音乐信号的采集

前面已经介绍过,本文的研究针对的是采用外部音源的喷泉系统,因此在对

音乐信号进行特征识别前首先要完成对模拟音乐信号的采集。音乐信号的采集主

要包括音频放大和 A/D 转换两个过程,下面分别进行分析。

2.2.1 音频放大电路的设计

外部音源信号的幅度一般较弱,因此必须要对原信号进行放大处理后才能送入A/D 转换器。本文选择了 LM386 芯片设计音频放大电路。LM386 是美国国家半导体公司(NS)推出的系列功率放大集成电路的一种,LM386 具有功耗低、工作电压范围宽、所需外围元件少等特点,在电子设备的音频放大电路设计中应用非常广泛,它使用了 10 只晶体管构成了输入级、电压增益和电流驱动级。其中 T1~T6 组成 PNP 型复合差分放大器,T5、T6 为镜像恒流源,作为 T3、T4 的有源负载,使输入级有稳定的增益。电压增益级由接成共发射极状态的 T7 承担,其负载也使用了恒流源,整个集成功放的开环增益主要由该级决定。T8、T9 复合为一个 PNP 管,和 T10 共同组成互补对称射极输出电路,以供给负载以足够的电流。D1、D2 提供了 T8、T9、T10 所需的偏置,使末级偏置在甲乙类状态。R5~R7 构成内部反馈环路。从图 3.2.1 可以看出,LM386 采用双列 8 脚封装结构,它的工作电压范围为 4~12V,静态电流 4mA,最大输出功率 660mW,最大电压增益 46dB,增益带宽 300kHz,谐波失真 0.2%。


图2.2.1 LM386 封装形式及引脚定义

在 LM386 的 DataSheet 上,提供了两种典型放大电路的设计方案。一种是在

LM386 的 1 脚和 8 脚之间不接其他元件,此时放大电路的增益仅由内部电阻 R5~R7决定,为 20 倍数(26dB),这种方式外部电路元件最少,也最为经济。另一种通

过在 1 脚和 8 脚之间串接不同的阻容元件,改变放大电路的交流反馈量,从而改变放大电路的闭环增益。音乐信号的放大采集如图 2.2.2所示。外部音源(声卡、CD 机等)的模拟音乐信号分左、右声道分别进入放大电路,经过信号放大后,得到幅值放大后的音频信号。从图 3.2.2 可以看出放大电路的具体设计。在 LM386 的 1 脚和 8 脚之间串接一个 10 微法的电容 C4,使内部电阻 R6 被交流旁路,放大电路的增益能达到最大值,200 倍数(46dB)。再对音频放大电路的外围电路进行设计,电路中电容 C1、C6 作为隔直电容,电位器 P1 用于调节音量的大小,元件 R2、C5 有助于旁路高频噪音和改善输出的音质。电容 C3 作为去耦电容,一方面是本集成电路的蓄能电容,另一方面旁路掉该器件的高频噪声。电容 C2 则是作为旁路电容,将信号的中高频噪音旁路到地。经过放大电路的音频信号就送入 A/D 转换器进行采样,这里 A/D转换器要设置为双极性,即能接收负信号。


图 2.2.2 音乐信号放大采集

2.2.2 采样定理

采样是指用一较高频率的开关脉冲对模拟信号进行取样,取出脉冲到来时刻

所对应的模拟信号的幅度,这样就可以得到一连串幅度变化的离散脉冲。用这些

离散脉冲序列代替原来时间上连续的信号,也就是在时间上将模拟信号离散化。

如图 3.2.2 所示,在对音乐信号进行放大处理后,就要通过 A/D 转换将模拟信号采集进计算机,这就是音乐信号的采样。我们在对一个连续的音乐信号进行采样时,为了使采样后的样本序列能够包含足够的信息以使其能够较正确地重现原来的模拟信号,在采样时应当使采样频率满足采样定理的要求。采样定理的描述为“对一个模拟信号进行离散化时,只要满足采样频率fs 大于或等于被采样信号的最高频率fm的2 倍,就可以通过理想的低通滤波器,从样本值序列信号中无失真地恢复出原始模拟信号”,这里的fm称为香农频率,这个采样定理又称为香农采样定理。实际应用中为了较好的防止频谱混叠失真,采样频率一般要稍大于信号最高频率的 2 倍。比如乐曲的音域频段如果在 50Hz~4000Hz 内,就要将 A/D 转换器的采样频率选定为 10kHz,才能满足香农采样定理的要求。

2.3 单片机电路

    单片机要采集音乐信号,并据此调节I/O口的输出来控制水泵和彩灯。主芯片选用AT89C51单片机。AT89C51单片机是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8K空间的可反复擦写1000次的Flash只读存储器,具有256bytes的随机存取数据存储器(RAM),32个I/O口,1个看门狗定时器,3个16位可编程定时器,具有ISP功能,能够满足设计要求。使用简单且价格非常低廉。故系统的主控制器采用此方案。


图2.3 89C51芯片

2.3.1 单片机的概述

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存取器(RAM),器件采用ATMEL公司的ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。AT89C51提供一下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个双全工串行通信口,片内震荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

单片机有四个数据输出端口,P0口、P1口、P2口、P3口。由于P3口还有许多特殊功能,如读写控制、串行通信、外部中断等功能,所以P3口不用作数据输入输出端口。P0口具有很强的带负载的能力,除了用作地址总线低八位以外,还兼作访问外接扩展程序内存时数据总线以及与A/D转换器ADC0809L连接的资料线。P1口、P2口带负载能力相对比教弱,而P2口需要用作访问外接内存的高八位地址线,因此P2口也不作为数据输入输出口,剩下的P1口作为资料输出口。

2.3.2 时钟电路的设计

AT89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器,如图2—13所示:

                     图2-13自激振荡器

2.4 AD转换电路

输入的电压为交流模拟量,不能直接送入单片机进行处理。因此首先采用全桥整流,滤波。使其成为直流信号,再采用全桥整流,滤波。使其成为直流信号,再采用了ADC电路。其中AD芯片为ADC0832。ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32

s,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性强。独立的芯片使能输入,使多器件挂接和处理器控制变得更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。串行通信节约单片机I/O资源。

ADC0809各引脚功能:ADC0809采用双列直插式封装,共有28条引脚。

   (1)IN0—IN7(8条) IN0—IN7为8路模拟电压输入线,用于输入被转换的模拟电压;

   (2)地址输入和控制(4条) ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,ADDA、ADDB和ADDC三条地址线上的地址信号得以锁存,经译码后控制8路模拟开关工作,ADDA、ADDB和ADDC 为地址输入线,用于选择IN0—IN7上的哪一路模拟电压送给比较器进行A/D转换。

   (3)数字量输出及控制线(11条)“START”为“启动脉冲”输入线,该线上的正脉冲由CPU送来,宽度应大于100ns,上升沿清零SAR,下降沿启动ADC工作。EOC为转换结束输出线,该线上的高电平表示A/D转换已结束,数字量已锁入“三态输出锁存器”。OE为“输出允许”线。

   (4)电源线及其他(5条) CLOCK为时钟输入线,用于为ADC0809提供逐次比较所需的时钟脉冲序列。VCC为+5电源输入线,GND为地线。VREF(+)和VREF(-)为参考电压输入线,用于给电阻阶梯网络供给标准电压。VREF(+)常与 VCC 相连VREF(-)常接地或负电源电压。

2.4.1 ADC0809与单片机89C51的连接

    ADC0809的时钟信号来自单片机89C51的ALE信号,89C51采用12MHz时钟频率,ALE为2MHz,经四分频后为500KHz作为ADC0809的时钟频率。用P2.7控制A/D转换的启动与转换结束后数字量的读取。ADC0809的地址锁存允许管脚(ALE)H和启动管脚(START)相连。由P2.7和WR信号经或非门提供的信号使P0.2—P0.0提供的3位通道地址送入ADC0809进行锁存,用以选取通道号。转换结束信号EOC作为查询信号。具体接口电路如图2-4所示

                           图2-4ADC0809

2.4.2输入电路

    在这里,输入电路是指能对乐曲启停、乐曲节奏和声音强弱等进行检测并将检到的信号以电平、脉冲或数字形式送至单片机的电路。为说明简单计,这里仅介绍能反映乐曲启停的奏曲信号电路。因为有了它,音乐已不再仅是背景音乐,音乐已用来控制整个喷池的动作与否,因而已达到了音乐喷泉的最基本要求。

奏曲信号电路的框图如图2.4.2所示。左右两路立体声信号经混合后送限幅放大电路放大,这样即使是极弱的乐曲信号也能有足够强度媳信号输出。整流滤波电路用以将信号转为单向信号。电压比较器用以将大于基准电压的单向信号变换成低电平有效的奏曲信号由之端输出。通过调整基准电压,可使电路既不受干扰的影响又灵敏度最大。奏曲信号电路的输出经R3送至光耦4N35在单片机P1.5引脚产生一低电平信号。


图2.4.2奏曲信号电路框图

2.5潜水泵调速硬件方案设计

方案一:采用变频器,调速方便、容易,只要控制口电流范围为4到20毫安就可以,精度高,缺点价格偏贵。

方案二:采用步进电机调速电路,这样会增加电路复杂性,控制精度偏低,优点是价格偏低。本系统成本问题必须考虑,控制精度要求不是很高,步进电机调速电路就可以满足要求。

本系统采用可控硅调相的方法控制喷泉水泵的转速。电路如图2.5所示,由单片机的I/O口输出矩形波,通过光耦控制可控硅的导通角,进而控制水泵电机的转速,调整喷泉的输出高度。选用单相可控硅BT169控制220V的双向交流电。交流通过二极管1N4007(耐压值1000V)组成的整流桥后变为100Hz脉动的直流,由单片机P0.4依据音乐采样结果输出矩形波,通过光耦控制可控硅的通断,以达到调相的目的。

图2.5电机电路图

采用这种方法关键要保证矩形波与100Hz脉动直流保持同相,由AD采样的结果决定100Hz脉动直流的每一个周期有多长时间是导通的。所以将100Hz脉动直流分压后作为单片机内部比较器的一个输入端,另一个输入端接一个由5V分来的固定电压。当比较器的输出结果发生变化时,由定时器定一段时间,这样就找到了每个周期的起点,然后再根据AD采样决定不等的延时来输出矩形波导通可控硅。AD采样结果大,每个周期的延时短,可控硅导通的时间长,水泵电机转速快,反之亦然。

2.6灯光硬件方案设计

    方案一:使用大功率,不同颜色的发光二极管。

方案二:使用LED水下低压彩灯。LED-水下彩灯系列除广泛使用于喷泉,瀑布水下照明外,还可用于假山,桥梁等投光照明。 水下彩灯均采用著名荷兰菲利蒲公司产品,产品结构合理,色彩鲜艳,并进一步改进了其密封、防护和接线方式,广泛适合于各种喷泉。

本次设计采用水下照明和闪光彩灯,水下照明采用LED水下低压彩灯两个,闪光彩灯采用不同颜色的发光二极管。

              图2.6 彩灯的连接

2.7解决系统时间滞后硬件电路设计

    由于单片机采集数据并处理需要一定的时间,加上电机响应和水柱显示也需要一定的时间。电机由一种转速到另一种转速的响应时间可以查电机参数得到,电动机的响应时间为0.04S,单片机采集处理数据程序约为100句,约为0.6ms,水柱的显示延时可以通过水闸效应计算出来,经计算总延时约为0.2S。提出两种解决方案。

方案一:采用预处理,即把要控制的音乐元素提前编辑好,提前控制。

方案二:采用把音乐延时播放,即在音乐源与音响间加延时电路,调节参数,使音乐与水柱的变化同步。

音乐元素提前预处理一般使用在工控机等数字处理能力非常强的控制系统中,使用单片机一般实现不了这个预处理目标。因此采用延时电路[6]把音乐延时播放,选择方案二。




























第3章  喷泉控制系统软件设计

程序采用模块化结构,所有用到的常数或数组都用EQU或DATA或DB伪指令定义与命名,以使程序易于修改、调试和升级。本系统将TO溢出中断用于软件看门狗。

3.1喷池数据

    喷池数据是用以对喷池内的水泵、电磁阀和彩灯等进行开与关控制的数据。一组可循环使用的这种数据,就决定了喷泉和彩灯的一个特定的变化形态。这组喷池数据可称为花样数据。对一个特定构造的喷池,这种花样数据可编写出很多。

下面以图3.1为例说明花样数据的编排方法。假设希望外圈喷头每隔一定时间顺次增喷2个喷头,且从2个经4步顺时针增至8个后,再顺次以同样的方向同样的速度每次减喷2个喷头,即从8个喷头经4步减至0。以后不断按上述规律循环变化。在这期间,里圈和中心喷头一直不喷。在不考虑其它控制的情况下,图4.1喷池只需2个输出寄存器,其各位控制喷头定义如下:

8

7

6

5

4

3

2

1

X

X

X

13

12

11

10

9

图3.1喷头布局例

以上各位若为1时相应的喷头喷水,为0时不喷水,则外圈喷头数据应为:

0000 0011B

0000 1111B

0011 1111B

1111 1111B

1111 1100B

1111 0000B

1100 0000B

0000 0000B

若该花样数据定义为HYSJ01则数据定义如下:

HYSJ01:

DB 03H,0FH,3FH,0FFH,0FCH,0FOH,0COH,00H;外圈喷头数据

DB 0,0,0,0,0,0,0,0 ;                    里圈和中心喷头数据

每次将花样数据输出时都是顺次取一列输出的,且可循环取用。显然这样的花样数据可以编不少,还可将两个以上的数据搭配起来,组成新的更复杂一些的花样数据。

3.2主程序框图

程序重新设置后,进入0000H开始的主程序,其流程图如图3.2所示。可以看出:P1.4上的开关K决定是否测试输出通道;乐曲是否演奏决定了喷池是否有动作,即P1.5的电平;拔码开关的设定值决定了延时多少倍的0.1秒时间,即喷池动作改变的时间间隔:奏曲每停一次(大多数乐曲奏曲中间不会停),下次再奏曲就换一组花样数据,若用完了最后一组,以后就从头再取。也就是多个乐曲依次轮流循环使用编制好的喷池花样数据。

3.3 控制潜水泵软件设计模块

目前,潜水泵结构简单,成本较低,控制方便,只有一种转速。要控制潜水泵的流量变化,就必须使潜水泵的转速发生变化。

我们使用无触点开关分时接通的方法提高潜水泵的转速档次,在硬件电路基本不变的条件下,使潜水泵具有十八档转速的调速能力和更好的节能效果,这种方法无需增加较多的硬件,仅在控制器中采用新的调速程序,即可达到提高潜水泵转速档次和节能的目的。

                  图3.2 主程序流程图

3.3.1 潜水泵开关调速的原理

潜水泵调速电路中, L、M、H分别为单相潜水泵的低速抽头、中速抽头和高速抽头,单相潜水泵采用电容运行方式,三个抽头与电源的连接由三个双向晶闸管TL、TM、TH来控制,当TL导通时潜水泵的低速抽头与电源连接,潜水泵低速运转,同样,TM导通时潜水泵中速运转,TH导通时潜水泵高速运转。我们采用分时接通L、M、H的方法,可以调节潜水泵的转速,使潜水泵获得十八档转速的变速能力。设电源频率为50HZ,其周期为0.02S,取调速周期TS=6T(T为电源周期),低速调速时,调速周期内不接通任何一个晶闸管,则潜水泵的转速0,调速周期内全接通晶闸管TL,则潜水泵低速运转,但如果在6个电源周期内,N个周期接通晶闸管TL(0≤N≤6),其他时间不接通,那么,在潜水泵的低速下可获得6档更低的转速。同样,中速调速时,调速周期内全接通晶闸管TL,则潜水泵低速运转,全接通晶闸管TM,则潜水泵中速运转,如果在6个电源周期内N个周期接通晶闸管TM,(6-N)个周期接通TL,那么在潜水泵的低速和中速之间可获得6档转速。同样道理,在中速和高速间又可获得6档转速。由此可见采用分时接通的方法,可以使潜水泵具有十八档转速的调速能力。

3.3.2潜水泵开关调速的软件设计

单相潜水泵采用单片机AT89C51控制,单片机的输出端口P2.0、P2.1、P2.2经反相器与晶闸管TL、TM、TH的控制极连接,当P2.0=“0”时,晶闸管导通,潜水泵可低速运转,反之,P2.0=“1”时,晶闸管截止,潜水泵停转,即由P2.0输出电位控制潜水泵的低速档;同样,由P2.1输出电位控制潜水泵的中速档,P2.2控制潜水泵的高速档。采集的音乐信号经过傅立叶变换再去查幅值对应的分贝转速表直接得到转速代码,这样就可以控制潜水泵的转速,再此只以生日快乐音乐程序为例,控制潜水泵转速的方法如下:

每个音符对应一种转速代码,潜水泵的转速随音符改变而改变。调速程序必须经过一个最小时间1/4拍才能输出一个转速代码的转速,在调速程序中,采用一个存储单元(90H)作为转速输入单元,另一个存储单元(95H)记录晶闸管导通时间,并通过延时程序来实现。

在调速程序中,我们采用8位数据记录电机的转速代码,其中低3位(b2b1b0)表示接通比例N,第4、5位(b4b3)表示接通档次,高3位(b7b6b5)不用。接通档次表示调速为低速调速、中速调速还是高速调速,其值为b4b3={00B,01B,10B,11B},当接通档次为00B时,在转速代码设定的接通比例内接通晶闸管TL,接通比例外不接通晶闸管;当接通档次为01B时,在转速代码设定的接通比例内接通晶闸管TM,接通比例外接通晶闸管TL,当接通档次为10B时,在转速代码设定的接通比例内接通晶闸管TH,接通比例外接通晶闸管TM;当接通档次为11B时,接通比例只有00H一种,这时在整个调速周期内接通晶闸管TH,潜水泵高速运转。接通比例的取值范围000B-110B,由此可知,转速代码的取值范围为00H-06H,09H-0EH,11H-16H总共十八个代码,其中00H-06H为低速档代码,09H-0EH为中速档代码,11H-16H为高速档代码。所以潜水泵除零速外共有十八档转速。

上述方法可以使潜水泵具备十八档转速的调速能力,但这个方法也有一些缺点,主要是:

① 潜水泵的转矩是脉动的,使潜水泵的机械噪声增大,在此我采取防止转子轴向运动的措施减少噪声,把潜水泵和水管固定。

② 低速档接通比例较低时,潜水泵主轴出现蠕行,不能正常工作,必须限制最小转速代码。可去掉低速档转速代码中最低接通比例的三个代码,保留转速较高的十五档转速。采用改进的控制位波形和限制最小转速代码之后,潜水泵在应用中取得较好的调速和调节流量的效果。

3.4控制电磁阀软件设计模块

控制阀主要是控制喷池花型,由于采用PA0到PA7,PB0到PB4口控制电磁阀,除去相同的花型喷头,所以喷池花型只有1到256种。可以人工按键选择,其喷池花型值通过LED数码管显示出来,即第几号花型,选择了喷池花型值就使相应的电磁阀通电,高电平口使电磁阀有电。高电平口使电磁阀有电,电磁阀编号与PA、PB口的编号对应,则PA、PB口的喷头数据一样。

控制电磁阀子程序模块

DIAN:      MOV    A,31H;        求出花型数据

            ADD    A,32H

            ADDC   A,33H

            MOV    34H,A;        保存起来

            MOV    DPTR, #0F700H;指向1#8155命令口

            MOV    A,    #3H;    设置命令字

            MOVX   @DPTR,   A

INC    DPTR;          指向1#PA口

            MOV    A,34H

            MOVX   @DPTR,A;      高电平口使电磁阀有电

            INC    DPTR;          指向1#PB口

            MOV    A,R7

            MOVX @DPTR,   A

            RET

3.5 歌曲存储模块3.5.1音频脉冲的产生

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将I/O反相,然后重复计时再反相。就可在I/O引脚上得到此频率的脉冲。利用单片机的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

表3.1  C调各音符频率与计数值T的对照表

音符
频率Hz
简谱码(T值)
音符
频率Hz
简谱码(T值)
低1DO
262
63628
#4FA#
740
64860
#DO#
277
63731
中5SO
784
64898
低2RE
294
63835
#5SO#
831
64934
#2RE#
311
63928
中6LA
880
64968
低3M
330
64021
#6
932
64994
低4FA
349
64103
中7SI
988
65030
#4FA#
370
64185
高1DO
1046
65058
低5SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6
466
64463
高3M
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1480
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64684
#5SO#
1661
65235
#2RE#
622
64732
高6LA
1760
65252
中3M
659
64777
#6
1865
65268
中4FA
698
64820
高7SI
1967
65283

每个音符使用一个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表3.2节拍与节拍码的对照。如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍的节拍时间为DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如表3.3为1/4和1/8节拍的时间设定。

表3.2  节拍与节拍码的对照

节拍码
节拍数
节拍码
节拍数
1
1/4拍
1
1/8拍
2
2/4拍
2
1/4拍
3
3/4拍
3
3/8拍
4
1拍
4
1/2拍
5
1又1/4拍
5
5/8拍
6
1又1/2拍
6
3/4拍
8
2拍
8
1拍
A
2又1/2拍
A
1又1/4拍
C
3拍
C
1又1/2拍
F
3又3/4拍



表3.3  各调1/4节拍的时间设定

曲调值
DELAY
曲调值
DELAY
调4/4
125毫秒
调4/4
62毫秒
调3/4
187毫秒
调3/4
94毫秒
调2/4
250毫秒
调2/4
125毫秒


表3.4简谱对应的简谱码、T值

简谱
发音
T值
简谱码
简谱
发音
简谱码
T值
5
低音
64260
1
6
中音
9
64968
6
低音
64400
2
7
中音
A
65030
7
低音
64524
3
1
高音
B
65058
1
中音
64580
4
2
高音
C
65110
2
中音
64684
5
3
高音
D
65157
3
中音
64777
6
4
高音
E
65178
4
中音
64820
7
5
高音
F
65217
5
中音
64898
8

高音
0


3.5.2音乐程序

先根据乐谱的音符按表3.1建立T值表的顺序,把T值表建立在TABLE1,构成发音符的计数值放在TABLE中;简谱码(音符,参照表3.4)为高4位,节拍(节拍数,参照表3.2)为低4位,音符节拍码放在程序的“TABLE”处。音乐程序模块

START-MU:

                     ORG    00H              ;                   主程序起始地址

                     JMP    START;                  跳至主程序

                     ORG    0BH              ;                   TIMER0中断起始地址

                     JMP    TIM0;                   跳至TIMER0中断子程

START:               MOV    TMOD,#01H              ;             设TIMER0在MODE1

                     MOV    IE,    #82H;            中断使能

START0:               MOV    30H,  #00H;            取简谱码指针

NEXT:               MOV    A,    30H              ;            简谱码指针载入A

                     MOV               DPTR,#TABLE;           至TABLE取简谱码

                     MOVC               A,   @A+DPTR     

                     MOV              R2,    A;                 取到的简谱码暂存于R2

                     JZ                END0;                  是否取到00(结束码)?

                     ANL               A,     #0FH;          不是,则取低4位(节拍码)

                     MOV               90H,   A;              为调速保存数据

                     MOV    R5,    A;             将节拍码存入R5

                     MOV    A,     R2;            将取到的简谱码再载入A

                     SWAP               A;                     高低4位交换

                     ANL               A,     #0FH;          取低4位(音符码)

MOV                 90H,               A;              保存音符码,为调速做准备

                     JNZ               SING;                  取到的音符码是否为0?

                     CLR                TR0;                   是,则不发音

                     JMP               D1;                    跳至D1

SING:               DEC                A;                     取到的音符码减1(不含0)

                     MOV               22H,    A              ;           存入(22H)

                     RL                A;                     乘2

                     MOV               DPTR, #TABLE1;  至TABLE1取相对的高位字节计数值

                     MOVC              A,    @A+DPRT      

                     MOV               TH0,  A;        取到的高位字节存入TH0

                     MOV               21H,  A;        取到的高位字节存入(21H)

                     MOV               A,    22H              ;     再载入取到的音符码

                     RL               A;                  乘2

                     INC               A;              加1

                     MOVC               A,   @A+DPRT;  至TABLE1取相对的低位字节计数值

                     MOV               TL0, A;        取到的低位字节存入TL0

                     MOV               20H, A;        取到的低位字节存入(20H)

                     SETB               TB0;            启动TIMER0

D1:                  CALL               CHULIKOU;       调用以1/4拍为基本单位时间的调速子程序

         INC     30H;          取简谱码指针加1

          JMP               NEXT;           取下一个码

END0:               CLR     TR0;           停止TIMER0

                       JMP              START0;         重复循环

TIM0:   PUSH    ACC;          将A的值暂存于堆栈

                      PUSH    PSW;          将PSW的值暂存于堆栈

         MOV               TL0,  20H;     重设计数值

                     MOV               TH0,  21H

                    CPL               P1.0;              将P1.0位反相

                    POP              PSW;               至堆栈取回PSW的值

                    POP  ACC;           至堆栈取回A的值

                    RETI;                  返回主程序

TABLE1:

                    DW               64260, 64400, 65524, 64580

                    DW                64684, 64777, 64820,   64898

                    DW               64968, 65030,  65058,   65110

                    DW               65157,   65178,   65217

TABLE:

                    DB               82H,01H,81H,94H,84H ;1

DB              0B4H,0A4H,04H

                     DB               82H,01H,81H,94H,84H

                     DB              0C4H,0B4H,04H;2

                     DB               82H,01H,81H,0F4H,0D4H

                     DB               0B4H,0A4H,94H

                     DB               0E2H,01H,0E1H,0D4H,0B4H

                     DB               0C4H,0B4H,04H;3

                     DB  82H,01H,81H,94H,84H

                     DB               0B4H,0A4H,04H

                     DB               82H,01H,81H,94H,84H

                     DB               0C4H,0B4H,04H;4

                     DB  82H,01H,81H,0F4H,0D4H

          DB  0B4H,0A4H,94H

          DB 0E2H,01H,0E1H,0D4H,0B4H

          DB  C4H,0B4H,04H

                     DB  00

TABLE2:               DB 04H,05H,06H

          DB  09H,0AH,0BH,0CH,0DH,0EH

                     DB  11H,12H,13H,14H,15H, 16H

                     END

3.6灯光控制模块

LC182是音频调制彩灯控制专用芯片,其内部分配器频率的高低受音频信号大小的调制,特别适用于声光音响控制场合,可直接驱动驱动众多发光二极管闪光,也可驱动交流彩色电灯作循环闪光。LC182为四路驱动输出。他们的内部均有信号整流电路。压控振荡器,脉冲分配器。在本系统中,单片机便开启LC182时,LC182四路输出依次变为高电平,其循环频率约为0.5~1HZ,一有音乐信号的输入,彩灯的循环频率随音频信号的大小而变化,其最高循环频率为15HZ。

灯光控制子程序

LUMP:

                 MOV   DPTR,  #0EF00H              ;      初始化2#8155,PA口为基本输出口

                                    PB口为基本输出口,PC口输入口

                  MOV   A,     #1H

                  MOVX @DPTR, A

       INC   DPTR

                  INC   DPTR;                 指向2#8155PC口

                  MOV  A,   #01H

                  MOVX @DPTR, A

                  RET

3.7看门狗子程序

软件看门狗由“喂狗”子程序和(看门狗定时器)TO溢出子程序组成。“喂狗”子程序如下:

DOG:

MOV TH0,#02H;模式1定时器,在6MHZ晶振时,定时约130ms

MOV TL0, #18H

RET

此子程序应在系统程序的若干处调用,保证在程序正常执行时TO总不溢出。当受到某种干扰程序跑飞时,“喂狗”子程序得不到执行,经130ms后TO溢出中断,就会执行如下的(看门狗定时器)To溢出子程序:

TOINT:

POP YR1 ;舍去无用栈顶内容

POP YR1 ;YRD和 YR1是两个RAM单元名

MOV YR0,#49H ;0049H是本程序设定起始喷池花样序号指令的存放地址

MOV YR1.#O

PUSH YR0 ;使栈顶内容为0049H

PUSH YR1

RETI ;执行RETI时PC值=0049H,即从0号喷池花样开始演出

当执行从中断返回指令RETI时,栈顶内容0049H就会弹出至程序计数器PC,从而重新设定起始喷池花样序号后,再进行乐曲控制初始化,喷池继续正常动作。

3.8实验仿真

仿真是利用计算机对实际额屋里模型或数学模型进行试验(虚拟仪器的虚拟实验),通过这样的模型试验来随一个实际系统的性能和工作状态进行分析和研究。

近年来计算机仿真技术取得了快速的发展,同时推动了单片机仿真技术的进步。目前,用于单片机仿真的工具很多,有些主要用于软件仿真,侧重于算法的验证;有些用于硬件仿真的工具对CPU的仿真能力有限,至于对CPU外围的硬件仿真更是无能为力。Proteus在单片机CPU和外围器件方面表现出卓越的仿真能力使其成为目前最好的仿真工具之一。

Proteus的显著特点如下:

   (1)全部满足单片机软件仿真系统的标准,并在同类产品中有明显优势;

   (2)具有模拟电路仿真、数字电路仿真、单片机及外围电路组成的系统仿真的功能;

   (3)目前支持的单片机类型有:68000系列、51系列、AAVR系列等;

   (4)支持大量的存储器和外围设备。

由于实验室条件原因本设计仿真部分不能在实验室完成,因此仅在此将使用Proteus来实现本设计仿真的步骤进行描述如下:

第一步:打开Proteus 6 Professional绘图界面。

第二步:添加所需元件并连接电路图。本设计所需元件有:AT89C51、LED灯、水泵、电磁阀、扬声器等。

第三步:添加仿真文件。

第四步:单击开始图标,开始仿真。此时喷泉开始运行,根据运行状态进行源代码的调试。


结 论

喷泉不但是园林、城市街道广场和公共建筑等的装饰品之一,而且它的出现给人们带来了无限的欢乐,并且单一的喷泉逐步发展成种类繁多、造型优美、花型变化灵活的音乐喷泉,同时加上灯光艺术,使喷泉更加华丽、更加引人注目,因此成为现代社会较为流行的一种观赏景观。音乐喷泉的开发研究具有很大的发展前景,目前国内外同行业的技术无不体现着高科技技术在娱乐业的广泛应用。本文阐述的只是一些初步的研究与开发,如何提高音乐节拍与喷泉的同步,全面考虑音乐的要素的识别和提取、实现音乐与喷泉的完美结合应该是一个艰巨的挑战。

本文设计的音乐喷泉控制系统是旅游景点内用的小型音乐喷泉,具有造型优美、营业性强、控制简单可靠的特点,充分体现了经济型和实用性的原则,并且喷泉的安装方便、维护简单,能够满足用户的需求。

在系统设计中,运用流体力学理论设计了喷泉的管路系统;运用单片机实现了乐曲播放和流量及花型控制;运用Protel软件设计出了控制系统的控制电路。

不足之处在于:系统利用的是单片机产生方波信号控制扬声器发音,所以播放的只能是音乐的曲调,而不是真人真唱的歌曲。

参考文献

【1】肖玲琍. 音乐喷泉与现场总线技术[J]北京建筑工程学院学报, 2003,(03)

【2】陈一民,刘云超,陈琳,李元. 音乐喷泉系统的可视化设计及实时仿真[J]计算机工程, 1999,(08)

【3】李华,胡汉才.喷泉设计设备手册[P].北京:高等教育出版社,2006 :56-70

【4】孙育才.供水系统设计[M].湖北:水利电力出版社,1979:40-45

【5】任致程.实用电动机控制电路350例[M].北京:人民邮电出版社,2002.132—134

【6】吴仁华,祁大勇.灯光控制系统的设计.北京:北京航空航天大学学报,2003:35-35

【7】崔玉周,杨吉,刘文斌.接口技术.水利与建筑工程学报,2007,5(1):73-75

【8】黄振国.应用电路技术.四川:电子科技大学出版社,2003:62-65

【9】李汉.基于单片机的单相电动机调速方法及其实现.广州航海高等专科学校学报,2004,12(1):38-40

【10】张均,廖建波.小型音乐喷泉控制系统设计.江西农业大学学报,1999,21(4):619-621

【11】吴金戌,沈庆阳.8051单片机实践与应用[T].北京:清华大学出版社,2002:124-130

附 录附录1
附录2


完整论文下载(word格式 可编辑):
基于单片机的音乐喷泉控制系统设计---副本---副本.doc (407 KB, 下载次数: 190)

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

使用道具 举报

沙发
ID:197649 发表于 2017-5-17 09:05 | 只看该作者
你好,请问阀门花形控制这一块的内容,外圈是两个喷头递增或递减,里圈呢
回复

使用道具 举报

板凳
ID:197649 发表于 2017-5-17 09:07 | 只看该作者
你好,内圈喷头怎么控制呢
回复

使用道具 举报

地板
ID:463236 发表于 2019-1-6 18:57 | 只看该作者
您好,这个仿真软件用什么呀~
回复

使用道具 举报

5#
ID:455569 发表于 2019-1-18 21:28 | 只看该作者
风劝云别走 发表于 2019-1-6 18:57
您好,这个仿真软件用什么呀~

可以用  keil  C51吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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