版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 微型计算机实时控制系统的组成微型计算机实时控制系统的组成 微机实时控制系统的基本设计原则与微机实时控制系统的基本设计原则与 开发方法开发方法 微型计算机实时控制系统的设计步骤微型计算机实时控制系统的设计步骤实时控制系统设计实例实时控制系统设计实例 微机实时控制系统的概念:微机实时控制系统的概念: 14.1 微型计算机实时控制系统的组成微型计算机实时控制系统的组成 14.1.1 微型计算机实时控制系统的硬件微型计算机实时控制系统的硬件主机存储器软件电源打印机显示器键盘鼠标通讯口微型计算机接口接口接口接口A/DD/A多路开关多路开关开关变换器1变换器p隔离器q功放1功放q人机接口时钟扩展接口电路
2、调理电路1调理电路n驱动1驱动n传感器1传感器n执行机构1执行机构n被控对象本体数据交换及隔离信号传感与驱动变换计算机控制系统被控对象隔离器p隔离器1隔离器1图14.1 典型的微型计算机实时控制系统原理图 微机实时控制系统的应用软件是服务于实时控制的程序的集合,由实时控制系统的设计者编写。 实时控制系统的复杂程度和功能差别很大,故应用软件的差别也很大,必须根据系统功能和组成编写。 考虑硬件的可扩充性,宜采用模块化结构设计应用软件。这种结构易于扩展和更改。14.1.2 微型计算机实时控制系统的软件微型计算机实时控制系统的软件 模块化结构设计的应用程序包括主程序和各种模块子程序。 主程序的任务是完
3、成系统初始化,执行需要连续顺序运行的功能程序,有效调用模块子程序,实现系统级的所有功能。 模块子程序是指实现相对独立功能块的程序,这类功能块程序不需要连续运行,仅由主程序在适适当的时候调用,或在满足规定条件时才运行当的时候调用,或在满足规定条件时才运行,分为子程序和中断子程序。 一般情况下,若独立功能块子程序的运行时间不能事先确定运行时间不能事先确定,或具有随机性随机性,则常将这类子程序设计为中断子程序, 常见的有故障保护功能子程序、通讯子程序、A/D转换子程序、定时计数子程序等。14.2.1 基本设计原则与开发方法基本设计原则与开发方法 1、确定设计对象的要求和详细的设计目标,辨、确定设计对
4、象的要求和详细的设计目标,辨别设计的约束条件别设计的约束条件 设计目标设计目标应当满足应当满足对象的性能要求;对象的性能要求; 设计目标就是对象性能要求的设计目标就是对象性能要求的具体实现具体实现,否则,容易,否则,容易造成浪费资源的所谓造成浪费资源的所谓“过设计过设计”; 约束条件是指对象和系统运行的约束条件是指对象和系统运行的限制条件限制条件; 列出详细设计目标、对约束条件定出优先次序列出详细设计目标、对约束条件定出优先次序,有利,有利于分析和分解设计任务,有利于在设计过程中检查设于分析和分解设计任务,有利于在设计过程中检查设计目标和约束条件是否满足。计目标和约束条件是否满足。 14.2
5、微机实时控制系统的基本微机实时控制系统的基本设计原则与开发方法设计原则与开发方法 任务是指微机实时控制系统应当且必须完成或执行的动作和功能; 设计开始时,将复杂的设计问题分解成若干个较简单的、可以独立表征的子任务,如有可能,最好将子任务分解到可以直接实现的简单程度; 硬件任务分解和软件任务分解具有对应性,但是,软件任务一般多于硬件任务,程序设计中,子任务应当能用模块化子程序实现。 2、任务分解、任务分解 硬件与软件具有一定的互换性。 多用硬件完成一些功能可以提高工作速度,但增加了硬件成本和复杂程度; 用软件代替某些硬件的功能可使硬件成本降低、系统简单,但软件的工作量增加,执行速度降低; 总体设
6、计时,必须在硬件和软件之间进行协协调优化设计调优化设计。 3.硬件、软件协调设计硬件、软件协调设计 包括硬件调试、软件调试和软硬件联合调试,其目的与作用主要有:(1)查找和修改硬件设计及程序编写的错误;(2)进一步优化硬件和软件设计;(3)验证设计的有效性,实现设计 目标。4、系统调试、系统调试 本节介绍一种基于上述基本设计原则与方法基于上述基本设计原则与方法的微机实时控制系统研制与开发研制与开发过程。 系统调试是系统研制的最后环节最后环节,但是十分重要的环节,起着保证保证设计正确性、可靠性、有效性的作用。14.2.2 实时控制系统的实时控制系统的研制与开发过程研制与开发过程实时控制系统研制与
7、开发过程实时控制系统研制与开发过程 14.3.1 被控对象设计被控对象设计 1、被控对象本体工作原理、有效信号及控制信号的确认确认 被控对象本体的工作原理与控制流程是实现自动控制的基本理论依据理论依据; 通过对某些反映被控对象本体运行特征运行特征的有效信号或关联信号的实时测量实时测量,运行相关算相关算法法,如PID(比例、积分、微分调节器)算法等获得输出控制量输出控制量,实现控制目的。14.3 微型计算机实时控制系统的设计步骤微型计算机实时控制系统的设计步骤有效信号有效信号是指可以实时检测实时检测或能够通过适当变适当变换、计算换、计算得到的能反映被控对象本体运行特征的特征值特征值,如:幅值、相
8、位、频率等输入信号或参数。有效信号具有模拟信号和开关信号两种形式。控制信号控制信号是指计算机用于控制被控对象本体正正常、稳定、可靠运行的输出信号常、稳定、可靠运行的输出信号,也具有模拟信号和开关信号两种形式。信号获取与量程变换的设计原则设计原则可归纳为:(1)根据有效信号的性质性质和量程大小量程大小选择传感传感器类型。器类型。(2)根据被测信号频带宽度频带宽度、通道数通道数、测量精测量精度度、测量速度测量速度、灵敏度灵敏度等要求和约束条件选择A/D转换器及多路开关转换器及多路开关,根据采样定理确定采采样周期样周期。2、有效信号的获取与量程变换、有效信号的获取与量程变换 (3)根据A/D转换器输
9、入信号输入信号的要求和传感器输出信号输出信号的情况,设计调理电路调理电路,使其输出信号幅值、变化范围既有利于提高A/D转换分辨率,又不会造成超量程。(4)根据常用接口电路和计算机引脚的电平、电平、电流承受能力电流承受能力、允许的变化频率变化频率、开关信号的开关信号的特征参数特征参数,如:幅值幅值、周期周期、波动范围波动范围等指标,设计变换器变换器和选择隔离器隔离器。 (1)根据控制精度控制精度和分辨率分辨率选择D/A转换器;(2)根据D/A转换器的带负载能力带负载能力以及执行机构的输入要求输入要求,设计驱动器驱动器。(3)驱动器应具有滤波能力滤波能力,能滤除D/A输出信号中的谐波,使执行机构的
10、驱动信号平滑连续平滑连续。(4)驱动器应是线性的线性的,应具有电流放大能力,能满足执行机构的驱动要求。(5)驱动器应有电气隔离能力电气隔离能力,防止防止被控对象的高等级电压经过驱动电路耦合耦合到D/A转换器或计算机。设计原则:3、模拟输出通道、模拟输出通道 计算机输出的开关信号开关信号通过开关量输出通道直接控制直接控制被控对象的开、关动作,原理简单。 计算机引脚或扩展电路的输出为TTL电平,且输出电流较小,难以满足驱动要求,应设计带有隔离功能的功率放大电路。隔离功能的功率放大电路。4、开关量输出通道、开关量输出通道 硬件设计主要指主机和扩展接口电路主机和扩展接口电路的设计, 在较复杂的系统中,
11、还要考虑以下几项设计: (1)在硬件系统中适当加入故障诊断手段故障诊断手段,如:在电路中的一些关键部位上加装若干发光二极管发光二极管,用以指示相应电路运行正常或故障状态。(2)在电路中的关键位置设置电平监测点电平监测点;(3)对易损芯片采用插座安装插座安装,以便维修更换。14.3.2 硬件设计硬件设计1、可维护性设计、可维护性设计 (1)在重要芯片的电源引脚旁安装电容器电容器,抑制电源电压的瞬间突变,滤除高频干扰滤除高频干扰;(2)注意区分区分信号线和电源线、开关量线和模拟量线、大电流线和小电流线。线的走向与布局走向与布局,应以避免相互干扰避免相互干扰为原则,如避免邻近效应产生的干扰等;(3)
12、合理布局地线、印制线宽度宽度和线间距离距离,避免线之间发生爬电现象,尽量减少空间电磁辐射的感感应干扰、共模干扰应干扰、共模干扰等;(4)将高电压或大电流等级的部件,分区布局分区布局。 2、抗干扰设计、抗干扰设计1.问题定义问题定义 明确应用系统对控制软件的具体要求,把要由软件承要由软件承担的任务明确地定义出来担的任务明确地定义出来。 一般包括被控对象现场监控现场监控、实时数据采集数据采集、输入/输出信号处理信号处理、数学模型求解模型求解、控制算法计算算法计算以及人机人机接口接口等任务。2.软件结构设计软件结构设计 常用的软件结构设计方法有: 自顶向下自顶向下程序设计、模模块化块化程序设计、结构
13、化结构化程序设计等。 微机实时控制系统常采用常采用模块化程序设计,又称为模模块化编程设计块化编程设计。 14.3.3 软件设计软件设计(1)程序模块的基本概念:)程序模块的基本概念: 某一程序段落内的任何逻辑部分可以任意更改任意更改,而不影响程序的其余部分,且具有解决一个问题的完整算法完整算法,及一定的一定的输入值和输出值范围范围,可看成一个完整的小程序; 这样的程序段可以作为一个子程序子程序,构成一个程程序模块序模块; 由输入参数输入参数和输出参数输出参数实现与其它有调用关系的程序的衔接衔接。 (2)模块化编程方法)模块化编程方法 根据任务的逻辑关系,把整个程序按任务按任务分层划块分层划块,
14、一直到实现任务的每个程序模块能容易编码为止容易编码为止,这就是所谓的模块化编程,或积木式编程。 模块程序设计方法就是把一个完整的程序分成若干个功能相对独立若干个功能相对独立的较小较小的程序模块, 各个程序模块分别分别进行设计设计、编制编制、和调调试试,最后将调试好的程序模块连接连接起来的设计方法。(3)模块程序设计的优点)模块程序设计的优点 单个模块的设计和调试比较方便,容易完成比较方便,容易完成; 便于多人共同完成程序设计的任务分配任务分配; 一个模块可以被多个任务共享共享;模块程序设计也存在不足:模块程序设计也存在不足: 由于模块独立性要求,可能使各模块中有重复的重复的功能功能; 各个模块
15、在汇编和存放时是独立的,故占用较多占用较多的存储空间的存储空间; 为了处理好各个模块的接口参数和条件,故需要较多的较多的CPU时间时间。(4)模块程序设计的参考原则)模块程序设计的参考原则 每个模块的程序不宜太长不宜太长,必须与其应解决的任务相匹配; 每个模块之间界限应明确界限应明确,而且在逻辑上相对相对独立独立,应尽量使模块只有一个入口和一个出口只有一个入口和一个出口; 尽量地利用现成的现成的模块程序,包括系统软件提供的和个人积累的成功的程序。包括包括: 分析问题, 建立数学模型数学模型并确定算法确定算法; 绘制程序流程图程序流程图; 分配内存工作区工作区及有关端口地址端口地址; 编写源程序
16、源程序; 上机调试上机调试 等5个个步骤。3、程序设计与调试、程序设计与调试 设计对象:50L自动电加热开水桶自动电加热开水桶。 设计要求:为容量为50升的电加热开水桶设计一个单片机控制系统单片机控制系统。 系统功能与技术指标:(1)能实时检测实时检测桶内水位高度和水温,自动控自动控制加水和电阻丝加热制加水和电阻丝加热。14.4 实时控制系统设计实例实时控制系统设计实例 (2)水位分为低、中、高低、中、高三档,采用2个开关 式水位计检测,对水位的控制原则控制原则是: 水位为低水位低水位时启动加水启动加水设备并停止加热停止加热; 水位达到中水位中水位时启动加热启动加热; 水位达到高水位高水位时停
17、止加水停止加水。 (3)对温度的控制原则控制原则是: 水温低于低于80时启动加热启动加热; 水温处于80100之间为保温保温阶段; 水温达到100时停止加热停止加热。 单片机系统的输入信号输入信号包括: 一路模拟量:热水温度热水温度,范围为5100 两路开关量:高、低水位高、低水位检测计的两个有触点开关状态有触点开关状态 单片机系统的输出信号输出信号包括两路开关量两路开关量: 加水设备加水设备的启动和停止信号 电加热设备电加热设备的启动和停止信号 14.4.1 设计需求分析设计需求分析1、输入、输入/输出的有效信号输出的有效信号 选择干簧管浮子开关干簧管浮子开关检测水位。 干簧管浮子开关由活动
18、磁铁和干簧管触头组成,利用磁铁的吸力使触头闭合或断开磁铁的吸力使触头闭合或断开。 当水位低于浮子开关位置低于浮子开关位置时,触头断开触头断开(“1”状态); 当水位高于或位于浮子开关位置高于或位于浮子开关位置时,触头闭合触头闭合(“0”状态)。 实际水位与两个水位检测计开关状态的对应关系如表表14.1所示。 2、水位状态信号的检测、水位状态信号的检测水位状态水位状态低水位开关状态低水位开关状态高水位开关状态高水位开关状态低水位OFF (1) OFF (1)中水位ON (0)OFF (1)高水位ON (0)ON (0)表表14.1 水位与开关状态对应关系水位与开关状态对应关系 水温传感器量程为0
19、120,对应输出电流为420mA。已知变送器输出信号的电流电流-温度温度转换关系式转换关系式为: (14.1) 采用ADC0809模数转换器,使用250标准电阻实现I/U转换,20mA电流对应5V电压。则得到电压电压-温度转换关系式温度转换关系式为: (14.2)mA 4152tImV 10003100tu3、水温信号的检测、水温信号的检测 对应于传感器量程为0120,输入电压信号范围为:10005000 mV,ADC0809的工作电压为5V。 则当输入电压u=5000mV时,对应的转换(采样)数据N=255;而当u=0mV时,N=0,即有: u=(5000/255)*N 将此式带入(14.2
20、),则有水温水温t与采样数据N的关系式: 30255150)10002555000(1003NNt(14.3)即:当N = 0时,表示 u = 0mv,t = -30 N = 51时,表示 u = 1000mV,t = 0 N = 255时,表示u = 5000mV,t = 120 ADC0809转换器的电压分辨率电压分辨率为: 5000/255=19.6 (mV/bit), 由输入电压u的范围为5000mV1000mV,对应温度t的范围为1200,N的范围为25551(0FFH33H),可得到温度分辨率温度分辨率为: 120/(0FFH33H)=120/204=0.588/bit。 显然,可
21、满足开水桶的控制精度要求。 开水桶的控制与检测任务简单,运行速度要求不高,属于低速系统,且要求的附加功能仅需进行水温数字显示、水位报警,所需存储容量和接口少,故选择AT89C51单片机单片机。 AT89C51单片机是ATMEL公司生产的,与MCS-51兼容兼容的一款机型,片内集成4KB的FLASH存储器,128字节的片内RAM,2个16位定时/计数器和6个中断源。主机不需要外扩存储器,可简化电路设计。4、单片机的选择、单片机的选择 采用3个LED数码管实时显示水温数码管实时显示水温值的百位、十位和个位; 采用6个信号灯个信号灯分别用于指示系统运行中的加热、加水、缺水、有水、报警和保温等工作状态
22、工作状态; 通过测量水温的变化来间接检测断丝故障测量水温的变化来间接检测断丝故障。具体做法是:在对电阻丝通电加热过程中,在设定时间内,检查水温变化情况(升高与否升高与否)来判断电阻丝是否发生故障; 故障报警采用信号灯和报警器实现声光报警。声光报警。 5、附加功能、附加功能 根据系统需求分析系统需求分析,设计的50L电加热开水桶的控制系统电路如图14.3所示。 系统由4MHz时钟时钟电路、复位复位电路、 A/D转换转换电路、输出控制输出控制电路、 LED显示器显示器电路和水位检测器件水位检测器件 等等组成。14.4.2 控制系统电路图设计控制系统电路图设计图图14.3 控制系统电路图控制系统电路
23、图P3.1、P3.0:输入输入端口,P3.1和P3.0分别输入低水位低水位和高水位高水位开关信号;根据表14.1判断水位高低; P1.71.4:输出输出端口,分别控制加热加热、加水加水、缺水缺水和有水有水等 4个信号灯信号灯;P1.3:输出输出端口,控制加热电阻丝电源加热电阻丝电源启动/停止P1.2:输出输出端口,控制加水电磁阀加水电磁阀的打开/关闭;P1.1:输出输出端口,控制报警信号灯报警信号灯和报警器报警器;P1.0:输出输出端口,控制保温信号灯保温信号灯。1、开关量输入、开关量输入/输出端口设计输出端口设计 温度变送器的输出电流经250标准电阻变换成电压电压,输入IN0通道通道进行模数
24、转换; D7D0与AT89C51的P0口直接相连 ; ADDA、ADDB、ADDC固定接地固定接地,即始终选择IN0通道; EOC经反相器反相器接AT89C51的 ,即采用中断方式中断方式读取转换结果; 转换时钟CLK由AT89C51的ALE直接提供直接提供; 转换启动信号START、ALE由AT89C51的 和P2.6经或或非门非门产生; 读转换结果信号OE由AT89C51的 和P2.6经或非门或非门产生 即:0809的启动A/D转换和读数据共用一个端口地址,此地址为BFFFH。INT0WRRD2、A/D转换电路设计转换电路设计 PB6PB0接LED数码显示器数码显示器的7根段码线段码线 ;
25、 PC2PC0分别接3个个LED数码显示器数码显示器的公共线公共线; AD7AD0与AT89C51的P0口口相连,用于传送数数据、命令据、命令; 与AT89C51的P2.0相连; 与AT89C51的P2.7相连,则有: 8155片内RAM单元的地址为:7E007EFFH 片内I/O端口地址为:7FF87FFDH ; 其它引脚与AT89C51的引脚对应对应连接。M/IOCE3、显示电路设计、显示电路设计根据电路图可确定I/O芯片的端口地址如下(设无关地址取无关地址取“1”): ADC0809的端口地址为:0BFFFH(启动启动A/D转换和读数据共用一个端口地址转换和读数据共用一个端口地址) 81
26、55A的C/S寄存器、PA口、PB口、PC口的端口地址依次为7FF8H7FFBH。4、外设端口地址分配、外设端口地址分配本设计实例的软件可分解为4个功能模块个功能模块:(1)初始化模块:系统初始化系统初始化。(2)水位检测与控制模块:检测水位检测水位;根据水位高低控控制加水、加热制加水、加热、以及加水、加热、缺水和有水等4个指指示灯示灯的发光状态;动态显示温度显示温度。(3)水温采集模块:启动A/D转换,采集与计算采集与计算水温;根据水温控制加热控制加热。(4)电阻丝故障诊断模块:当系统处于加热状态时,比比较定时期间的水温变化较定时期间的水温变化,温度没有升高则说明发生了故障,停止系统运行,进
27、行声光报警声光报警。14.4.3 软件任务分解软件任务分解初始化模块、水位检测与控制模块构成主程序主程序其中水位检测与控制模块又分为:低水位处理、低水位处理、 中水位处理和高水位处理中水位处理和高水位处理等3个子程序;水温采集是一个 中断服务中断服务子程序,包含:水温计算、温度控制水温计算、温度控制等2个子程序;电阻丝故障诊断故障诊断模块是定时器定时器T0中断服务中断服务子程序。 INT0 共需设置加热、高水位、低水位、保温和故障等5个状态标志位,分别依次使用AT89C51的位寻址单元00H04H,即: 00H-加热加热; 01H-高水位高水位; 02H-低水位低水位; 03H-保温保温; 0
28、4H-故障故障。14.4.4 片内片内RAM单元分配单元分配1、标志位设置:A/D转换采样次数的软件计数器初值软件计数器初值NAD: 使用片内RAM 30H单元; 在热水温度采样时,控制控制连续采集水温信号的次次数数,用于数字滤波计算滤波计算。 NAD的初值为08H,即每当采样时间到时,连续采集8次温度,再计算计算8次采样的平均值平均值,作为本作为本次水温采样的结果次水温采样的结果。2、重要参数设置、重要参数设置定时器T0中断次数计数器初值中断次数计数器初值NTS: 使用片内RAM 31H,32H单元。 定时器T0定时的时间为100ms,通过对此中断次数的计数,可以有效的延长定时的时间延长定时
29、的时间。 NTS初值的为1800=708H,因此定时时间为180秒秒(3分钟),用于电阻丝加热故障判断故障判断中。 单片机采用4MHz晶振频率,Tcy=12/4=3s。对于16位定时器,定时100ms的定时器初值定时器初值为: 216 - 100000/3 = 65536 - 100000/3 = 32202.7 32203 = 7DCBH 定时器定时器T1中断次数计数器初值中断次数计数器初值NSP: 使用片内RAM 33H单元; 用于系统的采样周期控制采样周期控制; NSP初始值为00H,定时器T1定时的时间为100ms; 在T1中断服务程序中,将NSP-1NSP,若NSP为零,则启动ADC
30、进行采样,因此,系统的采样周期采样周期为: 256100ms = 25.6秒秒。 34H35H:水温采样值水温采样值,其中34H单元中存放当前温度采样值,35H中存放3分钟前的温度采样值,用于加加热电阻丝故障诊断热电阻丝故障诊断。 36H3DH:温度采样数据输入缓冲区输入缓冲区,用于数字滤波数字滤波计算计算。 3EH:热水的实时温度实时温度值 40H42H:温度显示缓冲区显示缓冲区,其中40H、41H和42H单元分别存放温度的百位百位数、十位十位数和个位个位数。 61H7FH:系统的堆栈区堆栈区。3、数据存储区、数据存储区14.4.5 程序设计程序设计 根据任务划分和系统的功能,本例应用程序由
31、10个部分个部分组成,分别定义为: 主程序、高水位处理子程序、中水位处理子程序、低水位处理子程序、定时器T0中断服务子程序、中断服务子程序、温度控制子程序、温度计算子程序、定时器T1中断服务子程序和温度显示子程序。(1)主程序编写注意事项 主程序是被CPU首先执行首先执行的程序模块。由它完成系统初始系统初始化化、执行需要连续顺序运行连续顺序运行的功能、调用调用子程序模块,从而保证有效实现有效实现系统的所有功能所有功能; 编写主程序时,一定要注意CPU的复位状态复位状态和中断矢量中断矢量; AT89C51复位后PC的初值为0000H;且在0003H002AH的40个程序存储器单元顺序安排 、定时
32、器0等5个类型个类型的中断服务区的中断服务区,因此: 必须在0000H单元使用一条无条件跳转无条件跳转指令,使CPU复位后直接转移到主程序的首地址主程序的首地址执行; 在每个中断源对应的中断服务区首地址首地址使用一条无条件跳转指令,直接转移到相应的中断服务中断服务子程序。INT01、主程序、主程序(2)源程序)源程序和流程图和流程图 置P1口输出全部为低电平,以封锁所有控制信号清水位、加水故障、加热等标志位:00H-04H等位地址单元清0低水位?高水位?调用低水位处理子程序调用高水位处理子程序调用中水位处理子程序初始化模块水位检测与控制模块YYNN调用显示子程序08H送NAD(30H单元);0
33、708H送NTS(31H、32H单元);0送NSP(33H单元);显示缓冲区清0启动A/D转换开放INT0、T0、T1中断8155初始化LOOP上电初始化初始化T0、T1为100ms定时器,并启动T0、T1 本例中主程序包含系统系统初始化初始化和水位水位检测与控制检测与控制两个模块。流程图如右所示。 主程序在完成系统的初始化以后,进入水位控水位控制任务制任务: 循环显示循环显示桶内水温、检测水位检测水位开关输入信号、并根据两个水位开关的实时状态调用调用相应的水位处理水位处理子程序。 ORG 0000H LJMP MAIN_PRO ;转至主程序入口 ORG 0003H LJMP INT0_PRO
34、 ;转至外中断INT0入口 ORG 000BH LJMP T0_PRO ;转至定时器T0中断入口 ORG 001BH LJMP T1_PRO ;转至定时器T1中断入口源程序 ORG 0030HMAIN_PRO:MOV A,00H MOV P1,A ;封锁输出控制输出控制信号 MOV SP ,#60H MOV 20H,A ;清水位等5个标志位标志位 MOV 30H,#08H ;采样次数计数器NAD 初值 MOV 31H,#08H ;T0中断次数计数器 NTS初值低初值低8位位 MOV 32H,#07H ;T0中断次数计数器NTS初值高初值高8位位MOV 33H,#00H ;T1中断次数计数器 N
35、SP初值 MOV 40H,#0 ;显缓区温度百位百位数初值 MOV 41H,#0 ;显缓区温度十位十位数初值MOV 42H,#0 ;显缓区温度个位个位数初值主程序MOV DPTR,#7FF8H ;指向8155A C/S口MOV A,#0EH ;PA、PB口为基本I/O口, PA为 输入、 PB为输出、PC为输出输出MOVX DPTR,A ;写入8155控制字控制字MOV TMOD,#11H ;T0、T1均为方式方式1定时器定时器MOV TH0,#7DH ;T0的计数初值为7DCBHMOV TL0,#0CBH ;对应定时时间为100msSETB TR0 ;启动启动定时器0MOV TH1,#7DH
36、 ;T1的计数初值,与T0相同相同MOV TL1,#0CBH SETB TR1 ;启动启动定时器1SETB EX0 ;允许 中断SETB PX0 ; 设置为高优先级高优先级CLR IT0 ; 为低电平低电平触发SETB ET0 ;允许定时器0中断SETB ET1 ;允许定时器1中断SETB EA ;开总中断开总中断INT0INT0INT0主程序 MOV DPTR,#0BFFFH ;指向ADC0809启动地址 MOVX DPTR,A ;启动启动A/D转换LOOP:ACALL DISUP ;显示实时温度显示实时温度 JNB P3.1,LP1 ;若P3.1=0,则不是低水位,转不是低水位,转LP1
37、LCALL DSWCL ; P3.1=1,调用低水位处理调用低水位处理子程序 SJMP LOOPLP1:JNB P3.0,LP2 ;若P3.0=0,则是高水位,转是高水位,转LP2 LCALL ZSWCL ;P3.1=0且P3.0=1,是中水位,调调 用中水位处理用中水位处理子程序 SJMP LOOP LP2:LCALL GSWCL ;P3.0=0且P3.1=0,调用高水位调用高水位处理子处理子程序 SJMP LOOP主程序 当水位达到高水位时,必须停止加水停止加水,防止发生溢溢出。出。 GSWCL:JB 01H,GRET SETB 01H;高水位高水位标志 CLR P1.2 ;停止加水停止加
38、水 CLR P1.6GRET: RET2、高水位处理子程序、高水位处理子程序有两种进入中水位的方式: 加水过程中从低水位进入从低水位进入,需清除低水低水位标志位标志和熄灭低水位指示灯低水位指示灯、建立有水有水指示指示、启动加热启动加热、建立加热标志加热标志和点亮加热指示灯加热指示灯; 一是由于用水使水位下降,由高水位进高水位进入入,需清除高水位标志高水位标志; 若一直处于一直处于中水位,则直接返回返回。 3、中水位处理子程序、中水位处理子程序高水位标志=1?YN(正常运行于中水位)低水位标志=1?高水位标志清0清低水位标志P1.5清0,熄灭缺水指示灯P1.3置1,启动电加热P1.4置1,点亮有
39、水指示灯P1.7置1,点亮加热指示灯加热标志位置1由高水位进入中水位由低水位进入中水位YN入口返回图14.6 中水位处理子程序ZSWCL:JB 02H,JLJR ;由低水位进入低水位进入,转JLJR JNB 01H,ZRET ;正常运行正常运行于中水位,直接返回 CLR 01H ;由高水位进入高水位进入,清高水位标志 SJMP ZRETJLJR:CLR 02H ;清低水位低水位标志 CLR P1.5 ;熄灭缺水缺水指示灯 SETB P1.3 ;启动加热加热 SETB P1.4 ;点亮有水有水指示灯 SETB P1.7 ;点亮加热加热指示灯 SETB 00H ;置加热加热标志ZRET:RET源程
40、序4.4.低低水水位位处处理理子子程程序序水位低于设定值时,必须停止加热,启动加水,并给出指示水位低于设定值时,必须停止加热,启动加水,并给出指示 DSWCL:JB 02H,DRET ;已建立已建立低水位标志,直接返回返回 SETB P1.5 ;点亮缺水指示缺水指示灯 SETB P1.2 ;加水加水 SETB P1.6 ;点亮加水指示点亮加水指示灯 CLR P1.3 ;停止加热停止加热 CLR P1.4 ;熄灭有水指示熄灭有水指示灯 CLR P1.7 ;熄灭加热指示熄灭加热指示灯 SETB 02H ;低水位标志低水位标志位置“1” CLR 00H ;加热标志加热标志位清“0”DRET: RET
41、5. 中断服务子程序中断服务子程序 请求信号来自ADC0809的EOC,表示ADC转换已完成; 本中断服务完成以下重要功能: 读取读取ADC0809的转换结果存入存入数据存储区,修改修改A/D转换次数; 如果尚未完成未完成8次次采样则再次启动再次启动ADC0809; 若已经完成8次采样则调用温度计算子程序,采用平均值滤波算法,计算温度计算温度; 将温度值存入显示缓冲区显示缓冲区; 调用温度控制子程序进行温度控制温度控制等; INTOINT0YN保 护 现 场读 ADC结 果 存 入数 据 存 储 区NAD-1送 NADNAD=0?调 温 度 计 算 子 程 序调 温 度 控 制 子 程 序08
42、H送 NAD启 动 ADC0809恢 复 现 场入 口中 断 返 回图图14.8 INT0中断服务子程序INT0_PRO: PUSH ACC ;保护现场 PUSH PSW PUSH DPH PUSH DPL SETB PSW.3 ;1RS0,选择第选择第1组组工作寄存器 MOV DPTR,#0BFFFH ;ADC0809的数据端口数据端口 MOVX A,DPTR ;读读A/D转换转换结果 MOV R1,A ;暂时存放暂时存放转换结果 DEC 30H ;NAD-1NAD,转换次数计数计数 MOV A,#3DH ;数据输入缓冲区末地址末地址 CLR C SUBB A,30H ;计算本次本次数据存储
43、单元地址 MOV R0,A MOV A,R1 ;取出转换结果 MOV R0,A ;存放转换结果存放转换结果 MOV A,30H JZ INTP1 ;NAD等于0,转出 MOV DPTR,#0BFFFH ;ADC0809启动启动地址 MOVX DPTR,A ;再次再次启动A/D转换 SJMP INTP2INTP1:ACALL WENDUJS_PRO ; 已采样已采样8次次,调用温 度计算计算子程序 ACALL WENDUKZ_PRO ;调用温度控制控制子程序 MOV 30H,#08H ;设置A/D转换计数初值转换计数初值INTP2:POP DPL ;恢复现场 POP DPH POP PSW PO
44、P ACC RETI本程序根据实际水温完成加热或保温加热或保温控制: 水温达到达到100时,停止加热停止加热,建立保温标志和修改相关的指示灯状态; 若水温位于80100之间,且保温标志已为保温标志已为1,则继续保温保温; 否则(即水温低于即水温低于80,或位于,或位于80100之间,之间, 但保温标志为但保温标志为0 ),控制加热过程: 若加热标志为加热标志为0,则完成启动加热启动加热、 设置加热标志为设置加热标志为1等等工作; 若加热标志为加热标志为1,则返回返回主程序。6、温度控制子程序、温度控制子程序图图14.9 温度控制子程序温度控制子程序WENDUKZ_PRO:MOV A,3EH ;
45、获取当前温度当前温度值 JB 02H,WENDURET ;低水位低水位, 不 需控制温度,返回返回 CLR C ;进入温控程序段 SUBB A,#50 H ;与80比较 JNC BIJIAO100 ;高于高于80,转 至与100比较 LOOPWEN:JB 00H,WENDURET ;已经处于加热状已经处于加热状 态态,直接返回 SETB P1.3 ;启动加热 SETB P1.7 ;点亮加热指示灯 SETB 00H ;置加热标志为1 CLR P1.0 ;熄灭保温指示灯 CLR 03H ;清保温标志 SJMP WENDURET温度控制子程序BIJIAO100:CLR C ;与100比较 MOV A
46、,3EH ;获取当前温度当前温度值 SUBB A,#64H JNC WENDUK100 ;高于高于100,转停止加热 JB 03H,WENDURET ;保温保温阶段,返回 SJMP LOOPWEN ;转温控处理温控处理WENDUK100:CLR P1.3 ;停止加热 CLR P1.7 ;熄灭加热指示 CLR 00H ;清加热标志 SETB P1.0 ;保温指示 SETB 03H ;建立保温标志WENDURET: RET 定时器T1中断服务子程序实现每每25.6s采样采样一次温度的控制功能; 其中定时器T1每隔100ms产生一次中断请求,NSP初始值为00H(即256),即每申请256次中断启动
47、一次ADC进行采样; 因此,系统的采样周期采样周期为:100256ms=25.6秒。7、定时器、定时器T1中断服务子程序中断服务子程序NSP=0?启动ADC0809恢复现场Nsp-1送NspYN保护现场入口返回T1_PRO:PUSH ACC PUSH DPH PUSH DPL DJNZ 33H ,LOOP1 ;100ms计数计数一次一次 MOV DPTR,#0BFFFH MOVX DPTR,A ;启动启动A/DLOOP1:MOV TH1,#7DH MOV TL1,#0CBH ;重装初值;重装初值 POP DPL POP DPH POP ACC RETI取出存放于内存36H3DH单元的8个A/D
48、转换数据,进行数字滤波数字滤波处理,具体算法是计算8个采样数据的平均值平均值;将该平均值作为采样结果采样结果代入公式(14.3): 计算温度值温度值, 其中用除以256来代替代替除以255;将计算得到的实时温度值实时温度值存入3EH单元;将实时温度值转换为非压缩型非压缩型BCD码码;将BCD码温度值的百位、十位、个位顺序存入 显示缓冲区显示缓冲区的40H、41H、42H 单元。 30255150)10002555000(1003NNt8、温度计算子程序、温度计算子程序从 数 据 存 储 区 36H3D H取 数 据 , 求 平 均 值按 公 式 ( 14.3) , 由 平 均 值 数 据 计
49、算 当 前 温 度T当 前 温 度 T送 入 3EH将 十 六 进 制 温 度 T转 换 成 十 进 制 数 据十 进 制 温 度 存 入 显 示 缓 冲 区, 百 位 存 入 40H, 十 位 存 入 41H, 个 位 存 入 42H入 口返 回图图14.11 温度计算子程序温度计算子程序WENDUJS_PRO:MOV R0,#08H ;求和数据个数个数R0 MOV R1,#35H ;数据存储区指针指针 MOV A,#00H ;累加和的初值初值为0 MOV B,#00H ;高8位存放于B。 LOOP2: INC R1 ;指向采样数据区采样数据区 ADD A,R1 ;求累加和累加和 MOV R2,A ;暂存低低8位位 MOV A,B ;取累加和高高8位位 ADDC A,0 MOV B,A ;存高8位 MOV A,R2 ;取低8位 DJNZ R0,LOOP2 ;未加完8次次,转回 温度计算子程序 MOV R3,#03H ;移位次数=3,相当于除以除以8YIWEI:CLR C ;求平均值平均值程序段 MOV A,B ;取高
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科儿童哮喘急性发作处理流程
- 肿瘤科肝癌肝移植后免疫抑制剂调整
- 胃癌早期筛查临床实施方案
- 危重患儿营养筛查及评估
- 老年人睡眠照护
- 胆结石急性胆囊炎手术前护理流程
- 初中二年级上学期第三十四课篮球小组对抗赛备课教案
- 会计专业职业规划大赛
- 滑膜炎康复训练指南
- 宫颈癌妇产科筛查方案
- 医疗风险防范知识培训课件
- 《Unit 3 Visit to the farm》(教学设计)-科普版(2024)英语三年级上册
- 宝钢作业长安全培训题库及答案解析
- 家庭暴力保证书模板
- 岗位技能比武汇报
- 蜡染研学课程讲解
- 防秋乏知识培训材料课件
- 医务人员职业道德准则2025
- 双翼之下的三重人生陶渊明诗歌中的鸟意象解读
- 国际压力性损伤-溃疡预防和治疗临床指南(2025年版)解读 3
- 产品碳足迹培训课件
评论
0/150
提交评论