关闭

关闭

封号提示

内容

首页 [信息与通信]智能水塔水位控制器.doc

[信息与通信]智能水塔水位控制器.doc

[信息与通信]智能水塔水位控制器.doc

上传者: lv大飞 2017-09-27 评分 3 0 7 1 31 暂无简介 简介 举报

简介:本文档为《[信息与通信]智能水塔水位控制器doc》,可适用于初中教育领域,主题内容包含信息与通信智能水塔水位控制器湘潭职业技术学院题目智能水塔水位控制器班级:医电班报告人:指导教师:年月日目录第一章前言…………………………………………符等。

信息与通信智能水塔水位控制器湘潭职业技术学院题目智能水塔水位控制器班级:医电班报告人:指导教师:年月日目录第一章前言………………………………………………………第二章功能说明结合功能框图………………………………第三章使用操作说明……………………………………………第四章原理图分析主要部分工作原理…………………………第五章PCB板制作……………………………………………第六章主要芯片资料应用说明…………………………………第七章程序框图及说明…………………………………………第八章调试数据记录表及调试故障现象及其解决方法……第九章心得体会………………………………………………第十章致谢……………………………………………………第十一章参考文献………………………………………………第十二章附录(源程序)……………………………………………第一章前言目前我国水资源已经相当的匮乏如何节约用水也成为了电子爱好者设计制作的焦点。现有的二级供水方式既先用水泵从水井中抽到蓄水池中供用户使用要求蓄水池的水位必须保持一定的高度还需要防止水的溢出。可是现在市售的都是传统的水位控制器多以浮球式、触点式为主可靠性不好有着无法改进的致命缺点如:无水位显示无电机保护可靠性不高控制精度改进度不大寿命不长……相对于机械式水位控制器电子式的水位控制器有着无可比拟的优点:添加水位显示电路、电机保护电路、强制性手动开、关机电路可以达到水位显示、简单的电机保护、水位自动控制控制精度是传统机械式水位控制器的几何倍。本控制器采用了高效率、高稳定性、低功耗的ATMELS单片机具有水位显示、抽水时间显示、并有故障检测功能。集高效、高精度、高稳定性、低功耗、高性价比、良好的人机交流界面、操作简便、显示直观以及低功耗等功能于一体的智能水塔水位控制器无疑将会家用水位控制器极具竞争力的一匹黑马。第二章功能说明结合功能框图状态指示灯数码管显示按键控制部分水位开关报警装置潜水泵结构方框图本产品控制部分采用低电压高性能CMOS位微处理器ATMEL的ATS该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准的MCS指令集和输出管脚相兼容。由于将多功能位CPU和闪烁存储器组合在单个芯片中功能十分强大并且价格低廉。水位开关采用三组带环行磁铁的密封在水管中的干簧管,磁铁在水的浮力作用下吸合干簧管而使之导通,灵敏度很高。工作电压:V消耗功率:W(待机)W(工作)控制输出功率:KW水位控制精度:cm短期使用环境温度:,~度短期使用环境湿度:~稳定使用环境温度:,度~度长期使用环境湿度:~误差:<水位开关的设计:三个水位开关由三个钢簧管组成。分别安装在水塔的高中低部位。最高是停止抽水最低是启动抽水中间是起时间报警保护水泵作用。潜水泵的选择:水泵为单相水泵。潜水泵安装在水源内部。设计按键部分:复位按键维护按键模式按键功能按键电源开关。复位按键设计在内部。维护按键模式按键功能按键电源开关按键都安装在外部。数码管显示设计:抽水时间和次数由一个四位数码管显示报警器的设计:以低电平触发。当电机出现空转欠压失压水源缺水以及系统电路出现故障时进行自动报警并且自动控制电机停止运转。状态指示灯设计:当红、黄、绿三灯同时亮起时显示水位已满红灯闪烁表示高水位警告显示红灯亮表示高水位正常显示黄灯亮表示中水位显示绿灯亮表示低水位正常显示绿灯闪烁表示低水位警告红黄绿三灯同时闪烁表示水源缺水报警。控制部分:按下电源开关后本产品开始自动检测若无故障则开始工作检测水塔内的水位若水位过低则绿灯闪烁自动启动水泵开始抽水直到水满数码管开始显示抽水时间水位过中间时黄灯会亮当水抽满时三盏等全亮如果水位正常则本产品进入待机状态。第三章使用操作说明产品操作简介:本产品为智能化水位自动控制器接同电源后无须任何操作即可自动工作。如有必要也可通过按键在任何正常工作情况下强制开启停止水泵。产品面板上有三个按键左边一个红色带锁的维护键中间一个绿色点触式模式键、和右边一个绿色点触式按键内部还有一个复位按键按下复位键则恢复默认设置。四个数码管分别显示和记录抽水次数、时间。操作规程:按下电源开关后本产品开始自动检测若无故障则开始工作检测水塔内的水位若水位过低则绿灯闪烁自动启动水泵开始抽水直到水满数码管开始显示抽水时间水位过中间时黄灯会亮当水抽满时三盏等全亮如果水位正常则本产品进入待机状态。用水时数码管全部显示横杠三盏指示灯显示相应的水位灯的显示情况与水位状况如下所示:红灯闪烁高水位警告三盏灯常亮水满红灯常亮高水位正常黄灯常亮中水位显示绿灯常亮低水位正常绿灯闪烁低水位警告三灯闪烁水源缺水报警本产品的水位为自动控制在水位过低时可自动抽水水满则自动停机。若想进入手动状态在抽水状态下按下红色维护键再按下功能键就停止抽水再按一次则再次启动水泵抽水在待机状态下按下红色维护键再按一次功能键就启动水泵抽水再按一次则停止抽水。注意:在水已经满了的时候按启动键无效不能手动启动水泵。在不抽水的用水期按下维护键数码管显示可通过功能键可以翻阅以前的抽水次数和时间。当出现了一些程序错误不能正常工作的时候按下内部的复位键则可以解决大部分的问题。按下复位键的同时再按下两个绿色点触式按键S以上则清除所有数据恢复出厂状态。第四章原理图分析主要部分工作原理DDDIODEDIODERRESVVinVoutVoutVinJufufGNDGNDDDDufufufufDIODEDIODELEDCON电源部分采用了常用的三端稳压电路。通过变压器将v的市电降成v的交流电经过D~D桥堆和UF电容进行整流、滤波通过uf电容滤出高次谐波得到了波形叫平稳的v左右的直流电通过后得到了非常平稳的v直流电再经过一次相同的稳压过程得到了纹波系数更小的v直流电。整个电路的输出功率也完全可以达到本厂品的需求。JJSRshumaduanshumaweispeakPartvuabcdefgdpRRKKQVKPNPFWCBPFJECRRKRKaKRSTPKYbVRXTALPMHCcRRXTALPJPFdRGNDPQeRPPPNPfTRPPgRPPdpRPPRKRPPKRRPPQVKbianyaqiRRPPPNPRKKvPPKKRRYSvPPanjianledLPPQPPPNPRBVPPJDPPSENDIPDIODEPALEPEACCD:CCEPVCCdianjivCCVCCCGNDVRRRGNDKKKNIGNDNIGNDRNIJkRQVECRBkpowervCCCUFUFUFNPNUVVJguanglouchuanganqi主板:主要是由TAS、c存储芯片和一些外围电路构成TAS各引脚功能如下:P~P数码管驱动P~P按键控制输入端P~P指示灯输出端P~P接C第、脚P~P数码管位选信号输出P~P传感器信号输入P接光耦第脚C各引脚功能:第、、、、脚接地第脚接电源光耦各引脚功能第脚v电源P第脚第脚悬空第脚三极管Q基极第脚v电源第脚悬空布线注意事项:布线的好环直接影响着放大器的性能不好的线路板会使信号产生歧变产生本底噪音生尖峰脉冲干扰等为了尽避免上述影响线路板在线出尽量做到:、接照信号的传输路径由小到大的顺序在电路板上合路的布置各各元器的位置尽量缩短各元器件之间的距离以减少外部干扰的引入和不必要的干扰。、在供电线路中大电流通过的路径应尽量度设计得实一些以降低电源内阻使电流能顺利通过。、在供电线路中应尽量避免大电流的印刷电路式导线交布置在小电流通路的中间或附近以免造成对小电流的干扰。、走线时应尽量走大于度直角的线以防止产生尖峰脉冲造成干扰。、在设计电线时尽量使星型供电方式而且地的低尽量离滤波电的地端近。、大功率元件与小功率元件尽量分开布线。第五章PCB板制作主板PCB电路板的选用:选用环氧树脂板,环氧树脂与铜箔有极好的粘合力,同箔的附着强度与工作温度高,可以在度的焊锡熔中不起泡。也可使用覆铜聚四氟乙烯玻璃布层压板。不同的材料有不同的特点由调试中可能多次更换元件所以要考虑到铜箔的粘合力。控制与显示PCB:电源部分:第六章主要芯片资料应用说明ATMEL公司生产的ATS单片机采用高性能的表态C设计由先进工艺制造并带有非易性FLADSH程序存储器。它是一种高性能、低功耗的位CMOS微处理芯片市场应用多。主要性能特点有:,KBFLASHROM可以擦除次以上数据保存年。,字节内部RAM。,电源控制模式时钟可停止和恢复空闲模式掉电模式。,个中断源。,个中断优先级。,个位IO口。,全双工增强型UART。,个位定时计数器T、T(标准C),全静态工作方式:,MHz。单片机的简介MCS单片机是Intel公司在年继MCS系列位单片机之后推出的高档位单片机。MCS单片机在性能和片内功能方面大大优于MCS系列单片机。MCS的典列产品有:、、。内部有KBROM内部有KBEPROM片内无ROM除此之外三者的内部结构完全相同。在此主要介绍单片机。单片机内部由CPU、KBROM、B有RAM、两个位的定时计数器T和T个位的IO端口P、P、P、P、串行口等组成。其内部原理框图如下:图()位CPU由运算器、指令寄存器、定时和控制电路、振荡器等电路组成。为整个单片机芯片提供控制逻辑时序信号并完成各类算术、逻辑运算。()存储器电路由K字节的ROM或EPROM以及程序地址寄存器等组成程序存储器电路。用来存放程序。若内部存储器容量不足可扩展外部存储器程序存储器最大容量可达K字节。由个字节的RAM及RAM地址寄存器等组成数据存储器电路用以存放用户数据。也可扩展外部数据存储器外扩最大容量可达K字节。还有几个特殊功能寄存器(SFR)。包括累加器ACC、B寄存器、数据指针DPTR等用以临时存放中间运算结果或一些特殊用途等。()输入、输出接口电路P、P、P、P口的锁存器、驱动器及串行口控制等组成并行串行接口电路完成片机与外部设备之间的数据交换。两个位定时计数电路构成定时器计数器接口。中断电路为个中断源提供中断逻辑控制信号。ATS工作极限参数:工作温度……………………………储藏温度……………………………任一脚对地电压………………………,VtoV最高工作电压…………………………,直流输出电流…………………………mA引脚说明单片机的外形结构为条引脚双列直插式封装其引脚排列如图:主电源引脚Uss(脚):电路地电平。Ucc(脚):正常运行和编程校验时为V电源。外接晶振或外部振荡器引脚XTAL和XTAL:接外部晶振电路。当采用外部振荡电路时XTAL应当接地XTAL接外部振荡信号的输入。制引脚RSTUpd:RST是复位信号输入端。Upd为备用电源输入端即Ucc掉电时由此引脚提供备用电源以保持内部RAM的信息。ALEPROG:ALE是地址锁存允许信号。PROG为编程脉冲输入端即当选用单片机时对片内程序存储器进行编程时由此引脚输入编程脉冲。PSEN:访问外部程序存储器选通信号低电平有效。UppEA:EA为访问内部或外部程序存储器选择信号。为时访问内部程序存储器当程序计数器PC超过片内程序存储器地址时将自动转向外部程序存储器继续运行。为时则只能访问外部程序存储器。输入输出口引脚P口(~):位漏极开路双向并行IO端口。当访问外部存储器时它是复用的地址和数据总路线外部不扩展只做单片使用时用做双向IO口在进行片内部程序校验期间作指令代码输出负载能力为个LSTTL。P口(~):位准双向并行IO端口在片内程序校验期间作低位地址用。负载能力为个LSTTL。P口(~):位准双向并行IO端口。当访问外部存储器时做高位地址用不做外部扩展时则做为准双向IO口使用在片内程序校验时作高位地址线负载能力为个LSTTL。第七章程序框图及说明开始调用函数库初始化源程序蜂鸣器报警C读写水位、按键操作扫描数码管显示状态扫描启停加水时间计时指示灯状态电机运行监控程序清单详见附录第八章调试数据记录表及调试故障现象及解决方法硬件调试:(显示部分的调试:共阳极数码管,将v电源接至单片机的位选段GND分别点至单片机的段选abcdefdp段,查看数码管显示时候正确,经过测试,正常!(按键部分的调试:在焊接元件前先测试了元件是否良好控制部分电源,焊接好元件接通电源测试输入端为交流V经电容生压后有V经稳压后得到直流V一路直接引出供继电器和光耦使用另一路降压后再经稳压得到了V的电压。(程序面板部分:写入一个测试程序将ATS的脚置为低电平接通电源后查看继电器是否闭合。得到预期的实验结果继电器正常工作。#include<regh>sbitP^=amain(){a=}(组合全部面板:写入一个测试程序查看数码管显示、指示灯的亮、灭按键功能是否正常。运行程序经调试能正常功工作。软件调试:、水位按键扫描程序的调试。将highwaterscan()等函数的输出项如highuppulse,highdownpulse直接联系到P口观测P口输出电压是否正确。、状态扫描函数的调试。该函数输出项都为外部输出可以直接从数码管等外部器件得知函数否正常。由观测结果进行调试。、蜂鸣器报警函数的调试。蜂鸣器为分之秒响一次。时间周期由计时器提供。由观测结果进行调试。、指示灯状态函数的调试。在自动运行模式时由传感器提信号低水位绿灯亮中水位黄灯亮高水位红灯亮由观测结果进行调试。。、数码管显示函数的调试。在自动运行模式时数码管显示当前加水时间在查询模式显示历史加水时间在手动模式时显示。由观测结果进行调试。、C读写操作函数的调试。在计时次之后进入查询模式按下模式功能进行上翻下翻。由观测结果进行调试。、电机运行监控函数的调试。在所有的调试完成之后进入手动模式进行启动停止操作观察继电器是否工作。进入自动模式移动干簧管观察继电器是否与设计思路工作方式相同。由上述步聚依次调试、改进直至完成所有目标任务第九章心得体会从选择这个项目开始就注定了我们走了一条和别人不同的路。一开始我的指导老师蒋求生就要我们定位于家用智能水塔水位控制市场与市场上早就已经存在的水位控制器竞争。孙子兵法云:知己知彼百战不殆。要想和现有的水位控制器竞争必须要好好的了解现有的水位控制器。我们一组四人调查了湘潭的水位控制市场了解了很多。传统的机械式水位控制器已经相当的成熟了其独特的优点――廉价、实用使其拥有了广大的用户群。但是传统的机械式水位控制器有着无法改进的致命缺点如:无水位显示无电机保护可靠性不高控制精度改进度不大寿命不长……往往有的时候控制器并不能很好的自动工作还需要用户手动开启和停止水泵。让用户很不满意从水井中抽水使用的用户在干旱的季节往往会由于水泵空转而烧掉电机……在了解了现有控制器的优缺点并结合了从用户那反馈过来的信息之后我们提出了一个新的智能水位控制器的方案在蒋老师的指导下多次进行修改最终确定了现在这个方案。之后开始了原理图和PCB的设计本来以为是很简单的事情可是在这个过程中碰到很多意想不到钉子如制作传感器的时候经常犯一些低级错误在确定原理图和制作的时候在组内就有过分歧最终还是大家坐在桌前抛开分歧同意了意见在绘制PCB板的时候经常出现封装错误在进行硬件调试的时候出现过一些小小的错误……其实很多的时候都是由于疏忽、粗心大意引出一些小小的毛病检查的时候又有点不仔细走了不少的弯路弄出了很多笑话。最终还是调试成功了。在这次毕业设计过程中我们付出了很多感受了很多。因为一开始就定位于市场与市场上现有的控制器进行竞争而进行了市场调查跑了湘潭两大建材市场与用户进行了一对一的交谈……通过这次的毕业设计让我们与社会与市场与用户进行了一次更亲密的接触更深一层的了解到了他们的需求。通过亲自根据用户的需求来设计毕业设计让我们更加了解了厂商在推出产品之前还有大量的前奏工作需要完成这样才能跟进甚至引领市场潮流。一次实战远比十次演习得到的效果好得多这次可实际应用的设计让我们学到了做课程设计和课堂上所学不到的东西。更加锻炼了我的胆量、团队意识和责任心最重要的是分析问题、解决问题和面队难题的时候要善于解决的能力得到一次考验和升华。第十章致谢在论文即将完成之际回顾紧张但又充实的学习和开发过程本人在此向所有关心我们及帮助我们的老师和同学们致以最真诚的感谢。在本次毕业设计中我们从指导老师蒋求生老师身上学到了很多东西。他认真负责的工作态度严谨的治学精神和深厚的理论水平都使我们受益匪浅。他无论在理论上还是在实践中都给与我们很大的帮助使我们得到很大的提高这对于我以后的工作和学习都有一种巨大的帮助在此感谢他耐心的辅导。在做毕业设计的整个过程中蒋老师都提出了许多宝贵意见没有他的指导我们就不能较好的完成课题设计的任务。另外我们还要感谢在这几年来对我们有所教导的老师和电子教研室所有老师。他们孜孜不倦的教诲不但让我学到了很多知识而且让我掌握了学习的方法更教会了我们做人处事的道理在此表示感谢。同时在产品设计、市场调查、制产品和广告设计过程中还有的和同专业的同学也给了我们不少帮助这里一并表示感谢。衷心的感谢我的指导老师(蒋求生老师)还有电子教研室的各位老师对我设计所提的宝贵意见并再次感谢各位老师对我三年来的栽培。谢谢~第十一章参考文献《单片机原理及控制技术》……………………………李全利《模拟电子技术》………………………………………戴士弘《C语言程序设计》………………………………成奋华路惠民《KeilCx单片机高级语言编程与应用》……徐爱钧彭秀华课堂笔记、上机、课堂作业及教材等网上资料、网上书库内的材料。第十二章附录源程序#include<regh>#defineLEDLIGHT#defineLEDOUT#defineSPEAKON#defineSPEAKOFF#defineWMOTORSTART#defineWMOTORSTOP********************************输入输出端口******************************sbithighwaters=P^上水位干璜管sbitmidwaters=P^中水位干璜管sbitlowerwaters=P^下水位干璜管sbitspeak=P^蜂鸣器驱动端口sbitledred=P^红色指示灯端口sbitledyellow=P^黄色指示灯端口sbitledgreen=P^绿色指示灯端口sbitmaintainkey=P^维护开关端口(第一个按键)bitflagmaintain=bitflagmaintainstroken=sbitmodekey=P^模式键端口(第二个键)bitflagmode=bitflagmodestrokensbitfunctionkey=P^功能键端口(第三个键)bitflagfunction=bitflagfuncstroken=sbitwmotor=P^电机驱动端口sfrdatasegport=x数码管段码驱动端口sfrdataweiport=xa数码管位码驱动端口**************************状态表示位************************bithighuppulse=上水位上升沿bithighdownpulse=上水位下降沿bitmiduppulse=中水位上升沿bitmiddownpulse=中水位下降沿bitloweruppulse=下水位上升沿bitlowerdownpulse=下水位下降沿bitflagstartt=定时器启停标示bitflagaddwater=加水标志为用水状态、为加水状态bitflagmotorerror=电机出错或下水源缺水bitflagerasecc数据删除标志*************************基本处理数据***************************charcodeseg={xc,xf,xa,xb,x,x,x,xf,x,x}定义数据段码charcodewei={xf,xbf,xdf,xef,xf,xfb,xfd,xfe}P为S定义数据位码个位在wei、高位在weiintcountms=ms计时变量charwaterpointstatus=水塔水位状态标示bitflagmsms闪烁标志chardisplaydata数码管显示数据数组charaddwatercount=加水次数charfindwatercount=查阅加水次数charloweraddwatertime=下层加水时间分钟charupaddwatertime=上层加水时间分钟charaddwatertimesecond加水时间秒钟charaddwatertimeminute加水时间分钟charaddwateruptime=加上层水时间charaddwaterdowntime=加下层水时间charaddwateruptimestorage=存储加上层水时间charaddwaterdowntimestorage=存储加下层水时间charmodstatus=为手动启停方式为手动查阅上次加水时间(通过功能键执行)charramwritecc写数组charramreadcc读数组**********************************延时函数***************************************voiddelay(intn){intifor(i=i<ni)}****************************水位、按键扫描函数***************************voidhighwaterscan(void)上水位检测{if(highwaters=){delay()if(highwaters=)highdownpulse}if(highwaters=){delay()if(highwaters=)highuppulse}}voidmidwaterscan(void)中水位检测{if(midwaters=){delay()if(midwaters=)middownpulse}if(midwaters=){delay()if(midwaters=)miduppulse}}voidlowerwaterscan(void)下水位检测{if(lowerwaters=){delay()if(lowerwaters=)lowerdownpulse}if(lowerwaters=){delay()if(lowerwaters=)loweruppulse}}voidmodekeyscan(void)模式键扫描{if(modekey==){delay()if(modekey==)flagmode=}if(modekeyflagmode)flagmodestroken=}voidfunctionkeyscan(void)功能键扫描{if(functionkey==){delay()if(functionkey==)flagfunction=}if(flagfunctionfunctionkey)flagfuncstroken=}voiderasec(void){if(maintainkey==modekey==functionkey==){delay()if(maintainkey==modekey==functionkey==)flagerasec=}}voidkeyscan(void)按键扫描{modekeyscan()functionkeyscan()erasec()if(maintainkey==)按下功能键{modekeyscan()扫描模式键if(flagmodestroken){flagmodestroken=modstatus记录模式状态if(modstatus>)modstatus=}if(modstatus==){if(flagfuncstroken){flagfuncstroken=flagaddwater=~flagaddwaterif(flagaddwater)手动起动电机startcountertimer()elsestopcountertimer()手动停止电机}}elseif(modstatus==){if(flagfuncstroken){flagfuncstroken=findwatercountif(findwatercount<)findwatercount=addwatercount修改查询指针}}else{}if(flagerasec==)clrc()删除c中有效数据}}ifelse复位控制过程到正常监控阶段(非调整阶段){flagmodestroken=modstatus=flagfuncstroken=flagerasec=}}**************************状态扫描函数*************************bitflagaddwater=加水标志为用水状态、为加水状态voidstatusscan(void){if(flagaddwater==)用水方式状态扫描{if(highdownpulsehighwaters==)上位警戒水位{waterpointstatus=highdownpulse=}elseif(highuppulsehighwaters==)上水位{waterpointstatus=highuppulse=}elseif(middownpulsemidwaters==)中水位{waterpointstatus=middownpulse=}elseif(miduppulsemidwaters==)下水位{waterpointstatus=miduppulse=}elseif(lowerdownpulselowerwaters==)下位警告水位{waterpointstatus=lowerdownpulse=}elseif(loweruppulselowerwaters==)水塔严重缺水状态{waterpointstatus=loweruppulse=startcountertimer()}自动启动电机elseif(highuppulsehighwaters==){waterpointstatus=highuppulse=}else}else加水方式状态扫描{if(lowerdownpulselowerwaters==){waterpointstatus=lowerdownpulse=}elseif(loweruppulselowerwaters==){waterpointstatus=loweruppulse=}elseif(middownpulsemidwaters==){waterpointstatus==middownpulse=}elseif(midupstatusmidwaters==){waterpointstatus=miduppulse=}elseif(highdownpulsehighwaters==){waterpointstatus=highdownpulse=}elseif(highuppulsehighwaters==){waterpointstatus=highuppulse=stopcountertimer()}自动停止电机else}}*********************蜂鸣器报警函数************************voidwarnspeak(void){if(flagms)speak=SPEAKONelsespeak=SPEAKOFF}********************指示灯状态函数************************voidledredflick(void)红指示灯闪烁{if(flagms)ledred=LEDLIGHTelseledred=LEDOUT}voidledyellowflick(void)黄指示灯闪烁{if(flagms)yellowred=LEDLIGHTelseyellowred=LEDOUT}voidledgreenflick(void)绿指示灯闪烁{if(flagms)greenred=LEDLIGHTelsegreenred=LEDOUT}voidledredlight(void)红指示灯亮{ledred=LEDLIGHT}voidledredout(void)红指示灭{ledred=LEDOUT}voidledyellowlight(void)黄指示灯亮{ledyellow=LEDLIGHT}voidledyellowout(void)黄指示灯灭{ledyellow=LEDOUT}voidledgreenlight(void)绿指示灯亮{ledgreen=LEDLIGHT}voidledgreenout(void)绿指示灯灭{ledgreen=LEDOUT}voidledscan(void)指示灯工作状态扫描{switch(waterpointstatus){case:水塔水位爆满、严重警告case:ledredlight()ledyellowlight()ledgreenlight()warnspeak()flagaddwater=wmotor=WMOTORSTOPbreakcase:case:ledredflick()水塔高水位警告显示ledyellowout()ledgreenout()breakcase:case:ledredlight()水塔高水位正常显示ledyellowout()ledgreenout()breakcase:case:ledredout()水塔中水位闪烁显示ledyellowflick()ledgreenout()breakcase:case:ledredout()水塔下水位正常显示ledyellowlight()ledgreenout()breakcase:case:ledredout()水塔下水位闪烁警告显示ledyellowout()ledgreenflick()breakcase:ledredflick()水塔下水位闪烁警告显示ledyellowflick()ledgreenflick()warnspeak()flagaddwater=wmotor=WMOTORSTARTbreakdefault:ledredout()ledyellowout()ledgreenlight()break}}********************************数码管显示函数******************************voidadjustaddwatertime(void)实时显示加水时间{displaydata=segaddwatertimeseconddisplaydata=segaddwatertimeseconddisplaydata=segaddwatertimeminutedisplaydata=segaddwatertimeminute}voidfindaddwatertime(void)显示查阅加水时间数据{displaydata=segaddwatertimeminute分钟displaydata=segaddwatertimeminutedisplaydata=xbfdisplaydata=segfindwatercount}voidMotorErrorindicator(void){charifor(i=i<i)displaydatai=xfledredout()ledyellowout()ledgreenout()}voidadjustwateruse(void)用水状态显示""{charifor(i=i<i)displaydatai=xbf}voidErasecIndicator(void)删除c数据指示{if(flagerasec==){displaydata=xbf""displaydata=segdisplaydata=xbfdisplaydata=seg}}voiddisplaysegdatascan(void){if(maintainkey){if(flagaddwater==)用水状态adjustwateruse()elseadjustaddwatertime()自动加水状态}if(maintainkey==modstatus==)手动加水状态adjustaddwatertime()if(maintainkey==modstatus==)查阅状态findaddwatertime()if(flagmotorerror)电机出错或下水源缺水报警指示{MotorErrorindicator()warnspeak()}ErasecIndicator()删除c数据指示}voiddisplayseg(void){charidisplaysegdatascan()for(i=i<i){if(maintainkeyflagaddwater==flagms)用水阶段闪烁显示""datasegport=displaydataielsedatasegport=xffdataweiport=weiidelay()}if(maintainkeyflagaddwater==||maintainkey==modstatus==){datasegport=xfdataweiport=weidelay()}}****************************c读写操作函数********************voidReadc(unsignedchar*RamAddress,unsignedcharRomAddress,unsignedcharbytes)voidWritec(unsignedchar*Wdata,unsignedcharRomAddress,unsignedcharnumber)charramwritecc写数组charramreadcc读数组charaddwatercount=加水次数charfindwatercount=查阅加水次数voidclrc(void)手动清除c中所有有效数据{chariramwritec=存储数据有效为置无效""for(i=i<i)最大存储数据组Writec(ramwritec,*i,)addwatercount=}charreadcaverage(void)读取各次加水上下水位时间{charichartemp,tempReadc(ramreadc,,)if(ramreadc!=){temp=ramreadctemp=ramreadc}elsereturnfor(i=i<addwatercounti){Readc(ramreadc,*i,)if(ramreadc!=){temp=ramreadctemp=temp=ramreadctemp=}}addwateruptimestorage=tempaddwaterdowntimestorage=temp}voidwriteconedataArray(void)加入一次加水数据{ramwritec=addwatercountramwritec=ramwritec=addwateruptimeramwritec=addwaterdowntimeif((addwateruptime>(addwateruptimestorage)addwateruptime<(addwateruptimestorage)(addwaterdowntime>(addwaterdowntimestorage)addwaterdowntime<(addwaterdowntimestorage))Writec(ramwritec,*addwatercount,)elseaddwatercount}voidreadconedataArray(void)查询一次加水数据{Readc(ramreadc,*findwatercount,)addwatertimeminute=ramreadcramreadc}*****************************启停加水时间计时**************************voidstartcountertimer(void){addwatertimesecond=addwatertimeminute=readcaverage()求历次加水平均数据flagstartt=wmotor=WMOTORSTARTflagaddwater=}voidstopcountertimer(void){flagaddwater=flagstartt=wmotor=WMOTORSTOPaddwaterdowntime=addwatertimeminuteaddwateruptimeaddwatercount计数指针加一writeconedataArray()保存数据}*******************************电机运行监控函数******************************voidMotormonitor(void){if(wmotor==WMOTORSTART){if(addwateruptime>(addwateruptimestorage)||addwaterdowntime>(addwaterdowntimestorage)){wmotor==WMOTORSTOPflagmotorerror=}elseflagmotorerror=}}**********************主函数******************************voidmain(void){}voidtimer(void)interrupt{TH=XCTL=XBOcountmsif(countms==)flagms=~flagmsif(flagstartt)if(countms>){countms=if(flagaddwater){addwatertimesecondif(addwatertimesecond>){addwatertimesecond=addwatertimeminuteif(addwatertimeminute>)addwatertimerminute=}}}}市场调查数据不锈钢水塔尺寸规格内外直径内外板厚桶身高保温层(T)(mm)(mm)(mm)(mm),水泵扬程与功率扬程(m)出水口内径(mm)功率(kw)(三相)两类常见的传统机械式水塔水位控制器原理及不足内嵌开关的浮球控制器报价:元工作原理:类似于床头电扇的跌停开关椭球状的浮球内部有一个导电小球(形状未知)和一个常开触点通过小球的移动来达到开关的断开和闭和以控制水泵的停转的目的。水位过低的时候浮力不足浮起浮球浮球倾斜导电小球滚到触点位置常开触点闭和水泵开始抽水。水位上升过程中由于浮球的位置及阻力作用触点继续闭和水位继续上升。当水位上升到一定程度的时候浮球向另一方向倾斜触点段开水泵停止控制。缺点:浮秋太重小球放在浮秋内部其开关断、开全由导电小球决定小球的离合受水的波动较大可靠性不高而且无水位显示、电机保护功能水井水位过低、水泵内无水容易烧坏水泵控制精度不高。浮球拉线开关水位控制器报价:元工作原理:一个特制的拉线开关下掉两个装水的浮球下面的浮秋作为低水位并结合上面的浮球作为开关的启动。上面的浮秋作为高水位、在水位上升过程中维持开关的导通。水位过低的时候两个浮秋的力作用开关上开关导通水泵工作当水位上升浮起下面的浮秋仅仅靠上面的浮秋维持开关的导通当水位淹没高水位的浮秋时拉线开关所受的浮力不足以维持开关的导通而断开。缺点:可靠性不高而且无水位显示、电机保护功能水井水位过低、水泵内无水容易烧坏水泵控制精度不高。

精彩专题

职业精品

上传我的资料

热门资料

资料评价:

/ 42
所需积分:0 立即下载

意见
反馈

返回
顶部

Q