收藏 分销(赏)

码头供油系统控制软件开发论文.doc

上传人:仙人****88 文档编号:9398834 上传时间:2025-03-24 格式:DOC 页数:36 大小:1.35MB
下载 相关 举报
码头供油系统控制软件开发论文.doc_第1页
第1页 / 共36页
码头供油系统控制软件开发论文.doc_第2页
第2页 / 共36页
点击查看更多>>
资源描述
江苏大学毕业设计 供油系统控制软件的开发 摘 要 码头的油水电监控系统是船艇学院和我院联合研究的总后勤部的科研项目,该课题主要研究码头供油的子系统。原有的码头人工供油方式已经不能适应现代码头快节奏,高精确要求,在使用嵌入式系统控制后可以广泛用于对码头船艇的供油以及码头供油过程中的泵房现场的环境油气浓度检测。机器与一次仪表配合使用的精度可以达到 3 ‰,操作简单,显示直观清晰,可联网使用,也可单独使用,具有实际的应用价值。 下位机采用了Cygnal单片机C8051F020,它极大扩充了下位机的功能,如下位机对供油参数的设定更加方便,“查询键”的设置方便了下位机对PC机进行数据查询;此外,“开始发油”键和“紧急暂停”键功能的运用,可以使供油紧急暂停,并且按“开始发油”键,可以恢复发油;下位机还具有了掉电保护功能和自动报警功能;远程通讯的应用使得系统可以进行远程供油。 关键词:码头供油,嵌入式系统, Cygnal C8051F020, 掉电保护 Abstract The oil water and electricity monitoring system of the quay is the scientific research project of General Logistics Department which the ship and light boat institute and our academy jointly study, this main research quay of subject supports the subsystem of the oil. Already existing quay artificial to support oil way to can meet the modern fast rhythm of quay already, require high and accurate, in use embedded system can is it for the oil and quay to support to quay ship and light boat to use for extensively after controlling, the density of environmental oil gas of unloading the scene of pump house in the oil course is measured . The machine cooperates with a appearance the precision used can reach 3 ‰, it is simple to operate, show ocularly and clearly , can network and use , can also use alone , using value with reality. The next machine has adopted one-chip computer C8051F020 of Cygnal, it has expanded the function of the next machine greatly, the machine to support oil settlement of parameter convenient , establishment that " inquire key " help the next machine go on datum inquiry to the PC; In addition " begin hair oil " key and " suspend promptly " key application of function , can make and is for the oil to suspend promptly , press " begin the hair oil " key , can resume hair oil ; The next machine also has the electricity of losing to protect the function and autoalarm function; The application of the telecommunication makes the system able to support the oil long-rangly . Keywords: The quay supports the oil, the embedded system, Cygnal, C8051F020, loses the electricity to protect 目 录 第 1 章 绪论 1 1.1 系统设计的提出 1 1.2 系统需求分析 2 1.3 系统方案设计 3 第 2 章 系统开发环境 5 2.1 Cygnal单片机C8051F020 5 2.2 IDE调试环境简介 6 2.3 KEIL C51简介 6 第 3 章 底层功能模块设计 8 3.1 键盘的操作与显示 8 3.1.1 键盘、指示灯、报警代码的定义 8 3.1.2键盘显示芯片HD7279A简介 8 3.1.3程序的实现 9 3.2 数据采集 11 3.2.1 系统采集参数 11 3.2.2模拟量的采集 11 3.2.2 脉冲量的采集 13 3.3 数据存储 15 3.3.1 数据存储的主要参数 15 3.3.2外扩RAM工作原理 15 3.3.3数据存储实现的方法 16 3.4 实时时钟 17 3.4.1 S-3530时钟芯片 17 3.5 多机通讯 18 3.5.1 C8051F020串行口UART 18 3.5.2 通讯协议 19 3.5.3 通讯程序的实现 22 3.6 FLASH存储器 23 3.6.1 FLASH的特性和寄存器 23 3.6.2 FLASH读写方法和实现 24 3.7 8位移位寄存器74ls166 25 第4章 系统主程序设计 25 4.1 程序流程及状态转换 25 4.2 运行效果 29 第5章 总结和相关讨论 31 参 考 文 献 32 致 谢 33 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 Y IC在下位机刷卡 卡号传送到PC主控机 验证卡号合法性 禁止供油 N 是否有供油指标 Y 显示“允许供油” 发送领油量及IC卡号 一体机返回确认 Y 主控计算机再确定 启动阀门,开始供油 下位机计数,传实发量至主机 主机显示实发量,定时把数据传至下位机 检查是否达到定量 N Y 关闭路阀,撤软管 结束 第 2 章 系统开发环境 2.1 Cygnal单片机C8051F020 我们使用的开发工具是Cygnal的开发工具,Cygnal 的开发工具实质上就是计算机IDE 调试环境软件及计算机RS232 到C8051F 单片机JTAG 口的协议转换器(EC2)的组合。Cygnal C8051F 系列所有的单片机片内均设计有调试电路该调试电路,通过边界扫描方式获取单片机片内信息,通过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 位ADC0 2)8 路8 位ADC1 输入与P1 口复用 3)两个12 位DAC 4)两个模拟电压比较器 5)电压基准内部提供2.43V外部基准可输入 6)精确的VDD 监视器 高速8051 微控制器内核 流水线式指令结构速度可达25MIPS 22个矢量中断源 7)存储器 片内4352 字节数据RAM,64KB Flash 程序存储器可作非易失性存储,外部可扩展的64KB 数据存储器接口。 8)数字外设 8个8 位的端口I/O,I2C SPI 2个增强型UART 串口,可编程的16 位计数器/定时器阵列(PCA),5个通用16 位计数器/定时器,专用的看门狗WDT。 由以上我们可以得出单片机C8051F020功能强大,工作可靠,经济,可完全胜任开发供油系统。 2.2 IDE调试环境简介    首先让我们来看看CYGNAL IDE的主界面如图2.2.1所示: 图 2.2.1 IDE的主界面 Cygnal 集成开发环境软件提供了开发和测试项目所必须的工具具有如下特点: 1) 源代码编辑器 2) 项目管理器 3) 集成8051 宏汇编器 4) FLASH 编程器 5) 支持Cygnal 的全速非侵入在线调试逻辑 6) 实时断点 7) 比使用ICE 芯片目标仿真头电缆与仿真插座的仿真系统有更优越的性能 8) 源程序级调试 9) 有条件的存储器观察点 10) 存储器与寄存器检查与修改 11) 单步与连续单步执行方式 12) 支持第三方开发工具 13) MCU 程序代码初始化配置向导 2.3 KEIL C51简介 KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。 KEIL C51编译器在遵循ANSI标准的同时,为8051微控制器系列特别设计。语言上的扩展能让用户使用系统中的所有资源。 1) 存储器和特殊功能寄存器的存取 C51编译器可以实现对8051系列所有资源的操作。SFR的存取由sfr 和sbit 两个关键字来提供。变量可旋转到任一个地址空间。用关键字-at-还能把变量放入固定的存储器.存储模式(大,中,小)决定了变量的存储类型。 连接定位器支持的代码区可达32个,这就允许用户在原有64K ROM的8015基础上扩展程序。在V2的编译器和许多高性能仿真器中,可以支持应用程序的调试。 2) 中断功能 C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。 可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。 3) 灵活的指针 C51提供了灵活高效的指针。通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需1-2字节,因此,指针存取非常迅速。 至于C51语言,我们可以说它相对于汇编语言来,它是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。 在程序设计过程中,要充分利用C51语言的预处理命令。对于一些常用的常数,如TRUE,FALSE,PI以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义"#define"或集中起来放在一个头文件中进行定义,再采用文件包含命令"#include"将其加入到程序中去。这样当需要修改某个参量时,只须修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都作修改,从而有利于文件的维护和更新。 总体来说,C51编译器不但可以缩短单片机控制系统的开发周期,而且易于调试和维护。此外,C51语言还有许多强大的功能,如提供丰富的库函数供用户直接调用,完整的编译控制指令为程序调试提供必要的符号信息等等。 综上所述,C51语言具有强大的功能,并且C51编译器功能在不断的增强,所以我们在系统设计中采用KEIL C51。 第 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键的键盘接口。 那让我们看看它的主要特点: 1) 行接口,无需外围元件,直接驱动LED 2) 位独立控制译码/不译码及消隐、闪烁属性 3) 循环)左移/(循环)右移指令 4) 有段寻址指令,方便控制独立LED 5) 4键键盘控制器,内含去抖电路 6) 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 -”提示管理员输入第六个参数(时间)。 以下是中对系统程序中获得键值的程序: unsigned char GetKeyValue(void) { unsigned char KeyValue,KeyValue1; if (NoKey) return -1; //无键按下 Send7279Byte(0x15); //发读键盘指令 KeyValue1=Receive7279Byte(); Delay1ms(200); NOSELECT7279; //置CS高电平 switch (KeyValue1) { case 1: KeyValue=1; break; case 2: KeyValue=2; break; ... //中间类似省略 case 15: KeyValue=0xf; break; default: break; } NOSELECT7279; //置CS高电平 Delay1ms(200);//延时200ms去抖动 return KeyValue; } 以下是中对系统程序中显示任意长整型数据的程序: void DispValue(unsigned long xx) { unsigned char buf[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]=' '; else break; DispLED(buf,0); NOSELECT7279; //置CS高电平 } 3.2 数据采集 3.2.1 系统采集参数 系统对于参数的采集包括有模拟量、脉冲量和开关量的采集。 脉冲量:供油流量信息 模拟量:压力 液体温度 泵房温度: 泵房油气浓度 开关量:溢油信号 阀门状态 3.2.2模拟量的采集 1、 C8051F020A/D转换器介绍 让我们先来看看它的主要原理框图 如图3.2.2.1 图3.2.1 C8051F020A/D转换器原理框图 AMUX和PGA的部件有着各自不同的作用。 AMUX的8个通道用于外部数据采集和一个内部温度采集通道,AMUX可以差分输入也可以单端输入 PGA对输出进行放大0.5、1、2、4、8、16倍,PGA对输出内部温度输出也可以放大 接下来让我们看看A/D转换的工作方式: 它的启动方式为:将AD0BUSY置1 T3溢出 外部启动信号CNVSTR上升沿 T2溢出 查询工作方式步骤:(也可以用中断方式): 1、写0到AD0INT; 2、写1到AD0BUSY; 3、等待AD0INT变为1;4、读取ADC0数据并处理 2、 C8051F020A/D转换器初始化 • 控制寄存器AC0CN • 通道配置寄存器 • 参考电压设置REF0CN • 转换速度、增益放大ADC0CF • 中断允许、优先级等EIE2 程序如下: void Init_ADC0(void) { ADC0CN = 0x80; REF0CN = 0x07; Mux_Select = MUX_PRESS1; AMX0SL = MUX_PRESS1; ADC0CF = (SYSCLK/2500000) << 3; // ADC 转换时钟频率为 = 2.5MHz //ADC0CF |= 0x01; // PGA gain = 2 EIE2 &= ~0x02; // 禁止 ADC0 EOC 中断 EIE1 &= ~0x04; // 禁止 ADC0 窗口比较中断 } 在程序中模拟量采集介绍: void Read_Analog_Inputs(void){ long temp_long=0l; AD0INT = 0; // 清除变换完成标志 AD0BUSY = 1; // 设置变换标志 while (AD0INT == 0); // 等待变换完成 switch (Mux_Select){ case MUX_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; case MUX_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; //读所有模拟量 void GetADCValue(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.2 2、捕捉/比较模块 PCA0CPMn寄存器用语配置PCA捕捉/比较模块的工作方式,在不同方式时该寄存器各位的设置不同。置‘1’ PCA0CPMn寄存器中的ECCFn 位将允许模块的CCFN中断。注意:要使单独的CCFN中断得到响应,必须先整体允许PCA0中断。通过将EA位(IE.7)和EPCA0位(EIE1.3)设置为逻辑1来整体允许PCA0中断。 PCA0控制寄存器PCA0CN • 位7:PCA计数器/定时器溢出标志 • 位6: PCA计数器/定时器运行控制 0---禁止、1---允许 • 位5:未用 • 位4-位0: 5个捕捉模块匹配标志 0---未捕捉到、1---捕捉到(需软件清0) PCA0捕捉/比较寄存器PCA0CMP • 位7:16位脉冲宽度调制允许 图3.2.2 PCA基本原理框图 • 位6: 比较功能允许,0---禁止、1---允许 • 位5:正沿捕捉允许,0—禁止、1—允许 • 位4:负沿捕捉允许,0—禁止、1—允许 • 位3:匹配功能允许,0—禁止、1—允许 • 位2:电平切换允许 • 位1:脉冲宽度调制方式允许 • 位0:捕捉/比较中断允许,0—禁止、1—允许 可编程计数器阵列PCA初始化 void Init_PCA0(void) { EIE1|=0x08; //允许 PCA0 中断; PCA0CPM0=0x61; //允许比较方式,上升沿中断允许 CR=0; //关PCA0计数器/定时器 } 3、脉冲量采集程序介绍 //PCA0工作在比较/扑捉模式,上升沿中断,对脉冲信号计数 void PCA0_ISR (void) interrupt 9 { EA=0; //关闭所有中断 if (CCF0==1) { CCF0=0; // 清除中断标志
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服