码头供油系统控制软件开发论文_第1页
码头供油系统控制软件开发论文_第2页
码头供油系统控制软件开发论文_第3页
码头供油系统控制软件开发论文_第4页
码头供油系统控制软件开发论文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

江苏大学毕业设计供油系统控制软件的开发PAGEPAGE33摘要码头的油水电监控系统是船艇学院和我院联合研究的总后勤部的科研项目,该课题主要研究码头供油的子系统。原有的码头人工供油方式已经不能适应现代码头快节奏,高精确要求,在使用嵌入式系统控制后可以广泛用于对码头船艇的供油以及码头供油过程中的泵房现场的环境油气浓度检测。机器与一次仪表配合使用的精度可以达到3‰,操作简单,显示直观清晰,可联网使用,也可单独使用,具有实际的应用价值。下位机采用了Cygnal单片机C8051F020,它极大扩充了下位机的功能,如下位机对供油参数的设定更加方便,“查询键”的设置方便了下位机对PC机进行数据查询;此外,“开始发油”键和“紧急暂停”键功能的运用,可以使供油紧急暂停,并且按“开始发油”键,可以恢复发油;下位机还具有了掉电保护功能和自动报警功能;远程通讯的应用使得系统可以进行远程供油。关键词:码头供油,嵌入式系统,CygnalC8051F020,掉电保护AbstractTheoilwaterandelectricitymonitoringsystemofthequayisthescientificresearchprojectofGeneralLogisticsDepartmentwhichtheshipandlightboatinstituteandouracademyjointlystudy,thismainresearchquayofsubjectsupportsthesubsystemoftheoil.Alreadyexistingquayartificialtosupportoilwaytocanmeetthemodernfastrhythmofquayalready,requirehighandaccurate,inuseembeddedsystemcanisitfortheoilandquaytosupporttoquayshipandlightboattouseforextensivelyaftercontrolling,thedensityofenvironmentaloilgasofunloadingthesceneofpumphouseintheoilcourseismeasured.Themachinecooperateswithaappearancetheprecisionusedcanreach3‰,itissimpletooperate,showocularlyandclearly,cannetworkanduse,canalsousealone,usingvaluewithreality.Thenextmachinehasadoptedone-chipcomputerC8051F020ofCygnal,ithasexpandedthefunctionofthenextmachinegreatly,themachinetosupportoilsettlementofparameterconvenient,establishmentthat"inquirekey"helpthenextmachinegoondatuminquirytothePC;Inaddition"beginhairoil"keyand"suspendpromptly"keyapplicationoffunction,canmakeandisfortheoiltosuspendpromptly,press"beginthehairoil"key,canresumehairoil;Thenextmachinealsohastheelectricityoflosingtoprotectthefunctionandautoalarmfunction;Theapplicationofthetelecommunicationmakesthesystemabletosupporttheoillong-rangly.Keywords:Thequaysupportstheoil,theembeddedsystem,Cygnal,C8051F020,losestheelectricitytoprotect目录TOC\o"1-3"\h\z第1章绪论 11.1系统设计的提出 11.2系统需求分析 21.3系统方案设计 3第2章系统开发环境 52.1Cygnal单片机C8051F020 52.2IDE调试环境简介 62.3KEILC51简介 6第3章底层功能模块设计 83.1键盘的操作与显示 83.1.1键盘、指示灯、报警代码的定义 83.1.2键盘显示芯片HD7279A简介 83.1.3程序的实现 93.2数据采集 113.2.1系统采集参数 113.2.2模拟量的采集 113.2.2脉冲量的采集 133.3数据存储 153.3.1数据存储的主要参数 153.3.2外扩RAM工作原理 153.3.3数据存储实现的方法 163.4实时时钟 173.4.1S-3530时钟芯片 173.5多机通讯 183.5.1C8051F020串行口UART 183.5.2通讯协议 193.5.3通讯程序的实现 223.6FLASH存储器 233.6.1FLASH的特性和寄存器 233.6.2FLASH读写方法和实现 243.78位移位寄存器74ls166 25第4章系统主程序设计 254.1程序流程及状态转换 254.2运行效果 29第5章总结和相关讨论 31参考文献 32致谢 33第1章绪论1.1系统设计的提出码头的油水电监控系统是船艇学院和我院联合研究的总后勤部的科研项目,该课题主要研究码头供油的子系统。原有的码头人工供油方式已经不能适应现代码头快节奏,高精确要求,在使用嵌入式系统控制后可以广泛用于对码头船艇的供油以及码头供油过程中的泵房现场的环境油气浓度检测。机器与一次仪表配合使用的精度可以达到3‰,操作简单,显示直观清晰,可联网使用,也可单独使用,具有实际的应用价值。我设计的主要任务是码头供油系统控制软件的开发,能够设计出一个合理可靠的码头供油的监控模块。所谓码头供油监控模块就是码头油水电供给监控系统中安装于码头现场泵房监控箱中的供给监控单元,相当于是监控系统的下位监控机。其实这一系统的开发也是嵌入式系统在我们生活中又一次的应用,纵观嵌入式系统与我们的生活的确是越来越近,我们平常生活中所使用的手机就是嵌入式系统的应用之一。我们也有理由相信它的发展也将越来越迅速。码头系统控制软件的设计对码头进一步控制油、水、电的供应是极为方便的,不仅省去了大量的人力,而且工作更加高效,步骤清晰、方便快捷。下位机以单片机为核心,配以大规模集成电路和严密的程序组成。适合工作于-10-50度的工作现场,寿命大大加长。为提高机器的可靠性,用于数据输入的键盘采用了寿命达1000万次以上的按键。考虑到下位机直接安装在发货现场,处于防爆壳内的微机电路增加了专门防电磁干扰的屏蔽盒,电路和软件设计同时采用看门狗(WDT)的处理技术。为提高流体的结算和控制精度,温度补偿两秒进行一次。为提高下位机的透明度,机内所有参数都对用户开放,即操作者通过鍵盘能知道机器内的一参数。下位机是集散型控制系统中的主要设备,它直接控制和完成发货的全过程。下位机具有远地联机(工作于远地工作方式)发油和本地单机(工作于本地工作方式)发油两种工作方式。远地联机工作方式,主要接收来自通讯网的数据和命令,机器键盘可修改任参数。本地单机工作方式,下位机可直接进入到用本机键盘单独操作控制的本地工作方式,使用灵活、方便。下位机不论工作于远地联机或本地单机工作方式,其发货记录都将准确无误地通讯网进入计算机,便于数据的统计和打印。1.2系统需求分析对于供油系统需求分析我们先分析该系统的主要的特性,整个供油系统很重要的部分就是供油监控箱,而供油监控箱主要实现对双路供油船艇进行自动定量加油、供油管路工作参数、环境油气浓度的自动检测、管路伐门的自动控制和与系统主控计算机的数据通讯等。我细化分析一下它的主要功能,可知:1、一台供油监控箱可分时(或同时)控制两路油管自动定量发货。2、对于管道介质温度补偿,按照国标GB/T1885-98执行3、具有“远地联机发油”和“本地单机发油”功能。4、具有掉电保护的功能。5、具有自动监控管路压力、泵房内可燃气体油气混合物浓度功能。6、具有自动报警功能(1)当供油管路压力超过设定极限时,发出报警信号。(2)泵房内油气浓度超过设定极限时,发出报警信号。(3)当机器启动后,12秒钟内没接收到流量计发出的流量信号(如阀门没有打开,或者流量计卡死等造成的管路不通),自动切断电液阀等执行装备,并发出报警信号。(4)当供油溢出时,接收溢油发信器发出的信号,自动切断电液阀,停止供油,并发出警报。7、具有远程通讯功能,能按标准RS485/RS422通讯协议将油场采集的信号送到主控计算机并能接收到主控计算机发出的控制信号,控制控油过程的运行。8、具有“开始发油”键和“紧急暂停”键功能,紧急暂停后,按“开始发油”键,可以恢复发油。1.3系统方案设计整个供油系统中,中央处理器(CPU)采用先进的单片机(C8051F020),整机由中央控制单元,显示报警单元,键盘单元,接口单元和电源单元共五部分组成(内部输入接口如图1.2.1所示)。此外,现场还要配备流量计,温度变送器、压力变送器、油气浓度变送器、电液(磁)阀、声光报警器等组成开环控制系统。信号的采集主要是靠流量计、温度变送器、压力变送器、油气浓度和环境温度信号,通过接口输入到微机进行数字量处理和模拟量到数字量的转换。信号的处理则根据国家标准GB/T1885-98规定换算公式:M=Vt*pt=V*L*pt其中pt:为实际温度下的介质密度(千克/升)V:为流量变送器发出的脉冲数L:为流量变送器的脉冲当量(升/脉冲)模拟量模拟量输入单元开关量输入单元脉冲量输入单元报警显示单元中央控制单元数据通讯单元开关量输出单元控制按纽及显示图1.2.1 内部对整体系统功能模块的划分,我们可以分出:键盘模快、数据采集、实时时钟、数据存储和多机通讯。这样对于我们可以有针对性的规划编程和调试,从整体上把握系统结构。图1.2.2为系统总体联网图。主机主机(PC机) 串行通讯供油一体机供水一体机体供电一体机供油一体机供水一体机体供电一体机图1.2.2系统总体联网图根据要求我们可以画出它的流程雏形,比较详细的流程将在第四章进行探讨。报警开始(自检系统是否正常) N报警开始(自检系统是否正常) YIC在下位机刷卡IC在下位机刷卡卡号传送到PC主控机卡号传送到PC主控机验证卡号合法性禁止供油 N验证卡号合法性禁止供油是否有供油指标 是否有供油指标 Y显示“允许供油”显示“允许供油”发送领油量及IC卡号发送领油量及IC卡号一体机返回确认 一体机返回确认 Y主控计算机再确定主控计算机再确定启动阀门,开始供油启动阀门,开始供油下位机计数,传实发量至主机下位机计数,传实发量至主机主机显示实发量,定时把数据传至下位机主机显示实发量,定时把数据传至下位机检查是否达到定量 N检查是否达到定量 Y关闭路阀,撤软管关闭路阀,撤软管结束结束第2章系统开发环境2.1Cygnal单片机C8051F020我们使用的开发工具是Cygnal的开发工具,Cygnal的开发工具实质上就是计算机IDE调试环境软件及计算机RS232到C8051F单片机JTAG口的协议转换器(EC2)的组合。CygnalC8051F系列所有的单片机片内均设计有调试电路该调试电路,通过边界扫描方式获取单片机片内信息,通过4线的JTAG接口与开发工具连接以便于进行对单片机在片编程调试。NCD-CIP51F020系统实验设备中的NMC-20XX核心模块上的单片机为C8051F系列中的F020。适配器(EC2)一端与计算机相连,另一端与C8051F单片机JTAG口相连,应用Cygnal提供的IDE调试环境,全速的在系统编程(ISP)和调试。Cygnal开发工具支持观察和修改存储器和寄存器支持断点观察点堆栈指示器单步运行和停止命令调试时不需要额外的目标RAM程序存储器定时器或通信通道并且所有的模拟和数字外设都正常工作。本系统下位机是以单片机为核心,而我们采用的高速SOC单片机C8051F020型单片机。从单片机选型的原则出发,我们所选用的单片机必须经济、工作可靠、功能强大。从总体原则上概括就是芯片所含有的功能要大与设计需求,主要表现在技术性、实用性、可开发性,而我们所使用的C8051F020满足以上的需求,实践也证明它是足以胜任的。1)它具有与MCS-51单片机内核及指令集完全兼容的控制器2)采用CIP-51内核可使用标准ASM-51,KEIL-C高级语言开发和编译3)它具有高速指令处理能力以下是C8051F020片上系统单片机片内资源模块外设1)逐次逼近型8路12位ADC02)8路8位ADC1输入与P1口复用3)两个12位DAC4)两个模拟电压比较器5)电压基准内部提供2.43V外部基准可输入6)精确的VDD监视器高速8051微控制器内核流水线式指令结构速度可达25MIPS22个矢量中断源7)存储器片内4352字节数据RAM,64KBFlash程序存储器可作非易失性存储,外部可扩展的64KB数据存储器接口。8)数字外设8个8位的端口I/O,I2CSPI2个增强型UART串口,可编程的16位计数器/定时器阵列(PCA),5个通用16位计数器/定时器,专用的看门狗WDT。由以上我们可以得出单片机C8051F020功能强大,工作可靠,经济,可完全胜任开发供油系统。2.2IDE调试环境简介首先让我们来看看CYGNALIDE的主界面如图2.2.1所示:图2.2.1IDE的主界面Cygnal集成开发环境软件提供了开发和测试项目所必须的工具具有如下特点:1)源代码编辑器2)项目管理器3)集成8051宏汇编器4)FLASH编程器5)支持Cygnal的全速非侵入在线调试逻辑6)实时断点7)比使用ICE芯片目标仿真头电缆与仿真插座的仿真系统有更优越的性能8)源程序级调试9)有条件的存储器观察点10)存储器与寄存器检查与修改11)单步与连续单步执行方式12)支持第三方开发工具13)MCU程序代码初始化配置向导2.3KEILC51简介KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。KEILC51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计。语言上的扩展能让用户使用系统中的所有资源。1)存储器和特殊功能寄存器的存取

C51编译器可以实现对8051系列所有资源的操作。SFR的存取由sfr和sbit两个关键字来提供。变量可旋转到任一个地址空间。用关键字-at-还能把变量放入固定的存储器.存储模式(大,中,小)决定了变量的存储类型。

连接定位器支持的代码区可达32个,这就允许用户在原有64KROM的8015基础上扩展程序。在V2的编译器和许多高性能仿真器中,可以支持应用程序的调试。

2)中断功能

C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。

3)灵活的指针

C51提供了灵活高效的指针。通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需1-2字节,因此,指针存取非常迅速。至于C51语言,我们可以说它相对于汇编语言来,它是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。在程序设计过程中,要充分利用C51语言的预处理命令。对于一些常用的常数,如TRUE,FALSE,PI以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义"#define"或集中起来放在一个头文件中进行定义,再采用文件包含命令"#include"将其加入到程序中去。这样当需要修改某个参量时,只须修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都作修改,从而有利于文件的维护和更新。总体来说,C51编译器不但可以缩短单片机控制系统的开发周期,而且易于调试和维护。此外,C51语言还有许多强大的功能,如提供丰富的库函数供用户直接调用,完整的编译控制指令为程序调试提供必要的符号信息等等。综上所述,C51语言具有强大的功能,并且C51编译器功能在不断的增强,所以我们在系统设计中采用KEILC51。第3章底层功能模块设计3.1键盘的操作与显示3.1.1键盘、指示灯、报警代码的定义数字键0—9,用于输入参数和密码。确定键,用于输入参数和密码后的确定,相当PC机的回车键。设置键,用于管理员输入参数和修改密码。供油/暂停键,开始供油时需要按该键,遇紧急情况时,按该键暂停供油(水、电)。如需恢复,再次按该键即可恢复供应。停止键,如遇紧急情况需停止供应按该键。本次供应结束。正常工作时,用低5位LED实时显示供应量,最高位LED用于闪烁显示通道号,若当前供应量超过5位整数,将该数除以10取整后再显示,并点亮一指示灯进行指示。每路工作状态指示灯(4个):点亮代表本路正在供应,熄灭代表本路暂停/停止/没有供应,闪烁代表本路正在报警。报警类型用编号在LED上显示。兼有风鸣器报警。电源指示灯(1个):灯亮表示通电正常,灭表示电源故障。通信正常指示灯(1个):通信正常熄灭,通信故障点亮。读卡指示灯(1个):读卡后,单片机进行校验,若正确则点亮指示灯3.1.2键盘显示芯片HD7279A简介HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立的LED)智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。那让我们看看它的主要特点:行接口,无需外围元件,直接驱动LED位独立控制译码/不译码及消隐、闪烁属性循环)左移/(循环)右移指令有段寻址指令,方便控制独立LED4键键盘控制器,内含去抖电路DIP和SOIC两种封装形式供选择在键盘的程序设计中,我们会用到它一些比较重要的指令,比如一些控制指令,而7279A的控制指令分为纯指令和带有数据的指令。在纯指令中我们会用到复位指令A4H,指令格式为:当HD7279A收到该指令后,将所有显示清除,所有设置字符消隐、闪烁等属性也被清除。执行该指令后,芯片所处状态与系统所处上电状态一样。程序设计中主要还会用到一些带数据的指令,如下载数据且按方式1译码,其指令格式为:X=无影响译码表就不重点列出了。程序中还会用到“下载数据但不译码”,命令格式为:其中,a2,a0,a1为位地址,A-G和DP为显示数据,分别对应7段LED数码管各段如图3.2.1.2相应的数据为1时,该段才亮,否则不亮图3.2.1数码管图读键盘数据指令15H该指令从HD7279A读出当前的按键代码。与其他指令不同,此命令的前一个字节0010101B为微控制器传送到HD7279A的指令,而后一个字节D0-D7则为HD7279A返回按键代码起范围0-3FH(无键按下时为0XFF),此指令的前半段,HD7279A的DATA引脚处于高阻输入状态,输出代码的值。故微处理器连接到DATA引脚I/O口应有输出太到输入太的过程。当HD7279A检测到有效按键时,,KEY引脚从高电平变为低点平,并一直保持按键结束。在此期间,如果HD7279A接收到读键盘数据指令,则输出当前按键的键盘代码:如果在收到’读键盘指令时没有有效按键,HD7279A将输出FFH(11111111B)。3.1.3程序的实现 HD7279A在程序中主要应用于对系统参数的设置,参数的设置如下:共12个参数:密码、工作方式(0脱/1连)、波特率(0-4800;1-9600)、过冲量、脉冲当量、标准密度、温度补偿系数、温度报警(<100)、压力报警(<1600)、油气浓度报警(<100)、日期、时间1、空闲状态时按设置键进入参数设置状态,显示“0-”,提示管理员输入密码。若密码正确则进入2,否则再次显示“0-”……。2、显示“1-”,提示管理员输入新密码(第一个参数,若管理员不需要改变密码直接按确认键),新密码小于等于6位数字,若小于6位按确认键表示结束(如输入123确认,则本次输入的密码为123。如输入6543212,则本次输入的密码为654321)。输入数据时按确认前若发现输入错误可以按取消键取消本次输入)输入完新密码后再次显示“1-”提示管理员对密码进行确认。若两次输入密码相同则密码修改成功。否则否则再次显示“1-”……。3、显示“2-”提示管理员输入第二个参数(工作方式),参数为小于等于6位整数,若所输入的参数小于6位应按确认键表示结束(如输入2345确认,表示输入的参数为2345,如输入6543212,则本次输入的参数为654321)。注:第一个参数为工作方式,0代表脱4、显示“3-”提示管理员输入第三个参数(波特率,0—4800、1--9600)。5、显示“4-”提示管理员输入第四个参数(过冲量)。6、显示“5-”提示管理员输入第五个参数(脉冲当量)。7、显示“6-”提示管理员输入第六个参数(液体标准密度)。8、显示“7-”提示管理员输入第七个参数(温度补偿系数)。9、显示“8-”提示管理员输入第八个参数(温度报警上限,〈100〉。A、显示“9-”提示管理员输入第九个参数(压力报警上限,〈1600〉。B、显示“A-”提示管理员输入第十个参数(油气浓度,〈100〉。C、显示“B-”提示管理员输入第六个参数(日期)。D、显示“C-”提示管理员输入第六个参数(时间)。以下是中对系统程序中获得键值的程序:unsignedcharGetKeyValue(void){ unsignedcharKeyValue,KeyValue1; if(NoKey)return-1; //无键按下 Send7279Byte(0x15); //发读键盘指令 KeyValue1=Receive7279Byte(); Delay1ms(200); NOSELECT7279; //置CS高电平 switch(KeyValue1) { case1: KeyValue=1; break;case2: KeyValue=2; break;...//中间类似省略case15: KeyValue=0xf; break;default: break;}NOSELECT7279; //置CS高电平 Delay1ms(200);//延时200ms去抖动 returnKeyValue;}以下是中对系统程序中显示任意长整型数据的程序:voidDispValue(unsignedlongxx){unsignedcharbuf[6],i;buf[0]=(xx%1000000)/100000;buf[1]=(xx%100000)/10000;buf[2]=(xx%10000)/1000;buf[3]=(xx%1000)/100;buf[4]=(xx%100)/10;buf[5]=(xx%10);for(i=0;i<5;i++)if(buf[i]==0)buf[i]=''; elsebreak;DispLED(buf,0);NOSELECT7279; //置CS高电平}3.2数据采集3.2.1系统采集参数系统对于参数的采集包括有模拟量、脉冲量和开关量的采集。脉冲量:供油流量信息模拟量:压力液体温度泵房温度:泵房油气浓度开关量:溢油信号阀门状态3.2.2模拟量的采集1、C8051F020A/D让我们先来看看它的主要原理框图如图3.2.2.1图3.2.1AMUX和PGA的部件有着各自不同的作用。AMUX的8个通道用于外部数据采集和一个内部温度采集通道,AMUX可以差分输入也可以单端输入PGA对输出进行放大0.5、1、2、4、8、16倍,PGA对输出内部温度输出也可以放大接下来让我们看看A/D转换的工作方式:它的启动方式为:将AD0BUSY置1T3溢出外部启动信号CNVSTR上升沿T2溢出查询工作方式步骤:(也可以用中断方式):1、写0到AD0INT;2、写1到AD0BUSY;3、等待AD0INT变为1;4、读取ADC0数据并处理2、C8051F020A控制寄存器AC0CN通道配置寄存器参考电压设置REF0CN转换速度、增益放大ADC0CF中断允许、优先级等EIE2程序如下:voidInit_ADC0(void){ ADC0CN=0x80; REF0CN=0x07; Mux_Select=MUX_PRESS1; AMX0SL=MUX_PRESS1; ADC0CF=(SYSCLK/2500000)<<3;//ADC转换时钟频率为=2.5MHz //ADC0CF|=0x01;//PGAgain=2 EIE2&=~0x02;//禁止ADC0EOC中断 EIE1&=~0x04;//禁止ADC0窗口比较中断}在程序中模拟量采集介绍:voidRead_Analog_Inputs(void){longtemp_long=0l;AD0INT=0;//清除变换完成标志AD0BUSY=1;//设置变换标志while(AD0INT==0);//等待变换完成switch(Mux_Select){ caseMUX_PRESS1: temp_long=ADC0*1600l temp_long-=1308800l;//1308800为实验时0.48v(4mA)对应的采样值Press[0]=temp_long/3277l;If(Press[0]<0)Press[0]=0; AMX0SL=MUX_LIQUID_TEMP1; Mux_Select=MUX_LIQUID_TEMP1; break;caseMUX_LIQUID_TEMP1:temp_long=ADC0*100l;temp_long-=81800l;Liquid_Temp[0]=temp_long/3277l;if(Liquid_Temp[0]<0l)Liquid_Temp[0]=0;AMX0SL=MUX_FRONT_TEMP1;Mux_Select=MUX_FRONT_TEMP1;break;//读所有模拟量voidGetADCValue(void){ Read_Analog_Inputs(); Read_Analog_Inputs(); Read_Analog_Inputs(); Read_Analog_Inputs();}3.2.2脉冲量的采集1、可编程计数器阵列PCA介绍可编程计数器阵列(PCA0)提供增强的定时器功能,与标准8051计数器/定时器相比,它需要较少的CPU干预。PCA0包含一个专用的16位计数器/定时器和5个16位捕捉/比较模块。没个捕捉/比较模块有起自己的I/O线(CEXn)。当被允许时,I/O线通过交叉开关连到端口I/O。计数器/顶时器由一个可编程的时基信号驱动,时基信号有六个输入源:系统时钟、西同时钟/4、系统时钟/12、外部震荡器时钟源8分频、定时器0溢出、ECI线上的外部时钟信号。每个捕捉/比较模块可以被编程为独立工作在下面的6种工作方式之一:边沿触发捕捉、软件定时器、高速输出、频率输出、8位PWM或16位PWM。对PCA的编程控制是通过系统控制器的特殊功能寄存器来实现的。PCA基本原理框图如图3.2.22、捕捉/比较模块PCA0CPMn寄存器用语配置PCA捕捉/比较模块的工作方式,在不同方式时该寄存器各位的设置不同。置‘1’PCA0控制寄存器PCA0CN位7:PCA计数器/定时器溢出标志位6:PCA计数器/定时器运行控制0禁止、1允许位5:未用位4-位0:5个捕捉模块匹配标志0未捕捉到、1捕捉到(需软件清0)PCA0捕捉/比较寄存器PCA0CMP位7:16位脉冲宽度调制允许图3.2.2P位6:比较功能允许,0禁止、1允许位5:正沿捕捉允许,0—禁止、1—允许位4:负沿捕捉允许,0—禁止、1—允许位3:匹配功能允许,0—禁止、1—允许位2:电平切换允许位1:脉冲宽度调制方式允许位0:捕捉/比较中断允许,0—禁止、1—允许可编程计数器阵列PCA初始化voidInit_PCA0(void){EIE1|=0x08;//允许PCA0中断;PCA0CPM0=0x61;//允许比较方式,上升沿中断允许CR=0;//关PCA0计数器/定时器}3、脉冲量采集程序介绍//PCA0工作在比较/扑捉模式,上升沿中断,对脉冲信号计数voidPCA0_ISR(void)interrupt9{EA=0;//关闭所有中断if(CCF0==1){CCF0=0;//清除中断标志Plus_NUM[0]++;//PlusNumber数组自增}if(CCF1==1){CCF1=0;//清除中断标志Plus_NUM[1]++;//PlusNumber数组自增}EA=1;//中断}开关量采集直接读取端口信号C8051F020共8个并行口P0—P3可以位寻址x=P2^0;P4—P7不能位寻址if(P5&0x80)ch+=1;3.3数据存储3.3.1数据存储的主要参数当前发油量、管内压力、液体温度、环境温度、环境油气浓度、时间3.3.2外扩RAM工作原理除了标准8051的256B内部数据RAM外,C8051F020还有位于CIP-51外部数据存储空间的4096B的RAM块(XRAM),须用MOVX指令访问。C8051F02x系列MCU还提供64KB空间的外部数据存储器接口,可用于访问片外存储器和存储器映像的I/O器件。访问XRAM有两种方法,第一种方法是使用数据指震DPTR,该寄存器中含有待读或写的XRAM单元的有效地址。第二种方法使用R0或R1与EMI0CN寄存器一起形成有效XRAM地址。下面举例说明这两种方法方法一:MOVDPTR,#1234h;将待读单元的16位地址0x1234装入DPTRMOVXA,@DPTR;将地址0x1234的内容装入累加器A方法2:MOVEMI0CN,#12h;将地址的高字节装入EMI0CNMOVR0,#34h;将地址的低字节装入R0或R1MOVXA,@DPTR;将地址0x1234的内容装入累加器A1、配置外部存储器接口配置外部存储器接口的过程包括下面4个步骤1)将EMIF选到低端口P3P2P1和P0或选到高端口P7P6P5和P4。2)选择复用方式或非复用方式。3)选择存储器模式(只用片内存储器,不带块选择的分片方式,带块选择的分片方式或只用片外存储器)。4)设置与片外存储器或外设接口的时序。5)选择所需要的相关端口的输出方式寄存器PnMDOUT和P74OUT。2、EMI0CF寄存器D7、D6:未用D5:端口选择,0—低端口,1—高端口D4:地址/数据线复用方式选择,0—复用、1—单独D3、D2:工作模式选择00—只用片内,01—不带片选择的分片10--不带片选择的分片,11--只用片外D1、D0:ALE脉冲选择00—1SYSCLK,01--2SYSCLK10--3SYSCLK,11--4SYSCLK复用和非复用选择外部存储器接口可以工作在复用方式或非复用方式,由EMD2位(EMI0CF.4)的状态决定3.3.3数据存储实现的方法数据存储在程序中的具体实现为://系统初始化voidPORT_Init(void){XBR0=0x27;XBR1=0x04;XBR2=0x44;//40;P0MDOUT=0x00;//允许TX0压进/压出为输出口P0=0xff;P1MDOUT=0x00;//允许P1.6(LED)压进/压出输出口P1=0xff;MI0CF=0x29;//XRAM使用高端口、复用方式、只用片外//XRAM、ALE宽度为2个CLKEMI0TC=0x21;//地址建立时间0个CLK,WR/RD宽为9个//CLK,地址保持时间1个CLKP74OUT=0xFF;//P7-P4配置为推挽方式P4&=0xfe;//P4.0(A16)=0,选择XRAM0区P4|=0x04;//P4.2(CE2=1),片选2始终有效P4&=0xf7;//P4.3(/CE1=0),片选1始终有效P0MDOUT|=0x1D;P1MDOUT|=0x01;SMB0CN=0x44; //允许SMBus和ACKs验证循环SMB0CR=-80; //SMBus时钟率=100kHz.EIE1|=2; //允许SMBus中断IE&=0xfe;//禁止int0TCON|=0x01;//int0下降沿中断//PX0=1;//int0为高优先级PT0=1;//因为刷卡中断中用超时退出要中断嵌套}3.4实时时钟3.4.1S-3530时钟芯片1、芯片概述S-3530A是一种支持I2C2、主要引脚:SDA:SCL:INT1/INT2:3、工作描述(串行接口)I2CI21)开始条件:当SCL处于高电平时,SDA由高电平变成低电平时构成一个开始条件,所有操作均必须由开始条件开始。2)停止条件:当SCL处于高电平,SDA由低电平变成高电平构成一个停止条件。在连续读时,如收到一个“停止条件”,则所有读操作将终止,芯片将进入等待模式。3)数据传输:当SCL为低电平,且SDA线电平变化时,完成数据传输;当SCL为高电平,且SDA电平变化时,芯片收到一个开始或停止条件。4)确认:数据传输以8位序列进行。系统总线上接收数据的器件在第九个时钟周期时将SDA置位为低电平,即送出一个确认信号,表明数据已经被其收到。5)器件寻址:CPU发出开始条件给S-3530A以建立连接。CPU通过SDA总线连续输出4位器件地址,3位指令和1位读/写指令。其中高四位称“器件代码”,它代表器件地址,固定为“0110”6)读数据:当检验到开始条件后,S-3530A接收器件代码和命令。当读/写位为“1”7)写数据:当检测到开始条件后,S-3530A开始接收器件代码和命令。当读/写位为“0”4、SMBus系统管理总线SMBus是一个双线的双向串行总线,于I2CSMBus协议中规定有两种可能得数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发送器到主接收器(读)。两种数据传输都由主器件启动,由主器件提供串行时钟。如果有两个或多个主器件同时启动数据传输,仲裁机制将保证有一个主器件会赢得总线。所有的数据传输都由主器件启动,主器件可以寻址一个或多个目标从器件。在某一时刻,SMBus接口将工作在下述4中方式之一:主发送器、主接收器、主接收器、从发送器或从接收器。对SMBus串行口的访问和控制是通过5个特殊功能寄存器来实现的,它们是控制寄存器SMB0CN、时钟速率寄存器SMB0CR、地址寄存器SMB0ADR、数据寄存器AMB0DAT和状态寄存器AMB0STA。因为本论文的篇幅问题和实时时钟所涉及到的程序较多,因此本文对程序的实现不再进行累述。3.5多机通讯3.5.1C8051FUART是一个能进行异步传输的串行口。UART可以工作在全双工方式。在所有方式下,接收,接收数据被放如一个保持寄存器,这就允许在软件上未读取前一个数据字节的情况下,开始接收第2个输入数据字节。UART在特殊功能寄存器中有一个相关的串行控制寄存器SCON和一个串行数据缓冲器SBUF。用一个SBUF地址可以访问发送寄存器和接收寄存器。读操作访问接收寄存器,写操作访问发送寄存器。在供油系中,要求采用多机通讯,所以UARTY的工作方式应当选择方式2或方式3,方式2和方式3通过使用第9数据位,可以支持1个主处理器与一个或多个处理器之间的多机通信。当主机想发送数据给一个或多个从机时,它先发送一个用于选择目标的地址字节地址。字节与数据字节的区别是地址字节的第9位为逻辑1,数据字节第9位总是设置为逻辑0。下图(图3.5.1.1)即为多机通讯的主要原理:初始化主机,令SM2=初始化主机,令SM2=0M,从机SM2=1主机发送地址信息至从机主机发送地址信息至从机从机进入中断服务程序从机进入中断服务程序并返回各自地址信息至主机主机将自己地址与返回信息比较主机将自己地址与返回信息比较是否为主机目标是否为主机目标退出中断退出中断从机将SM2置0从机将SM2置0从机置SM2为1,退出中断主机发送数据信息(RB8=0)从机置SM2为1,退出中断主机发送数据信息(RB8=0)图3.5.1.1多机通讯的主要原理3.5.2通讯协议1、协议格式串口通讯采用相同格式:9600,8,1,多机通讯方式。当主机要与从机通讯时,首先以MARK方式发送从机地址,从机收到后,以SPACE方式回应该地址。然后在SPACE方式下进行数据通讯。通讯完成后主机和从机均恢复到MAKE方式。表间通讯和设备间通讯采用以下格式开始位(1B): S数据包长(1b) N+6命令类型:(1B)数据1…数据N累加和(1B)(计算范围从长度字节开始,包含数据长度字节,到累加和前一字节结束)异或和(1B)(计算范围从长度字节开始,包含数据长度字节。到累加和前一字节结束)结束位(1B)E开始标记(S)长度(N+6)命令类型数据1…数据N累加和异或和结束标志(E)通道号:该数据对应的控制通道号:(0-通道数),0表示通道未知。当使用多位字节表达信息时,低位字节在前。2、数据结构PC机发送的命令:1)查询下位机数据(类型:Q)(PC机命令)开始标记(1B)长度(1B)命令类型(1B)累加和(1B)异或和(1B)结束标志(1B)S6QE询下位机设置的参数(1)开始标记(1B)长度(1B)命令类型(1B)累加和(1B)异或和(1B)结束标志(1B)S61E3)通讯讯成功应答数据包(X)开始标记(1B)长度(1B)命令类型(1B)累加和(1B)异或和(1B)结束标志(1B)S6XE4)讯出错应答数据包(2)开始标记(1B)长度(1B)命令类型(1B)累加和(1B)异或和(1B)结束标志(1B)S62E5)IC卡ID非法(3)开始标记(1B)长度(1B)命令类型(1B)累加和(1B)异或和(1B)结束标志(1B)S63E6)强制停止命令(9)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)累加和(1B)异或和(1B)结束标志(1B)S69E7)发送配额数据(D)(PC机命令)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)供给配额(4B)累加和(1B)异或和(1B)结束标志(1B)S5+6DE下位机回应的信息:8)IC卡数据:(I)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)IC卡号(8B)累加和(1B)异或和(1B)结束标志(1B)S15IE如果无法确定当前使用的通道,使用0X00当用户刷卡后,且收到上位机查询状态命令Q(00)时,优先发送该应答。上位机收到该信息后,回应配额信息数据或ID非法数据包。上位机等待下位机应答。9)开始供给数据:(B)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)年月日时分秒供给总量(4B)累加和异或和结束标记S17BE当下位机收到上位机的配额数据后,且用户按下开始按键后,收到上位机查询数据包时(Q,00)发送该数据包,表示供给过程开始(联机状态)。若处于脱机状态,用户输入配额数据按确定后,开始供给过程。该数据包将保存在下位机的存储空间中。10)结束供给命令:(T)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)年月日时分秒供给总量(4B)累加和异或和结束标记S17TE返回当前的实际供给量。当下位机完成供给后或用户中止供给过程(按紧急停止键后),收到上位机查询数据包时(Q,00)发送该数据包(联机状态)。脱机时,完成供给或用户中止后,该数据包将保存在下位机的存储空间中。11)发送保存数据包(V)开始标记(1B)长度(1B)命令类型(1B)通道号(1B)I卡号(8B)年月日时分秒开始供给总量(4B)S27V年月日时分秒结束供给总量(4B)累加和异或和结束标记E发送供给的开始时间,开始的配额数据,结束时间,实际的供给量。当所有通道处于空闲状态时,且收到上位机查询命令后,如果有保存数据,则发送该数据包每次发送一个用户的信息。下次收到上位机查询时,发送下一用户的信息。12)报警信号:(A)开始标记(1B)长度(1B)命令类型(1B)年月日时分秒报警信息(1B*4)累加和异或和结束标记S16AE报警信息:0000. 无报警;0001--无流量;0002--压力;0003--油气浓度;0004--液体温度;0005--前端温度信息(P)开始标记(1B)长度(1B)命令类型(1B)通道1状态(1B)通道2状态(1B)总油量(4B)流量(4B)压力(4B)S34+6P液体温度(1B)泵房温度(1B)泵房油气(1B)21…35(20B)阀门状态(1B)累加和(1B)异或和(1B)结束标记(1B)0…0E本数据包含了两路供油数据包。实际每次只有一路的信息,为保持协议一致,使得21到35位全为0。上位机不应答该消息。数据相关:流量信号单位:立方米/秒;压力信号单位:Pa,范围1-1.6M;温度单位:℃,范围–20-80℃通道状态:0:空闲,1:在工作;阀门状态:0:关,1:开;3.5.3通讯程序的实现在实验室硬件环境下,通讯过程较简单。PC机通过scan小程序模拟上位机,向下位机发包含地址的查询命令(0或1),下位机收到后回传本机地址;上位机收到后发送查询命令帧,下位机正确接收查询命令后则传回数据,一旦上位机收到回传信息,则显示通讯成功。在程序设计中,对多机通讯设计主要在UART0://子程序串口UART0的中断voidinterrupt_UART0(void)interrupt4{unsignedchari;T2_interruptNum=0;P2|=0x40;//7279CS=1EX0=0;//禁止刷卡RI0=0;//清除接收中断标志if(SBUF0==Instrument_ADDR) { ES0=0;//若地址相符,回送本机地址作为应答 SM20=0;//置SM20=0,准备接收数据 TB80=0; Enable0_T; TI0=1; for(i=0;i<250;i++) _nop_();Myputchar0(Instrument_ADDR);//串口0发送1字符 while(!TI0);TI0=0; ES0=0; Enable0_R; PC_QueryMe=1;//收到PC机地址查询后为1 }}//串口0发送1字符voidMyputchar0(unsignedcharc){P2|=0x40;//7279CS=1while(!TI0);TB80=0;TI0=0;SBUF0=c;}voidMyputs0(unsignedchar*Buf)//串口0发送1字符串{unsignedchari,n;P2|=0x40;//7279CS=1Myputchar0(*Buf);Buf++;Myputchar0(*Buf);//发送长度字节n=*Buf;Buf++;for(i=0;i<n-2;i++){Myputchar0(*Buf);Buf++;}while(!TI0);//等待最后一个发送完}3.6FLASH存储器3.6.1FLASH的特性和寄存器Cygnal集成器件公司的在系统可编程FLASH存储器,可以通过JTAG接口或应用程序对FLASH编程,灵活性最高程序或常数形式的专有信息常常保存在FLASH存储器中。Cygnal提供了可由用户任意支配的安全选项(PSCTL),以防止对保存在FLASH存储器中的信息进行未经授权的访问。在应用编程允许将FLASH用于非易失性信息的存储,这一点与EEPROM类似。FLASH写/擦除寿命在–40~+85的工业温度范围内保证在10000次以上。FLASH写操作只能写入0,因此在写一个FLASH字节之前包含该字节的页必须首先被擦除,使该页中的所有位都为1。含有读锁定字节和写/擦除锁定字节的FLASH页不能由用户软件擦除,但是该页可以由用户软件写入,该页只能通过JTAG接口擦除。谈到FLASH的两个特殊寄存器那就是FLACLHE和FLSCL。FLACL是FLASH存储器访问限制寄存器,FLSCL是FLASH存储器时序预分频器寄存器。3.6.2FLASH读写方法和实现对软件FLSH编程的过程可以概述为:止中断。位FLWE(FLSCL.0),以允许由用户软件写/擦除FLASH。置位PSEE(PSCTL.1),以允许FLASH扇区擦除。置位PSWE(PSCTL.0),以允许FLSH写。用MOVX指令想待擦除山区内的任何一个地址写入一个数据字节。清除PSEE以禁止FLASH扇区擦除。用MOVX指令向刚擦除的扇区中所希望的地址写入数据字节。重复该步直到所有字节都已写入(目标山区内)。清除PSWE以禁止FLASH写,使MOVX操作指向XRAM数据空间。重新允许中断。写/擦除时序由硬件根据FLASH存储器定时,预分频寄存器FLSCL中的预分频值。FLASCL决定用于写/擦除操作的时间。当FLASCL值被置1时,写/擦除操作被禁止。但要注意在FLASH正在被编程或擦除期间,8051的程序停止执行。在程序的具体实现没,如下://将数据写入Flash的pwrite地址开始处,pgen指向待写数据,n为要写入的数据个数voidWFlash(unsignedlongxdata*pwrite,unsignedlong*pgen,unsignedcharn){unsignedchari;EA=0;//关中断 FLSCL=0x81;//FLWE置1,允许用户程序写FLASHPSCTL=0x03;//将PSWE、PSEE置1(擦除对应的FLASH页 *pwrite=0; //启动擦除过程 PSCTL=0x01; //PSEE=0,PSWE=1(禁止擦除)for(i=0;i<n;i++) *pwrite++=*pgen++; //写入n个数据PSCTL=0x00;//PSEE=0,PSWE=0(禁止擦除、写Flash) EA=1;//开中断//从Flash的pread地址处读数据,放到pgen开始的内部Ram区,n为要读的数据个数voidRFlash(unsignedlongcode*pread,unsignedlong*pgen,unsignedcharn){unsignedchari;for(i=0;i<n;i++) *pgen++=*pread++;}3.68位移位寄存器74ls166在供油系统的功能模块中还包括一个IC元件,它就是8位移位寄存器74ls166。它负责读取仪表的地址。在程序中具体应用如下:unsignedcharRead74ls166(void){unsignedchari,ch; ch=0; CLR74LS166CLK; CLR74LS166LOAD;//shift/load信号为低,装入数据 Delay1us(5); //延时50μSET74LS166CLK;//CLK上升沿将数据装入 CLR74LS166CLK;LOAD74LS166DATA;if(P5&0x80)//最高位已经出现在数据线上 ch+=1; for(i=0;i<7;i++)//读其他7位 { SET74LS166CLK; //置CLK高电平 Delay1us(8); //延时8μ ch=ch<<1; //接收数据左移1位 if(P5&0x80) ch+=1; //接收1位数据 CLR74LS166CLK; //置CLK低电平 Delay1us(8); //延时8μ } return(~ch);}在主程序中Instrument_ADDR=Read74ls166();//读仪表地址第4章系统主程序设计4.1程序流程及状态转换脱机方式工作流程如图所示:图4.1.1脱机方式工作流程连机工作流程如图所示(图4.1.2)图4.1.2连机工作流程当有用户结束时,由状态⑤转入状态⑥,该状态下,收到上位机查询后,回送结束供应数据包,并等待上位机应答。若收到上位机应答,且四个通道没有全空闲,则转入系统正常工作状态。若四个通道全空闲,则转入空闲状态。收到上位机正确应答后,由状态④当有用户结束时,由状态⑤转

温馨提示

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

评论

0/150

提交评论