毕业设计(论文)-基于单片机的远程液位实时监测系统.doc_第1页
毕业设计(论文)-基于单片机的远程液位实时监测系统.doc_第2页
毕业设计(论文)-基于单片机的远程液位实时监测系统.doc_第3页
毕业设计(论文)-基于单片机的远程液位实时监测系统.doc_第4页
毕业设计(论文)-基于单片机的远程液位实时监测系统.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

广西民族大学 普通全日制本科毕业论文(设计) 论文题目 基于单片机的远程水位控制 学 院 : 信息科学与工程学院 专 业 : 通信工程 年级班级 : 学 号 : 学生姓名 : 指导教师 : 职称: 副教授 广西民族大学普通全日制本科毕业论文(设计)任务书 课题名称:基于单片机的远程水位控制 学 院 _信息科学与工程学院 专 业 通信工程 班 级 学 号 _ 1 姓 名 指导教师(签名)_2014年11月30日教研室主任(签名)_ 2014年11月30日 2014年11月30日普通全日制本科毕业论文(设计)任务书课题名称 基于单片机的远程水位控制 指导教师姓名工作单位一、主要内容:以单片机为核心, 设计一个用于监测液位变化及越限报警的分布式液位监测系统。提供简洁易懂、形象直观、具有人性化的监测界面。 二、基本要求(基本技术要求与数据)1、以单片机为核心,设计外围电路;2、实现多路(2路以上)实时液位测量,传送有效距离d1KM;3、PC可显示任一路在某一段时间内的液位数据及其变化曲线;4、根据事先设置的水位上下限报警。三、论文(设计)工作起始日期: 自2014年11月30日起,至2015年5月10日 四、进度与应完成的工作:第一阶段:联系导师,接受任务 (2014年11月30日2014年12月10日);第二阶段:阅读书籍、查阅资料 (2014年12月11日2014年12月31日);第三阶段:系统设计、论文初稿 (2015年01月01日2015年03月19日);第四阶段:系统调试、论文修改 (2015年03月20日2015年04月07日);第五阶段:论文定稿、打印上交 (2015年04月08日2015年04月12日);第六阶段:学科组组织论文答辩 (2015年04月13日2015年04月20日);第七阶段:学院组织的论文答辩 (2015年04月21日2015年04月25日)。五、主要参考文献、资料1韦卫星:IBMPC机与MCS51单片机的多机通信,广西民族学院学报(自然科学版),1995年。2韦卫星:微机串行通信波特率的设置,广西物理,1996年。3韦卫星:IBMPC机中断系统结构分析及其应用,广西民族学院学报(自然科学版),1996年。4王东锋、王会良、董冠强:单片机C语言应用100例,电子工业出版社,2010年。5李全利:单片机原理及接口技术,高等教育出版社,2009年。目 录基于单片机的远程液位实时监测系统1摘要11 前言3 1.1课题研究的背景3 2.1研究的目的和意义3 2.1.1研究的目的3 2.1.2研究的意义32 总体设计方案4 2.1设计的思想理念4 2.2 设计方案选择4 2.3 设计方案论证53 硬件系统设计7 3.1 STC12C5A60S2单片机简介7 3.1.1 STC12C5A60S2系列单片机介绍7 3.1.2 STC12C5A60S2系列单片机内部结构8 3.1.3 STC15C5A60S2的引脚及功能描述9 3.2单片机最小系统及外围电路设计11 3.2.1单片机最小系统设计11 3.2.2单片机外围电路设计12 3.2.3压力传感器D3B简介144 RS485通讯设计14 4.1通讯方式介绍14 4.2 RS485通讯电路的设计15 4.2.1 MAX485芯片简介15 4.2.2基于MAX485芯片的电路设计15 4.3 RS485实现多机通信165 软件系统设计16 5.1下位机单片机程序设计(见附录1)16 5.2上位机Visual Basic 程序设计(见附录2)166 系统调试17 6.1系统硬件调试17 6.2系统软件调试187 结束语19参考文献20致谢21附录22基于单片机的远程液位实时监测系统摘要本次设计主要用于远程监测液位的变化及越限报警的分布式液位监测系统,重点介绍了以单片机为核心的远程液位监测的硬件设计和软件设计,它的采集部分用3路D3B压力传感器进行数据采集,同时可将测得的液位数据通过RS485远程通讯实时传输到PC机上, 并采用Microsoft Visual Basic 6.0在PC机上绘制出水位变化的曲线, 提供了简洁易懂、形象直观、具有人性化的监测界面,上位机与下位机通过串口方式进行通信。A/D转换采用STC12C5A60S2系列单片机内置A/D转换芯片,省去A/D转换模块的制作。STC12C5A60S2单片机具有高速、低功耗、超强抗干扰等优点。关 键 词:液位检测 STC12C5A60S2 A/D转换 RS4851Abstract This design is mainly used for remote monitoring of the liquid level change and out-of-limit alarm level of distributed monitoring system, is introduced with the single chip processor as the core of the hardware design and software design of remote liquid level monitoring, its acquisition part with 3 way D3B pressure sensors for data acquisition, and at the same time can be measured through RS485 telecommunication level data real-time transmission to the PC, and using Microsoft Visual Basic 6.0 PC in drawing the curve of water level change, provides a concise and easy to understand, image, intuitive, humanized monitoring interface, the upper machine and lower machine via a serial port communication way. A/D transformation USES STC12C5A60S2 series microcontroller built-in A/D conversion chip, saving A/D conversion module. STC12C5A60S2 MCU has the advantages of high speed, low power consumption, strong anti-jamming.key words:liquid level measurement,STC12C5A60S2,A/D transition,RS48521 前言当今社会许多领域都需要对液位进行实时监控,比如水池液位的监测、锅炉液位的控制、各种仪器储油罐的液位越限报警等,很多时候因为环境恶劣或者不能依靠人力等因素来实时监控液位,这时候我们就需要用到远程监控。1.1课题研究背景 对于本专业来说,液位测量有重要的使用,它几乎遍及生产与生活的各个领域,工厂盛液的反应锅需要测定液位,生活用水水池需要水位越限报警,各种机动车辆特别是大型机械动力油箱中的油位监控。液位检测的范围有远近之分,测量的精度有高低之分,测量的环境和条件也有简单复杂之分。近几年来由于微电子技术的快速发展使得液位监测技术发生了根本性变化。新的检测原理使得液位测量系统更趋向微型化,液位监测也在朝着自动化发展,在液位测量领域内广泛应用单片机控制,可以实现故障诊断和越限报警,提高了测量的可靠性、精确度、安全性。2.1研究的目的及意义2.1.1研究目的远程的液位监测系统可以对近千米外的液位变化进行观察,而且实现半自动化,操作简单方便,可以有效的解决传统人工检测存在的效率低、成本高、不精确等问题。鉴于目前工业的快速发展,以及人们日常生活的需要,专门设计一种性能优良、功能全面、价格低廉的液位液位监测系统,不仅能满足对液位数据的显示,而且具有超限报警等功能。2.1.2研究意义实现远程无人看守、全自动的多路液位测量数据的显示,可以为工业生产、日常生活用水等多个领域服务,提高工业生产中液位的自动化测量水平,节约生产成本,简化生产管理,为居民生活提供简单实用,方便快捷的服务。2 总体设计方案2.1设计的思想理念本设计严格按照设计任务书的要求制作,在完成指导老师下达的指标的基础之上,融入自己的思维,使本次设计更能够应用到社会服务当中,完成设计并不是主要的目的,我希望通过本次设计,在毕业之后,它可以成为我们一项技能,远程液位监测系统的应用在现实生活中是十分普遍,也是十分重要的。从一名学生的角度出发,结合当前的经济状况,我们在选材上也十分讲究,既要能达到所要求的性能指标,又要经济适用。因为是远程监测,所以我们既要考虑距离的因素,又要保证数据传输的准确性、实时性,所以要处理好发送与接受的关系,正确编写主机与从机之间的通行协议是关键,RS485通讯可以满足本次设计的需要,而因STC12C5A60S2单片机体积小、功能强大、造价低等诸多优点,使其成为本次设计的首选器件。2.2 设计方案选择通过查阅大量参考文献,根据老师提出的设计任务,结合自己当前的实际情况,总结出三种设计方案。方案1:采用无线传输模块PTR2000进行数据收发,水位高度的监测利用水位传感器完成,采用SY-9411L-D压力变送器,主控芯片采用STC89C52单片机,通过MAX202进行电平转换与上位机进行通讯,监控画面采用组态王。设计框图如图2-1所示。图2-1 方案1总设计框图方案2:采用RS485通讯设计,传感器采用应变片自制的压力传感器,通过ADC0809芯片进行AD转换,主控芯片采用AT89S52单片机,单片机与上位机的数据传输采用RS485传输协议,通过RS485转RS232与上位机通信,上位机监控画面采用组态王控制,设计框图如图2-2所示。图2-2 方案2总设计框图方案3:采用RS485通讯设计,传感器采用松下公司生产的D3B压力传感器,主控芯片采用STC12C5A60S2新型单片机,单片机与上位机的数据传输采用RS485传输协议,通过RS485转USB与上位机通信,上位机监控画面采用VB编写,设计框图如图2-3所示。图2-3 方案3总设计框图 2.3 设计方案论证从传输模式上来说,方案1采用的是无线传输,方案2、3采用的是有线传输,理论上来比较,无线传输显然是比有线传输占优势的,因为我们可以省去布线的开支,安装方便无需考虑传输路径,但是结合实际应用以及设计任务书的要求,方案1有明显的不足之处,首先是传感器的选择,SY-9411L-D压力变送器是水位测量专用的传感器,但是在市场上很难买到这样的传感器,而且在网上也很难找得到。其次是无线传输模块PTR2000,经查阅大量资料发现,PTR2000的传输距离受多方因素的影响,虽然现在已经有PTR8000,但是其在空旷地有效传输距离还不到1000米,这达不到任务书上的要求,无线传输可以达到1000米以上的距离,但是要买较好的无线模块才行,综合自身经济条件,方案1不可行。方案2与方案3都采用RS485通信,最远距离可达1219米,不同之处在于传感器的选择,单片机的选择,RS485通信转换接口的选择,还有上位机的监控软件的选择。应变片的原理图如图2-4所示。图2-4 自制应变片原理图采用四片应变片可以提高灵敏度,可以消除一定线性误差,因为其输出电压是十分微弱的,所以在后面接一个放大电路,是电压输出在05V之间才可以被单片机接收,自制应变片的缺点是灵敏度差,后期数据处理比较麻烦,而方案3采用的D3B压力传感器灵敏度高,直接输出0.23V到4.9V电压,无需放大电路,而且价格便宜。在主控芯片单片机的选择上,AT89S52与STC12C5A60S2都是功能十分强大的单片机,不同在于STC12C5A60S2是一中新型的单片机,其自身AD转换,P1口8个通道都可以作为AD转换输出口,可以省去AD转换模块的制作。在RS485转换接口的选择上,RS232接口与USB接口都可以实现数据传输,RS-232串行接口方式数据传输为19,200或57,600bit/s,USB通信接口方式下数据传输最高可达2Mbit/s,现在大部分电脑都使用USB输出,使用USB接口相对方便。在上位机监控软件的选择上,Visual Basic 6.0需通过软件编程制作监控画面,操作方式灵活多变,而采用组态王进行监控,可以提供友好的画面,编程简单,但是需要采用DDE方式,并且还是要通过VB平台,才能够实现动态数据的传输,协议处理相对繁琐。除上述方案之外,曾经也做过另外一个方案,为方便描述我们称其为方案A,其设计思路与方案三略同,不同之处在于方案A只采用一块单片机,STC12C5A60S2的P1口可以提供八路的A/D采样口,这样就可以实现任务书上提出的至少两路以上的液位采集要求,而且可以省去多机通信间的协议处理问题,该方案看上去确实方便可行,但是问题就在于,我们要进行2路以上的液位监控的时候,一般来说,这2路液位是来自与不同的地点的传感器采集而来的,并且可能还是较远距离,这样才具有现实意义,这么说来,我们就要在单片机与传感器之间接上很长的线,这样就存在一个信号传输失真的问题,我们必须要有很好的屏蔽设施才行,所以采用一块单片机是根本不能实现多路液位的远程监控,因此A方案没有被列在方案选择榜单之上。综上所述,方案3显然比其他两种方案更胜一筹,故选择方案3。3 硬件系统设计硬件设计是本装置设计的一个重要环节,考虑到设计的要求及设计的目的,硬件系统由数据采集模块,A/D转换模块,单片机控制模块,上位机显示及RS485通讯部分组成。根据设计任务书的要求用STC12C5A60S2单片机设计外围电路,一般的51单片机没有A/D转换,需要A/D转换模块把模拟信号变成数字信号后单片机才可接收,而本设计所用的STC12C5A60S2单片机,它本身具有A/D转换功能,不需另外设计A/D转换模块,使系统更加简洁完善。3.1 STC12C5A60S2单片机介绍3.1.1 STC12C5A60S2单片机简介STC12C5A60S2系列单片机是宏晶科技生产的高性价比的新型单片机,它具有高速、低功耗、超强干扰等优点,指令代码完全兼容传统8051,而且速度比普通单片机快8至12倍。内部集成MAX810专用复位电路,2路PWM,P1口带有8路高速10位A/D转换,是目前市场占有率最大的新型单片机。其基本相关参数为:1、工作电压:3.55.5V,可直接由电脑USB口提供2、工作频率范围:035MHz3、 用户应用程序空间 8K/16K/20K/32K/40K/52K/60K字节 4、4个8位并行I/O口P0、P1、P2、P3 5、4个16位定时器 6、3个时钟输出口 7、P0口自带8路10位精度A/D转换功能,转换速度可达250K/S3.1.2 STC12C5A60S2内部结构STC12C5A60S2系列单片机主要由中央处理器(CPU)、数据存储器(SRAM)、程序存储器(Flash)、定时/计数器、I/O口、高速A/D转换、看门狗及片内R/C振荡器和外部晶体震荡单路等模块组成。STC12C5A60S2系列单片机功能十分强大,其内部结构框图如图3-1所示。图3-1 STC12C5A60S2内部图3.1.3 STC15C5A60S2的引脚及功能介绍图3-2 STC12C5A60S2 引脚图表3-1 STC12C5A60S2 引脚功能3.2单片机最小系统及外围电路设计3.2.1单片机最小系统设计STC12C5A60S单片机接上晶振电路和复位电路以及相应的电源构成最小应用系统便可运行,时钟电路用于产生微处理器工作的时钟信号,本系统采用石英时钟。晶振电路由一个11.0592MHz的晶振接于18、19脚构成,再并联两个33PF的电容到地,共同构成一个自激多谐振荡器。在STC12C5A60S的时钟电路工作后,只要在RST引脚上出现两个机器周期以上的高电平时,单片机内部则初始复位,只有当RST引脚由高电平变底电平以后,STC12C5A60S才开始执行程序。单片机最小系统电路图如图3-3所示。图3-3 STC12C5A60S单片机最小系统3.2.2单片机外围电路设计最小系统设计完成后单片机就可以开始工作了,但是为了满足个人需要,必须要添加一定的外围电路,如AD采样电路、LCD1602显示电路、蜂鸣器报警电路以及一些指示灯、按键操作等电路设计,为了满足上述需要,本设计制作了一款能满足学生课程设计所用到的大部分外围设备的单片机开发板,不仅外型美观,布局合理,而且功能强大、适用,还经济实惠,蜂鸣器由单片机的P36脚控制,用于越限报警,指示灯由P37脚控制,系统正常工作时,指示灯不停闪烁。下面附上PCB及效果图。图3-4 单片机外围电路PCB图图3-5 完成效果图3.2.3压力传感器D3B简介传感器是数据采集的核心部件,它直接与被测物体接触,我们要考虑它的灵敏度、抗腐蚀性、经济成本等诸多因素,结合本次设计的需要,综合考虑采用松下公司生产的D3B压力传感器,其外观图如下:图3-6 D3B外形D3B相关参数如下:工作电压:4.2v6.2v;电压输出:0.23v4.9v;线性度0.2%;压力范围:01000mm水柱,00.1Kg/c;外型:303020mm。 接线方式:接线柱下有相应的标注,对应连线即可,G接地,I接5V电源,另外I与O之间加载2.2K上拉电阻即可通过O输出。传感器本身不能直接置于水里,所以设计时我们是利用水管引水到传感器中央的压力感应膜上进行采集。4 RS485通讯设计4.1通讯方式介绍在设计下位机的工作中,涉及到将测量的液位数据远程传送到上位机显示。本次设计由PC机与单片机组成的上位机与下位机的分布式控制系统,下位机深入到液位测量现场,采集液位数据,最后各路单片机将采集数据通过485总线上传至上位PC机,这时就涉及到PC机与下位机的通信的设计问题。一般在短距离的传输上我们使用RS232通信,RS232是全双工通信方式,但是传输距离一般只有15米。而使用RS485标准传输速率高,传送距离远,抗干扰能力强,最大传输速率可达10MB/S,传输距离与传输速率成反比,在100KB/S的速率时,可传送的距离约为1219m,鉴于此,本设计中PC机与下位机的通信采用了RS485通信标准,当传输速率达到100KB /S时,传输距离可达1200m,达到本设计的要求。4.2 RS485通讯电路的设计4.2.1 MAX485芯片简介MAX485芯片连接电路极为简单,只有8个引脚输出,其内部含有一个接收器和一个驱动器,接收器的输出端RO与单片机的RXD相连,驱动器的输入端DI和单片机的TXD相连,因为MAX485芯片工作在半双工状态,所以将RE与DE短路,并用单片机的P32口控制这两个引脚即可,A、B分别为接收和发送的差分信号端。MAX485的引脚结构图如图4-1所示。图4-1 MAX485的引脚图4.2.2基于MAX485芯片的电路设计本设计采用3片MAX485芯片实现3路与上位机串口通讯,其电路连接图如图4-2所示。其中DI和RO分别连接到单片机的P3.0和P3.1管脚,DE与RE短接,并用单片机的P32脚控制其收发。图4-2 通讯接口电路4.3 RS485实现多机通信在由单片机构成的多机串行通信系统中,一般采用主从式结构,由主机控制各个从机发送命令或数据,本次设计用PC机作为主机,各单片机从机之间不能相互通信,因为RS485是半双工工作方式,所以单片机与主机通信顺序进行。各个单片机通过Max485的AB线分别总AB线上,当距离大于500米时,在两边分别匹配120欧左右的电阻,消除由于不匹配在线路上产生的信号反射,采用RS485构成的多机通信网络如图4-3所示。图4-3采用RS485构成的多级通信网络图5 软件系统设计5.1下位机单片机程序设计(见附录1)5.2上位机Visual Basic 程序设计(见附录2)Visual Basic 是一款强大的编程软件,用户可以自定义界面,通过引用控件以及编写相对应的程序,可以得到相应的画面,本次设计的基于单片机的远程液位实时监测系统可以将单片机采集的数据通过串口发送到VB界面显示,其效果图如图5-1所示。图5-1 VB监测画面该图由实时液位数据显示框及实时曲线显示框构成,通过选择电脑端相应的com口系统便可以开始工作,各工作站开始采集液位,每个工作站配有相对应的上下限越限报警,用户可以根据需要自行设定其范围,倘若实时液位在正常范围内波动,则指示灯提示为绿灯闪烁,如果超出用户设定的数据范围,则指示灯提示为红灯闪烁。实时液位曲线框有各个按钮选择,方便用户操作,其中一号站、二号站、三号站选项分别表示显示该路的液位曲线,而全部监控则表示同时显示三路液位曲线。如果需要清除当前页面,可以点击页面清除按钮实现,按下退出按钮可以退出整个系统。为了达到实时监控,该系统还提供了标准时钟,方便了解当前时间。该系统界面美观大方,提供了简洁易懂、形象直观、具有人性化的监测界面,完全可以投入生产使用。6 系统调试6.1系统硬件调试本次设计的硬件焊接采用铜板腐蚀与万用板布板方式,单片机模块电路采用Protel99se按照原理图绘制PCB图,铜板经过转印、腐蚀、熨烫、上松香等多级工艺流程后焊接相应芯片制作而成,而MAX485电路模块设计则采用万用版自主布线焊接,其他一些系统硬件如模拟供水水池、支撑架等都是纯手工制作,系统经过多次细心排版最终连接成型。首先在断电情况下检查各个电路板的焊接情况,用万用表的通断档位测试焊接处是否有短路或者开路,短路则万用表响声,开路则有可能是虚焊,多次对照原理图检查各个线路以确保线路不被烧坏。其次上电检查,按下各个模块电源开关,逐个用万用表的电压档测试电源口是否有电压,有则表示上电成功。检查各个指示灯是否完好,万用表调到通断档进行测试,红笔对应灯的正端,黑笔对应负端,灯亮则表示正常。在各个模块的连接上,采用同统一布线,方便调试检查,而且固定好,防止松动。为了增强本次设计的演示效果,还特意增加了控制模块,主要采用微型泵,微型继电器和微型电磁阀为主要器件,微型泵通过继电器控制其通断,而继电器的使能口则用单片机的P33进行控制,P33为低电平则泵工作,电磁阀主要作为用户模拟用水使用,用单片机P34口控制,当按下按钮触发使P34为低电平,电磁阀打开,表示用户用水。此部分设计为扩展功能,不列在本次设计的主要内容之中,故没有作详细介绍。6.2系统软件调试首先为各个模块编写相应程序,用Keil uVision4编译通过,然后用STC_ISP_V486下载程序到单片机内,这里注意选好对应的com口以及波特率等相应参数,上电成功后,对D3B口吹气,观察串口输出数据的变化,如有浮动则说明采样成功,相应的电压值会在LCD1602液晶屏上做相应变化。在单片机与上位机的串口通信中,VB界面有数据的显示,并且有相应的变化曲线,VB提供友好监测界面,设有开始和关闭按钮,还有com口的选择。软件设计是本次设计的重点也是个难点,特别是VB界面的设计,由于之前没有学过Visual Basic语言,都是从头开始自学的,虽然语言上是完全不同于C语言的,但是其设计思路是共通的,所以用起来也很容易上手,现已基本掌握其用法。7 结 语 在本次设计中,从查阅资料到硬件制作,再到软件编程调试的整个过程中,我深切的体会到理论与实践相结合的不易性与重要性。所设计的基于单片机的远程液位实时监测系统已基本完成各项技术指标,系统可以远程采集数据显示并以曲线形式描绘出来,而且当数据值超过一定数值范围时发出越限警报,本系统的制作涉及到数字电路、模拟电路等多方面知识的应用,不仅扩大了我的知识面,而且很大程度上提升了我的动手制作能力,同时也让我深切感受到毕业设计的乐趣。通过本次设计也让我发现自身很多不足之处,在今后的学习生活中加以改正,在学习中不断进取,不畏艰难,尽自己最大的努力报效祖国。36参考文献 1韦卫星:IBMPC机与MCS51单片机的多机通信广西民族学院学报(自然科学版),1995年.2韦卫星:微机串行通信波特率的设置广西物理,1996年.3韦卫星:IBMPC机中断系统结构分析及其应用J.广西民族学院学报(自然科学版),1996年.4王东锋,王会良,董冠强:单片机C语言应用100例,电子工业出版社,2010年.5李全利:单片机原理及接口技术,高等教育出版社,2009年.6汤春林:Visual Basic 6.0程序设计,人民邮电出版社,2007年.致 谢此次设计的完成,离不开韦卫星老师的精心指导,他渊博的知识和丰富的实践经验使我的设计能够顺利的完成,他的谆谆教导使我养成了良好的思维习惯,在此我要向他表示最衷心的感谢。从设计的方方面面,甚至到文章结构,韦老师都给了我具体的指导和帮助,他虽然很忙,但仍然坚持给我答疑。他严谨的治学态度和科学求实的精神感染我、启迪我,使我在完成学业的同时,也学会了做人和做事的基本原则,在此,谨向尊敬的韦老师表示衷心的感谢和诚挚的敬意。衷心感谢在我大学四年,一直教育我陪伴我成长的各位领导和老师,你们无私的教育让我的大学生活富有意义。还有非常感谢11通信01班的同学在学习和生活上给予的支持和帮助!再次衷心地感谢给予我帮助、关怀和鼓励的所有人士和单位!附 录附录1#includereg52.h#includedelay.h#includelcd1602.h#include adc.h#include math.h#include stdio.h#include USART.csbit LED=P37;sbit Di=P36;bit set=1;float temp=0.203;/液位校准值unsigned char dtbuf20;void main() float d=0.0,tp; LCD1602_Init(); ADC_Init(); USART_Init(); delay_ms(500); LCD1602_PutString(1,1, Welcome ); delay_ms(100); while(1) tp=STC_AD_Average(0); /电压转换成液位高度 temp参数需修正 tp=tp*temp; sprintf(char *)dtbuf,yeweiA: %.3fM ,tp); LCD1602_PutString(1,2,dtbuf);/1602显示 if(tp0.400) Di=0;/设置报警界限 else Di=1; if(UART_buff=A) /收到上位机发送字符“A”时就上传数据 UART_buff=z; sprintf(char *)dtbuf,#A-%.3f*,tp); USART_SendString(dtbuf); delay_ms(100); LED=!LED; 附录2Dim yihao As Single 液位值Dim erhao As SingleDim sanhao As SingleDim yi(320) As Single 记录值Dim er(320) As SingleDim san(320) As SingleDim jishu1 As Integer 计数值Dim jishu2 As IntegerDim jishu3 As IntegerDim flag1 As Integer 标记值哪路数据Dim flag2 As IntegerDim flag3 As IntegerDim a(5) As IntegerDim b(5) As IntegerDim c(5) As IntegerDim d(5) As IntegerDim path1 As String 路径Dim path2 As StringDim path3 As StringDim max1 As Single 记录界限值Dim max2 As SingleDim max3 As SingleDim min1 As SingleDim min2 As SingleDim min3 As SingleDim flag As Integer 标记是否有数据Dim zhanhao As String 站号Dim yewei As String 液位Dim buf As String 缓存Private Function rocessing(temp As String) 收完一帧数据后处理函数MSComm1.PortOpen = False 关闭串口Timer1 = False 关闭定时器一 不发送指令zhanhao = Mid(temp, 2, 1) 获取标记(为字符数据)yewei = Mid(temp, (InStr(temp, -) + 1), (InStr(temp, *) - InStr(temp, -) - 1) 获得液位数据(为字符数据)Select Case zhanhaoCase A 如果站号标记为 A 执行yihao = Val(yewei) 把站号液位数据转为数值型数据Text1.Text = yewei 显示yi(jishu1) = yihaojishu1 = jishu1 + 1If jishu1 130 Then X轴画130个点jishu1 = 1End IfIf flag1 = 1 Thena(1) = c(1)b(1) = d(1)c(1) = jishu1 * 5 每隔5个单位画一条线d(1) = yi(jishu1 - 1) / 0.5 * 105If c(1) = a(1) ThenPicture2.Line (a(1), b(1)-(c(1), d(1), vbRed 画线End IfEnd IfCase Berhao = Val(yewei)Text2.Text = yeweier(jishu2) = erhaojishu2 = jishu2 + 1If jishu2 130 Thenjishu2 = 1End IfIf flag2 = 1 Thena(2) = c(2)b(2) = d(2)c(2) = jishu2 * 5d(2) = er(jishu2 - 1) / 0.5 * 105If c(2) = a(2) ThenPicture2.Line (a(2), b(2)-(c(2), d(2), vbGreenEnd IfEnd IfCase Csanhao = Val(yewei)Text3.Text = yeweisan(jishu3) = sanhaojishu3 = jishu3 + 1If jishu3 130 Thenjishu3 = 1End IfIf flag3 = 1 Thena(3) = c(3)b(3) = d(3)c(3) = jishu3 * 5d(3) = san(jishu3 - 1) / 0.5 * 105If c(3) = a(3) ThenPicture2.Line (a(3), b(3)-(c(3), d(3), vbBlueEnd IfEnd IfEnd Selectbuf = MSComm1.PortOpen = TrueTimer1 = TrueEnd FunctionPrivate Sub Combo1_Click() 选择COM口 Select Case Combo1.ListIndex Case 0 选择COM1 MSComm1.CommPort = 1 Case 1 选择COM2 MSComm1.CommPort = 2 Case 2 选择COM3 MSComm1.CommPort = 3 Case 3 选择COM4 MSComm1.CommPort = 4 Case 4 选择COM5 MSComm1.CommPort = 5 Case 5 选择COM6 MSComm1.CommPort = 6 Case 6 选择COM7 MSComm1.CommPort = 7 Case 7 选择COM8 MSComm1.CommPort = 8 Case 8 选择COM9 MSComm1.CommPort = 9 Case 9 选择COM10 MSComm1.CommPort = 10 End SelectMSComm1.PortOpen = TrueTimer1 = TrueEnd SubPrivate Sub Command1_Click() 只显示一号站数据flag1 = 1flag2 = 0flag3 = 0End SubPrivate Sub Command2_Click() 只显示二号站数据flag1 = 0flag2 = 1flag3 = 0End SubPrivate Sub Command3_Click() 只显示三号站数据flag1 = 0flag2 = 0flag3 = 1End SubPrivate Sub Command4_Click() 全部显示flag1 = 1flag2 = 1flag3 = 1End SubPrivate Sub Command5_Click() 清除功能按键Picture2.ClsCall drawa(1) = 0c(1) = 0a(2) = 0c(2) = 0a(3) = 0c(3) = 0jishu1 = 0jishu2 = 0jishu3 = 0End SubPrivate Sub Command6_Click()EndEnd SubPrivate Sub Form_Load()MSComm1.CommPort = 1 设置端口号MSComm1.Settings = 9600,n,8,1 数据格式 设置波特率 ,校验位,数据位,停止位MSComm1.InBufferSize = 512 输入缓存区大小MSComm1.InBufferCount = 0 当前接收缓冲区接收到的数据的长度MSComm1.OutBufferCount = 0 当前发送缓冲区中数据的长度MSComm1.RThreshold = 1 通过该属性设置产生OnComm事件(接收时产生)的阀值,若MSComm1.RThr

温馨提示

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

评论

0/150

提交评论