高精度温度控制器完结版.doc

DZ257高精度温度控制器

收藏

压缩包内文档预览:(预览前20页/共94页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:149921623    类型:共享资源    大小:1.54MB    格式:RAR    上传时间:2021-10-10 上传人:好资料QQ****51605 IP属地:江苏
20
积分
关 键 词:
DZ257 高精度 温度 控制器
资源描述:
DZ257高精度温度控制器,DZ257,高精度,温度,控制器
内容简介:
装订线毕业设计(论文)报告纸摘 要 随着现代化生产和科学研究的发展,人们对温度的过程控制的要求越来越高。这就要求计量部门具有能建立具有更高的精度、稳定性和可靠性的恒定的温度场环境的温度控制系统。 本文首先简要介绍了测温的方法、特点及测温铂电阻的特性。在此基础上结合系统的实际指标和要求设计开发了以单片机为核心的低成本高精度温度控制系统。 在硬件上,采用增强型 MCS-51 单片机(P89C51RD2)作为控制仪的核心控制器件,并选用AD7710 为系统的 AD 转换器,通过该器件完成了测温通道的自调零与自校正,使仪表的测温精度及准确度基本上不依赖于零点失调和增益等因素;同时采用锁相环 HEF4046 与分频器相结合,跟踪电网频率,从硬件上消除了电网频率变化对电阻炉输出的影响;采用 LCD 显示器件,使人机交互更加的友好。 在软件上,温度控制采用传统的 PID 控制算法实现,由于 51 系列的单片机运算能力、运算速度较低。在计算程序设计中,全部采用了分段线性插值的方法来代替复杂的数据运算,以程序代码空间来换取运算的速度以及精度。 温度控制仪表通过 485 总线把数据传送到 PC 机上,上位机可以弥补下位机由于单片机内部资源的限制,不能保存大量的数据的缺陷。系统的上位机软件除了可以实现历史数据保存的功能之外,还有查看数据和打印等功能。 关键词:温度控制,单片机,线性插值 ABSTRACT With the development of moden industry and science research, it is higher of the demand of temperature controlling.The measure department needs a temperature control system which should have higher precision, stability, dependability on founding a temperature entironment. The first briefed on temperature measurement methods, characteristics and introduce the Pt100s characteristics. On this basis, design a high-precision temperature control system at the refence of the indicators and the actual requirements. System uses 8051 series MCU(P89C51RD2) as the instruments controller. And 24 bits AD7710 is chosed as analog to digital convert department. AD7710 has 8 operation modes, by chosing different operation mode, AD7710 can calibration zero-scal and full-scal calibration coefficients. HEF4046 is used to track the electrical frequency. And the change of the AC frequency cant inflect the electric cookers output.LCD is used as output, provide a good man-to- machine interface. PID control method is used in the control system. The float operation can not be run in P89C51RD2, and the MCUs speed is low. So, using interpolation intead the direct calculate. Thats to say, the program spent more code space to get high speed and high precision. Instrument transfers the data to PC by RS-485.The PC software can save all the data on the hard disk.The sofeware also can review the saved data and print out them. Key word: Temperature control, MCU, Interolation 目录第一章 概述51.1 测温方法分类及其特点51.2 热阻式测温方法61.3 课题背景、意义及任务内容71.3.1 课题背景及意义71.3.2 温度控制系统的功能要求:81.3.3 温度控制系统的主要性能指标:81.4 论文的总体结构8第二章 温度控制系统的总体设计92.1 系统总体方案设计92.2 现场温度控制仪表的方案设计102.3 编译调试软件的选择13第三章 现场温度控制仪表的电路设计143.1 测量模块电路设计143.1.1 精密直流电流源电路的设计153.1.2 模数转换(A/D)模块电路183.2 人机交互模块283.2.1 液晶显示模块电路设计283.2.2 按键电路设计323.3 输出控制模块电路设计333.3.1 8253 定时/计数器343.3.2 过零检测电路373.3.3 锁相环倍频电路383.3.4 可控硅及脉冲变压器输出电路463.4 电源和主处理器模块473.5 通讯电路设计483.5.1 串行通讯总线标准及其接口493.5.2 通信接口电路设计503.5.3 RS-485 总线网络的设计51第四章 现场温度控制软件的设计544.1 现场温度控制仪表的单片机软件的总体框图544.2 单片机系统的初始化程序544.2.1 单片机内部资源的初始化554.2.2 单片机外部资源初始化574.3 温度测量数据处理584.3.1 零漂和增益的自动校正原理584.3.2 测量数据的数字滤波594.3.3 热电阻线性化624.4 温度控制程序664.5 人机交互674.5.1 按键程序设计674.5.2 液晶屏界面程序设计694.6 串口通信71第五章 上位机 PC 软件的设计745.1 上位机软件的总体设计745.2 串口通信程序755.2.1 打开串口755.2.2 关闭串口765.2.3 串口配置765.2.4 读写串口785.2.5 串口通信程序的具体实现795.3 实时数据的存储815.4 打印和打印预览83第六章系统抗干扰技术及措施856.1 印刷电路的抗干扰设计 856.1.1 印刷电路板的整体布局和电气连线856.1.2 电源和地线设计866.1.3“去耦”电容的配置876.1.4 其它抗干扰设计876.2 系统的软件抗干扰设计876.2.1 指令冗余法876.2.2 软件陷阱法876.2.3 看门狗技术88总 结88致谢90参考文献91第一章 概述1.1 测温方法分类及其特点根据传感器的测温方式,温度基本测量方法通常可分成接触式和非接触式两大类。 接触式温度测量的特点是感温元件直接与被测对象相接触,两者进行充分的热交换,最后达到热平衡,此时感温元件的温度与被测对象的温度必然相等,温度计就可据此测出被测对象的温度。因此,接触式测温一方面有测温精度相对较高,直观可靠及测温仪表价格相对较低等优点,另一方面也存在由于感温元件与被测介质直接接触,从而影响被测介质热平衡状态,而接触不良则会增加测温误差;被测介质具有腐蚀性及温度太高亦将严重影响感温元件性能和寿命等缺点。根据测温转换的原理,接触式测温又可分为膨胀式、热阻式、热电式等多种形式。 非接触式温度测量特点是感温元件不与被测对象直接接触,而是通过接受被测物体的热辐射能实现热交换,据此测出被测对象的温度。因此,非接触式测温具有不改变被测物体的温度分布,热惯性小,测温上限可设计的很高,便于测量运动物体的温度和快速变化的温度等优点。两类测温方法的主要特点如下表 1-1 所示。 表 1-1 两类测温方法特点方式 接 触 式 非 接 触 式测量 条件感温元件要与被测对象良好接触;感温元件的加入几乎不改变对象的温度;被测温度不超过感温元件能承受的上限温度;被测对象不对感温元件产生腐蚀 需准确知道被测对象表面发射率;被测对象的辐射能充分照射到检测元件上测量 范围特别适合 1200以下、热容大、无腐蚀性对象的连续在线测温,对高于 l 300以上的温度测量较困难原理上测量范围可以从超低温到极高温,但1000以下,测量误差大,能测运动物体和热容小的物体温度精 度工业用表通常为 1.0、0.5、0.2 及 0.1 级,实验室用表可达 0.01 级 通常为 1.0、1.5、2.5 级响应 速度慢,通常为几十秒到几分钟 快,通常为 23 秒钟 其它 特点整个测温系统结构简单、体积小、可靠、维护方便、价格低廉,仪表读数直接反映被测物体实际温度;可方便地组成多路集中测量与控制系统整个测温系统结构复杂、体积大、调整麻烦、价格昂贵;仪表读数通常只反映被测物体表现温度(需进一步转换);不易组成测温、控温一体化的温度控制装置1.2 热阻式测温方法基于热电阻测温原理是根据金属导体或半导体的电阻值随温度变化的性质,将电阻值的变化转换为电信号,从而达到测温的目的。 用于制造热电阻的材料,要求电阻率、电阻温度系数要大,热容量、热惯性要小,电阻与温度的关系最好近于线性;另外,材料的物理、化学性质要稳定,复现性好,易提纯,同时价格尽可能便宜。 热电阻测温的优点是信号灵敏度高、易于连续测量、可以远传(与热电偶相比)、无需参比温度;金属热电阻稳定性高、互换性好、准确度高,可以用作基准仪表。热电阻主要缺点是需要电源激励、有自热现象以及测量温度不能太高。常用铂电阻传感器。 铂电阻的电阻率较大,电阻温度关系呈非线性,但测温范围广,精度高,且材料易提纯,复现性好;在氧化性介质中,甚至高温下,其物理、化学性质都很稳定。国标 ITS 一 90 规定,在-2593463074温度范围内,以铂电阻温度计作为基准温度仪器。 目前工业用铂电阻分度号为 Pt100 和 Pt10,其中 Pt100 更为常用;铂电阻范围通常最大为-200850。铂电阻与温度的关系: 式中 R0为温度为零时铂热电阻的电阻值(Ptl00 为 100,Ptl0 为 10); R( t) 为温度为 t 时铂热电阻的电阻值; 显然铂电阻适合用于高精度、较宽温度范围的测量。 1.3 课题背景、意义及任务内容 1.3.1 课题背景及意义随着工业生产和科学研究的发展,人们对温度测量及控制的要求越来越高,具体表现在温度测量控制的精度、稳定性、可靠性等方面。特别是在高性能、高精度的器件的生产、标准检测领域的应用、高要求的实验环境的建立等方面,都有高精度温度控制仪表的需求。高精度的温度控制仪表实现就必然离不开前端电路中高质量的温度传感器的使用。然而即使是同种条件、工艺下生产出来的传感器件,它们的性能指标也不尽相同。这就要通过对温度传感器的检定来实现。 我国从 1991 年 7 月 1 日起开始对各级标准温度计进行改值,整个工业测温仪表的改值在 1993年年底前全部完成,并从 1994 年元旦开始全面推行 ITS 一 90 新温标。 对温度计(或传感器)的检定,有标准值法和标准表法两种方法。标准值法就是用适当的方法建立起一系列国际温标定义的固定温度点(恒温)作标准值,把被标定温度计(或传感器)依次置于这些标准温度值之下,记录下温度计的相应示值(或传感器的输出),并根据国际温标规定的内插公式对温度计(传感器)的分度进行对比记录,从而完成对温度计的检定;被检定后的温度计可作为标准温度计来测温度。 常用的另一种检定方法是把被检定温度计(传感器)与已被检定好的更高一级精度的温度计(传感器),紧靠在一起,共同置于可调节的恒温槽中,分别把槽温调节到所选择的若干温度点,比较和记录两者的读数,获得一系列对应差值,经多次重复测试,若这些差值稳定,就成了对被检定温度计的检定。 本论文主要讨论高精度的恒温槽的温度控制系统的设计,该系统能用于热电阻温度器件的检定。 1.3.2 温度控制系统的功能要求: 温度控制系统主要分为两大部分:现场温度控制仪表和上位机程序。现场温度控制仪表主要用于建立标准的高精度温度场,并在标准温度下测量标准热电阻和被检定热电阻的阻值然后传送到上位机。上位机程序负责接受下位机的数据并以文件形式保存以供其它热电阻分析软件使用。 1、现场温度控制仪表: (1) 温度的测量和显示功能:对于恒温槽的温度的实时测量,显示实际的测量温度以及目标控制温度的值。 (2) 工作参数的设定功能:温度控制现场仪表的工作参数可以重新设定,方便根据实际的工作环境选择最佳的工作参数。 (3) 温度控制功能:输出控制采用可控硅调相调功方式,确保恒温槽建立的温度精度能满足要求的指标; (4) 远程通信功能:现场温度控制仪表可以把测得的温度的值、工作参数、被测铂电阻的电阻值传送给上位机。 (5) 现场故障诊断及故障显示功能:传感器和被测铂电阻开路或其它故障时,温度控制仪表能诊断出实际故障并显示出来。 2、上位机程序: (1) 串口通信功能:从 PC 机串口读取现场仪表传送上来的各项数据。 (2) 界面显示:显示每台表的工作状态以及每台表所测量得到的温度值。 (3) 历史数据的保存:把下位机传送上来的数据按年、月、日保存在 PC 机中可以供以后调档查看 (4) 打印功能:可以打印历史数据,温度曲线。 1.3.3 温度控制系统的主要性能指标: (1) 输入种类:PT100 标准热电阻 (2) 输入点数:1 个测点、4 个被测点 (3) 温度控制范围:0.00200.00 (4) 测量误差:(5) 温控稳定性:(6) 显示:LCD 显示 (7) 通信接口:RS485 1.4 论文的总体结构 论文的总体章节安排如下:首先简要的介绍相关的背景以及论文的主要内容;第二章介绍了系统的总体方案;第三章介绍现场温度控制仪表的硬件电路;第四章介绍了现场温度控制仪表的软件设计;第五章介绍了上位机软件的设计;第六章介绍了系统抗干扰设计。第二章 温度控制系统的总体设计 2.1 系统总体方案设计 系统可以分为两个部分:上位机软件以及现场温度控制仪表。 现场温度控制仪表主要功能是测量控制恒温槽的温度、测量待检定热电阻的阻值并可以通过485 总线传送到上位机上。 上位机实现的主要功能是接收下位机的数据,并在 PC 机上显示和保存,同时还能提供历史数据显示以及数据图表的打印等功能。 2.2 现场温度控制仪表的方案设计 现场温度控制仪表的总体设计框图如图 2-2 所示,主要可以分为五个模块:前端测量模块、LCD+按键的人机交互模块、后端可控硅输出控制模块、电源主处理器模块、通信模块。 1、 测量模块方案的选择4常用的铂电阻测量的方法主要有 2 种:利用单电桥来测量电阻的阻值的变化;利用高精度的恒流源电位压将法来测量电阻的变化。 利用电桥测量可以实现较高准确度的温度的测量,但是在实现0.01以上的精度的话,电桥本身的非线性,以及被测电阻接入单电桥作为一个桥臂以后,该桥臂中的接线电阻和接触电阻的数值可能与引起最小温度变化所对应的阻值在同一数量级,甚至还要大些。因此,如果采用单电桥的测量方法得到的测量结果将是极不可信的。 恒流源压降法是一个恒流源与一个被测电阻相串联,通过测量电阻两端的压降就可以计算出被测电阻的阻值。这个测量的精度主要决定于电流源的精度。现在的带隙电压源以及齐纳稳压二极管都能生成很高精度的电压源能够满足实际的测量要求的精度,所以前端测量模块电路采用选用恒流源压降法。2、人机交互模块的选择5准确、清晰、可靠的参数显示对于任何一种仪器来说都非常重要。一般来讲,常用的显示器件有:发光二极管显示器(LED)和液晶显示器(LCD)。 发光二极管显示器是全固态型显示器件,具有极高的可靠性和极长的寿命,在智能化测量与控制仪表中普遍使用。它又可分为 LED 数码管显示器和 LED 点阵显示器两种。LED 数码管显示器常用的一般为 8 字型,通常主要用来显示数字。LED 点阵显示器常用 88 点阵图形来显示字符,可显示的内容比 LED 数码管显示器丰富。而 LED 点阵显示器虽然可以实现各种字符的显示,但其体积过大,功耗太高。 液晶显示器是利用液晶的物理特性来实现显示的。在通电时导通,使液晶排列变的有秩序,光线容易通过;不通电时,排列变的混乱,阻止光线通过。按照显示性能,液晶显示器可分为段行显示、点阵显示、字符显示等。段行显示依靠长条形像素进行显示,只能显示数字和个别字符;点阵显示依靠矩形点像素进行显示,可以显示任何字符、数字、图形;字符显示是只能显示分割开的字符的点阵式产品。与其他显示器件相比较,液晶显示器有以下特点: z 由于液晶的像素可以做的很小、很精细,因此显示同样的参数,液晶显示器的体积更小、更薄; z 工作电压低,功耗小。有些液晶显示器只要 2V3V 即可工作,而工作电流仅几个毫安,这是其它任何显示器件无法比拟的; z 寿命长。液晶材料是有机高分子合成材料,具有极高的纯度,而且其他材料也都是高纯物质,在极净化的条件下制造而成。而且液晶的驱动电压又低,驱动电流更是微乎其微,因此,其劣化效应几乎没有,寿命很长; z 无辐射、无污染,对于人身安全和信息保密都非常理想。 由于液晶显示器,显示比较灵活,与 LED 相比能够实现更加友好的人机对话,而且液晶显示器的功耗更小所以在现场温控仪表中选用 LCD 作为人机交互的界面显示。 3、可控硅输出控制模块 输出控制接口电路要求具有弱电控制、强电输出的特点,只需要较小的电流、电压就可以控制较大的电流。满足这个要求的常用的是机械继电器输出控制电路和可控硅输出控制电路。机械继电器输出控制接口电路简单,但是机械继电器的开关响应时间长,触点的寿命较短,不适合用于频繁开关的场合。可控硅输出控制接口电路相对复杂,其优点就是开关无触点,寿命长、开关响应时间短,控制方式灵活,可以根据不同的情况选用不同的触发方式来进行控制。在温度控制系统中广泛应用。4、电源主处理器模块 根据各模块的电压需求,一共需要 4 组直流电源:+12V*2,+5V*2。其中 12V 的一组用于前端的测量模块的稳压芯片供电电源,另一组为可控硅控制模块供电。5V 电源中的一组为测量模块供电,另一组用于其他各个模块。电源设计方案是常用的设计方案:先将 220V 交流电通过变压器分别变压(AC9V 二线,AC14 三线);在分别通过整流桥和二级管对降压后的交流信号整流;最后经过电容和稳压芯片(7805*2,7812*2)后输出所需的 4 路直流信号。 8051 单片机是目前国内外工业测量控制领域内使用极为广泛的一类 8 位微控制器,它的特点是使用方便灵活,外围硬件支持十分丰富,世界上许多大半导体厂商,如:Atmel、Analog Device、Dallas 、Infineon、Philips、SST、TI 等公司都推出了具有各自特点的增强型 8051 系列单片机,现共有 100 多种的型号可供选择。现场温度控制仪表的处理器选用的是飞利浦的增强型 51 单片机P89C51RD2,该单片机片内资源丰富(RAM1K+ROM64K)这就无需再进行片外扩展就可以满足系统的设计需要。而且 P89C51RD2 片内自带了看门狗,这不仅节约了芯片的外部接口,而且还提高了系统的稳定性。 2.3 编译调试软件的选择 1、下位机软件编译调试环境的选择6现场温度控制仪表的单片机软件采用 C 语言开发。实际调试采用 MICETEK 的 EasyProbe 8052F Plus 仿真头,所以调试软件只能选用 CodeCruiser For 51,但是 CodeCruiser For 51 软件仅能较好的支持汇编语言的编译调试,对于 C 语言的编译则相当的差,而且效率低。Keil 公司的 Keil C51是绝大部分 8051 系列单片机开发者的首选,它将项目管理器(Project)、Cx51 编译器、Ax51 汇编器、BL51/Lx 连接定位器、RTX51 实时操作系统、Simulator 模拟器以及 Mornitor51 目标调试器的功能全部集成在单一而灵活的Vision2 中,为用户提供了极为简便的操作环境。Vision2 具有强大的项目管理功能,项目中包括源程序文件、开发工具选项以及编程说明等。Vision2 内部还集成了一个数据库文件(Device Database),其中存储了各种型号单片机的片上存储器和集成外围功能信息,通过器件数据库可以自动设置 Cx51 编译器、Ax51 汇编器、BL51/Lx51 连接定位器、Debug调试器等开发工具的功能选项,充分满足用户使用特定的起始地址及代码大小规模。 Keil C 编译器具有如下优越性: 1 C51 源程序经过优化后生成的代码,其效率接近于汇编语言生成的代码。 2 支持所有的 8051 系列单片机,提供对所有外围硬件部件的操作。 3 无论在有无工作寄存器区转换的情况下,编译器都能产生快速中断代码。 4 能够在整个应用程序中执行全局寄存器优化。 5 支持再入功能和寄存器区的独立代码,便于中断服务程序和多任务应用程序的执行。 在进行调试时,先选用 Keil C 编译环境生成 OMF 文件,然后在 CodeCruiser For 51 中调用 OMF文件进行调试。 下位机的调试软件选用 Keil C 与 CodeCruiser For 51 相配合使用。 2、 上位机软件编程调试软件的选择 PC 机的编程软件较多,在 Windows 环境下常用的有 VB、VC、Delphi、Broland C+ 等。VC 是微软推出的在 Windows 操作系统上建立应用程序的编程软件。VC+使用方便,可以借助于其生成代码的向导,就能在数秒内生成可运行的 Windows应用程序的基本外壳。VC+自带的类库,即 Microsoft Foundation Classes(MFC)已经成为许多 C+编译器进行 Windows 软件开发的工业标准。选用 VC+能够很好的利用 Windows API 对底层硬件操作,所以上位机的编程软件选用 VC+6.0。 第三章 现场温度控制仪表的电路设计 本章主要介绍现场温度控制仪表的硬件电路设计,现场温度控制仪表的硬件电路共分为 5 个模块:前端测量模块、LCD+按键的人机交互模块、后端可控硅输出控制模块、电源主处理器模块和通信模块。 3.1 测量模块电路设计 测量模块在整个温度控制仪表甚至整个温度控制系统中处于最基础的地位。测量模块的测温精度决定了整个系统的精度;测量的结果又是温度控制系统进行控制的依据,也是检验温度控制效果的依据。这个模块设计对整个系统起着决定性的作用。 3.1.1 精密直流电流源电路的设计 精密直流电流源电路7测量电路首先的任务就是把前端热电阻变化(Rt)线性的转换成电压的变化(Vt)即:由式(3-1)可以看出当 It为常数时,电压的变化(Vt)只与电阻变化(Rt)相关,所以这就需要一个高精度的、稳定性好的恒流源 It。 精密直流电流源电路如图 3-1 所示 恒流源基本实现是:由电压基准芯片生成恒定电压 Vref(t),经过运放 MAX430 跟随输出Vin=Vref(t) ,此时 Is(t) =Vref(t)/R7(t) ;当电压 Vref(t)和 R7(t)都为恒定值时输出时Is(t)=Vref(t)/R7(t) 也一定为固定不变的值。电阻 R7(t)采用高精度、低温漂的标准电阻,其阻值基本固定,所以 Is(t)的输出质量的优劣基本上取决于 Vin-(t)。Q1 选用 N 沟道 2SK30 场效应管。电压基准芯片的精度是整个系统精度的基础。 电压基准芯片简介8电压芯片选用 MAXIM 公司的 2.5V 电压基准芯片 MAX6325(封装见图 3-2)。 MAX6325 几项重要技术指标: 1 低温漂,1ppm/ 2 低噪声,1.5Vpp 的噪声(0.1-10 赫兹)(见图 3-3) 3 长时间稳定性好,30ppm/1000hr 4 低功耗,18hw 功耗 5 初始化精度0.02 MAX6325 在这个系统中既是恒流源的生成参考电压也是 AD 芯片的参考电压。所以 MAX6325 的精度是这个测量系统精度的保证。而 MAX6325 的温漂小,纹波噪声小(见图 3-3 ),精度高,所以稳压芯片选用 MAX6325。 当 MAX6325 工作在频率 10Hz- 10kHz 区间时,NR 脚接电容Cnr与否直接影响了输出电压的输出噪声(见图 3-4 所示)。在接电容(Cnr=1f)后,在 10Hz 时输出噪声与未接电容(Cnr=0f)时相差不大,但是到了 30Hz 处,Cnr=1f 的输出噪声为30 /nV Hz 而 Cnr=0f 的输出噪声是 45 /nV Hz ;当频率100Hz 时,Cnr=1f 的输出噪声为 15 /nV Hz 而 Cnr=0f的输出噪声是 40 /nV Hz ,显然当在 NR 脚接上 1F 的电容Cnr能很好的改善 MAX6325 的输出噪声。MAX6325 噪声抑制电容参考电路如图 3-5 所示。实际使用时,MAX6325 的电路见图 3-1 所示。在实际电路中,用六位半电压表在运放输出端测量所得的电压值为2.50001V(稳定不变);通过示波器测量得到的电压的纹波为 2.5uV,满足实际应用的要求精度。 斩波稳零低漂移运放 MAX4309 10在微弱信号的测量时,常常需要放大微伏级的电信号。这时,普通的运算放大器已无法使用了,因为它们的输入失调电压一般在数百微伏以上,而失调电压的温度系数在零点几微伏以上。固然输入失调电压可以被调零,但其漂移则是难以消除的。MAXIM 公司生产的斩波稳零型运算放大器MAX430 提供了一种解决微信号放大问题的方案。斩波稳零的工作方式使 MAX430 具有优异的直流特性,失调电压及其漂移、共模电压、低频噪声、电源电压变化等对运算放大器的影响被降低到了最小,MAX430 非常适合用于微信号的放大。 MAX430 内部主要的功能单元有:主放大器、校零放大器、时钟开关电路、补偿网络、校零记忆电容、箝位电路。MAX430 的内部简化结构如图 3-6 所示。斩波稳零运放可以分为两个主要的时钟周期:校零周期和放大周期。主放大器一直与电路的输入端和输出端相连,而校零放大器则在两个周期内分别对自己和主放大器校零。在校零周期内,开关 A 闭合、开关 C 闭合,使校零放大器的两个输入端短路,通过自身的反馈,校零放大器的失调电压被减到最小。同时,外接记忆电容 C1 中储存了这一失调电压,使校零放大器在放大周期内仍保持校零。在放大周期内,开关 A 打开、开关B 闭合,把校零放大器的输出与主放大器的同相输入端连接起来,使主放大器被校零。同时,外接记忆电容 C2 中储存了校零电压,使主放大器在下一个校零周期内仍保持校零。在 MAX430 中,内部时钟使放大器以 400Hz 的固定频率校零。在这种连续校零的机制下,失调电压及其漂移、共模电压、低频噪声、电源电压变化等对运算放大器的影响被降低到了最小。 由于 MAX430 片内自带有记忆电容和内部时钟,所以实际应用电路较为简单(见图 3-1)。通过六位半的电压表测量等到的输出电压等于 MAX6325 的输出参考电压。 3.1.2 模数转换(A/D)模块电路 模数转换器(ADC)是前向通道中的关键器件。它实现了被测控对象的模拟信号(温度、压力、流量等)转换成计算机可以接受处理的数字量信号。目前,A/D 转换技术在不断的更新发展,功能越来越强,精度越来越高,只有对 A/D 转换芯片的工作原理和各项性能有一个综合的了解,才能在实用中选择正确的 A/D 转换器满足设计指标。 A/D 转换器的种类很多,目前常用的 A/D 转换器有四种类型:并行式转换型、双积分型 A/D 转换器、逐次比较型 A/D 转换器和新型 A/D 转换器。 A/D 转换器的基本原理11 12并行式转换型亦称为瞬时比较-编码式 A/D 转换技术,是一种转换速度最快、转换原理最直观的A/D 转换技术。并行式 A/D 所有位的数据理论上在一个时钟周期内全部转换完成。并行式 A/D 转换需要大量的低漂移电压比较器,工程上较难实现。它的特点是:转换速度最快,但转换精度低,价格高,它一般用于待转换量是高速变化的模拟量的场合(如:瞬态信号分析、高速数据采集以及视频信号量化等)。 双积分型 A/D 转换器的转换速率最慢(转换时间为毫秒级),但是转换精度高,而且具有抗周期干扰能力,价格便宜。适用于模拟信号变化缓慢,采样速率要求比较低,而且对精度要求比较高,或现场干扰比较严重的场合。常见应用于非实时控制的高精度数字仪器仪表中。 逐次比较型 A/D 转换器主要由逐次逼近寄存器 SAR、D/A 转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的 SAR 寄存器中的数字量经 D/A 转换后得到电压 V0,与待转换电压 V1 进行比较。比较时,先从 SAR 的最高位开始,逐次确定各位的数码是“1”还是“0”。逐次比较型转换速度虽然不及并行转换型,属于中速 ADC,但具有结构简单的价格优势,在精度(一般为 8-16 位 A/D)上可以达到一般工业控制要求,应用比较广泛。 新型 A/D 转换器具有抗干扰能力强、量化噪声小、分辨率高和线性度好的优点,转换速度也高于双积分型 ADC。 A/D 转换器适用于音频信号处理和低频模拟测量中。 A/D 转换器主要有三个处理:过采样、量化噪声整形、数字滤波和采样抽取。 1 过采样 如果对理想 ADC 输入恒定直流电压,多次采样得到的数字输出量总是相同的,而且分辨率受到量化误差的限制。如果在这个输入直流电压上叠加一个交流信号,并用比这个交流信号频率高的多的采样频率进行采样,此时得到的输出数字是变化的,用这些采样结果的平均值表示 ADC 转换结果,便可得到比用同样 ADC 高的多的分辨率,这种方法称作过采样。即使模拟输入本身就是一个交流信号,采用过采样的方法(即采样频率远远高于输入信号频率)也同样可以提高 ADC 的分辨率。 假设噪声的能量为 /12q ,当采样频率为 Fs Hz 时,由于采样频率远小于噪声的频率,所以会在采样出的信号中含有有大量的由于欠采样引起的混叠噪声(见图 3-7a)。而当提高采样频率为 k*Fs 时,在频率范围为 Fs/2 到 k*Fs/2 的范围内的量化噪声在频谱上能真实地反映出来(见图 3-7b),再通过数字低频滤波器后,在 0 到 Fs/2 的频率上的量化噪声明显降低(见图 3-7c)。当过采样比例因子 k 为 4 时,就能提高信噪比 6db。只要选择合适的比例因子 k,就能使实际得到的信号上只含有频率从 0 到 Fs/2 范围内的噪声。这就大大提高了 ADC 的分辨率。 2 量化噪声整形 可以通过 调制器对量化噪声的频谱整形使得大部分噪声位于 Fs/2 到 k*Fs/2 的范围内,噪声频谱在经 调制器整形后,通过后接的数字滤波器可以去除大部分量化噪声能量,可以极大地提高信噪比。 图 3-8 给出了一阶 ADC 的原理结构图。虚线框内的是 调制器,它以 k*Fs 的采样速率将输入信号转换成 1 和 0 构成的连续串行位流。一路数据串行进入数字滤波器,一路以负反馈形式与输入信号求和。 根据反馈理论,具有积分环节的反馈环路的静态误差等于零,因此 DAC 的输出平均值(串行位流)接近输入信号的平均值(见图 3-9)。显然当被采样的信号的频率过高(接近采样频率)时,1位 ADC 的输出的位流是没有意义的。只有当大量的采样数据取平均所得到的值才是有实际有效的值。可以用图 3-10 所示的频域线性化模型对 调制器可作进一步的分析。其中积分器模拟一个传递函数为 H(S)的滤波器,量化模拟放大器的输出与量化噪声叠加。输入信号为 X,输出信号为Y。已知 H(S)= 1/S,则有:Y = ( X- Y ) / S + QY = X /(S + 1) + QS /(S + 1)(3-2)由上式(3-2)可以看出,当频率接近于零时(S0),输出 Y 接近于 X,噪声分量接近于零。对于高频分量,输出的主要是噪声。而积分器对输入信号具有低通滤波作用,对噪声分量有高通滤波作用。因此,调制器能实现噪声整形滤波器的作用。3 数字滤波和采样抽取 调制器对量化噪声整形后,将量化噪声移到 Fs/2 之外,然后应对整形后的噪声进行数字滤波。数字滤波器的作用有两个:一是相对于最终的频率 Fs,它必须起到滤波器的作用,二是将 调制器整形过程中产生的高频噪声滤除。由于采取了过采样,采样过程中产生了许多多余的信号。数字滤波器通过每输出 M 个数据抽取一个数据的重采样方法,实现了使输出数据低于原来的过采样速率,直到使关心的频带满足采样定理。 24 位 A/D 转换器 AD771013AD7710 是 Analog Device 公司生产的 24 位高精度Sigma-Delta 模/数转换器件。AD7710 的主要优点是:片内自带有可编程的差分放大器,这就使得 AD7710 能直接获得来自于铂电阻的电压信号(可以在片内调整到适当的范围);AD7710 带有控制寄存器(它能够控制滤波器的截止频率、输入增益、选择通道、信号极性和校准模式),这使得 AD7710 易于与微控制器相配合使用;AD7710 精确度高,在 23 位动态范围内的误差仅为 0.0015,而且它的内部自校正能够消除温漂影响,它还能消除零量程和满量程误差。AD7710 非常适合用于需高分辨率但速度要求不太高的场合。 1、AD7710 的引脚和功能 AD7710采用 24 脚双列直插式封装,如图 3-11 所示。各引脚的应用特性说明如下。 表 3-1 AD7710 各引脚的应用特性说明 2、控制寄存器及芯片的工作状态的参数的设定 AD7710 的 24 位控制寄存器从高位到低位的含义如图 3-12 所示 MD1、MD0 操作模式的选择: 0 0 1 标准模式。这是芯片运行的标准模式,将 A0 置 1,可对数字寄存器进行读操作。内部电源复位后寄存器的这几位将进入这一默认状态。 0 1 0 零刻度系统校正。在校正期间,输入电压应保持稳定。开始校正时 DRDY 高电平,校正完成后 DRDY 回到低电平。校正结束,回到标准模式。 0 1 1 满刻度系统校正。过程与零刻度系统校正相同。校正结束后回复到标准模式。 z 1 0 0 激活系统补偿校准模式。这种校准模式由 CH 控制。这是一步校准,当校准完成,将回到标准模式,同时由(/DRDY)输出确认信号。在这种模式下,零量程对选定的通道进行校准,满量程可通过内部的 VREF 校准。 1 0 1 激活背景校准模式。这种校准模式由 CH 控制。如果这种模式打开,AD7710 将不断的对参考输入和零点平输入进行自校准。在转化过程将进入这种模式,它会延长转化时间和降低传输速率。它的优势是当外界温度发生很大变化时,用户不用担心对芯片进行重校准。在这种模式中,零电平输入和 VREF 以及模拟输入电压都将受到监视,并且,芯片的校准寄存器将能够自动更新。 G2、G1、G0 增益系数选择:控制字(000-111)对应增益(1-128);控制字 000(增益为 1)为上电默认状态。 FS11-FS0 为滤波器频率设置: 滤波器频率的选择关系到采样的速度,它与增益系数共同决定了 A/D 芯片的输出噪声和输出的有效位数。滤波器频率代码与实际频率的关系为: 式中 code 为 FS0-FS11 相等的十进制数字,范围为 19 至 2000。由于 fclkin等于 10MHz,因此滤波器的频率的范围是 9.76Hz 到 1.028kHz。同时它也指出了新数据到达的有效时间。当设定滤波器频率为 50Hz,则新数据在 20ms 后才有效;当设定滤波器频率为 1kHz 是,则新数据在 1ms 后有效。 芯片的输出噪声主要取决于频率。当频率设置比较低时(50Hz),元器件本身是使产生噪声的主要因素,当频率越来越大时,产生噪声的主要因素变成了频率。所以改变滤波器的频率(当频率产生的噪声占优势时)对噪声的影响远大于改变内部半导体元件结构。滤波器的频率设置的越低(低于 60Hz),芯片以 24 位接受数据时丢码越少。当滤波器的频率设为 1kHz 时,AD7710 只能实现 12位的无误码。在这个系统中选用滤波频率为 50Hz,输入增益为 8 时,输出的有效位数为 19.5 位。 3、AD7710 的校准 AD7710 提供了多种校准选择,这些可以通过控制寄存器选择。只要将信号写入控制寄存器,校准模式可以在任意时候启动。芯片有自校准模式,这种模式可以通过使用校准寄存器和SRAM 保存校准参数实现。通过使用系统校准模式,芯片的其他部分也可消除补偿和增益误差。在背景校准模式,芯片可不断的进行自校准,同时还可不断的更新校准参数。一旦芯片进入这种模式,用户不用周期性的发送校准命令给芯片或要求系统重校准(当环境温度或电源供电压变化时)。 AD7710 允许微处理器读取校准系数,还允许用户将预先存入E2PROM 的数据写进校准寄存器以改变校准参数。这使得微处理器对AD7710 的校准过程具有更强的控制能力。这意味着用户能够检验所进行的校准是否正确同时可以纠正它(通过将校准寄存器中的参数与预先存入E2PROM 的数据进行比较)。4、AD7710 应用电路以及与单片机的接口电路 AD7710 的实际应用以及接口电路图如图 3-13 所示。在实际的 AD7710 使用时,AD7710 工作状态设定为:外部时钟计数模式、外部信号差分输入、滤波器频率设置为 50Hz,选择自校正模式,差分可编程放大器增益为 8 ,输入通道为 0,输出 24 位字长,单极性输入。时钟计数模式需要通过硬件设置选择,MODE 脚接低,选择外部时钟计数模式。其它状态的设定通过写状态控制寄存器来选定。5、AD7710 的读写操作 AD7710 的读取:可以从寄存器、控制寄存器或校准寄存器中读数据。A0 确定是从控制寄存器读数还是从输出/校准寄存器读数。在进行读操作时,A0 必须保持有效。A01,可对输出寄存器或校准寄存器进行读操作。A00,可对控制寄存器进行读操作。DRDY 的作用取决于芯片输出数据的更新速率和输出寄存器输出数据的速率。当输出寄存器中有新的数据可输出时,DRDY 变成低电平。当输出寄存器中的数据输出完毕后,DRDY 将复位为高电平。如果数据没有从输出寄存器读出,DRDY将一直保持低电平。输出寄存器将不断的更新数据,而 DRDY 不会输出确认信号。在这种情况下,读操作所读取得数据是输出寄存器中最新的数据,如果新的数据已经到齐,并且希望能保存在输出寄存器,而此时的输出寄存器没有将数据输出完毕,DRDY 将不会输出确认信号,这些新的数据将会丢失。在对控制寄存器和校准寄存器进行读操作时,DRDY 不会受到影响。只有当 DRDY 为低电平时,输出数据寄存器才能输出数据。如果当 DRDY 为高电平,而此时的 RFS 变成低电平,仍然无法传送数据。在对控制寄存器或校准寄存器进行读操作时,DRDY 不能施加任何影响。AD7710 在外部时钟模式下的读操作时序图如图 3-14 所示。AD7710 的写操作:可以对控制寄存器和校准寄存器进行写操作。在任何情况下,写操作都不会受 DRDY 的影响,同时写操作也不对 DRDY 的状态有任何影响。对控制寄存器和校准寄存器进行写操作时,写入的数据必须是 24 位的。图 3-15 是 AD7710 写操作的时序图。A0 决定是对控制寄存器还是对校准寄存器进行写操作。在对寄存器进行写操作时,A0 必须一直有效。TFS 的下降沿启动 SCLK 输出。在 SCLK 的上升沿,输入的数据必须是有效的。数据是在 SCLK 的上升沿写入的,在 SCLK 最后一个高电平处,最后一位数据写入寄存器。因此在这个高电平的下降沿,SCLK 的输出端将被关闭。 根据外部时钟模式的读写时序,读写操作的流程图如图 3-16 所示。进行读操作时,所有数据位在 SCLK 下降沿且在下一个 SCLK 上升沿有效,因此应该在 SCLK 置低后检测 SDATA 引脚电平。而写操作时,数据位必须先于 SCLK 的上升沿有效,且在 SCLK 高电平期间必须保持有效,因此应该先发送 SDATA 电平,然后再产生时钟信号。 3.2 人机交互模块 现场温度控制仪表可以实时显示恒温槽的实际温度值;用户可以通过按键设定现场温度控制仪表的各种参数,因而现场温度控制仪表应具有键盘显示接口,可以方便的实现人机交互的功能。 3.2.1 液晶显示模块电路设计显示模块选用致意电子技术有限公司的 HXMG128064 显示模块。HXMG128064 是 128*64 的单色、字符、图形显示模块,该模块内置液晶显示驱动模块,所以实际使用方便,与控制器的接口电路简单。 HXMG128064 显示模块的显示屏为 128 列,64 行结构。使用两片驱动控制器,每片有 64 路输出,分别驱动 1-64 列和 65-128 列;模块内部使用一片 64 行输出及一片 128 列输出驱动器。128*64的液晶被分为相同的两块(每块为 64*64);每块分为 8 页;显示存储器用于存储显示数据,显示屏上各像素点的显示状态与显示存储器的各位数据一一对应,显示存储器的数据直接作为图形显示的驱动信号。数据为“1”,则相应的像素点显示;数据为“0”,则相应的像素点不显示。液晶显示模块的逻辑电路和接口电路框图如图 3-17 所示,其外部引脚说明如表 3-2 所示。 液晶模块内部驱动器只要提供电源就能产生驱动信号和各种同步信号,所以只要了解了驱动器的输入特性以及几个简单的操作命令就能方便的使用显示模块。液晶显示模块与单片机的接口电路有两种: 1、 间接访问方式接口电路 间接访问方式是计算机通过自身的或系统中的并行接口与显示模块连接,如8051的P1口和P3 口,8255 等并行接口芯片以及像74LS273 类的锁存器等。计算机通过对这些接口的操作,以实现对液晶显示模块的读/写操作和相关的显示控制。图3-18是实用电路图。图中51单片机的P1口作为数据口,P32为读写信号,P33为寄存器选择信号,P35为使能信号E,P34作为复位控制信号。片选信号CS-1 和 CS-2 高电平有效,分别控制显示屏的左半部(164列)和右半部(65128 列)。这种方法的特点是电路简单,可以实现高速计算机与模块的接口,但是液晶模块的读/写操作的控制时序需要通过软件实现,增加了在软件上的开销,也增加了液晶显示模块调试的时间。所以在实际电路的设计中选用了另一种直接访问方式接口电路,在原有的电路上只增加了一个与非门,就大大的简化了调试以及程序的编写。 2、 直接访问方式接口电路 直接访问方式就是将模块的接口作为存储器或I/O设备直接挂在计算机总线上,计算机以访问存储器或I/O设备的方式对模块操作。图3-19是直接访问方式的接口实用电路图。片选信号CS-1和 CS-2高电平有效,分别控制显示屏的左半部(164列)和右半部(65128 列);E 信号由51单片机的读信号/RD 和写信号/WR 合成产生;RS为控制寄存器选择信号;R/W控制数据总线的数据流向。同过电位器R可以调节液晶屏的显示亮度。 系统采用了直接访问接口电路,通过这种接口方式,单片机向液晶进行读写操作时不需要通过软件来实现复杂的时序控制,只是把它当成普通的 I/O 进行操作,实现简单有效。 在实际使用时,LCD 与 LED 不同。LED 显示需要单片机一次传输的数据量较小,所以不会占用太多的处理器时间,但是 LCD 显示内容丰富,所以需要传输的数据量较大,但是实际上每次变化的内容并不多,所以可以针对不同情况来对液晶屏更新可以节约处理器在显示上所花的时间。具体见软件部分的介绍。3.2.2 按键电路设计在设计按键时,根据按键多少有不同的设计方法:独立式按键结构和矩阵式按键结构。独立式按键是指直接用I/O口线构建成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。独立式按键电路配置灵活,软件结构简单,但是每个按键必须占用一根I/O口线,在按键较多时,I/O口线浪费较大。故在按键数量不多时,常采用这种按键电路。矩阵式按键结构是用I/O口线组成行、列结构,按键设置在行列的交点上。在按键较多时,可以节省I/O口线。 在单片机应用系统中,键盘扫描只是CPU在工作的一个内容而已。CPU在忙于各项工作任务时,如何兼顾键盘扫描;即保证不失时机地响应键操作,又不过多占用CPU的时间。因此,要根据应用系统中的CPU忙、闲情况,选择好的键盘工作方式。键盘工作方式有编程扫描方式、定时扫描方式和中断扫描方式。编程扫描工作方式是利用CPU在完成其它工作的空余,调用键盘扫描子程序,来响应键输入要求。在执行键功能程序时,CPU不再响应键输入要求。选用这种方案时要考虑这种键盘扫描子程序的编程调用应能满足键盘响应的要求。定时扫描方式是利用单片机内部定时期产生定时中断,CPU响应中断后对键盘进行扫描、并在有键按下时转入键功能处理程序。中断工作方式主要用于不经常需要键输入的场合,在这种情况下无论是编程工作或定时工作,CPU经常处于空扫描状态。为了进一步提高CPU效率,则可以采用中断工作方式,即只有在有键按下时,才执行键盘扫描,执行该键功能程序。 由于单片机的I/O口线的限制,所以系统只用了四个按键,接口电路采用键盘扫描工作方式。电路如图3-20所示,按键直接接到单片机的P口,但是由于选用的按键都是利用机械触点,当机械触点在闭合及断开的瞬间均有抖动过程,所以按键必须采用软件去除抖动。即在检测到有按键按下时,执行一个10ms的延时后在确认该键电平是否仍保持闭合状态,如果保持闭合状态则确认为按下,从而可以消除按键抖动的影响。液晶界面较多,四个键仅单独定义是不够用的,所以按键功能必须进行复用。按键与页面菜单相配合即可实现,例如:按键+在选择菜单时,实现指针下移的功能;而在修改参数时,则实现+1的功能;在处于显示页面下,则是进入修改参数页面的功能。 3.3 输出控制模块电路设计 输出控制电路采用可控硅移相触发调节方式。移相触发方式是通过改变输出电压波形的导通角来控制实际输出功率。移相触发的优点首先是输出相对的连续、均匀而且调节精细,主要适用于高精度温度控制的场合。输出控制模块电路的总体框图如图3-21所示: 3.3.1 8253 定时/计数器Intel8253是专门用于Intel微型计算机系统的可编程间隔定时器/计数器。它的功能是可以把这种通用的、多定时的元件当作一个系统中的I/O端口阵列来处理。Intel8253解决了在任何微型计算机系统中的最普遍的一个问题,在软件控制下产生精确的时间延时。采用Intel8253后,程序员无需去建立系统软件中的定时循环来满足时间延迟的要求,而只需要对Intel8253内的定时器初始化即可。 Intel8253结构框图如图3-22所示。其内部有三个独立的功能相同的16位定时器/计数器,每个计数器有三根I/O线:CLK为时钟输入线,即计数脉冲输入线;OUT为计数器输出端;GATE为门控信号,用于启动/停止计数器的计数操作。 每个计数器的工作方式及计数时间常数分别由软件编程选择,可以进行二进制或10进制计数定时操作。Intel8253的最高计数频率为2.6MHz。每个计数器都有一个单独的控制寄存器,控制寄存器用来寄存操作方式控制字,只能写入不能读出。Intel8253与单片机的接口控制逻辑简单,D0-D7为双向、三态数据总线,RD、WR为数据读、写控制线,A0、A1是地址选择线,CS为片选线。 Intel8253的工作方式由CPU编程给定,通过将工作方式控制字写入控制寄存器的方式实现。控制字的格式如图3-23所示。控制字用来控制8253中计数器的工作方式、操作类型、计数类型及计数器的选择。 C1、SC0用于选择计数器,00选择计数器0,01选择计数器1,10选择计数器2。RL1、RL0用来确定计数器的操作类型,00计数器锁存操作,01只读写高位字节,10只读写低位字节,11先读写低位字节后读写高位字节。BCD用来确定计数器采用二进制还是十进制,M2、M1、M0 用来指定计数器的工作方式。8253共有六种工作方式,它们分别为计数结束中断方式(方式0)、可编程单脉冲(方式1)、速率发生器(方式2)、方波发生器(方式3)、软件触发选通(方式4)、硬件触发选通(方式5)。 方波发生器(方式3)兼有两种启动方式,计数能自动重复,OUT端输出的波形不是脉冲而是方波。在写入方式3的控制字后,计数器OUT端立即变高。若GATE信号为高,在写完计数初值N后,开始对CLK信号计数。计到N/2时,OUT端变低,计完余下的N/2,OUT又变回高,如此重复,OUT端产生周期为N*Tclk的方波。若计数初值为奇数,则前半周期为(N+1)/2,后半周期为(N-1)/2。 硬件触发选通(方式5)是硬件启动、不自动重复的计数方式。在写入方式5控制字后,OUT变高,写入计数初值时即使GATE信号原来为高,计数过程也仍不启动,而是要求GATE信号出现一个由“0”到“1”的上升沿,下一个CLK信号也开始计数。计数器减到零时,OUT变低,经一个CLK信号后变高且一直保持。 方波发生器主要作用是分频,配合HEF4046锁相环使用,实现电网频率的跟踪和倍频的功能。硬件触发选通(方式5)能完成可控硅移相的功能(工作时序见图3-24)。 同步脉冲与8253输出脉冲间隔N个时钟脉冲的时间(N为单片机的输出控制量)。时钟频率是电网频率的2000倍(通过HEF4046和8253锁相倍频后的时钟信号)。实际8253输出的控制信号的输出脉冲的宽度大概为10微秒,但是实际可控硅所需要的触发脉冲的宽度远大于这一脉冲宽度,为了能够驱动可控硅,必须对脉冲进行扩展。脉冲扩展电路采用单稳态触发器74LS123,将8253输出的窄脉冲扩展成所需要的脉冲宽度。实际的输出脉冲的宽度由芯片外接的电阻阻值R和外接的电容的大小C所决定(T = 0.45*Rext*Cext)。通过调节RC可以选择合适的脉冲宽度以保证输出的脉冲宽度可以触发可控硅,保证可控硅的正常工作。 脉冲扩展电路如图3-25所示。可以根据是高电平触发还是低电平触发来选择74LS123的输出端为Q还是/Q。 3.3.2 过零检测电路通过过零检测电路可以实现输出控制信号与可控硅的同步。电路如图3-27所示。输出同步信号如图3-26所示。计数器8253的同步信号就是由过零检测电路产生的。过零检测电路在交流电的每个零点处产生一个上升沿脉冲信号,这个脉冲信号是每次输出控制延时的参考点。实际电路的输出波形与输入波形的关系见图3-27。输出的同步信号为图3-26中的ZERO。 3.3.3 锁相环倍频电路可控硅采用的是调相控制方式。调相方式的实质是控制电压波形的导通角,即设定每一个波形的导通的位置。 假设8253控制输出的延时一直为N*Tclk,此时的电压波形的导通角为 式(3-4)中0为实际导通角,N*Tclk为8253控制输出的延时时间,f为电网频率。理想的控制情况为除N是单片机的输出控制值,其它参数值是固定不变的,这使得电炉的输出控制值0与单片机计算输出值成线性关系。但实际上,电网的频率不是理想情况中的固定不变,电网的频率非常容易受到外界的干扰,频率一直上下浮动不定。由式3-4可知,当电网频率变化时,实际输出控制值0不仅单片机计算输出值N相关,而且同时还直接受到电网频率f的影响,实际输出控制值0与单片机计算输出值并不是线性的关系,所以这时的输出控制并不能实现单片机的控制意图。如果采用这种控制电路的话,控制效果肯定不会十分理想。 由公式3-4可知,要使实际的输出控制满足要求有两种方法: 一是修改输出值,在单片机的输出值N已经消除了电网频率f的影响即N = N/f。这种方法在设计中的实现要求软、硬件相配合。硬件上把电网的频率信号接到单片机的I/O口上。软件上,需要通过单片机的计时时钟来配合相应的软件代码实现频率的测量。这一处理需要花费较多的CPU的工作时间,在软件上与其它程序段的配合比较复杂。 二是修改8253的输入参考时钟Tclk,使8253的输入参考时钟Tclk=1/(n*f)。如果能够实现Tclk=1/(n*f),则此时实际的输出控制值0=N*Tclk*f*=N*/n,输出与单片机的控制输出成线性关系。这种方法可以通过锁相环倍频电路实现。锁相环电路能很好的跟踪电网频率。这种方法不占用单片机的处理时间,能自动的根据电网频率变化修正输出控制触发脉冲的时间,使实际的输出控制不受电网频率变化的影响。这种方法可以实现每个电压周期的频率的自动校正。采用这种方法的实际效果显然要优于第一种解决方法,故在设计中选用这一方案。 锁相环的基本知识锁相就是使相位同步的自动控制,能够完成两个电信号相位同步的自动控制闭环系统叫做锁相环,简称PLL。锁相环主要由相位比较器(PC)、压控振荡器(VCO)、低通滤波器三部分组成。如图3-28所示。 压控振荡器的输出Uo接至相位比较器的一个输入端,其输出频率的高低由低通滤波器上建立起来的平均电压Ud大小决定。施加于相位比较器另一个输入端的外部输入信号Ui与来自压控振荡器的输出信号Uo相比较,比较结果产生的误差输出电压U正比于Ui和Uo两个信号的相位差,经过低通滤波器滤除高频分量后,得到一个平均值电压Ud。这个平均值电压Ud朝着减小VCO输出频率和输入频率之差的方向变化,直至VCO输出频率和输入信号频率获得一致。这时两个信号的频率相同,两相位差保持恒定(即同步)称作相位锁定。 当锁相环入锁时,它还具有“捕捉”信号的能力,VCO可在某一范围内自动跟踪输入信号的变化,如果输入信号频率在锁相环的捕捉范围内发生变化,锁相环能捕捉到输入信号频率,并强迫VCO锁定在这个频率上。锁相环应用非常灵活,如果输入信号频率f1不等于VCO输出信号频率f2,而要求两者保持一定的关系,例如比例关系,则可以在外部加入分频电路,以满足实际工作的需要。 锁相环 HEF4046锁相环选用Philips公司的HEF4046锁相环芯片,其特点是电源电压范围宽(为3V15V),输入阻抗高(在供电电压为5V时,输入阻抗为750k),动态功耗小,在中心频率f0为10kHz下功耗仅为150W,属微功耗器件。图3-29时HEF4046的DIP封装图。 各引脚的功能如下:1脚相位输出端,环路入锁时为高电平,环路失锁时为低电平。2脚相位比较器的输出端。3脚比较信号输入端。4脚压控振荡器输出端。5脚禁止端,高电平时禁止,低电平时允许压控振荡器工作。6、7脚外接振荡电容。8、16脚分别为电源的负端和正端。9脚为压控振荡器的控制端。10脚解调输出端,用于FM解调。11、12脚外接振荡电阻。13脚相位比较器的输出端。14脚信号输入端。15脚内部独立的齐纳稳压管负极。 图3-31是HEF4046内部电路原理框图,主要由相位比较、压控振荡器(VCO)、线性放大器、源跟随器、整形电路等部分构成。比较器采用异或门结构,当两个输人端信号Ui、U o的电平状态相异时(即一个高电平,一个为低电平),输出端信号U为高电平;反之,Ui、U o电平状态相同时(即两个均为高,或均为低电平),U输出为低电平。当Ui、Uo的相位差在0-180范围内变化时,U的脉冲宽度亦随之改变,即占空比亦在改变。从比较器的输入和输出信号的波形(如图3-30所示)可知,其输出信号的频率等于输入信号频率的两倍,并且与两个输入信号之间的中心频率保持90相移。从图中还可知,fout不一定是对称波形。对相位比较器,它要求Ui、Uo的占空比均为50(即方波),这样才能使锁定范围为最大。 相位比较器是一个由信号的上升沿控制的数字存储网络。它对输入信号占空比的要求不高,允许输入非对称波形,它具有很宽的捕捉频率范围。它提供数字误差信号和锁定信号(相位脉冲)两种输出,当达到锁定时,在相位比较器的两个输入信号之间保持0相移。 对相位比较器而言,当14脚的输入信号比3脚的比较信号频率低时,输出为逻辑“0”;反之则输出逻辑“1”。如果两信号的频率相同而相位不同,当输人信号的相位滞后于比较信号时,相位比较器输出的为正脉冲,当相位超前时则输出为负脉冲。在这两种情况下,从1脚都有与上述正、负脉冲宽度相同的负脉冲产生。从相位比较器输出的正、负脉冲的宽度均等于两个输入脉冲上升沿之间的相位差。而当两个输入脉冲的频率和相位均相同时,相位比较器的输出为高阻态,则1脚输出高电平。上述波形如图3-32所示。由此可见,从1脚输出信号是负脉冲还是固定高电平就可以判断两个输入信号的情况了。 HEF4046锁相环采用的是RC型压控振荡器,必须外接电容C1和电阻R1作为充放电元件。当PLL对跟踪的输入信号的频率宽度有要求时还需要外接电阻R2。由于VCO是一个电压控制振荡器,对定时电容C1的充电电流与从9脚输入的控制电压成正比,使VCO的振荡频率亦正比于该控制电压。当VCO控制电压为0时,其输出频率最低;当输入控制电压等于电源电压VDD时,输出频率则线性地增大到最高输出频率。VCO振荡频率的范围由R1、R2和C1决定。由于它的充电和放电都由同一个电容C1完成,故它的输出波形是对称方波。一般规定HEF4046的最高频率为2.7MHz(VDD=15V),若VDD=5V,则fmax要降低为1 MHz。 HEF4046内部还有线性放大器和整形电路,可将14脚输入的100mV左右的微弱输入信号变成方波或脉冲信号送至相位比较器。源跟踪器是增益为1的放大器,VCO的输出电压经源跟踪器至10脚作FM解调用。齐纳二极管可单独使用,其稳压值为5V,若与TTL电路匹配时,可用作辅助电源。 综上所述,HEF4046工作原理如下:输入信号 Ui从14脚输入后,经放大器A1进行放大、整形后加到相位比较器、的输入端,图3-31开关K拨至2脚,则比较器将从3脚输入的比较信号Uo与输入信号Ui作相位比较,从相位比较器输出的误差电压U则反映出两者的相位差。U经R3、R4及C2滤波后得到一控制电压Ud加至压控振荡器VCO的输入端9脚,调整VCO的振荡频率f2,使f2迅速逼近信号频率f1。VCO的输出又经除法器再进入相位比较器,继续与Ui进行相位比较,最后使得f2f1,两者的相位差为一定值,实现了相位锁定。若开关K拨至13脚,则相位比较器工作,过程与上述相同。 在由HEF4046构成的锁相环路中,采用的是相位比较器,而相位比较器是一种电流型三态鉴频鉴相器,其输出电路采用了电荷泵的形式。当环路处于锁定状态时,相位比较器输出为高阻态,相位比较器输入信号与压控振荡器反馈输入信号之间相差为零,即环路的稳态相差为零。此时滤波环路中电容无放电回路,电容两端的电压维持不变,压控振荡器输出频率恒定。相位比较器的这一功能使得由其构成的锁相环路与使用相位比较器相比具有以下两点特性:一是HEF4046相位比较器构成的锁相环路同步带与捕捉带相等,且与环路的滤波参数无关,这给电路的设计带来了方便:二是由HEF4046相位比较器II构成的锁相环路可实现无相差锁定。 HEF4046 倍频电路4046的实际锁相倍频电路如图3-33所示。图3-33用4046与8253构成的倍频电路,其中8253的分频系数为N。刚开始,f2/N可能不等于f1,假定f2/Nf1,此时相位比较器输U为高电平,经滤波后Ud逐渐升高使VCO输出频率f2迅速上升,f2增大值至 f2/N=f1,如果此时 Ui滞后 U0,则相位比较器输出U为低电平。U经滤波后得到的Ud信号开始下降,这就迫使VCO对f2进行微调,最后达到f2/N=f1,并且f2与f1的相位差=0。进入锁定状态。如果此后f1又发生变化,锁相环能再次捕获f1,使f2与f1相位锁定。 4046中VCO的输出频率由11脚外接电阻R1和12脚的外接电阻R2、6 、7脚之间的外接电容C1、 9脚的控制电压共同决定。VCO输出的最低频率fmin和最高频率fmax分别为: 其中:设计希望输出频率范围为0Hz到100kHz。所以选择R2=;R1和C1的选取可以参考Philiphs公司产品手册上的推荐参数图,设定的中心频率为100kHz,则选择参数R1=10k,C1=300pf。 低通滤波器是锁相环正常工作中不可忽视的部分,其时间常数限制了系统跟踪输入信号的频率变化的速度。另外,滤波器还能帮助防止噪声电压干扰环路的正常工作。这是由于存储在环路滤波器上的电容能帮助很快重新捕获因噪声尖峰或其它瞬态效应丢失的信号。如果时间常数过长,会使环路跟踪在较快变化的输入频率时引起过度的延迟;而过小,使环路跟踪快速变化的输入信号会引起压控振荡器输出频率的反常变化。一般取R3=1M,R4=100k,C4=0.1uf。最佳的工作状态时电阻R4的阻值为电阻R3的10%30%。 3.3.4 可控硅及脉冲变压器输出电路可控硅触发电路采用脉冲触发方式。脉冲触发方式可以减少可控硅门极的功耗以及触发信号放大电路的功耗。使用脉冲变压器的触发电路如图3-34所示。为了保证触发的可控硅可靠的导通,要求触发脉冲要有一定的宽度。一般取2050s,对于电感性负载,触发脉冲还应加大,脉冲宽度应不小于100s,一般要用到1ms。 为了防止可控硅的误触发,提高系统的可靠性,在脉冲变压器的次级K1、G1和K2、G2两端并联一个电阻和一个电容,以降低触发回路的阻抗,减少干扰信号的影响,D2、D3用于保护可控硅,D1用于保护三极管。 3.4 电源和主处理器模块电源是各类电子设备中必不可少的组成部分,其性能的优劣直接关系到电子设备的技术指标以及能否安全可靠的工作。目前常用的直流稳压电源分开关电源和线性电源两大类,由于开关电源内部关键元器件工作在高频开关状态,本身消耗的能量很低,所以效率较线性电源要高,但开关电源的突出缺点是能产生较强的电磁干扰(EMI)。EMI信号既具有很宽的频率范围,又有一定的幅度,经传导和辐射后会污染电磁环境,会对电子设备造成干扰。对于要求较高的电子器件,开关电源本身就会是一个干扰源。由于开关电源的这个缺点,本系统选用线性电源作为系统的直流稳压电源。 线性电源芯片的基本内部电路图如图3-35所示,线性电源主要由调整管、取样电阻R1、R2、比较放大器组成。 取样电压在比较器的同相输入端,与加在反相输入端 的基准电压Uref相比较,两者的差值经放大器放大后,控制串联调整管的压降,从而稳定输出电压。当输出电压U0降低时,基准电压与取样电压的差值增加,比较放大器输出的驱动电流增加,串联调整管压降减小,从而使输出电压升高。相反,若输出电压U0超过所需要的设定值,比较放大器输出的前驱动电流减小,从而使输出电压降低。实际供电过程中,输出电压校正连续进行。 选用7805和7812三端稳压芯片的具有如下几点特性:输出电流可达1A;具有过电流和过温保护功能,电压输出精度达4%。电源电路如图3-36所示。 3.5 通讯电路设计在计算机测控系统中,数据通讯主要采用异步串行通讯方式。在设计通讯接口时,必须根据需要选择标准接口。常用的标准的异步串行通讯接口有2类:RS-232C和RS-485(RS-422)。采用标准接口后,能很方便的把各种计算机、外部设备、测量仪器有机的连接起来构成测控系统。RS-232C是由美国电子工业协会(IEA)正式公布的、在异步串行通讯中应用最广的标准总线。它包括了按位串行传输的电气和机械方面的规定。适合于短距离或带调制解调的通讯场合。为了提高传输速率和通讯距离,EIA又公布了RS-422和RS-485串行总线标准。为保证高可靠性的通讯要求,在选择接口标准时,需要注意以下两点: 1 通讯速度和通讯距离 通常的标准串行接口的电气特性,都有满足可靠传输的最大通讯速度和传送距离指标。但是这二个指标之间具有相关性,适当的降低通讯速度,可以提高通讯距离,反之亦然。例如,采用RS-232C标准进行单向数据传输时,最大传输速率可达20Kbit/s,最大传送距离为15m。改用RS-485标准时,最大传输速率可达10Mbit/s,最大传送距离为300m,当降低数据传输速率是,最远传送距离可以达到1200m。 2 抗干扰能力 通常选择的标准接口,在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输,但在一些工业测控系统中,通讯环境比较恶劣,因此在通讯介质选择、接口标准选择时要充分注意其抗干扰能力,并采取必要的抗干扰措施。在长距离传输时,使用RS-485标准,能有效地抑制共模信号干扰。 3.5.1 串行通讯总线标准及其接口 1、RS-232C接口标准 RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232C串行接口总线适用于设备之间的通讯距离不大于15m,传输速率最大为20kB/s的场合。 RS-232虽然使用很广,但是因为推出较早,在网络通信中已暴露出明显的缺点: 数据传输速率慢。RS-232C所规定的20kB/s的传输速率虽然能满足异步通信的要求,但对某些同步系统来说,不能满足传送速率的要求。 传送距离短。RS-232C接口一般装置之间电缆长度为15m,即使有较好的线路器件、优良的信号质量,电缆长度也不会超过60m。 未规定标准的连接器,因而出现了互不兼容的连接器。 接口处各信号间容易产生串扰。 鉴于RS-232接口的上述缺点,EIA又制定的新的标准即RS-485(RS-422)接口标准。新的标准提高了传输速率,增加了传输距离,改进了电气性能。并增加了RS-232C未用的测试功能,明确规定了标准连接器,解决了机械接口问题。 2、RS-485接口标准 RS-485标准是用平衡差动的方式传输数据、抗干扰性强、速率高、传输距离远、能够实现多点传输,它允许同时连接32个驱动器和32个接收器,方便地组成一个小型的网络。RS-485是一个电气接口规范,它规定了平衡驱动器和接收器的电气特性,而没有规定接插件传输电缆和通信协议。 RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号系统,只要检测两线之间的点位差就可以了。但应该注意的是收发器只有在共模电压不超出一定范围(-712V)的条件下才能正常工作。当共模电压超出此范围时,就会影响通信的可靠性,甚至损坏接口。RS-485电气特性如表3-3所示。 3.5.2 通信接口电路设计24接口电路芯片采用MAXIM公司的MAX485芯片。该芯片的主要特点有: 功耗很低:待机状态、5V电源下,电流300A。 抗共模干扰:-712V的共模电压下数据收发正常。 驱动能力强:具有三态输出,总线可以挂接32个MAX485构成的节点。 安全可靠:具有电流限制、过热关断以及输出超载保护功能。 通讯速率和距离性能优异:最大传输距离为1219米,最大传输数据率为10Mbit/s,平衡双绞线的长度与传输速率成反比。 MAX485芯片的封装及原理图见图3-37所示: 单片机的P32口为485的发送和控制脚,当P32口为高时为发送;当P32为低时为接收。4857和4856分别接到RS-485/RS-232转换器的7脚和6脚。 3.5.3 RS-485 总线网络的设计2526RS-485支持半双工模式网络拓扑,一般采用终端匹配的总线型结构,不支持环形或星型网络。最好采用一条总线将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。多机通信系统结构如图3-39所示。 组网要注意以下几点: 1. 通信规则 由于MAX485通讯是一种半双工通讯,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。半双工通讯对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。一定要做到总线上的设备在时序上的严格配合。 2. 总线匹配 总线匹配有两种方法,一种是加匹配电阻,位于总线两端的差分端口之间应跨接120匹配电阻,以减少由于不匹配而引起的反射、吸收噪声,有效地抑制了噪声干扰。但匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。另外一种比较省电的匹配方案是RC 匹配利用一只电容C 隔断直流成分,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。在实际系统设计时采用了加匹配电阻这个方案。 3. 地线与接地 电子系统的接地是一个非常关键而又常常被忽视的问题,接地处理不当经常会导致不能稳定工作甚至危及系统安全。对于 RS-485 网络来讲也是一样,没有一个合理的接地系统可能会使系统的可靠性大打折扣,尤其是在工作环境比较恶劣的情况下,对于接地的要求更为严格。如果 RS-485 通信链路不接信号地,而只是简单地用一对双绞线将各个接口的A、B端连接起来。这种处理方法在某些情况下也可以工作,但给系统埋下了隐患,主要是共模干扰问题,虽然 RS-485 接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但是,收发器只有在共模电压不超出一定范围(-7V 至+12V)的条件下才能正常工作。当共模电压超出此范围就会影响通信的可靠,甚至损坏接口。 4. 瞬态保护 前面提到的接地措施只对低频率的共模干扰有保护作用,对于频率很高的瞬态干扰就无能为力了。因为引线电感的作用,对于高频瞬态干扰来讲,接地线实际等同于开路。这样的瞬态干扰可能会有成百上千伏的电压,但持续时间很短。在切换大功率感性负载(电机、变压器、继电器等)、闪电等过程中都会产生幅度很高的瞬态干扰,如果不加以适当防护就会损坏接口。对于这种瞬态干扰可以采用旁路的方法加以防护。这种方案利用瞬态抑制元件(如 TVS、MOV、气体放电管等)将危害性的瞬态能量旁路到大地,优点是成本较低,缺点是保护能力有限,只能保护一定能量以内的瞬态干扰,持续时间不能很长。第四章 现场温度控制软件的设计 单片机开发常用语言是汇编和 C 语言两种。汇编语言是一种文字用助记符来表示机器指令的符号语言,是最接近机器码的一种语言。主要优点是占用资源少、程序执行效率高;但是汇编语言的可读性差,修改困难等缺点。而 C 语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C 语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C 语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C 语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。使用 C 语言进行程序设计已成为软件开发的一个主流。用 C 语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充。 4.1 现场温度控制仪表的单片机软件的总体框图 现场温度控制仪表单片机软件总共分为系统初始化、温度测量、人机交互、串口通信和温度控制五个部分;单片机软件的总体结构框图如图 4-1 所示: 4.2 单片机系统的初始化程序 单片机复位(无论是硬件复位还是软件复位)之后,系统首先进行初始化工作,对系统的控制标志位设置系统默认值,启动其它外部模块,对特殊功能寄存器进行设置,对 RAM 进行分配。现场温度控制仪表使用 51 系列单片机,该系列单片机带有两个外部中断源,三个定时/计数器以及一个通信串口,其中定时/计数器 0 用于计时, 定时/计数器 2 用作串行通信的波特率发生器使用,通信串口通过 485 转换芯片与上位机通信。 4.2.1 单片机内部资源的初始化241、定时/计数器 0 的初始化 定时/计数器 0 工作方式控制寄存器 TMOD 字节地址为 89H,TMOD 的格式如下:工作方式选择位 : 00:方式 0,为 13 位的定时/计数器; 01:方式 1,为 16 位的定时/计数器; 10:方式 2,为常数自动重新装入的 8 位定时/计数器; 11:仅适用于 T0,分为二个 8 位计数器,对 T1 停止计数。 定时器和计数方式选择位C / T :当 C / T = 1 时为计数方式;当 C / T = 0 为定时器方式。 门控制位 GATE:当 GATE 为 1 时,定时器/计数器的计数受外部引脚输入电平控制(INT0 控制 T0 运行,INT1控制 T1 运行);GATE 为 0 时,定时器/计数器的运行不受外部引脚控制,只需 TRx 置位为 1 即可选 通定时/计数器 x。本系统中,TMOD 设置为 0x01,定时/计数器 0 为 16 位计时器。定时器 0 的启/停可通过软件置 位/复位寄存器 TCON 中的 TR0 位来控制。2、定时/计数器 2 的初始化定时/计数器 2 控制存寄存器 T2CON 的字节地址为 C8H,T2CON 的格式如下:TF2EXF2RCLKTCLKEXEN2TR2C / T2CP / RL2RCLK:接收时钟标志位。当 RCLK=1 时,串行通讯端使用定时/计数器 2 的溢出信号作为串行 通讯方式 1 和方式 3 的接收时钟;当 RCLK=0 时,使用定时/计数器 1 的溢出信号作为接收时钟。 TCLK:发送时钟标志位。当 TCLK=1 时,串行通讯端使用定时/计数器 2 的溢出信号作为串行 通讯方式 1 和方式 3 的发送时钟;当 TCLK=0 时,使用定时/计数器 1 的溢出信号作为发送时钟。 TR2:定时/计数器 2 启/停控制位。当设置 TR2=1,则启动定时/计数器 2 运行;当设置 TR2=0,则停止运行。C / T2 :定时/计数器 2 的定时或计数模式选择位。当设置 C / T2 =1 时,选择对外部事件计数模式;当 C / T2 =0 时,则选择内部定时模式。 定时/计数器 2 的工作方式的设置见表 4-1表 4-1 定时/计数器 2 的工作方式的设置RCLK+TCLKCP / RL2TR2工作方式00116 位自动再装入01116 位捕获01波特率发生器0关闭定时/计数器 2 是用作串行通讯的波特率发生器,所以在本系统中 T2CON 设置为 0x34。3、中断的初始化MCS51 的中断是可编程的,即可以通过软件实现对中断系统功能的设置与控制。MCS51 的中断设 有两级优先级。每一个中断源均可通过软件对中断优先级寄存器中的相应位进行设置。置 1 为高优 先级,清零为低优先级。正在执行的低优先级中断服务程序可被高优先级的中断源所中断,但不能 被同级或低优先级的中断源所中断;正在执行的高优先级的中断服务程序不能被任何中断源所中断。两个以上同时请求的中断,主机只响应高的中断请求。当同时有两个或两个以上优先级相同的中断 请求时,则由内部按查询优先顺序来确定该响应的中断请求,其优先顺序由高到低排列。优先顺序排列如表 4-2 所示。 表 4-2 单片机中断优先级顺序中断请求标志中断源优先顺序1IE0外部中断 0最高最低2TF0定时/计数器 0 溢出中断3IE1外部中断 14TF1定时/计数器 1 溢出中断5RI+TI串行通讯中断6TF2+EXF2定时/计数器 2 溢出中断MCS51 的中断属可屏蔽中断,通过软件对片内中断使能控制其 IE 的设置,实现对各中断源中 断请求的开放或屏蔽的控制。中断使能控制寄存器 IE 的字节地址为 A8H,其格式如下:IEEAET2ESET1EX1ET0EX0EA:允许/禁止全部中断。当 EA=0,则禁止所有中断响应;当 EA=1,则各中断源的响应与否 取决于各自的中断控制位的状态。ES:串行通讯接收/发送中断相应控制位。ES=0,禁止中断响应;ES=1,允许中断响应。 ET0:定时/计数器 0 的回 0 溢出中断响应控制位。ET0=0 禁止中断响应;ET0=1 允许中断响应。 MCS51 的中断响应分为两级控制,EA 为总的中断响应控制位,各中断源还有相应的中断响应控制位。在系统初始化中断时设置:EA=1;ET0=1;ES=1,即开启串口和定时/计数器 0 的中断。当然 在接着的应用程序中会根据实际的情况来重新设置中断的状态。4、RAM 地址的分配由 KEIL 软件自带的 STARTUP.A51 完成系统初始化程序指针、堆栈地址堆栈指针的分配以及与 C 语言 main()函数的接口。4.2.2 单片机外部资源初始化13 161、AD7710 的初始化AD7710 可以通过修改自带控制寄存器的内容(它能够控制滤波器的截止频率、输入增益、选 择信道、信号极性和校准模式),来控制 AD 的工作状态。而 AD 的工作状态直接受到外部输入信号、 系统要求精度等外部条件的影响,不同的系统设置不同的状态以满足设计需要。AD7710 的初始化 工作状态设定为:外部时钟计数模式、外部信号差分输入、滤波器频率设置为 50Hz,选择自校正模式,差分可编程放大器增益为 8,输入通道为 0,输出 24 位字长,单极性输入。2、液晶屏的初始化 在主循环程序的执行前,设置液晶屏显示使能位使能液晶显示。设置液晶显示屏的默认的页面内容。3、8253 的初始化8253 的通道 0 用于输出控制,工作于方式 5,控制字以及计数器 0 的初值的输入,根据输出控 制的要求在控制阶段输入,所以不需要进行初始化该通道。8253 的通道 1 工作于工作方式 3,实现 分频器的作用;这在整个程序中只要设置一次即可,以后就不需要再次改变了。8253 通道 1 的初始 化程序:CS = 0;/8253 使能COUNTCONADD =0x76;/计数器 1、先读写低位字节,后读写高位字节/工作方式 3、二进制计数COUNT1ADD = 0xd0;/设置计数器 1 的初值为 2000COUNT1ADD = 0x07;4.3 温度测量数据处理温度测量主要分为数据的数字滤波以及电阻的非线性化处理两个部分,即从前端 AD 芯片中读 入相应铂电阻相对应的电势,然后根据测得的数据转化为实际相对应的温度值。4.3.1 零漂和增益的自动校正原理271、零点自动校正首先把放大器的输入端短路即直接接地,放大器存在着零漂输出电压 U0s=G*U0,其中 G 为放 大器的闭环增益,U0 为折算到放大器输入端的等效零漂电压,通过 A/D 转换器输出数字量 N0 为N0 = KGU 0(4-1) 其中 K 为 A/D 转换器的转换系数。在进行自动调零时,应从 A/D 转换器的输出数字量 Nx 中减去N0,这一步骤称为零点自动校正。2、增益自动校准放大器的输入端信号接标准基准电压 E,放大器的输出电压为 U01=G*E,A/D 转换器的输出数 字量 N1 为N1 = K (U 01 + U os ) = KG(U 0 + E )(4-2)把 N1 - N0 的数值作为校准值,即作为 A/D 转换器无零点漂移的输出标准数字值,这一步称为增益自 动校准。当放大器的输入为实际的被测输入电压 Ex,其输出为 U02=G*Ex,A/D 转换器的输出数字量 Nx为N x = K (U02 + U os ) = KG(Ex + U 0 )同理,Nx - N0 的数值也应为 A/D 转换器输出的无零漂的被测电压的数字量。 由式(4-1)(4-2)(4-3),得出(4-3)( N x -N0 ) /( N1N0 ) = KG(Ex + U 0 ) - KGU 0 /KG(E + U0 ) - KGU 0 = Ex / EEx = ( N x - N0 )E /( N1 - N0 )(4-4)由式(4-4)表明,通过此式计算得出的数字量,即被测得电压已经消除了放大器零漂和消除了放大器增益误差所得到的真实值。但这部分的工作可由 AD7710 在内部完成,只需要修改 AD7710的控制寄存器设置相应的工作方式即可。4.3.2 测量数据的数字滤波11数字滤波器是将一组数字序列进行一定的运算而转换成另一组输出数字序列的装置。测量信号 的数字滤波器处理流程如图 4-2 所示:设数字滤波器的输入为 X(n),输出为 Y(n),则输入序列和输出序列之间的关系可用差分方 程式表示为:N NY (n) = aK X (n - K ) - bK Y (n - K )(4-5)K =0K=1式 4-5 中,输入信号 X(n)可以是模拟信号经采样和 A/D 变换后得到的数字序列,也可以是计算机的 输出信号。具有上述关系的数字滤波器的当前输出,与现在的和过去的输入、过去的输出有关。由 这样的差分方程式组成的滤波器,称为递归型数字滤波器。如果将上述差分方程式中的 bk 取 0 可得:NY (n) = aK X (n - K ) K =0说明输出只和现在的输入和过去的输入有关。这种类型的滤波器成为非递归型数字滤波器。参数 ak,bk 的选择不同,可以实现低通、高通、带通、带阻等不同的数字滤波器。通常,在单 片机上用软件可以实现各种滤波。常用的滤波有:1、 程序判断滤波法可根据经验判断确定两次采样允许的最大偏差 Y ,若先后两次采样值的差值大于 Y ,则表明 输入信号是干扰信号,应该去掉,而且上次采样值作为本次采样值;若小于 Y ,则本次采样值有 效。2、 中位值滤波法中位值滤波法就是对某一被测参数连续采样 N 次(一般 N 取奇数),然后把 N 次采样值按大小 排列,取中间值为本次采样值。中位值滤波能有效地克服因偶然因素引起的波动干扰。对温度、液 位等变化缓慢的被测参数采用此法能收到良好的滤波效果。对于流量、速度等快速变化的参数一般 不宜采用中位值滤波法。3、 算术平均滤波法算术平均滤波法就是连续取 N 个值进行采样,然后算术平均。这种方法适用于对一般具有随机干扰的信号进行滤波。这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。这种滤波法当 N 值较大时,信号平滑度高,但是灵敏度低;当 N 值较小时,平滑度低,但灵敏度高。应视具体情况选取 N,以使既节约时间,又滤波效果好。4、 递推平均滤波法算术平均滤波法每计算一次数据需要测量 N 次。对于测量速度较慢或要求数据计算速度较快的 实时控制系统,上述方法是无法使用的。递推平均滤波法是只需测量一次,就能得到当前算术平均值的方法。递推平均滤波法是把 N 个测量数据看成一个队列,队列的长度为 N,每进行一次新的测量,就 把测量结果放入队尾,而扔掉原来队首的一个数据,这样在队列中始终有 N 个“最新”数据。计算 滤波值时,只要把队列中的 N 个数据进行平均,就可以得到新的滤波值。这种滤波算法称为递推平均滤波法。递推平均滤波法对周期性的干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉 冲干扰的抑制作用差,不易消除由于脉冲干扰引起的采样值的偏差。因此不适用于脉冲干扰比较严重的场合。5、 防脉冲干扰平均滤波法在脉冲干扰比较严重的场合,如果采用一般平均值法,则干扰将会平均到结果中去,故平均值法不易消除由于脉冲干扰而引起的误差。为此,可先去掉 N 个数据中的最大值和最小值,然 后计算 N-2 个数据的算术平均值。可以很好的去除脉冲干扰。6、 一阶滞后滤波法在模拟量输入通道中,常用一阶滞后 RC 模拟滤波器来抑制干扰。当用这种方法来实现对低频 干扰滤波时,首先遇到的问题是要求滤波器有大的时间常数和高精度的 RC 网络。时间常数 Tf 越大, 要求 R、C 值越大,其漏电流也必然加大,从而使 RC 网络的精度降低了。采用一阶滞后的数字滤 波程序,能很好的克服上述这种模拟量滤波器的缺点。一阶滞后滤波算法为:Yn = (1 - a )Yn + a Y n -1 (4-7)式 4-7 中:Y n 未经滤波的第 n 次采样值;Tf 滤波时间常数T 采样周期a =TfT + Tf值由实验确定,只要使被检测信号不产生明显纹波即可。当 TTf 时,也即输入信号的频率很高而 Tf 较大时,上述算法便等价于一般的模拟滤波器。 一阶滞后滤波算法对周期性干扰具有良好的抑制作用,适用于波动频率较高参数的滤波。其不 足之处是带来了相位滞后,灵敏度低。滞后的程度取决于值的大小。同时它不能滤除频率高于采样频率二分之一的干扰信号。在程序设计中采用了防脉冲干扰平均值滤波法,取 N 为 5。防脉冲干扰平均值滤波的程序为:for (i=0;i readadmax)max = i;if(readadi readadmin)min = i;return (readad0 + readad1 + readad2 + readad3 + readad4 - readadmax - readadmin) / 3);/滤 波函数程序返回值。4.3.3 热电阻线性化11在工业生产和自动控制系统中,有时要求系统的输出与输入之间有严格的线性关系。但在工程 实践中,检测系统必然存在一定的线性误差。这些误差一方面来自传感器本身;除此之外,还有信 号放大器、A/D 转换器等的非线性。在诸多因素中,传感器的非线性误差所占比重最大。这种误差 与电气干扰有所不同,与元器件本身的制造工艺特性有关。为了提高系统的精度,确保系统的线性 输出,必须对传感器进行线性化处理。对于传感器的非线性补偿,分为硬件方法和软件方法。在实时控制系统中,如果处理的问题有 很强的实时性,这时采用硬件处理较为合适。如果时间足够,则应尽量采用软件的方法,从而简化硬件电路。一、 传感器线性化硬件校正方法解决非线性的硬件方法最常用的为开环式补偿法和闭环式反馈法。图 4-3 中 x 为被测物理量,经传感器变换为电信号 u1,u1 与 x 之间的关系为非线性。u1 经放大 后得到较高的电压 u2。放大器一般为线性环节,故 x 与 u2 间的关系仍为非线性。引入线性化器件的目的是利用器件本身的非线性来补偿传感器特性的非线性。闭环式反馈补偿原理图如图 4-4 所示。引入非线性反馈环节的目的是利用反馈环节的非线性来 补偿传感器的非线性。二、传感器线性化软件处理 为了提高检测的准确度和精度,减少硬件电路的消耗,在实际的应用中常用软件编程的方法来解决非线性补偿问题。常用的软件方法有三种,即计算法、查表法和差值法。 1、 计算法 当传感器的输入量和输出量有确定的数学表达式时,就可以采用计算法进行非线性补偿。计算法就是用软件编制一段完成数学表达式的计算程序。但程序编制麻烦,CPU 花费时间多,实际使用中常把计算法和查表法结合起来,形成插值法。 2、 查表法 如果传感器的输出和输入关系的非线性十分严重,编制程序十分麻烦,此时可用查表法。实际测定和校准时,只能给出有限个分散的输出/输入相关数据。在某一测量范围内,表中的数据越多,则越容易达到线性的要求。在实际应用中,只要非线性误差在允许要求下,应尽量减少点数。当测得某一温度的数字量时,通过程序与内存中的表格数据相比较,若与其中一数据相等时,则找到对应的温度值。但在实际测量时,输入值并不一定正好与表格数据相等,介乎某两个表格数据之间,这时可以通过插值法计算求得对应的温度值。 3、 插值法 当传感器的输入与输出特性是非线性时,可以用单调非线性函数 u=f(x)表示,如图 4-5 所示。将图中的 x 值分成几个小段区间,每个区间的端点 xk都对应一个输出 uk,把这些 xk、uk编成表格存储起来。实际的测量值 xi一定会落在某个区间(xk,xk+1)内,即 xkxixk+1。插值法就是用一段简单的曲线(常用直线或抛物线)近似代替这段区间的实际曲线,然后用近似曲线公式计算出 u(x)。在程序设计时使用的是常用的插值法分段折线拟合法。 分段折线拟合法的基本思想是通过顺序连接函数 u(x)=f(x)曲线上的 n-1 个插值点而形成的 n 段直线来代替该曲线。这种方法也叫线性插值法。 线性插值程序如下:high = 999;/0-500共存储了 1000 个点while (low=high)&(!find)/在表中查找mid = (low+high)/2; if (omtempommid)low = mid+1;else i = mid;find = 1;if (find)return mid*10000;/在表中找到即返回elsereturn(om-tempomhigh)*10000/(tempomlow-tempomhigh)+(unsigned long)high*10000;/介乎两个表格数据之间,则作线性插值后返回。实际测温精度见表 4-4 所示(测温铂电阻由标准电阻箱代替)。测温精度满足系统要求的测量精度。表 4-4 实际测温输出测试电阻阻值理论温度值实际测量显示温度值误差100.000.0000.0000.000105.0012.82112.8230.002110.0025.68225.681-0.001115.0038.60538.6070.002120.0057.57457.572-0.0024.4 温度控制程序温度控制采用 PID 控制技术即按偏差的比例、积分和微分进行控制。这是控制理论中技术最成熟,应用最广泛的一种控制技术。它结构简单,参数调整方便,是在长期的工程实践中总结出来的 一套控制方法。在实际控制时,由于难以建立精确的数学模型,系统的参数经常发生变化,可以采用 PID 控制技术,根据经验进行在线调整,最终得到满意的结果。PID 控制回路如图 4-6 所示。图中 y(t)是被控变量,R 是 y(t)的设定值, e(t ) = R - y(t ) 。e(t)是调节器的输入偏差, Pout (t) 是调节器输出的控制量。实际温度控制的 PID 算式为Pout (t ) = K p * e(t ) + Ki * e(t ) + Kd * (e(t ) - e(t - 1) (4-8)式(4-8)中 K p 是比例调节参数;Ki 是积分调节参数;Kd 是微分调节参数;这三个基本参数 K p 、 Ki 、 Kd 在实际控制中的作用:1、 比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用 用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下 降,甚至造成系统的不稳定2、 积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无 差,积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分时间常数 Ti(Ki=1/Ti),Ti 越小,积分作用越强,反之 Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。3、微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势, 因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改 善系统的动态性能。在微分时间选择合适的情况下,可以减小超调,减少调节时间。微分作用 对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变 化率,而当输入没有变化时,微分作用输出为零。 在实际计算时应该注意的是有些参数如积分项的累加熟过大时会起反作用,使调节失灵,或者引起大幅震荡,为此在程序中引入一个数值最大界限,当结果超出约定界限时,则不再增加(或减 少)。对于调压法控制输出,由于正弦波相对于延时导通的相位角输出的电压有效值是非线性的,而 且三角函数计算也很费时,所以,在这里的处理方法也是采用查表加线性差值来获得移相的数据。4.5 人机交互4.5.1 按键程序设计由于按键没有硬件防抖动,所以这一功能就需要由软件来实现,延时 10 毫秒后看按键是否保持。按键去抖动以及按键判断的程序如下:if (FUN = 0)delaylong(20000);/延时去抖动if (FUN = 0)fun = 1;/FUN 按键按下,置位 fun return 1;/有键按下,要求处理菜单if (IN = 0)delaylong(20000); /延时去抖动if (IN = 0)in = 1; /IN 按键按下,置位 inreturn 1; /有键按下,要求处理菜单if (JIAN = 0)delaylong(20000); /延时去抖动if (JIAN = 0)jian = 1; /JIAN 按键按下,置位 jian return 1; /有键按下,要求处理菜单if (JIA = 0)delaylong(20000); /延时去抖动if (JIA = 0)jia = 1; /JIA 按键按下,置位 jia return 1; /有键按下,要求处理菜单return 0;/没有按键操作 由上面的程序段可以看出按键是有优先级的,当有多个按键同时给按下,程序只响应优先级最高的一个按键,其它按键则不作出按键响应,也不会作相应的按键处理。按键的优先级顺序由高到 低为:FUN、IN、JIAN、JIA。4.5.2 液晶屏界面程序设计14HXMG128064 显示模块内置有液晶控制芯片。该芯片具有 8 位并行数据总线和一组控制总线。 通过这些总线,可以很方便地与多种微控制器进行指令或数据的传递,可以直接和单片机相连。单 片机通过总线读写数据和命令。液晶模块控制芯片的指令:1、 显示开/关指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code000011111D当 D 为 1 时,液晶显示 RAM 中的内容;D 为 0 时,关闭显示。2、 显示起始行(RAM)设置指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code0011该指令设置了对应的液晶屏上的显示RAM的行号AAAAAA(二进制),有规律的改变起始行,可以使液晶屏实现显示垂直滚屏的效果。、页(RAM)设置指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code001该指令设置了对应的液晶屏上的显示RAM的地址AAA(二进制),一共页,每页 行。、列地址设置指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code00设置了页地址和列地址,就唯一确定了显示RAM 中的一个单元,这样单片机就可以用读写指令读出该单元中的内容或向该单元写进一个字节数据。、读状态指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code0BUSY0ON/OFFRESET0000该指令用来查询列启动控制器的状态,各参量含义如下:BUSY:1-“忙”状态,禁止操作, 0-正常状态ON/OFF: 1- 显示关闭 0-显示打开RESET: 1- 复位状态 0 正常状态在 BUSY 和 RESET 状态时,除读状态指令外,其它指令均不产生作用。在对列控制驱动器 操作之前要查询 BUSY 状态,以确定是否可以进行操作。、写数据指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code该操作将位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。、读数据指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0Code该操作将列控制驱动器的输出寄存器的内容读出,列地址计数器自动加一。必须注意的是,进 行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。液晶显示程序流程图如图4-7所示。根绝页面的实际应用情况,液晶屏的刷新分为三种刷新方式:整页刷新、整行刷新、单字刷新; 分别设置整页刷新位、整行刷新位、单字刷新位。如进入菜单的选项,整页内容都需要改变,可以 通过设置整页刷新位来指示刷新方式;温度动态显示通过设置整行刷新位来指示刷新方式;而修改参数时,每次仅能修改单独一位数字,所以可以通过设置单字刷新位来指示刷新方式。通过这三种 刷新方式的共同使用,可以合理的安排CPU在显示器处理上消耗的时间。液晶屏刷新程序流程图如图4-8所示:虽然这里分别给出了按键和液晶的程序,但是在人机交互的程序中按键和液晶屏显示程序不是相互分离的,它们两者的状态是相互影响的。按键在不同的显示页面下实现的操作是不同的,同样 液晶屏的显示页面也受到按键的影响。4.6 串口通信2451 单片机内部集成有一个功能很强的全双工串行通讯口,设有两个互相独立的接收、发送缓冲器,可以同时发送和接收数据。两个缓冲器共用一个地址(99H)。串行通讯设有 4 种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用。波特率由内部定时/计数器产生,用软件设置不同的波特率和选择不同的工作方式。主机可以通过查询或中断方式对接收/发送进行程序处理。通过软件设置串行控制寄存器 SCON 来选择串行通讯的工作方式和其他控制功能。其格式如下:SM0SM1SM2RENTB8RB8TIRI其中 SM0,SM1 按下列组合确定串行通讯的工作方式:表 4-5 串行通讯的工作方式SM0SM1工作方式功能说明波特率00方式 0移位寄存器方式1/12Fosc01方式 18 位 UART 方式可变10方式 28 位 UART 方式1/64 或 1/32Fosc11方式 38 位 UART 方式可变程序设计选用工作方式 1,可变波特率由定时器 2 产生。此时的串行通讯波特率的计算公式为:波特率= =fosc 2 232216 -(RCAP H RCAP L)式 4-9 中(RCAP2HRCAP2L)的内容为 16 位无符号整数,即 16 位计数常数。 串口初始化程序为:void init_serial()SCON = 0x70;/工作方式 1 8 位 UART 方式 T2CON = 0x34;/可变波特率由定时器 2 产生 RCAP2L = 0xb2;RCAP2H = 0xff;CONTROL = 0;/处于接受中断状态下等待上位机发送的地址信息ES = 1;下位机与 PC 机通信程序的流程图见图 4-9 所示:下位机处于从机的位置,检查发送错误以及要求重发都是由上位机程序来完成的。下位机只是判断上位机是否要求本机响应,只要受到上位机的机号的要求,则下位机给出相应的响应即可。但是要注意的是,在一个网络中的不能有两台或两台以上的相同机号,否则,一个上位机的请求会引起多个应答,这就会使总线上的信号发生错误,不能正常的进行网络通信。第五章 上位机 PC 软件的设计 上位机软件主要实现的功能有下位机数据的采集、数据的记录、用户界面、历史记录浏览以及打印这几个功能。 5.1 上位机软件的总体设计29整个 PC 机软件的框架图如图 5-1 所示:图 5-1 PC 机软件的框架图 上位机软件中有多个任务同时运行,为了不让一个任务执行的时候,阻塞别的任务,在设计中 充分利用了 Windows 系统允许多进程、多线程的编程的特点,将系统分成几个模块。首先,将历史 记录浏览和实时数据采集过程分开,因为这两个过程有很大的差别。历史记录浏览中的数据是静态 的,对实时性没有任何要求,而且在下位机运行时或下位机停止运行之后都可以,在设计这部分程 序时,可以不用考虑时间的问题。而实时数据采集却是一个实时性要求很高的任务,在设计这个进 程时把它分成两个线程:主线程和通信线程。主线程定时启动通信线程,通信线程执行完一次通信任务后自动结束。但是要注意的是主线程 两次启动通信线程之间的时间要保证一次通信线程的的完整执行。在设计线程时,数据缓冲区和通 信接口都是临界区,在程序设计时都必须考虑它们被访问的唯一性。主线程中显示的数据都是从数 据缓冲区中读取的实时数据,而通信线程则会从接口将实时数据写入到数据缓冲区,因此对于数据缓冲区来说,就必须保证读写的完整性,在读、写进入时都必须将缓冲区锁上,完成后再解开允许 其他线程访问。同样,对于通信接口,由于控制信息的发送和下位机信息的读取都要访问通信接口, 因此对于通信接口也必须采用加锁的方法。每次访问通信接口时都必须等待锁的释放,以表示通信 接口是空闲的,然后再进行访问并在访问期间上锁,访问完成后再释放。在数据存储方面,为了提高系统的动态性能,要求能快速访问数据存储区,程序主要将数据存 放在两个地方。正在进行的实时数据首先存放在内存开辟的数据缓冲区内,这样主线程就能很快地 访问到实时的数据。另外,将数据定时的保存到 PC 机的硬盘上,这样能防止因停电等意外事故造 成的数据的损失。5.2 串口通信程序30 31Windows 环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将 Windows 应用 程序同不同的外部设备隔离。Windows 封装了 Windows 的通信机制,这种方式称为通信 API,Windows 程序员可以利用 Windows 通信 API 进行编程,不用对硬件直接进行操作。下面介绍一下 Windows 串口通信相关的 API 函数的功能及参数设置5.2.1 打开串口在 32 位的 Windows 系统中,串口和其它通信设备是作为文件处理的。串口的打开、关闭、读 取和写入所用的函数与操作文件的函数完全一致。所有的打开或创建都是由 API 函数 CreateFile 来 完成,该函数的声明为:HANDLE CreateFile ( LPCTSTR lpFileName, DWORD fdwAccess, DWORD fdwShareMode,LPSECURITY_ATTRIBUTES lpsa,DWORD fdwCreate, DOWED fdwAttrsAndFlags, HANDLE hTemplateFile,);CreateFile 函数中的各参数含义以及设置为:zlpFileName:指定要打开的串口逻辑名,用字符串表示,如“COM1”和“COM2”分别表示串口 1 和串口 2。zfdwAccess:用来指定串口访问的类型。与文件一样,串口也是可以被打开以供读取、写入或两 者兼有。zfdwShareMode:指定端口的共享属性。对于不能共享的串口,必须设置为 0。zlpsa:引用安全属性结构。一般设置为 NULL 为该端口分配缺省的安全性属性。zfdwCreate:指定如果 CreateFile 正在被已有文件调用时应采取的动作。因为串口总是存在的, fdwCreate 必须设置成 OPEN_EXISTING。该标志告诉 Windows 不要企图创建新端口,而是打开已经存在的端口。zfdwAttrsAndFlags:描述端口的各种属性。对于文件来说,有可能具有很多属性,但对于串口, 唯一有意义的设置是 FILE_FLAG_OVERLAPPED。当创建时指定该设置端口 I/O 可以在后台进行。zhTemplateFile: 指向模版文件的句柄,当端口处于打开状态时,不使用该参数,因而必须设置为 0。一旦端口处于打开状态,就可以分配一个发送缓冲区和接收缓冲区,并且通过调用 SetupComm 实现其他初始化工作。也可以不调用 SetupComm 函数,Windows 系统也会分配缺省的发送和接收 缓冲区,并且初始化端口。5.2.2 关闭串口关闭串口只需要调用 CloseHandle 函数关闭由 CreateHandle 函数返回的句柄即可。CloseHandle 函数声明如下:BOOL CloseHandle(HANDLE hObject/需要关闭的设备句柄);使用串口是一般要关闭它,如果忘记关闭串口,串口就会始终处于打开状态,其它应用程序就 不能打开并使用这个串口了。5.2.3 串口配置当程序需要修改串口配置是,可以通过 GetCommState 函数获得当前的 DCB 结构,然后更改 DCB 结构中的参数,调用 SetCommState 函数配置修改过的 DCB 来配置端口。SetCommState 函数 声明如下:BOOL SetCommState(HANDLE hFile,/已打开的串口的句柄LPDCB lpDCB /指向 DCB 结构的指针);SetCommState 函数的第一个参数 hFile 是由 CreateFile 函数返回的已打开的串口的句柄。第二个 参数 lpDCB 是指向一个非常重要的结构设备控制块结构 DCB(Device Control Block)。DCB 结 构的主要参数说明如下:zDCBLength:一字节为单位指定的 DCB 结构的大小。zBaudrate:用于指定串口设备通信的数据传输速率,它可以是实际的数据传输速率的数值,也 可以是下列数据之一:CBR_110, CBR_19200, CBR_300, CBR_38400, CBR_600, CBR_56000, CBR_1200, CBR_57600, CBR_2400, CBR_115200, CBR_4800, CBR_128000, CBR_9600, CBR_256000, CBR_14400。zfBinary:指定是否允许二进制。Win32API 不支持非二进制传输,因此这个参数必须设置为TRUE,如果设置为 FALSE 则不能正常工作。zfParity:指定是否允许奇偶校验,如果这个参数设置为 TRUE,则执行奇偶校验并报告错误信息。zByteSize:指定端口当前使用的数据位数。zParity:指定端口当前使用的奇偶校验方法。它可能值如表 5-1 所示。zStopBits:指定串口当前使用的停止位数,可能值如表 5-2 示。 表 5-1 奇偶校验方法值功能描述EVENPARITY偶校验MARKPARITY标号校验NOPARITY无校验ODDPARITY奇校验SPACEPARITY空格校验表5-2 停止位数描述值功能描述ONESTOPBIT1 位停止位ONE5STOPBITS1.5 位停止位TWOSTOPBITS2 位停止位如果函数 SetCommState 调用成功,则返回值不为零;如果函数调用失败,则返回值为零。当函 数调用出错时,可以调用 GetLastError 函数获得进一步的出错信息。DCB 最经常改变的参数是数据传输速率、奇偶校验的方法以及数据位和停止位数。Windows为改变这些设置专门又提供了 BuildCommDCB 函数,函数声明如下:BOOLBuildCommDCB(LPCTSTR lpDef,/设置的字符串LPDCB lpDCB/指向 DCB 结构的指针);BuildCommDCB 参数包含新设置的字符串和一个 DCB 结构的参数,该设置将提供给 DCB 结构。 新设置的字符串与 Windows 系统中的 Mode 命令格式相同。实际程序设计为:Baud =4800 parity =N data = 8 stop =1。这条语句将数据传输速率设置为 4800bits/s,关闭奇偶校验,数据位数设为 8,停 止位数设为 1。设置只是简单的拷贝到已经提供好的 DCB 结构中,要使新设置生效,还必须调用SetCommState 函数。5.2.4 读写串口利用 Win32 通信 API 读写串口时,即可以同步执行,也可以重叠(异步)执行。在同步执行时, 函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率降低。在重叠执 行时,即使操作还未完成,调用的函数也会立即返回。费时的 I/O 操作在后台进行,这样线程就可 以做其他工作了。1、 读串口操作程序可以使用 ReadFile 函数或 ReadFileEx 函数从串口中读取数据。ReadFile 函数对同步或异步 操作都支持,而 ReadFileEx 只支持异步操作。ReadFile 函数声明如下:BOOL ReadFile(HANDLE hFile,/指向标识的句柄LPVOID lpBuffer,/指向一个缓冲区DWORD nNumberOfBytesToRead,/读取得字节数LPDWORD lpNumberOfBytesRead,/指向调用该函数读出的字节数LPOVERLAPPED lpOverlapped/一个 OVERLAPPED 结构);其中主要参数介绍如下:zhFile :指向标识的句柄。对串口来说,就是有 CreateFile 函数返回的句柄,该句柄拥有GENERIC_READ 的权限。zlpBuffer:指向一个缓冲区,该缓冲区主要用来存放从串口设备中读取的数据。znNumberOfBytesToRead:指定要从串口设备读取的字节数。zlpNumberOfBytesRead:指向调用该函数读出的字节数。zlpOverlapped:一个 OVERLAPPED 结构。该函数如果因为超时而返回,那么返回值为 TRUE。参数 lpOverlapped 在异步操作是应该指向 一个 OVERLAPPED 结构,如果该参数为 NULL,那么函数将进行同步操作,而不管句柄是否是由FILE_FLAG_OVERLAPPED 标志建立。当 ReadFile 返回 FALSE 时,不一定就是操作失败,线程应 该调用 GetLastError 函数分析返回结果。2、 写串口操作程序可以使用 WriteFile 函数或 WriteFileEx 函数从串口中读取数据。WriteFile 函数对同步或异步 操作都支持,而 WriteFileEx 只支持异步操作。WriteFile 函数声明如下:BOOL WriteFile(HANDLE hFile,/指向标识的句柄LPVOID lpBuffer,/指向一个缓冲区DWORD nNumberOfBytesToWrite,/指定要想串口设备写入的字节数 LPDWORD lpNumberOfBytesWritten,/指向调用该函数写入的字节数 LPOVERLAPPED lpOverlapped/一个 OVERLAPPED 结构);其中主要参数介绍如下:zhFile :指向标识的句柄。对串口来说,就是有 CreateFile 函数返回的句柄,该句柄拥有GENERIC_WRITE 的权限。zlpBuffer:指向一个缓冲区,该缓冲区主要用来存放待写入串口设备的数据。znNumberOfBytesToWrite:指定要向串口设备写入的字节数。zlpNumberOfBytesWritten:指向调用该函数已写入的字节数。 如果函数调用成功,则返回值不为零,若调用函数失败,则返回值为零。可调用 GetLastError函数来获取进一步的出错信息。5.2.5 串口通信程序的具体实现上位机程序的操作主界面见图 5-2 所示。用户通过上位机读取温度的主要操作步骤是:选择串 口操作设置端口进入通信端口属性设置对话框(见图 5-3)建立连接读取温度断开连接退出。首先进入通信端口属性设置对话框修改端口号、波特率、数据位数、校验位、停止位这几 个参数,使上位机的串口参数与下位机的相同。此时实际上只是修改了 DCB 结构的参数并没有真 正的修改串口的通信参数。选择建立连接,此时这个线程才真正的独占串口并且使 DCB 参数在串 口生效。读取温度开始上位机与下位机的通信,上位机读取下位机的实时的数据并传送到主线程进 行实时显示和实时数据的保存(上位机与下位机通信的程序流程图见图 5-4)。如果不需要与下位机 通信则选择断开连接,该线程放弃对串口的独占,结束与下位机的通信。最后退出主程序。5.3 实时数据的存储31几乎所有的软件都需要将程序当中的信息保存在磁盘存储器上面。这些信息可能是程序运行的 初始化数据,或者是程序中得到的结果,还可能是程序经常用到的资料。从磁盘存储器上存取数据 的工作往往是通过文件操作或者数据库操作来完成的。在上位机的软件设计中,实时数据以文件的方式进行存储。对于文件的操作,MFC 提供了一个 直接的渠道。CFile 这个类封装了所有对文件的常用操作,使用 CFile 对象处理文件会比使用 API 函数来的简单的多。CFile 类用来处理正常文件的 I/O 操作,它直接提供无缓冲的、二进制磁盘输入/输出服务,并 且通过其派生类间接支持文本文件和内存文件。所有文件的打开、关闭、读和写操作都由 CFile 类 的构造函数实现,程序中只需要直接调用向对应的构造函数即可。下面简单介绍一下 CFile 类的构造函数:1文件打开和关闭CFile 类用构造函数 Open 来创建和打开文件,函数声明如下virtual BOOL Open ( LPCTSTR lpszFileName, UINT nOpenFlags,CFileException* pError = NULL);其中 LpszFileName 指定所想要文件的路径的字符串。路径可以是相对的或绝对的。nOpenFlags指共享和存取方式。 文件的打开和关闭是相对的,打开一个文件后,必须把它关闭,文件的关闭相对简单,只需要调用 CFile 构造函数 Close 即可。2.文件的读取和写入CFile 类对磁盘文件的定点读和写是通过函数 Read、Write、Seek 进行的。virtual UNIT Read (void* lpBuf,UNIT nCount); virtual void Write (const void* lpBuf,UNIT nCount); virtual LONG Read (LONG lOff,UNIT nFrom);函数 Read:返回传输给缓冲区的字节数。如果读到文件尾,返回值可能小于 nCount 值。LpBuf指向用户定义的缓冲区指针,用来接收数据。nCount 为要从文件中读出的最大字节数。函数 Write:写缓冲区的数据到文件中。函数 Seek:用于定位文件指针的位置,如果所请求的位置合法,则返回距离文件头的新字节偏移。如果请求的位置非法,返回值未定义并抛出一个异常。3.文件夹的创建和检测 当可能保存大量数据时,为了方便将来对数据的整理和查找。在设计的数据存储的程序中,不同时间的数据放入不同的文件夹中(按月份来建立文件夹),这就需要程序能自动的创建文件夹和判 断文件夹是否已经存在。为了方便文件查找,MFC 把有关功能归结成为一个类 CFileFind。这个类封装了很多文件操作相 关的 Win32 函数,提供了许多的函数来获取文件的状态或属性。检测文件夹是否存在只需要调用 CFileFind:FindFile(LPCTSTR pstrName)即可。其中 pstrName 为要查找的文件夹的路径名。当 该文件夹存在则返回一个非零值。若不存在则返回值为 0。如果文件夹不存在则需要重新建立文件夹。可以调用 SDK 函 数 CreateDirectory(lpPathName,NULL)可建立名为 lpPathName 文件夹。 实时数据存储程序流程图见图 5-5 所示:5.4 打印和打印预览31 32 33如果只是依赖于 Windows 的 API 的话,那么,打印将是比较困难的程序设计任务。但是 MFC库大大简化了打印的实现。并且还加入了打印预览的功能,此功能与其它的 Windows 应用程序的打 印预览功能完全一样。MFC 实现打印和打印预览是使用了 Windows 的 DC 来实现的,在程序的绘图操作和实际的设 备的驱动程序之间做了一道隔离,使得绘图操作完全不需要修改就可以输出到不同的设备之上(见图 5-6)。应用程序框架可以完成打印和打印预览的绝大部分工作。要有效使用打印的话,必须理解函数的调用的顺序以及知道哪个函数需要被重载。1、 打印机的设备环境和 CView:OnDraw 函数当程序在打印机上打印的时候,它使用了一个 CDC 类的设备环境对象。这个对象由应用程序框 架构造,并把它作为参数传递给视图的 OnDraw 函数。如果应用程序要将显示结果在打印机上打印 出来,OnDraw 函数便担负着双重的任务。如果正在显示,OnPaint 函数便调用 OnDraw,并且设备 环境是显示器环境。如果正在打印,OnDraw 由另一个 CView 虚函数 OnPrint 调用,用一个打印机 设备环境作为参数。2、 CView:OnPrint 函数从上面可以看到,基类的 OnPrint 函数调用 OnDraw,并且 OnDraw 既可以使用显示器设备环境, 也可以使用打印机设备环境。在调用 OnPrint 之前,将会设置映射模式。可以重载 OnPrint 来打印那 些未显示的项目,诸如标题、页码等。在重载的 OnPrint 函数中,可以选择不调用 OnDraw,来支持 打印逻辑,这样就使打印逻辑与显示逻辑分开了。3、 准备设备环境 CView:OnPrepareDC 函数如果需要显示器映射模式,而不是 MM_TEXT,该模式通常在 OnPrepareDC 函数中设置。如果 视图类是从 CView 派生的话,就需要自己来重载这个函数。在 OnPaint 中,在调用 OnDraw 之前, 要立即调用 OnPrepareDC 函数。如果要打印,在应用程序框架调用 OnPaint 之前,要立即调用同一个 OnPrepareDC 函数。 打印程序的编写实际上是改写以下几个打印重载函数,见表 5-3。表 5-3 打印循环中常用的可重载函数函数通常的重载行为OnPreparePrinting设置第一页和最后一页OnBeginPrinting创建 GDI 对象OnPrepareDC设置映射模式OnPrint进行打印专用输出,然后调用 OnDrawOnEndPrinting删除 GDI 对象第六章系统抗干扰技术及措施微机系统的可靠性是由多种因素决定的,其中系统抗干扰性能是可靠性的重要指标。抗干扰性 能的好坏将决定系统能否在复杂的工作环境下稳定可靠地工作,从而决定了系统的实际使用价值。 微机系统的干扰可以沿各种线路侵入微机系统,并以各种方式作用于微机系统。其中供电线路是电 网中各种浪涌电压入侵系统的主要途径,系统接地不良或不合理亦可引入干扰,各类传感器,输入 输出线路的绝缘不良,均能引入干扰。6.1 印刷电路的抗干扰设计 11印刷电路板是微机系统中元器件、信号线、电源线的高密度的集合体。印刷电路
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:DZ257高精度温度控制器
链接地址:https://www.renrendoc.com/paper/149921623.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!