资源描述
基于单片机的水位检测控制系统设计学 院:专 业:姓 名:指导老师:信息学院自动化刘翔学 号:职 称:090104021046盛珣华 曹宇教授 助理工程师中国珠海二一三年五月诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计基于单片机的水位检测控制系统设计是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。本人签名:日期: 年 月 日基于单片机的水位检测控制系统设计摘要随着社会和科技的进步,以及人们的生活标准水平逐步的提高与发展,方便的全自动控制系统生活的开始逐步进入到我们的生活,单芯片微型计算机发展是其中的一个重要分支,具有高可靠性,高性能价格比,低电压,低功耗等优点,以单片机为核心的自动化控制系统已经赢得了广泛的应用范围。本设计是基于单片机的水位检测控制系统设计。设计系统的目的在于应用单片机的自动运行技术,使得水塔中的水位始终保持在一定范围内,以保证连续正常的供水。本设计是以AT89C51单片机为核心部件的水塔水位检测控制仿真系统设计的,用以检测水位并进行控制、处理以及报警功能,并在Proteus仿真软件环境中仿真测试。结果表明,设计的系统具有良好的检测和控制功能,方便移植性和可扩展性。关键词:水位控制 单片机 报警Based SCM the water level detection control system designAbstracWith the social and technological progress, as well as the level of peoples standard of living gradually improve with the exhibition, and the convenience of automatic control system for the beginning of life gradually into our lives, single-chip microcomputer development is an important branch,the advantages of high reliability, high performance and low cost, low-voltage, low-power microcontroller as the core of the automation control system has won a wide range of applications.The title of the graduate design microcontroller-based water level detection and control system design, three metal rods into the water used to detect the signal, the conductivity of the water, can see that the water level changes. Under normal circumstances, the water level should be kept within a certain range changes, the water level does not exceed the stipulated upper and lower limits, in the event of a system failure, should be promptly cut off electrical power, and there should be sound and audible alarm signals of the light-emitting diode. Design System aimed the application microcontroller run automatically, so that the water level in the water tower always maintained within a certain range in order to ensure the continuous normal water. The design is based on AT89C51 microcontroller as the core components of the water tower water level detection and control simulation system designed to detect water level control, processing, and alarm functions, and Proteus simulation software environment simulation testing. Experimental results show that the design of the system has a good detection and control functions, portability and scalability.Keywords:Level controlmicrocontroller alarm目 录1前言11.1.本设计在国内发展概况11.2国外发展概况11.3设计目的21.4设计意义22总设计22.1设计的技术要求22.2应解决的主要问题32.3设计原理32.4方案选择32.5给定参数52.6整体方案设计52.7优点和特色62.8创新点72.9系统运行过程可能存在的问题7现场数据经过DTU发送后在远程监控室接收不到73硬件介绍73.1光电耦合器4N257工作原理7主要性能8引脚图和引脚名称8极限参数83.2单片机芯片STC90C516RD+9芯片简介绍9芯片STC90C516RD+引脚9主要性能103.3电磁继电器113.4蜂鸣器113.5远程通信模块DTU123.6液位高度传感器124组态软件134.1组态概况134.2组态设计135软件设计175.1Keil软件175.2程序方框图175.3程序设计185.4I/O口的分配185.5子程序18延时子程序18报警子程序19初始化子程序205.4主程序206结论22参考文献23谢 辞24附录25程序代码251前言1.1.本设计在国内发展概况国产水位监测仪主要有浮筒式水位仪、压力传感器式水位仪、超声波式水位仪等,在功能齐全、性能稳定等方面,虽然与国际上先进的同类型产品存在一定差距,但是却可以基本满足水位监测及控制的需要。表1-1中将几类典型的水位检测仪进行了对比。表1-1 国内水位监测仪对比技术指标浮筒式超声波式压力传感器式工作方式记录笔自记水位曲线或光码盘计数人工操作、数字显示多数为数字显示、人工记录,少量的有自动采集,自动打印人为误差大较大较小分辨率1cm1cm1cm(mm)测量精度较低较低较高自动化程度半自动化半自动化半自动化或全自动化电源无需/需要需要需要环境条件受压力影响受气温和湿度影响受气压影响总体技术水平较低较高较高目前国内使用的大多数为SW40-1型日记水位计,LN-3型数字水位仪,WS-1040自动检测仪,其发展趋势都是向数字化、智能化方向发展。1.2国外发展概况国外一些发达国家在水位监测设备水平上也存在着较大的差异,其中美国和荷兰的产品在技术性能上代表着当今世界的先进水平。近年来,水位监测已经融入了更多的技术,例如美国和日本等国已相继推出水位水质监测设备,并已经走进国内的市场了。下表1-2就是国外水环境监测仪器的对比表。表1-2 国外水位检测仪对比产地监测参数工作方式美国水位、水温、电导率、浊度、PH值、大气压等测量数据直接传入电脑中;数据显示仪器可自动显示并存储测量参数;数据无线传输。荷兰水位、水温、PH值传感器采集数据通过串行数据传输线将主机中的数据传入计算机中。日本水位、水温、PH值、电导率、浊度、溶解氧现场原位自动监测。1.3设计目的设计基于单片机的水位检测控制系统,设计水位探测传感器用来探测三个水位,即低水位,正常水位,高水位。低水位时送给单片机一个高电平, 驱动水泵加水,红灯亮;正常范围的水位时,水泵加水,绿灯亮;高水位时,水泵不加水,黄灯亮。 本设计过程中需要应用到传感技术、单片机技术、 光报警技术以及弱电控制强电的技术。1.4设计意义水是一种宝贵的资源,在生产生活中,水也是不可或缺的,在生产中需要对水位进行控制,防止浪费或者不够用,这是就需要对水位进行控制,如果使用专职人员来对水位进行控制,既不能够进行精确控制,又不能保证长时间控制,是极大的浪费人力物力,如果使用单片机来控制水位的话,则是极大的节约了人力物力,而且满足工业生产中的安全,可靠,简单等需求。2总设计2.1设计的技术要求1、利用单片机STC90C516RD+实现对水塔进行水位的控制单片机技术; 2、把水位探测传感器探得水塔中的水位送给单片机以实现对水泵抽水系统的控制传感技术; 3、设计光报警显示系统电路,采用发光二极管来表示系统出现故障时的情况光报警技术;4、水泵加水电路由继电器进行控制弱电控制强电技术; 5、分析工作原理,绘出系统结构原理图及流程图。2.2应解决的主要问题1、高新技术的应用,应该充分利用先进的传感器技术、计算机技术、通讯技术于一体,采取多种高新技术的集成。2、产品的系列化,应该注重系统的集成,不仅着眼于单机,更注重系列、通用集成。未来的检测控制仪将由传感器,采集系统,通讯系统等部分组成,各部分相互独立而又通用。3、注重性价比,在重视高档仪器开发的同时,更应该降低设备研发以及生产的成本。4、研发准则发生变化,不应该一味的追求高精尖,而应该将研发转为“恰到好处”。5、水位检测控制有些时候是需要在非常恶劣的环境条件下工作的,所以要严格控制各个生产环节,提高产品的质量保障。2.3设计原理本设计的原理是利用水位高度传感器将水位的高度数据返回给单片机,然后单片机根据水位高度在某个设定好的I/O口输出一个低电平信号,通过三极管放大后,控制光电耦合器,在驱动继电器就可以对电机的开关进行调节了,用以实现对水位的控制。在出现系统报错的状况后,单片机关闭电机,输出两个低电平信号驱动LED灯和蜂鸣器对现场工作人员进行报警,提示他们系统出现问题,应该尽快解决问题。在外接多功能数据采集仪器以后,可以将现场的数据,如实时水位,两个电机的工作状态,实时进水流量,实时出水流量等众多数据通过无线或者有线的网络传输,传送到远端的监控室。这样就可以通过远程的电脑主机看到工业现场的设备运行状况以及进行控制了。2.4方案选择方案一:方案一的数据采集方式如图2-1所示图2-1 方案一:利用DTU进行远程数据采集这种方案是利用DTU将多功能数据采集仪器采集上来的水位高度,电机工作状态,流入流出流量等信息传送到远端的监控主机上,数据采集仪器和DTU用RS485双绞线连接,采集的数据通过GPRS网络或者3G网络传送到远端的3G路由器上,监控主机再使用TCP/IP协议从3G路由器上获取数据。监控主机上面应该安装组态软件,这样可以将采集的数据实时显示出来,并可以在主机的硬盘中储存水位监测系统的历史运行记录。方案二:方案二的数据采集方式如图2-2所示图2-2 利用主机从机的C/S架构进行远程数据采集这种方案是利用远端的监控主机和现场设备的监控从机之间进行C/S架构而完成的远端数据传输,考虑到一些现场可能存在的地区较为偏远,监控从机的联网所需金额巨大,且C/S架构的后期运行维护成本较高,所以一般不考虑此方案。本设计中,远端数据采集检测控制选择方案一。2.5给定参数在系统出现故障而发生报警时,发光二极管的亮与灭的时间蜂鸣器响铃;水位高度传感器通过A/D转换模块连接到单片机上;水泵的电机的供电部分,我们接入+9V直流电源;为了防止经三极管放大后的电流即发射级的电流讲光电耦合器中的二极管烧坏,在此处之路中加入一个51的电阻;继电器通过光耦和单片机连接用于接收断开、闭合的信号,从而可以在另一端控制水泵的启动、停止;在远端的监控主机上,可以显示出实时水位高度,水泵的工作状态,以及以报表和曲线的形式把水位高度和时间的关系进行显示,以及历史记录的查询。2.6整体方案设计在前面我已经说明了本设计的原理,方案的选择。接下来就是整体设计的方案思路了。首先是将压力式液位传感器经过A/D转换模块连接到单片机上,这样单片机就可以准确的读出压力的大小,根据压力的大小单片机就可以确定水位的高度,这样的好处就是可以避免使用简易的三块铜片采集数据时所造成的的低水位无电压而高水位处有电压的错误情况、以及准确的确定水位现在的高度情况。接下来单片机根据所读取的电压值大小来决定是否需要启动或者关闭电机、或者进行水位过低以及水位过低的报警处理。电机的启动与关闭是单片机在一个I/O输出一个信号,经过三极管放大,然后经由光电耦合器控制连接到电机上的继电器来进行控制的,由于电机驱动一般都需要很大的电压,所以在这里使用继电器是对单片机有一个很好地保护作用。同时单片机在经过一个MAX485模块后,可以和DTU连接起来,这样可以使用DTU接收到得远程数据来控制单片机。在外接一个多功能的数据采集器用来采集现场方面水位和水泵运行状况以及进出水的实时流量等数据,然后经过RS-485双绞线连接到DTU上,将数据传送到远端的监控主机上。监控主机上的组态软件先将需要采集的数据组态好,然后根据经3G路由器接收到的DTU所传数据,将现场情况反馈到显示器上,并且记录。同时也可以对界面中的一些设备进行调试,这样就可以通过DTU将远在现场的设备进行工作状态的切换了。设计本身的结构完整,所使用的压力式液位传感器、单片机、多功能数据采集仪器、DTU、组态软件,这些都是非常成熟的产品,已经在国内外大部分重要的工业领域有所建树,安全性、稳定性都非常突出。而且有了组态软件,在遥远的监控室就可以对现场的情况了如指掌,并且免去了人为的记录误差,所有的数据都会自动保存在监控主机的硬盘里;有了DTU就可以免去前往工业现场的劳累,坐在监控室中获得的数据就和在现场获得的数据毫无差别。最终的设计示意图如图2-3所示。图2-3 设计示意图2.7优点和特色本设计的主要优点是在水位监测控制系统端,充分的利用了单片机的简单可靠,便携易懂。而在远距离传输端,DTU的无线传输功能是一种本设计的一大特色。DTU作为现在最可靠的工业级的远程无线传输模块,可以提供多种方便有利的功能,例如发生故障可以向预先设定好的手机发送短信提示系统发生故障或者DTU的无线传输发生故障。在监控端,通过组态软件可以虚拟出来现场的状况,并且根据主界面上显示出来的图像和数据,对远端现场的情况有所了解,并且可以储存长达10年的历史运行记录,方便随时查看。2.8创新点创新的地方在于使用了DTU远程无线通信,可以实现远距离数据传输,短信报警提醒等功能,减少了人为的记录误差。而且在监控室内可以检测工业现场的一些数据,并且可以将数据储存起来,方便随时查阅。并且可以在组态软件上进行一些操作,通过GPRS网络或者3G网络来控制远在工业现场的设备。2.9系统运行过程可能存在的问题2.9.1现场数据经过DTU发送后在远程监控室接收不到1、DTU是否正确设置。2、DTU内的SIM卡是否欠费。3、监控室的组态是否正确。4、监控室的3G路由器是否能正常使用。5、监控室的固定IP或者绑定的域名时候过期。3硬件介绍本设计所需器件主要有:8051系列单片机板(使用芯片STC90C516RD+,单片机板集成蜂鸣器)、微型水泵一个、光电耦合器4N25一个、12V微型继电器一个、电路板(4*4cm)一块、直流稳压电源一台、DTU一台(含有GPRS流量的SIM卡一张)、水位高度传感器一台、多功能数据采集器一台(包括检查液位高度、电机工作状态、进水流量、出水流量等)、可以连接网络的计算机一台(安装组态软件)。3.1光电耦合器4N253.1.1工作原理光电耦合器是一个光作为媒介传输电信号的光电转换电气设备。它是由两个部分组成,包括一个光源和一个光的接收装置。光源和受光组件彼此之间用透明绝缘体隔离在相同的密封壳体内的。光源的两个引脚一个作为光的输出端另一个作为一个输入端管脚,一个共同的发光源是发光二极管,光到光电二极管,光电晶体管,等等。光电耦合器的输入端上的信号,使所述光源发射的光强度取决于励磁电流的大小,此入射光包后,由于光电效应产生的光电流输出由所述光接收设备信息的光接收装置一起,从而使电光源,电源进行转换。从而完成耦合。图3-1 光耦4N25实物图3.1.2主要性能经济型光电耦合器;晶体管输出光电耦合器;满足所有JEDEC注册规格;C-E饱和电压(Ic=2mA,If=5mA):0.15V(typ);隔离电压(f=60Hz,t=1):7500(交流峰值);隔离电阻(V=500V):10(min);隔离电容(V=0V,F=1MHz):0.25pF(typ)。3.1.3引脚图和引脚名称光电耦合器4N25的功能框图如3-2所示图3-2 光电耦合器4N25的功能框图3.1.4极限参数发光二极管反向电压:3V;发光二极管正向电流:60mA;发光二极管功耗(Ta=25):120mW;输出晶体管C-E电压:30V;输出晶体管C-B电压:70V;输出晶体管集电极电流:150mA;输出晶体管功耗(Ta=25):150mW;隔离电压(60Hz,1s):7500V;光电耦合器的功耗:250mW;贮存温度:-55+150;引线焊接温度(10s):260。3.2单片机芯片STC90C516RD+3.2.1芯片简介绍STC90C516RD+单片机是由宏晶科技推出的全新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。图3-3 STC90C516RD+实物图3.2.2芯片STC90C516RD+引脚芯片SCT90C516RD+的引脚如图3-4 所示图3-4 芯片STC90C516RD+引脚示意图3.2.3主要性能1.增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU2.工作电压:5.5V - 3.8V(5V 单片机)/3.8V - 2.4V(3V 单片机)3.工作频率范围:0-40MHz,相当于普通8051的 080MHz.4.用户应用程序空间 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字节5.片上集成 1280字节/512/256字节 RAM6.通用I/O口(35/39 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口)P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 / 仿真器可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 - 5 秒即可完成一片8.EEPROM 功能9.看门狗10.内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,复位脚可直接接地。11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒13.通用异步串行口(UART),还可用定时器软件实现多个UART14.工作温度范围:0-75/-40-+8515.封装:LQFP-44,PDIP-40,PLCC-443.3电磁继电器继电器室当时入量(如电压、电流、温度等)达到规定值时,是被孔子的输出电路导通或断开的电器。它可分为电气量(如电流、电压、频率、功率等)继电器及非电气量(如温度、压力、速度等)继电器两大类。继电器具有动作快,工作稳定,使用寿命长,体积小等优点。付昂反应用于电力保护、自动化、运动、遥控、测量和通信等装置中。继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。图3-5 电磁继电器实物图3.4蜂鸣器蜂鸣器是一种一体化结构的点知讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中,用做发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母H或者HA表示。本设计中采用的是其中的电磁式蜂鸣器。电磁式蜂鸣器有振荡器、电磁线圈、磁铁、震荡膜片以及外壳等组成。接通电源后,振荡器产生的音频限流信号通过电磁线圈,是电磁线圈产生磁场。震动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。3.5远程通信模块DTUDTU (Data Transfer unit)全称数据传输单元,是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信网络进行传送的无线终端设备。工作方式,首先将DTU通电,DTU启动后会读取自身Flash里的参数,例如GPRS拨号参数,串口波特率,数据中心IP地址等,然后会连接无线网络,获得一个随机分配的IP地址,由于是随机分配的IP地址,所以只能是由DTU在网络中寻找监控主机,而不能是由监控主机主动寻找DTU。这里需要特别说明的是,监控主机必须要有一个固定的IP地址,或者绑定了一个域名,不然DTU就无法找到监控主机了,也就是说DTU就无法发送现场的数据。当DTU和监控主机进行了连接之后,DTU就会将传感器传上来的串口数据封装在TCP/UTD包里,发送给监控主机,反之,如果DTU收到由监控主机发来的TCP/UTD包时,会从中读取串口数据,传送给现场的单片机,这样就可以进行远程的控制了。图3-6 DTU实物图3.6液位高度传感器液位传感器(静压液位计/液位变送器/液位传感器/水位传感器)是一种测量液位的压力传感器静压投入式液位变送器(液位计)是基于所测液体静压与该液体的高度成比例的原理,采用国外先进的隔离型扩散硅敏感元件或陶瓷电容压力敏感传感器,将静压转换为电信号,再经过温度补偿和线性修正,转化成标准电信号(一般为420mA/15VDC)。图3-7 压力式液位高度传感器实物图4组态软件4.1组态概况组态软件,又称组态监控软件系统软件。译自英文SCADA,即 Supervisory Control and Data Acquisition(数据采集与监视控制)。它是指一些数据采集与过程控制的专用软件。它们处在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。国内外的组态软件主要有:In Touch、IFix、Citech、WinCC、A SPEN-tech、北京亚控组态王、北京三维力控、南京九思易易控、昆仑通态MCGS、世纪星、紫金桥等。本设计中选用的组态软件是北京三维力控。4.2组态设计运用组态软件是为了让设计整体具有可视化、通俗化、简单化等功能。1.图4-1所展示的就是本设计组态以后的首页,上面以动画形式形象的展现了工业现场进出水的状态,标注了两个水泵的开关状态,水罐中液位的高度,以及向报表和曲线跳转的增强型按钮。图4-1 本设计组态的主界面2.图4-2所展示的就是报表的页面,通过左上角的一个名为时间设定的增强型按钮进行设定以后,我们可以在弹出的窗口中设置需要查询的时间段以及时间的间隔,点击确定以后就会出现设定时间内的数据了。图4-2 报表的查询 3.如图4-3所示,报表所采集的数据可以转化为多种其他格式的文件保存起来,例如Excel、TXT等等,本设计中以将报表转为Excel所支持的xls文件为例。点击存为Excel按钮后,会弹出一个提示输入文件名的窗口,还可以选择储存的位置,相当方便。图4-3报表转存为xls文件4.图4-4所示的是打印报表时的状态,其功能是可以设置打印是的各种参数,可以选择的选项有:打印内容、打印机的选择、纸张的大小、页眉页脚以及页边距、表首表尾的标注以及表页选项,多功能的打印方式为直观的查看报表提供了强大的保障。图4-4打印报表功能5.图4-5所展示的则是附加在报表页面中的报警部分,需要报警的数据在组态时就先选择好,在系统运行时如果有某项数据达到了报警上限或者下限的话,则会在报警页面显示报警,并伴随声音报警,如果处理了报警的话还可以在历史报警中查询到过去的所有的报警情况,报警情况和报表一样,如果硬盘空间足够大的话,可以保存很多年。报警查询也有自带的打印功能,可以将一段时间范围内的报警显示出来并进行打印。图4-5报警查询页面6.图4-6所示的是水位高度的多功能数据曲线,可以直观的看到水位高度的实时变化情况和历史水位变化情况,并且可以更改曲线窗口内的时间取值范围和高度取值范围,更方便快捷的查看出水位在某个时间段内的变化情况,而且水位趋势曲线的历史记录查询和报表的查询时间是相同的,也就是说,报表的数据能保存多久,趋势曲线就可以查看多久前的趋势变化。图4-6多功能趋势曲线5软件设计5.1Keil软件Keil 软件是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。具有方便易用的集成环境和强大的软件仿真调试工具。Keil软件生成的目标代码的效率特别高,大部分语句生成的汇编代码紧凑,容易理解。与汇编语言相比,C语言在其功能上、结构性上、可读性上以及可维护性上都有明显的优势,因而易学且易用。5.2程序方框图图5-1 程序流程图5.3程序设计首先经过了对设计的分析,我们明确了我们需要单片机所实现的功能,需要有一个I/O口来接收液位高度的数值大小,因为传感器所传回来的模拟信号单片机无法识别的,所以经过一个A/D转换模块将模拟信号转为数字信号单片机就可以读出液位高度的大小了,我们可以根据液位高度的大小来决定是否控制水泵的启动。5.4I/O口的分配由于种种原因,没有压力式液位检测仪的情况下,只能利用三个金属导体粗略的测试水位的高度,所以设置了一个高水位一个低水位两个输入端。在程序开始前要先对各个I/O口进行任务分配。#include reg51.Hsbit p10=P10; /定义各个IO口sbit p11=P11;sbit cz1=P12;sbit cz2=P13;sbit led=P14;sbit buzz=P15;5.5子程序5.5.1延时子程序程序中有几个地方需要用到延时程序,所以我们要撰写延时程序的代码。蜂鸣器的声音高度和频率有关,所以还需要设置一个500us的延时和一个250us的延时可以使蜂鸣器交替发出高低两种音调的报警声来提示我们系统出现故障。1、延时1s的子程序void delay1s() /延时1s函数 unsigned char i; for(i=0;i0;b-)for(a=2;a0;a-); 3、延时250us的子程序void delay_250us(void) /250us延迟函数,用于产生2KHZ信号喇叭 unsigned char a,b;for(b=19;b0;b-)for(a=5;a0;a-);5.5.2报警子程序编写好了蜂鸣器音调的两个延时,我们就可以把延时运用到报警的子程序里了,下面的程序就是报警的子程序。void laba() /喇叭报警函数 uinti=0; /定义一变量,用于控制喇叭响的时间while(1) while(i=2000) /1KHZ响1S delay_500us(); /延迟500us buzz=buzz; /喇叭驱动位取反i+; /取反次数加1 i=0; /清时间控制变量while(i=4000) /2KHZ响1S delay_250us(); /延迟250US buzz=buzz; /喇叭驱动位取反i+; /取反次数加1 i=0; /清时间控制变量 5.5.3初始化子程序如果在系统运行的开始阶段没有进行初始化的话,有可能会出现系统运行不正常的情况,所以我们编写一段初始化的程序来避免这种情况的发生。void init() /初始化 P1=0x08;delay1s();5.4主程序主程序里首先要做的就是初始化,然后单片机根据高低两个水位监测端口的电平输入情况来分析应该做出何种反应,是应该启动电机还是关闭电机,亦或是启动报警子程序。这里高低两个端口的电平情况共有4种可能,所以我们使用IF语句来进行跳转。void main() init();delay1s();while(1) if(p10=0 & p11=0) /如果B无水C无水 启动 cz1=1;cz2=0;delay1s(); else if(p10=0 & p11=1) /如果B无水C有水 故障 cz1=0;cz2=0;led=0;laba();delay1s(); if(p10=1 & p11=1) /如果B有水C有水,停机 cz1=0;cz2=1;delay1s(); else if(p10=1 & p11=0) /如果B有水C无水 继续 delay1s(); 最终的整体程序被放在了附录中。6结论本设计采取了远程传输数据的技术,可以将工业现场的水位检测控制系统中的实时水位,电机工作状态,入水流量,出水流量等一些数据,实时反馈在远程的监控主机上,并将数据记录到监控主机的硬盘上,以供以后查询。参考文献1 李全利.单片机原理及接口技术M.高等教育出版社,20092 彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真M.北京:电子工业出版社,2009 3 李海滨, 片春媛, 许瑞雪.单片机技术课程设计与项目实例M.北京:中国电力出版社,2009 4 倪志莲.单片机应用技术(第二版)M.北京:北京理工大学出版社,2010 5 李广弟等单片机基础M.北京航空航天出版社,2001.6 王东峰等单片机C语言应用100例M.电子工业出版社,2009.7 陈海宴51单片机原理及应用M.北京航空航天大学出版社,2010.8 刘守义等单片机技术基础M.西安电子科技大学出版社,2007.9 钟富昭等8051单片机典型模块设计与应用M.人民邮电出版社,2007.10 李平等单片机入门与开发M.机械工业出版社,2008.谢 辞四年的大学生活马上就要结束了,特别是完成这篇论文后,我心里更多的是对大学生活的感慨。首先,我想感谢北京理工大学珠海学院可以给我一个良好的学习环境。我真诚地感谢我的论文指导老师的曹宇老师,她能够在繁忙的教学生活,审查着我的论文。我还要感谢那些曾经教育过我的老师们,他们细致,严谨,一丝不苟的作风,已经逐渐将我塑造成才,他们的细致耐心的指导和严密谨慎的思维方式,给了我很多灵感。经过这些老师,特别是我的论文导师曹宇老师指导,我才能将我的论文完成。导师她深厚的专业知识,严谨的逻辑思维,不仅教会我遇到问题该怎么办,更重要的是教会我解决问题的方法,曹宇老师对我的论文的反复修改方从始至终秉持着专业严格标准的要求,在老师深刻而细致的指导下,我的思想和设计有了很大的提高,我的论文能够顺利完成,我也要向其他老师说声谢谢。感谢大学生活中陪伴我的同学、朋友,在他们的陪同下,我收到了很多宝贵的建议和意见,有了他们的陪伴,支持,我完成了这一设计,他们是我大学生活的一部分,不仅改善了我生活学习习惯,更让我知道了为人处事的道理。从论文选题到搜集资料,写稿到初稿,再到反复修改,期间经历了喜悦、聒噪、彷徨和挣扎,写论文的过程中心情太复杂,但是在自己不断的探索努力及老师指导下,最终完成,心中不免有些成就感。也让我对本专业的知识有了进一步的了解,查阅书籍,翻看文献,从朦朦胧胧到豁然开朗,我感觉我在成长。这次设计使我在今后的专业工作中打下了一定的基础。最后我希望北京理工大学珠海学院越办越好,也祝愿我的老师和同学们事业有成。附录程序代码#include reg51.H#define uchar unsigned char /宏定义,为方便编程#define uint unsigned intsbit p10=P10; /定义各个IO口sbit p11=P11;sbit cz1=P12;sbit cz2=P13;sbit led=P14;sbit buzz=P15;void delay1s() /延时1s函数 unsigned char i; for(i=0;i0;b-)for(a=2;a0;a-); void delay_250us(void) /250us延迟函数,用于产生2KHZ信号 喇叭 unsigned char a,b;for(b=19;b0;b-)for(a=5;a0;a-);char code SST5163 _at_ 0x003b; /仿真器插入代码void laba() /喇叭报警函数 uinti=0; /定义一变量,用于控制喇叭响的时间while(1) while(i=2000) /1KHZ响1S delay_500us(); /延迟500us buzz=buzz; /喇叭驱动位取反i+; /取反次数加1 i=0; /清时间控制变量while(i=4000) /2KHZ响1S delay_250us(); /延迟250US buzz=buzz; /喇叭驱动位取反i+; /取反次数加1 i=0; /清时间控制变量 void init() /初始化 P1=0x08;delay1s();void main() init();delay1s();while(1) if(p10=0 & p11=0) /如果B无水C无水 启动 cz1=1;cz2=0;delay1s(); else if(p10=0 & p11=1) /如果B无水C有水 故障 cz1=0;cz2=0;led=0;laba();delay1s(); if(p10=1 & p11=1) /如果B有水C有水,停机 cz1=0;cz2=1;delay1s(); else if(p10=1 & p11=0) /如果B有水C无水 继续 delay1s();
展开阅读全文