毕业设计-基于AT89C51单片机的音乐喷泉控制系统设计.doc_第1页
毕业设计-基于AT89C51单片机的音乐喷泉控制系统设计.doc_第2页
毕业设计-基于AT89C51单片机的音乐喷泉控制系统设计.doc_第3页
毕业设计-基于AT89C51单片机的音乐喷泉控制系统设计.doc_第4页
毕业设计-基于AT89C51单片机的音乐喷泉控制系统设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录第1章 绪 论11.1课题背景41.2 音乐喷泉的发展和现状5第2章 音乐喷泉控制系统硬件设计62.1 控制系统硬件总体设计方案62.2音乐信号的采集72.2.1 音频放大电路的设计72.2.2 采样定理92.3 单片机电路102.3.1 单片机的概述102.3.2 时钟电路的设计112.4 ad转换电路112.4.1 adc0809与单片机89c51的连接122.4.2输入电路132.5潜水泵调速硬件方案设计132.6灯光硬件方案设计142.7解决系统时间滞后硬件电路设计15第3章 喷泉控制系统软件设计163.1喷池数据163.2主程序框图183.3 控制潜水泵软件设计模块183.3.1 潜水泵开关调速的原理193.3.2潜水泵开关调速的软件设计203.4控制电磁阀软件设计模块213.5 歌曲存储模块213.5.1音频脉冲的产生213.5.2音乐程序233.6灯光控制模块263.7看门狗子程序263.8实验仿真27结 论29致 谢30参考文献31附 录32附录132附录233第1章 绪 论1.1课题背景喷泉原是一种自然景观,是承压水的地面露头。园林中的喷泉,一般是为了造景的需要,人工建造的具有装饰性的喷水装置。喷泉可以湿润周围空气,减少尘埃,降低气温。喷泉的细小水珠同空气分子撞击,能产生大量的负氧离子。因此,喷泉有益于改善城市面貌和增进居民身心健康。喷泉的原理是个动量守恒,从大半径管道到小半径管道,产生一个速度的变化,冲向背离地面的方向。 大半径的速度由泵带动,小半径中的速度是原来速度,与动量转化速度。需要选择一个微元计算动量守恒,这样能求出一个速度,这个速度是出口速度,然后就是一个上抛运动了,这个是理想的情况,没有摩擦,没有风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 只晶体管构成了输入级、电压增益和电流驱动级。其中 t1t6 组成 pnp 型复合差分放大器,t5、t6 为镜像恒流源,作为 t3、t4 的有源负载,使输入级有稳定的增益。电压增益级由接成共发射极状态的 t7 承担,其负载也使用了恒流源,整个集成功放的开环增益主要由该级决定。t8、t9 复合为一个 pnp 管,和 t10 共同组成互补对称射极输出电路,以供给负载以足够的电流。d1、d2 提供了 t8、t9、t10 所需的偏置,使末级偏置在甲乙类状态。r5r7 构成内部反馈环路。从图 3.2.1 可以看出,lm386 采用双列 8 脚封装结构,它的工作电压范围为 412v,静态电流 4ma,最大输出功率 660mw,最大电压增益 46db,增益带宽 300khz,谐波失真 0.2%。图2.2.1 lm386 封装形式及引脚定义在 lm386 的 datasheet 上,提供了两种典型放大电路的设计方案。一种是在lm386 的 1 脚和 8 脚之间不接其他元件,此时放大电路的增益仅由内部电阻 r5r7决定,为 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 倍。比如乐曲的音域频段如果在 50hz4000hz 内,就要将 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两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器,如图213所示: 图2-13自激振荡器 2.4 ad转换电路输入的电压为交流模拟量,不能直接送入单片机进行处理。因此首先采用全桥整流,滤波。使其成为直流信号,再采用全桥整流,滤波。使其成为直流信号,再采用了adc电路。其中ad芯片为adc0832。adc0832为8位分辨率a/d转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05v之间。芯片转换时间仅为32s,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性强。独立的芯片使能输入,使多器件挂接和处理器控制变得更加方便。通过di数据输入端,可以轻易的实现通道功能的选择。串行通信节约单片机i/o资源。adc0809各引脚功能:adc0809采用双列直插式封装,共有28条引脚。 (1)in0in7(8条) in0in7为8路模拟电压输入线,用于输入被转换的模拟电压; (2)地址输入和控制(4条) ale为地址锁存允许输入线,高电平有效。当ale线为高电平时,adda、addb和addc三条地址线上的地址信号得以锁存,经译码后控制8路模拟开关工作,adda、addb和addc 为地址输入线,用于选择in0in7上的哪一路模拟电压送给比较器进行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.2p0.0提供的3位通道地址送入adc0809进行锁存,用以选取通道号。转换结束信号eoc作为查询信号。具体接口电路如图2-4所示 图2-4adc08092.4.2输入电路 在这里,输入电路是指能对乐曲启停、乐曲节奏和声音强弱等进行检测并将检到的信号以电平、脉冲或数字形式送至单片机的电路。为说明简单计,这里仅介绍能反映乐曲启停的奏曲信号电路。因为有了它,音乐已不再仅是背景音乐,音乐已用来控制整个喷池的动作与否,因而已达到了音乐喷泉的最基本要求。奏曲信号电路的框图如图2.4.2所示。左右两路立体声信号经混合后送限幅放大电路放大,这样即使是极弱的乐曲信号也能有足够强度媳信号输出。整流滤波电路用以将信号转为单向信号。电压比较器用以将大于基准电压的单向信号变换成低电平有效的奏曲信号由之端输出。通过调整基准电压,可使电路既不受干扰的影响又灵敏度最大。奏曲信号电路的输出经r3送至光耦4n35在单片机p15引脚产生一低电平信号。图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个输出寄存器,其各位控制喷头定义如下:87654321xxx131211109图3.1喷头布局例以上各位若为1时相应的喷头喷水,为0时不喷水,则外圈喷头数据应为:0000 0011b0000 1111b0011 1111b1111 1111b1111 1100b1111 0000b1100 0000b0000 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所示。可以看出:p14上的开关k决定是否测试输出通道;乐曲是否演奏决定了喷池是否有动作,即p15的电平;拔码开关的设定值决定了延时多少倍的01秒时间,即喷池动作改变的时间间隔:奏曲每停一次(大多数乐曲奏曲中间不会停),下次再奏曲就换一组花样数据,若用完了最后一组,以后就从头再取。也就是多个乐曲依次轮流循环使用编制好的喷池花样数据。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(0n6),其他时间不接通,那么,在潜水泵的低速下可获得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, ainc dptr; 指向1#pa口 mov a,34h movx dptr,a; 高电平口使电磁阀有电 inc dptr; 指向1#pb口 mov a,r7 movx dptr, a ret3.5 歌曲存储模块3.5.1音频脉冲的产生 若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将i/o反相,然后重复计时再反相。就可在i/o引脚上得到此频率的脉冲。利用单片机的内部定时器使其工作计数器模式(mode1)下,改变计数值th0及tl0以产生不同频率的方法产生不同音阶,例如,频率为523hz,其周期t1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将i/o反相,就可得到中音do(523hz)。 表3.1 c调各音符频率与计数值t的对照表音符频率hz简谱码(t值)音符频率hz简谱码(t值)低1do26263628#4fa#74064860#do#27763731中5so78464898低2re29463835#5so#83164934#2re#31163928中6la88064968低3m33064021#693264994低4fa34964103中7si98865030#4fa#37064185高1do104665058低5so39264260#1do#110965085#5so#41564331高2re117565110低6la44064400#2re#124565134#646664463高3m131865157低7si49464524高4fa139765178中1do52364580#4fa#148065198#1do#55464633高5so156865217中2re58764684#5so#166165235#2re#62264732高6la176065252中3m65964777#6186565268中4fa69864820高7si196765283每个音符使用一个字节,字节的高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 节拍与节拍码的对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍41/2拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍a2又1/2拍a1又1/4拍c3拍c1又1/2拍f3又3/4拍表3.3 各调1/4节拍的时间设定曲调值delay曲调值delay调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒表3.4简谱对应的简谱码、t值简谱发音t值简谱码简谱发音简谱码t值5低音6426016中音9649686低音6440027中音a650307低音6452431高音b650581中音6458042高音c651102中音6468453高音d651573中音6477764高音e651784中音6482075高音f652175中音648988高音03.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 movr2, 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; 跳至d1sing: dec a; 取到的音符码减1(不含0) mov 22h, a; 存入(22h) rl a; 乘2 mov dptr, #table1; 至table1取相对的高位字节计数值 movca, 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; 启动timer0d1: call chulikou; 调用以1/4拍为基本单位时间的调速子程序 inc 30h; 取简谱码指针加1 jmp next; 取下一个码end0: clr tr0; 停止timer0 jmpstart0; 重复循环tim0: push acc; 将a的值暂存于堆栈 push psw; 将psw的值暂存于堆栈 mov tl0, 20h; 重设计数值 mov th0, 21h cpl p1.0; 将p1.0位反相 poppsw; 至堆栈取回psw的值 pop acc; 至堆栈取回a的值 reti; 返回主程序table1: dw 64260, 64400, 65524, 64580 dw 64684, 64777, 64820, 64898 dw 64968, 65030, 65058, 65110 dw 65157, 65178, 65217table: ;1 db 82h,01h,81h,94h,84h db0b4h,0a4h,04h db 82h,01h,81h,94h,84h db0c4h,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 00table2: db 04h,05h,06h db 09h,0ah,0bh,0ch,0dh,0eh db 11h,12h,13h,14h,15h, 16h end3.6灯光控制模块lc182是音频调制彩灯控制专用芯片,其内部分配器频率的高低受音频信号大小的调制,特别适用于声光音响控制场合,可直接驱动驱动众多发光二极管闪光,也可驱动交流彩色电灯作循环闪光。lc182为四路驱动输出。他们的内部均有信号整流电路。压控振荡器,脉冲分配器。在本系统中,单片机便开启lc182时,lc182四路输出依次变为高电平,其循环频率约为0.51hz,一有音乐信号的输入,彩灯的循环频率随音频信号的大小而变化,其最高循环频率为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 ret3.7看门狗子程序软件看门狗由“喂狗”子程序和(看门狗定时器)to溢出子程序组成。“喂狗”子程序如下:dog:mov th0,#oh;模式1定时器,在6mhz晶振时,定时约130msmov tl0拌0hret此子程序应在系统程序的若干处调用,保证在程序正常执行时to总不溢出。当受到某种干扰程序跑飞时,“喂狗”子程序得不到执行,经130ms后to溢出中断,就会执行如下的(看门狗定时器)to溢出子程序:toint:pop yr1 ;舍去无用栈顶内容pop yr1 ;yrd和 yr1是两个ram单元名mov yr0,#49h ;0049h是本程序设定起始喷池花样序号指令的存放地址mov yr1样opush yr0 ;使栈顶内容为0049hpush yr1reti ;执行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】肖玲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论