第2章基于单片机的智能温度巡检仪设计2.1设计任务2.2总体设计2.3硬件系统及驱动程序设计2.4软件设计2.5结构设计2.6工程设计与组装调试2.1.1主要功能为了满足工业生产过程监控的要求,设计的智能温度巡检仪应当具有如下功能:能与常用温度传感器配合检测多路温度,本例是与温度传感器Pt100型铂热电阻配合,巡回检测8路温度;可选择定点显示方式,也可选择巡回显示方式;在全量程内,可设定超限报警值,当实测温度超过设定值时,发出报警信号且有常开接点输出;将检测的每路温度转变为与之线性对应的4~20mA电流输出;支持RS-485通信方式,方便组成局域监控网络,使实测温度、温度超限设定值等参数在网络中共享。2.1设计任务2.1.2技术指标测量范围:200℃~850℃。测量精度:优于0.5级。温度巡检周期:1s。巡回显示周期:以秒为单位,可选定。工作环境温度:0℃~50℃。相对湿度:小于85%。供电电源:220VAC,±10%,50Hz。结构形式:盘装式。外形尺寸:160mm(长)×80mm(宽)×160mm(深)。开孔尺寸:152mm×76mm。2.2总体设计首先要确定实现主要功能与技术指标的硬件、软件的总体设计方案。必须遵守以下三个设计理念。①智能温度巡检仪是以单片机为核心的嵌入式系统,有些功能既可以通过软件编程实现,也可以通过硬件配置实现,应当遵守“能软不硬”的理念,即凡是能够用软件方案实现的功能就不用硬件方案实现,其目的是降低制造成本。软件方案只需在软件开发设计中一次性投入,一旦开发成功,在制造过程中将降低材料成本和安装成本,同时能够提高整机的可靠性。任何电子元器件都有老化失效的问题,整机的可靠性与采用元器件的数量成反比,减少使用的元器件数量,就相当于提高了整机的可靠性。②设计过程应当兼顾技术指标与经济指标,技术指标再高的仪表设备,如果制造成本高、售价高,将不会有市场前景。③在设计过程中,选用的元器件与材料的市场供应渠道必须畅通。电子元器件、电子材料的发展日新月异,必须选用目前市场敞开供应的元器件与材料,否则将给日后的制造与维护带来很多麻烦。如果设计中选用了一些早已淘汰的元器件,将无法实现样机的研发。即便样机开发成功,以后生产制造中的材料采购也十分困难。1.硬件总体方案主机电路采用以8位单片机为核心的方案,片内要有足够多的硬件资源,尽量减少扩展外部功能芯片,减小整机的体积,降低整机造价。选择的8位单片机应具有如下资源。①足够的片内程序存储器,容量应不小于20KB。②足够的片内数据存储器,容量应不小于256B。③为了满足实时性要求、通信要求和A/D转换要求,定时器/计数器数量不应少于3个,容量应在16位以上。④中断源要求:中断源不应少于3个,中断级别不应少于2级。⑤有串行通信接口。⑥有足够多的通用I/O接口。前向通道设计:A/D转换器分辨率不应低于12位,为了降低造价,8路温度通道通过多路开关技术,公用一个放大器、一个A/D转换器。后向通道设计:采用一个D/A转换器,8路保持器,利用软件定时刷新的方法实现多路模拟量输出。显示部分:采用LED数码管,其亮度高,有效观测距离远,成本低按键部分:采用薄膜按键,手感好,寿命长。通信部分:采用RS-485传输技术,方便按照总线式网络拓扑组成局域测量网络,而且RS-485传输技术成熟,成本低。2.软件总体方案软件任务比较简单,不需要嵌入操作系统,主要包括监控程序、人机服务程序、数据采集处理程序、通信服务程序几部分。为了保证实时性要求,提高运行效率,采用ASM51汇编语言编制。3.外形结构方案按盘装仪表结构设计,其外形结构尺寸、安装尺寸、安装方式、接线方式与常规测试仪表保持一致,便于替代传统测试仪表。2.3硬件系统及驱动程序设计8路温度巡检仪的硬件由主机电路、前向通道、后向通道、人机接口电路、通信接口及供电电源几部分组成,如图2-1所示。其中,主机电路由CPU、数据存储器、程序存储器、EEPROM存储器、定时器/计数器、通用异步串行收发器、中断控制器、WDT定时器及通用并行接口等部件组成;前向通道电路由Pt100转换电路、滤波电路、多路模拟开关电路、放大电路、A/D转换电路组成;后向通道电路由D/A转换电路、多路模拟开关电路、V/I转换电路、继电器驱动电路组成;人机接口电路由按键和LED数码管组成;通信接口电路由RS-485接口电路组成;供电电源电路分别向系统数字电路提供逻辑5V电源,向模拟电路提供±12V与±5V模拟电源。2.3.1主机电路设计主机电路设计的核心是选择一款恰当的嵌入式处理器,其处理速度、内含的存储器容量、内含的功能部件尽可能满足系统要求,同时,市场售价满足整机硬件成本要求。系统对处理速度的要求:根据设计任务中关于温度巡检周期为1s,巡检8路的要求,处理器应当在1/8s,即125ms内完成1路温度的数据采集、标度变换、线性化处理、显示等各项任务。可选8位微处理器系统对程序存储器的要求:就设计任务中规定的功能及技术指标而言,软件任务的复杂程度一般,当采用汇编语言编程实现时,一般5000条指令可以完成全部编程任务。MCS-51而言,5000*2B=10KB.系统对数据存储器的要求:数据存储器主要作为计算缓冲区、堆栈区、实时数据存储区、中间数据存储区使用,对本设计任务而言,一般200~300B可以满足需要。系统对EEPROM存储器的要求:EEPROM存储器的使用性能是指,程序运行时可以向其中写入数据或擦除数据,当系统关机或掉电时,写入的数据能够可靠长久的保留。它主要用来存储使用者存储的数据,如巡回检测的路数(8路温度巡检仪在使用中可以根据需要设定巡检路数)、超限报警值、巡回显示周期.200~300B系统对定时器/计数器的要求:8路温度巡检仪属于实时性很强的嵌入式系统,实现实时性操作的硬件基础是定时器。对本设计任务来讲,需要1路定时器来产生时钟节拍,实现实时操作;需要1路定时器来作为串行通信的波特率产生器;需要1路定时器来实现A/D转换操作,因此至少需要3路定时器/计数器。系统对中断控制的要求:根据设计任务要求,软件任务主要有:通信服务、每路A/D转换完成时的数据采集与打开下一输入通道、温度计算、人机接口服务共4项任务。其中,通信服务、A/D转换服务的实时性很强,需要通过2个中断源,2级中断管理实现。系统时钟需要通过中断提供实时操作。因此,必须有不少于3个中断源、2级中断的中断控制机制,以便根据各项任务的实时性要求进行抢占式调度。系统对通用异步串行收发器(UART)的要求:为了支持RS-485通信,必须有1路UART。系统对硬件抗干扰的要求:迄今为止,看门狗定时器(WDT,WatchdogTimer)是微机系统唯一完全有效的硬件抗干扰措施,因此系统必须采用WDT。系统对通用并行接口(GPIO)的要求:为了实现主机电路与前向通道、后向通道、人机接口部分的硬件接口,主机电路应当具备20~30个GPIO。1.AT89C55WD单片机的片内资源及性能与MCS-51系列单片机指令系统兼容,引脚兼容。内部具有可重复编程的20KB的Flash型程序存储器,重复编程次数达1000次。工作电压范围:4~5.5V。时钟频率:静态到33MHz,当时钟频率选择33MHz时,以每条指令执行时间平均为2个机器周期进行计算,CPU处理速度达1.375MIPS,即每秒可执行137.5万条指令,处理速度非常快。256B数据存储器。32根可编程I/O口线。3个16位定时器/计数器。6个中断源,2级中断优先级。1个可编程的UART。具有闲置方式与掉电方式两种省电工作方式。1个WDT硬件定时器。2个数据指针。2.X5045性能简介由于选定的单片机AT89C55WD内部没有EEPROM存储器,而单片机上电时必须有自动复位电路,因此主机电路中除了单片机外,必须扩展EEPROM存储器和上电复位电路。美国XICOR公司生产的X5045集成芯片,集4项功能于一身,除了内部具有EEPROM存储器外,还有上电复位功能、WDT功能、电源电压监控功能。具体指标如下:①内部具有WDT电路,可以编程选择WDT超时周期。②具有低电压监测和强制复位功能。③具有上电复位控制功能。图2-2X5045的引脚布置④内含4Kbit的EEPROM存储器,可以编程选定进行分块保护,保证重要数据存储的可靠性⑤支持高达33MHz的时钟频率。⑥功耗低,工作电流小于50A,便于电池供电。(1)引脚描述图2-2X5045的引脚布置(2)指令集X5045的各种操作,包括写使能锁存器的置位与复位、读/写状态寄存器、读/写EEPROM,都是通过向X5045发出有关指令进行的。指令集如表2-1所示。表2-1X5045的指令集指令名指令格式操作WREN00000110设置写使能锁存器(允许写操作)WRDI00000100复位写使能锁存器(禁止写操作)RDSR00000101读状态寄存器WRSR00000001写状态寄存器(块锁定位)READ0000A8011从开始于所选地址的存储器阵列中读出数据WRITE0000A8010把数据写入开始于所选地址的存储器阵列(1~4B)(3)写使能锁存器X5045包含一个写使能锁存器。在内部完成写操作之前,此锁存器必须被设置(SET)。WREN指令可设置锁存器而WRDI指令将复位锁存器。在上电情况下,和字节、页或状态寄存器写周期完成之后,该锁存器自动复位。如果变为低电平,则锁存器也被复位。(4)状态寄存器RDSR指令提供对状态寄存器的访问。在任何时候都可以读状态寄存器,即使在写周期也如此,状态寄存器的格式如表2-2所示。表2-2状态寄存器的格式76543210XXWD1WD0BL1BL0WELWIP状态寄存器各位的意义说明如下WIP(Write_In_Process):该位表示“正在写”状态。当该位为“l”时,写操作正在进行;当该位为“0”时,没有写操作在进行。在写期间,所有其他位全置为“l”。WIP位是只读的。WEL(Write_Enable_Latch):该位表示“写使能锁存”状态。当该位为“1”时,锁存器置位;当该位为“0”时,锁存器复位。WEL位是只读的,它由WREN指令置位,由WRDI指令复位,或者在成功地完成了写周期后复位。BL0、BL1:块保护位,用于选择EEPROM被保护的范围。这两位由发出WRSR指令来设置,允许用户选择4种保护方式之一。被选择保护的部分只允许读,不允许写。EEPROM的保护范围如表2-3所示。WD0、WD1:这两位用于选择看门狗定时器(WatchdogTimer)的超时周期,选择范围如表2-4所示。通过发出WRSR指令来设置WD0、WD1。BL1BL0被保护的阵列地址00无01180H~1FFH10100H~1FFH11000H~1FFH表2-3EEPROM的保护范围表2-4WDT的超时周期选择范围WD1WD0超时周期001.4s01600ms10200ms11禁止3.主机电路硬件原理主机电路中主要包括AT89C55WD单片机和X5045芯片,就可以满足系统对硬件资源的需求,硬件电路原理如图2-3所示。4.驱动程序(1)WDT驱动程序X5045中WDT的驱动程序有两个,一个用于在单片机正常工作时访问WDT,使WDT不产生复位信号,注意,这个程序应当每隔一个确定的时间间隔运行一次,该时间间隔应当小于WDT超时周期;另一个驱动程序设定WDT的超时周期。访问WDT驱动程序:根据X5045的使用规则,只要其引脚发生从高电平到低电平的跳变,就实现对内部WDT定时器的复位,因此,根据图2-3所示,只要在连接X5045引脚的P1.4输出一个低电平脉冲即可,即做一次输出低再变高的操作。程序如下:CSBITP1.4RST_WDT:CLRCSSETBCSRET设定WDT超时周期的驱动程序:根据X5045的使用要求,通过设定X5045的状态寄存器实现超时周期的设置。本系统选定WDT的超时周期为600ms,X5045的状态寄存器中WD1、WD0两位分别设置为0、