基于AT89C51单片机的音乐喷泉控制系统设计(4)

2019-04-21 13:23

青岛理工大学毕业设计(论文)

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

程序采用模块化结构,所有用到的常数或数组都用EQU或DATA或DB伪指

令定义与命名,以使程序易于修改、调试和升级。本系统将TO溢出中断用于软件看门狗。

3.1喷池数据

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

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

7 X 6 X 5 13 4 12 3 11 2 10 1 9

图3.1喷头布局例

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

0000 0011B 0000 1111B 0011 1111B

16

青岛理工大学毕业设计(论文)

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 控制潜水泵软件设计模块

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

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

17

青岛理工大学毕业设计(论文)

开始初始化自检取音符常数取节拍常数启动T0节拍时间到休止符调花形子程序取简谱码指针查表取常数结束码循环TR0清零0结束TR0清零,指针+15S?

图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,那么在潜水泵的低速和中速

18

青岛理工大学毕业设计(论文)

之间可获得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为高速档代码。所以潜水泵除零速外共有十八档转速。

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

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

② 低速档接通比例较低时,潜水泵主轴出现蠕行,不能正常工作,必须限制最小转速代码。可去掉低速档转速代码中最低接通比例的三个代码,保留转速

19

青岛理工大学毕业设计(论文)

较高的十五档转速。采用改进的控制位波形和限制最小转速代码之后,潜水泵在应用中取得较好的调速和调节流量的效果。

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以产生

20


基于AT89C51单片机的音乐喷泉控制系统设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:道路清扫保洁管理方案及应急方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: