智能水塔水位控制器毕业设计论文

上传人:1888****888 文档编号:37617948 上传时间:2021-11-03 格式:DOC 页数:45 大小:480.03KB
收藏 版权申诉 举报 下载
智能水塔水位控制器毕业设计论文_第1页
第1页 / 共45页
智能水塔水位控制器毕业设计论文_第2页
第2页 / 共45页
智能水塔水位控制器毕业设计论文_第3页
第3页 / 共45页
资源描述:

《智能水塔水位控制器毕业设计论文》由会员分享,可在线阅读,更多相关《智能水塔水位控制器毕业设计论文(45页珍藏版)》请在装配图网上搜索。

1、智能水塔水位控制器目 录第一章 前言 2 第二章 功能说明,结合功能框图 3第三章 使用操作说明 5第四章 原理图分析主要部分工作原理 7第五章 PCB板制作 9第六章 主要芯片资料应用说明 11第七章 程序框图及说明 15第八章 调试数据记录表及调试故障现象及其解决方法 16第九章 心得体会 20第十章 致谢 22第十一章 参考文献 23第十二章 附录(源程序) 24第一章 前 言目前我国水资源已经相当的匮乏,如何节约用水也成为了电子爱好者设计制作的焦点。现有的二级供水方式,既先用水泵从水井中抽到蓄水池中供用户使用,要求蓄水池的水位必须保持一定的高度,还需要防止水的溢出。可是现在市售的都是传

2、统的水位控制器,多以浮球式、触点式为主,可靠性不好,有着无法改进的致命缺点,如:无水位显示,无电机保护,可靠性不高,控制精度改进度不大,寿命不长相对于机械式水位控制器,电子式的水位控制器有着无可比拟的优点:添加水位显示电路、电机保护电路、强制性手动开、关机电路可以达到水位显示、简单的电机保护、水位自动控制,控制精度是传统机械式水位控制器的几何倍。本控制器采用了高效率、高稳定性、低功耗的ATMEL80s51单片机,具有水位状态显示、抽水时间显示、并有故障检测功能。集高效、高精度、高稳定性、低功耗、高性价比、良好的人机交流界面、操作简便、显示直观以及低功耗等功能于一体的智能水塔水位控制器无疑将会家

3、用水位控制器极具竞争力的一匹黑马。第二章 功能说明,结合功能框图数码管显示 状态指示灯 按键 控制部分潜水泵 报警装置 水位开关 结构方框图(-)本产品控制部分采用低电压,高性能CMOS8位微处理器ATMEL的AT89S51,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,功能十分强大并且价格低廉。水位开关采用三组带环行磁铁的密封在水管中的干簧管,磁铁在水的浮力作用下吸合干簧管而使之导通,灵敏度很高。工作电压: 220V 10%消耗功率: 0.1W(待机) 2W(工作)控制输出功率:6.6K

4、W水位控制精度: 5cm短期使用环境温度: 4075度短期使用环境湿度: 5%95%稳定使用环境温度: 20度50度长期使用环境湿度: 35%80%误 差 : 1%2.1 各部分的设计:2.1.1 水位开关的设计: 三个水位开关由三个钢簧管组成。分别安装在水塔的高,中,低部位。最高是停止抽水,最低是启动抽水,中间是起时间报警保护水泵作用。2.1.2 潜水泵的选择: 水泵为单相水泵。潜水泵安装在水源内部。2.1.3 设计按键部分:复位按键,维护按键,模式按键,功能按键,电源开关。 复位按键设计在内部。维护按键,模式按键,功能按键,电源开关按键都安装在外部。 2.1.4 数码管显示设计: 抽水时间

5、和次数,由一个四位数码管显示2.1.5 报警器的设计: 以低电平触发。当电机出现空转,欠压,失压,水源缺水以及系统电路出现故障时,进行自动报警并且自动控制电机停止运转。2.1.6 状态指示灯设计: 当红、黄、绿三灯同时亮起时显示水位已满,红灯闪烁表示高水位警告显示,红灯亮表示高水位正常显示,黄灯亮表示中水位显示,绿灯亮表示低水位正常显示,绿灯闪烁表示低水位警告,红黄绿三灯同时闪烁表示水源缺水报警。2.1.7 控 制 部 分: 按下电源开关后,本产品开始自动检测,若无故障则开始工作,检测水塔内的水位,若水位过低则绿灯闪烁,自动启动水泵开始抽水直到水满,数码管开始显示抽水时间,水位过中间时黄灯会亮

6、,当水抽满时三盏等全亮;如果水位正常则本产品进入待机状态。第三章 使用操作说明3.1 产品操作简介:三盏灯常亮高水位警告红灯闪烁水满红灯常亮高水位正常黄灯常亮中水位显示绿灯常亮低水位正常绿灯闪烁低水位警告三灯闪烁水源缺水报警 指示灯功能表(一)本产品为智能化水位自动控制器,接同电源后无须任何操作即可自动工作。如有必要也可通过按键在任何正常工作情况下强制开启停止水泵。产品面板上有三个按键,左边一个红色带锁的维护键,中间一个绿色点触式模式键、和右边一个绿色点触式按键,内部还有一个复位按键,按下复位键则恢复默认设置。四个数码管分别显示和记录抽水次数、时间。当红、黄、绿三灯同时亮起时显示水位已满,红灯

7、闪烁表示高水位警告显示,红灯亮表示高水位正常显示,黄灯亮表示中水位显示,绿灯亮表示低水位正常显示,绿灯闪烁表示低水位警告,红黄绿三灯同时闪烁表示水源缺水报警。 操作规程:按下电源开关后,本产品开始自动检测,若无故障则开始工作,检测水塔内的水位,若水位过低则绿灯闪烁,自动启动水泵开始抽水直到水满,数码管开始显示抽水时间,水位过中间时黄灯会亮,当水抽满时三盏等全亮;如果水位正常则本产品进入待机状态。 用水时,数码管全部显示横杠,三盏指示灯显示相应的水位,灯的显示情况与水位状况如下所示:本产品的水位为自动控制,在水位过低时可自动抽水,水满则自动停机。若想进入手动状态,在抽水状态下按下红色维护键,再按

8、下功能键就停止抽水,再按一次则再次启动水泵抽水;在待机状态下按下红色维护键,再按一次功能键就启动水泵抽水,再按一次则停止抽水。注意:在水已经满了的时候,按启动键无效,不能手动启动水泵。在不抽水的用水期按下维护键,数码管显示00-00,可通过功能键可以翻阅以前的抽水次数和时间。当出现了一些程序错误不能正常工作的时候,按下内部的复位键则可以解决大部分的问题。按下复位键的同时再按下模式跟功能按键1S以上则清除所有数据,恢复出厂状态。第四章 原理图分析主要部分工作原理 4.1 电源部分采用了常用的三端稳压电路。通过变压器将220v的市电降成12v的交流电,经过D1D4桥堆和2200UF电容进行整流、滤

9、波,通过0.1uf电容滤出高次谐波,得到了波形叫平稳的13.2v左右的直流电,通过7812后得到了非常平稳的12v直流电;再经过一次相同的稳压过程得到了纹波系数更小的5v直流电。整个电路的输出功率也完全可以达到本厂品的需求。 原理图(-)4.2 主面板: 主要是由TA89S51、24C04存储芯片和一些外围电路构成主要由小电流控制大电流。由三个水位开关分别装在水塔的“上,中,下”三个水位。当水塔水位在底水位时,底水位传感器信号输入给TA89S51 P2.5-P2.7,然后TA89S51通过P3.7控制光耦来控制水泵抽水,直到水塔抽满,水泵才停.在抽水的过程中4位数码管显抽水时间,和的抽水的次数

10、.4.3 TA89S51各引脚所对应外电路如下:P0.0P0.7数码管驱动P1.0P1.2按键控制输入端P1.3P1.5指示灯输出端P1.6P1.7接24C204第5、6脚P2.0P2.4数码管位选信号输出P2.5P2.7传感器信号输入P3.7接光耦第2脚4.4 24C04各引脚功能:第1、2、3、4、7脚接地第8脚接电源4.5 光耦各引脚功能:第1脚5v电源第2脚P3.7第3脚悬空第4脚三极管Q5基极第5脚12v电源第6脚悬空第五章 PCB板制作5.1 主面板PCB: 5.2 控制与显示PCB:5.3 电源部分:5.5 电路板的选用: 选用环氧树脂板, 环氧树脂与铜箔有极好的粘合力,同箔的附

11、着强度与工作温度高,可以在260度的焊锡熔中不起泡。也可使用覆铜聚四氟乙烯玻璃布层压板。不同的材料有不同的特点,由调试中可能多次更换元件,所以要考虑到铜箔的粘合力。5.6 布线注意事项:布线的好环直接影响着放大器的性能,不好的线路板,会使信号产生歧变,产生本底噪音生尖峰脉冲干扰等,为了尽避免上述影响,线路板在线出尽量做到:5.6.1 接照信号的传输路径由小到大的顺序在电路板上合路的布置各各元器的位置,尽量缩短各元器件之间的距离,以减少外部干扰的引入和不必要的干扰。5.6.2 在供电线路中,大电流通过的路径应尽量度设计得实一些,以降低电源内阻,使电流能顺利通过。5.6.3 在供电线路中,应尽量避

12、免大电流的印刷电路式导线交布置在小电流通路的中间或附近,以免造成对小电流的干扰。5.6.4 走线时,应尽量走大于90度直角的线以防止产生尖峰脉冲造成干扰。5.6.5 在设计电线时,尽量使星型供电方式,而且地的低尽量离滤波电的地端近。,5.6.6 大功率元件与小功率元件尽量分开布线。第六章 主要芯片资料应用说明6.1 AT89S51单片机:ATMEL公司生产的AT89S51单片机是采用高性能的表态8051设计,由先进工艺制造,并带有非易性FLADSH程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用多。主要性能特点有: l 8KB FLASH ROM,可以擦除1000次以上,数

13、据保存10年。 l 256字节内部RAM。 l 电源控制模式时钟可停止和恢复;空闲模式;掉电模式。 l 5个中断源。 l 2个中断优先级。 l 4个8位I/O口。 l 全双工增强型UART。 l 2个16位定时/计数器,T0、T1(标准80C51) l全静态工作方式:024MHz。6.2 8051单片机的简介:MCS-51单片机是Intel公司在1980年继MCS-48系列8位单片机之后推出的高档8位单片机。MCS-51单片机在性能和片内功能方面大大优于MCS-48系列单片机。MCS-51的典列产品有:8031、8051、8751。8051内部有4KBROM,8751内部有4KBEPROM,8

14、031片内无ROM;除此之外,三者的内部结构完全相同。在此主要介绍8051单片机。8051单片机内部由CPU、4KBROM、256B有RAM、两个16位的定时/计数器T0和T1,4个8位的I/O端口P0、P1、P2、P3、串行口等组成。其内部原理框图如下:芯片内部结构图(-)6.2.1 8位CPU由运算器、指令寄存器、定时和控制电路、振荡器等电路组成。为整个单片机芯片提供控制逻辑时序信号,并完成各类算术、逻辑运算。6.2.2 存储器电路:由4K字节的ROM或EPROM,以及程序地址寄存器等组成程序存储器电路。用来存放程序。若内部存储器容量不足,可扩展外部存储器,程序存储器最大容量可达64K字节

15、。由128个字节的RAM及RAM地址寄存器等组成数据存储器电路,用以存放用户数据。也可扩展外部数据存储器,外扩最大容量可达64K字节。还有20几个特殊功能寄存器(SFR)。包括累加器ACC、B寄存器、数据指针DPTR等,用以临时存放中间运算结果或一些特殊用途等。6.2.2 输入、输出接口电路P0、P1、P2、P3口的锁存器、驱动器及串行口控制等组成并行/串行接口电路,完成片机与外部设备之间的数据交换。两个16位定时/计数电路构成定时器/计数器接口。中断电路为5个中断源提供中断逻辑控制信号。AT89S51工作极限参数:工作温度 储藏温度 任一脚对地电压 1.0V to +7.0V最高工作电压 6

16、.6直流输出电流 25.0mA6.3 引脚说明:8051单片机的外形结构为40条引脚双列直插式封装,其引脚排列如图:引脚说明图(-)6.3.1 主电源引脚Uss(20脚):电路地电平。Ucc(40脚):正常运行和编程校验时为+5V电源。6.3.2 外接晶振或外部振荡器引脚XTAL1和XTAL2:接外部晶振电路。当采用外部振荡电路时,XTAL1应当接地,XTAL2接外部振荡信号的输入。6.3.3 制引脚RST/Upd:RST是复位信号输入端。Upd为备用电源输入端,即Ucc掉电时,由此引脚提供备用电源,以保持内部RAM的信息。ALE/PROG:ALE是地址锁存允许信号。PROG为编程脉冲输入端,

17、即当选用8751单片机时,对片内程序存储器进行编程时,由此引脚输入编程脉冲。PSEN:访问外部程序存储器选通信号,低电平有效。Upp/EA:EA为访问内部或外部程序存储器选择信号。为1时,访问内部程序存储器;当程序计数器PC超过片内程序存储器地址时,将自动转向外部程序存储器继续运行。为0时,则只能访问外部程序存储器。6.3.4 输入/输出口引脚P0口(3239):8位漏极开路双向并行I/O端口。当访问外部存储器时,它是复用的地址和数据总路线;外部不扩展只做单片使用时,用做双向I/O口;在进行片内部程序校验期间,作指令代码输出,负载能力为8个LSTTL。P1口(18):8位准双向并行I/O端口,

18、在片内程序校验期间,作低8位地址用。负载能力为4个LSTTL。P2口(2128):8位准双向并行I/O端口。当访问外部存储器时做高8位地址用;不做外部扩展时,则做为准双向I/O口使用;在片内程序校验时作高8位地址线负载能力为4个LSTTL。第七章 程序框图及说明开始调用函数库初始化源程序水位、按键扫描状态扫描数码管显示指示灯状态24C04读写操作启停加水时间计时蜂鸣器报警电机运行监控 程序流程图(-)程序清单详见附录第八章 调试数据记录表及调试故障现象及解决方法8.1 硬件调试: (一)、首先我们将硬件分为五个小模块(电源模块、主面板模块、显示模块、按键和指示灯模块、传感器部件)进行腐蚀并焊接

19、好元件,将各个模块都进行测试。8.1.1 电源模块:说明:因为我们的继电器需要12V进行驱动,所以在此我们所选用的变压器为220V12V交流变压器,整流元件选用7812跟7805稳压管。调试:它的输出电压就得到了我们所需要的12V、5V、GND电源。焊接好元件后,接好变压器,发现电源的指示灯不亮,用手触摸7812与7805稳压管,发现7812与7805稳压管严重发热,用万用表测量输出电压,发现12V、5V于GND的电压都为0.36V。立即取下变压器。将电路进行检测,在此我就对元件的引脚分别加以测试,看其是否短接。经过测试发现7812稳压管的散热片与电容的接地脚短接,7805稳压管的散热骗与电阻

20、的的输入脚短接。我们将稳压管平放在电路板上,测试无短接的情况下再次接上变压器。电源指示灯亮,用万用表测试输出电压,分别为+12.05V、+4.98V、GND。电源部分正常工作。将测试数据交给PCB制作人,让他修改好PCB,不让散热片再次有短接的情况。8.1.2 主面板模块:说明:主面板选用AT89S51芯片进行控制,24C04芯片作为外部存储扩充空间。AT89S51单片机控制光耦芯片的断开与闭合来控制NPN三极管的导通,继电器的驱动电压是+12V直流,当三极管导通后继电器的线圈就有了+12V的直流电压。从而触发继电器的断开与闭合。调试:主要测试对象是继电器能否带动大功率的水泵(750W),复位

21、电路是否正常。继电器:将电源插在主面板上,接好水泵,写入一个测试程序,将AT89S51的17脚置为低电平,接通电源后,查看继电器是否闭合。得到预期的实验结果,继电器正常工作。#includesbit P37=a ;main()a=0;(在光耦芯片中,我们可以看到当给以P3.7低电平(GND)时,光耦芯片将会导通,三极管将会导通从而使继电器闭合,水泵工作。)按下电源开关,查看水泵是否正常工作,继电器能否承受起20mA的冲击电流,测试后发现,水泵正常工作。继电器完好无损!主面板的继电器部分正常。复位电路:接好电源后,测试单片AT89S51的RST脚的电压,测试数据得出为0V。按下复位按键后进行测试

22、,RST脚的电压为0.8V。依据复位电路的原理,按键复位不正常,检测元件是否有电源(+12V、+5V)与地(GND)是否有短路,在线路的检查中没有出现短路情况,将原理图进行分析,查看元件时候放置正确,结果检查发现24C04芯片被接反,取下芯片再次测试,按下按键,RST脚为电压为3.8V,依据单片机复位电路的原理,单片机以高电平复位。得出按键复位正常工作。8.1.3 显示模块: 说明:我们所使用的是共阳极四位八段数码管,位接高电平(高电平是+3V以上,以数码管的要求不能超过5V。)调试:首先用万用表测试数码管是否是损坏,将万用表调至二极管测量档位,将正表笔接位,接位1时,负表笔接段选a.b.c.

23、d.e.f.dp段,查看数码管是否显示各个段,测试后,位1正常,然后分别接位2、位3、位4结果显示全部正常,数码管无损坏。结合主面板测试,写入一个测试程序,将AT89S51的P0、P2口置为低电平,接通电源后,查看数码管显示是否为满格。得到预期的实验结果,数码管显示为满格。#includesbit P0=a ;sbit P2=b;main()a=0;b=0;8.1.4 按键和指示灯模块:说明:当接上单片机时,若单片机的引脚没有定义,其默认就为高电平。当指示灯引脚为低电平时指示灯亮。调试:首先检查按键是否正常,没按下时为断开,按下按键则导通,测试结果,没按下时其为闭合,经过检测,发现电路板在敷铜

24、时将两个脚接到了一起,解决方法,用刀片将外围的铜全部刮掉,将方案交给PCB制作人,进行修改PCB。结合主面板进行测试按键,放入一个单片机,不写入任何程序,按键的引脚默认为高电平,接入电源,用万用表测试引脚,结果为高电平,当按下按键则为低电平,用万用表进行测试是否为低电平,测试结果为低电平。测试指示灯时,写入一个程序:将AT89S51的P1.3P1.5脚置为低电平,接通电源后,查看指示灯是否亮。得到预期的实验结果,指示灯亮。#includesbit P13=a;sbit P14=b;sbit P15=c;main()a=0;b=0;c=0;8.1.5 传感器部件:说明:我们使用的是钢簧管,当钢簧

25、管受到磁场力时就会闭合,没有磁场力时则会断开,我们在此使用三个钢簧管作为传感器部件,达到三个水位显示效果。接出四根线,三根单片机引脚线,一根接地线。 调试:用磁芯去吸引钢簧管,再用万用表测试钢簧管是否闭合,测试结果,闭合。传感器部件一切正常。 接入主面板进行调试,放入一个没有程序的单片机,接上电源,用磁芯吸引钢簧管,用万用表测试其相对应的单片机脚是否为低电平。测试结果,没当吸引钢簧管时其单片机相对应的管脚为低电平。得出结论,此钢簧管进入面板调试一切正常。8.1.6 总结调试:组合全部面板:写入一个测试程序,查看数码管显示、指示灯的亮、灭,按键功能是否正常。接入电源,运行该程序,查看其效果是否一

26、切正常,调试结果该组合部分全部正常,然后将所有有误差的PCB修改好,腐蚀出电路板,焊接好元件,经过全部组合后的调试方法进行调试,其电路能够顺利的进行工作。8.2 软件调试:8.2.1 水位按键扫描程序的调试。将high_water_scan()等函数的输出项如high_up_pulse,high_down_pulse直接联系到P0 口观测P0口输出电压是否正确。8.2.2 状态扫描函数的调试。该函数输出项都为外部输出,可以直接从数码管等外部器件知函数否正常。由观测结果进行调试。8.2.3 蜂鸣器报警函数的调试。蜂鸣器为4分之1秒响一次。时间周期 由计时器 0提供。由观测结果进行调试。8.2.4

27、 指示灯状态函数的调试。在自动运行模式时,由传感器提信号,低水位绿灯亮,中水位黄灯亮,高水位红灯亮由观测结果进行调试。8.2.5 数码管显示函数的调试。在自动运行模式时,数码管显示当前加水时间,在查询模式显示历史加水时间,在手动模式时显示-。由观测结果进行调试。8.2.6 24C04读写操作函数的调试。在计时10次之后,进入查询模式,按下模式/功能进行上翻/下翻。由观测结果进行调试。8.2.7 电机运行监控函数的调试。在所有的调试完成之后,进入手动模式,进行启动/停止操作观察继电器是否工作。进入自动模式,移动干簧管观察继电器是否与设计思路工作方式相同。 由上述步聚依次调试、改进直至完成所有目标

28、任务第九章 心得体会在一个多月的时间里我们终于完成了毕业设计智能水塔控制器。这段时间我们虽然相当辛苦但收获良多。许许多多的困难被我们克服,只因为我们是一个优良的团队有一个相当负责相当能干的指导老师,而在此期间学到的将使我受用终身。1、市场会因为竞争而使商品变得极为精练和符合供求关系。在当初选择毕业设计课题时我就瞄准了水塔控制器这种看似简单的东西。在我国广大农村地区因为生活水平的提高农民们再也不想没天都去井里打水用了,他们非常希望拥有城里人一样的自来水供水系统。于是由水井、潜水电泵、家用水塔、自动水位控制器组成的自动供水系统的市场前景变得相当可观,而该系统的核心自动水位控制器又是其中最有利可图的

29、部分。我想以我现在学到的知识自己设计一个应该不是太难的事。当我们四个志同道合的同学组合到一起时我们便开始行动了。为了牟利所做的设计首先要做的事便是市场调查。但出乎我们意料之外的是此时的市场上已经充斥着各式各样的水塔控制器了,最便宜的仅二十几元。我们买回一个拆开一看它简单得几乎没有任何电路,成本不超过十元,但它确有最基本的功能。简单一算便知它的利润超过100%,这使我们相当受鼓舞,但它超低的成本是我们无法超越的。正在我们一筹莫展之际老师指给我们一条明路:别人做低端我们可以做高端啊。没错我们学了这么多电子知识为什么不做个功能强大的水位控制器呢?而此时我们还没看到市场上有超过100元的产品。2、元器

30、件的选择就像做菜时的原料一样,选得好你就成功了一大半。确定了目标后就马不停蹄的开始设计工作。原始数据资料找齐了,元件的选择是一个大难关,必尽我们实际操作的经验太少。虽然有老师的大力帮助但元件上的问题还是在之后的时间里造成了一些相当棘手的问题几乎让我们推倒重来。3、程序的价值往往比硬件高。我们的作品是用单片机控制的,我自认为程序方面我还有拿得出手的地方便主动请缨承担了下来。在编写过程中我了解到实际应用中的程序和书上的习题根本是两回事。书上的习题往往把所有的条件都告诉你了。而在实际中没有人会告诉你将会发生什么但是所有的可能性你都得想到,要做到这点非常困难。生活经验的不足和逻辑思维训练不够使我编写出

31、来的程序漏洞百出。在无数次修改和老师的帮助下我终于在硬件完成调试之前编写出了调试用的软件。这次程序的编写中我体会到硬件是比较死板的只要能够运行他就一定是好的,而软件呢,它在没有语法错误的情况下都能运行但却不一定是好的甚至错得更厉害。而且软件还可以在一定程度上祢补硬件的不足,而硬件却很难反过来祢补软件,所以软件往往比硬件值钱。4、包装也很重要 在前期市场调查时我们只买了一个样品,后来我们又拿到了另一个价值35元包装很好看,可等我们拆开一看里面结构几乎是一样的。可就偏偏贵了十几元,这让我从此很注重包装。并且精心设计了我们作品的包装,虽然并不是太好看但在思想上我已经迈进了一大步。第 十一 章 参 考

32、 文 献单片机原理及控制技术 李全利模拟电子技术 戴士弘 C语言程序设计成奋华 路惠民 Keil Cx51 单片机高级语言编程与应用 徐爱钧 彭秀华 课堂笔记、上机、课堂作业及教材等。 网上资料、网上书库内的材料。第十二章 附 录12.1 源程序#include #define LED_LIGHT 0#define LED_OUT 1#define SPEAK_ON 0#define SPEAK_OFF 1#define W_MOTOR_START 0#define W_MOTOR_STOP 1/*输入输出端口*/sbit high_water_s=P25; /上水位干璜管sbit mid_w

33、ater_s=P26; /中水位干璜管sbit lower_water_s=P27; /下水位干璜管sbit speak=P24; /蜂鸣器驱动端口sbit led_red=P13; /红色指示灯端口sbit led_yellow=P14; /黄色指示灯端口sbit led_green= P15; /绿色指示灯端口sbit maintain_key=P10; /维护开关端口(第一个按键)bit flag_maintain=0;bit flag_maintain_stroken=0;sbit mode_key=P11; /模式键端口(第二个键)bit flag_mode=0;bit flag_m

34、ode_stroken;sbit function_key=P12; /功能键端口(第三个键)bit flag_function=0;bit flag_func_stroken=0;sbit w_motor=P37; /电机驱动端口sfr data_seg_port=0x80; /数码管段码驱动端口sfr data_wei_port=0xa0; /数码管位码驱动端口/*状态表示位*/bit high_up_pulse=0; /上水位上升沿bit high_down_pulse=0; /上水位下降沿bit mid_up_pulse=0; /中水位上升沿bit mid_down_pulse=0;

35、/中水位下降沿bit lower_up_pulse=0; /下水位上升沿bit lower_down_pulse=0; /下水位下降沿bit flag_start_t0=0; /定时器启停标示 bit flag_add_water=0; /加水标志 0为用水状态、1为加水状态bit flag_motor_error=0; /电机出错或下水源缺水bit flag_erase_24c04 /24c04数据删除标志 /*基本处理数据*/char code seg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /定义数据段码char code

36、 wei8=0x7f,0x0bf,0x0df,0x0ef,0x0f7,0x0fb,0x0fd,0x0fe; /P2.0为S1 定义数据位码 /个位在wei7、高位在wei0 int count_50ms=0; /50ms计时变量char water_point_status=0; /水塔水位状态标示bit flag_250ms; /0.25ms闪烁标志char display_data4; /数码管显示数据数组char add_water_count=0; /加水次数char find_water_count=0; /查阅加水次数char lower_add_water_time=0; /下层

37、加水时间分钟char up_add_water_time=0; /上层加水时间分钟char add_water_time_second; /加水时间秒钟char add_water_time_minute; /加水时间分钟char add_water_uptime=0; /加上层水时间char add_water_downtime=0; /加下层水时间char add_water_uptime_storage=0; /存储加上层水时间char add_water_downtime_storage=0; /存储加下层水时间char mod_status=0; /0为手动启停方式 1为手动查阅上次

38、加水时间(通过功能键执行) char ram_write_24c044; /24c04写数组char ram_read_24c044; /24c04读数组 /*延时函数*/void delay(int n) int i; for(i=0;i2)mod_status=0; if(mod_status=0) if(flag_func_stroken) flag_func_stroken=0;flag_add_water=flag_add_waterif(flag_add_water) /手动起动电机start_counter_timer();elsestop_counter_timer(); /手

39、动停止电机 else if(mod_status=1) if(flag_func_stroken) flag_func_stroken=0;find_water_count-;if(find_water_count0)find_water_count=add_water_count; /修改查询指针 else ; if(flag_erase_24c04=1)clr_24c04(); /删除24c04中有效数据 /ifelse /复位控制过程到正常监控阶段(非调整阶段) flag_mode_stroken=0; mod_status=0;flag_func_stroken=0;flag_eras

40、e_24c04=0; /*状态扫描函数*/bit flag_add_water=0; /加水标志 0为用水状态、1为加水状态void status_scan(void)if(flag_add_water=0) /用水方式状态扫描 if(high_down_pulse&high_water_s=1) /上位警戒水位water_point_status=1;high_down_pulse=0;else if(high_up_pulse&high_water_s=0) /上水位water_point_status=2;high_up_pulse=0; else if(mid_down_pulse&m

41、id_water_s=1) /中水位water_point_status=3;mid_down_pulse=0;elseif(mid_up_pulse&mid_water_s=0) /下水位water_point_status=4;mid_up_pulse=0;else if(lower_down_pulse&lower_water_s=1) /下位警告水位water_point_status=5;lower_down_pulse=0;else if(lower_up_pulse&lower_water_s=0) /水塔严重缺水状态water_point_status=6;lower_up_p

42、ulse=0; start_counter_timer();/自动启动电机elseif(high_up_pulse&high_water_s=1)water_point_status=0;high_up_pulse=0; else ; else /加水方式状态扫描 if(lower_down_pulse&lower_water_s=0)water_point_status=7;lower_down_pulse=0;else if(lower_up_pulse&lower_water_s=1)water_point_status=8;lower_up_pulse=0;else if(mid_do

43、wn_pulse&mid_water_s=0)water_point_status=9;mid_down_pulse=0;else if(mid_up_status&mid_water_s=1)water_point_status=10;mid_up_pulse=0;else if(high_down_pulse&high_water_s=0)water_point_status=11;high_down_pulse=0;else if(high_up_pulse&high_water_s=1)water_point_status=12;high_up_pulse=0;stop_counter

44、_timer();/自动停止电机else ; /*蜂鸣器报警函数*/void warn_speak(void)if(flag_250ms)speak=SPEAK_ON;elsespeak=SPEAK_OFF;/*指示灯状态函数*/void led_red_flick(void) /红指示灯闪烁if(flag_250ms)led_red=LED_LIGHT;elseled_red=LED_OUT;void led_yellow_flick(void) /黄指示灯闪烁if(flag_250ms)yellow_red=LED_LIGHT;elseyellow_red=LED_OUT;void led

45、_green_flick(void) /绿指示灯闪烁if(flag_250ms)green_red=LED_LIGHT;elsegreen_red=LED_OUT;void led_red_light(void) /红指示灯亮 led_red=LED_LIGHT;void led_red_out(void) /红指示灭 led_red=LED_OUT;void led_yellow_light(void) /黄指示灯亮 led_yellow=LED_LIGHT;void led_yellow_out(void) /黄指示灯灭 led_yellow=LED_OUT;void led_green_

46、light(void) /绿指示灯亮 led_green=LED_LIGHT;void led_green_out(void) /绿指示灯灭 led_green=LED_OUT;void led_scan(void) /指示灯工作状态扫描 switch(water_point_status) case 0: /水塔水位爆满、严重警告 case 12: led_red_light(); led_yellow_light(); led_green_light(); warn_speak(); flag_add_water=0; w_motor=W_MOTOR_STOP; break; case 1

47、: case 11: led_red_flick(); /水塔高水位警告显示 led_yellow_out(); led_green_out(); break; case 2: case 10: led_red_light(); /水塔高水位正常显示 led_yellow_out(); led_green_out(); break; case 3: case 9: led_red_out(); /水塔中水位闪烁显示 led_yellow_flick(); led_green_out(); break; case 4: case 8: led_red_out(); /水塔下水位正常显示 led_

48、yellow_light(); led_green_out(); break; case 5: case 7: led_red_out(); /水塔下水位闪烁警告显示 led_yellow_out(); led_green_flick(); break; case 6: led_red_flick(); /水塔下水位闪烁警告显示 led_yellow_flick(); led_green_flick(); warn_speak(); flag_add_water=1; w_motor=W_MOTOR_START; break; default: led_red_out(); led_yellow_out(); led_green_light(); break;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!