基于MAX1452的压力传感器校准系统毕业设计.doc
-
资源ID:3938795
资源大小:611.50KB
全文页数:38页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
基于MAX1452的压力传感器校准系统毕业设计.doc
1 绪论1.1 课题背景及研究意义 随着科学技术的不断发展,非电量的测试与控制技术已经越来越广泛的应用。尤其在航天、航海、冶金、能源、生物医学、自动检测与计量等技术领域。而且随着社会的发展,这种技术也逐步渗透到人们的日常生活中。可以说测试技术与自动控制技术水平的高低是衡量科学技术现代化的重要标志之一1。传感器是实现测试与自动控制的首要环节。如果没有传感器对原始信息进行准确可靠的捕获和转换,计算机发展的水平再高,依旧无法进行测试和控制。任何一种传感器在制造、使用时都需要对其设计指标进行一系列实验,以确定传感器的基本性能。硅压阻式传感器是一种广泛应用于工业生产、国防建设和航天测量的基本部件。由于半导体材料组成的硅压阻式传感器普遍存在着:一致性、温漂和非线性等问题,在使用过程中都要进行补偿与非线性矫正。传统的矫正方法是采用温度敏感器件与模拟电路实现。近年来,随着计算机技术日新月异的发展,对于硅压阻式传感器的矫正与补偿都采用微型计算机系统实现,这样的方法具有补偿精度高、工作稳定、体积精巧和传输方便等特点。这种方法组成的传感器信号调理电路也把传感器输出电路与变送器形成一体,即为现今的智能传感变送器。这种智能传感变送器还可以构成网络化测量系统,甚至能很方便的接入Internet网络。据光电行业开发协会(OIDA)做出的最新预测,从2003年到2006年期间,智能传感器的国际市场销售量将以每年20的高速度增长2。对于传统传感器采用模拟方式对信号在模拟域进行处理,校准与补偿采用激光微调薄膜电阻、电位器等“模拟记忆”元件,温度补偿一般采用热敏电阻、二极管等温度敏感元件。所有这些方法存在以下主要缺点:1、 补偿精度受限于传感器的非线性误差和温度特性;2、 补偿器件同样受温度漂移困扰;3、 自动化调理设备价格昂贵;4、 人工调节不但精度不高,而且增加生产成本,不适合批量生产。本设计应用精密的信号调理器MAX1452的调理技术,设计开发了硅压阻式传感器的补偿与标定系统。1.2 国内外研究现状 传感器的动态校准一直是学术领域一个比较活跃的课题。近十几年来,它从原来主要应用于军事国防领域,逐渐向民用领域转变,使得在这方面研究的人越来越多3。对传感器的动态校准,国外相对而言研究的时间较长,涉及的领域也更宽一些。像美国、俄罗斯、德国、印度等,都取得了较高的水平。在国内,特别是近5、6年,一些研究院所和部分大学在该领域都进行了深入的研究,取得了比较令人满意的成果。我国从60年代开始对传感技术的研究与开发,国内在高精度智能化补偿与标定系统研究领域正处于方兴未艾阶段。诸如,南京航空航天大学、北京航空航天大学、西北工业大学、航空部304所、合肥智能机械研究所等都在这方面作了一些具体的研究。国外近年来,传感器的信号调理技术发展很快,向着集成化、小型化、智能化和数字化方向发展。典型产品有Motorola公司生产的MPX2100、MPX4100A、MPX5100和MPX5700系列单片集成硅压力传感器;美国Honeywell公司生产的ST3000系列、ST30009002000系列智能压力传感器;MAXIM公司生产的MAXl450信号调理器、MAXl452型高精度硅压阻式压力信号调理器芯片、MAXl458数字式压力信号调理器等。很多公司推出了在内部集成数模转换器(DAC)和模数转换器(ADC)的智能信号调理芯片,可以补偿失调、失调温度漂移、灵敏度、灵敏度温度漂移和非线性等多个参数。这些芯片为开发高性能的补偿与标定系统提供了基础和条件4。国内传感器技术的制造工艺技术和专用工艺设备的落后,使传感器的稳定性和可靠性问题长期得不到根本解决,限制了国产传感器的使用范围和可信程序。与国外传感器特别是高技术含量的传感器相比,国产传感器存在较大的差距。经过多年开发,虽然一批工艺和产品取得了科技成果,但是批量生产工艺和稳定性和实用性得不到很好解决。随着计算机、微电子技术的迅速发展和主泛应用,特别是在传感技术中的应用,促使传感技术产生了一个飞跃。智能传感器的出现,就是计算机、微电子等新技术与传感技术相结合的结果。随着近年来通信网络技术、嵌入式计算技术、微电子技术和传感器技术的飞速发展和日益成熟,使得制造大量体积小、功耗低,同时具有感知能力、计算能力和通信能力等多种功能的微型传感器成为了可能,这些传感器可以感知周围的环境,并对数据进行一定的处理,同时可以通过通信部件进行相互通信。智能化传感器网络就是由许多这种传感器节点协同组织起来的5。 传感器网络是当前国际上备受关注的、由多学科高度交叉的新兴前沿研究热点领域,是信息感知和采集的一场革命,被认为是21世纪最重要的技术之一,它将会对人类未来的生活方式产生深远影响6。2003年2月份的美国技术评论杂志评出对人类未来生活产生深远影响的十大新兴技术,智能化传感器网络被列为第一。美国商业周刊认为,智能化传感器网络是全球未来四大高技术产业之一。近几年来在美国国防部高级规划署、美国自然科学基金委员会和其它军事部门的资助下,美国科学家正在对化传感器网络所涉及的各个方面进行了深入的研究。智能化传感器网络综合了传感器技术、嵌入式计算技术、现代网络及通信技术、分布式信息处理技术等,能够通过各类集成化的微型传感器协作地实时监测、感知和采集各种环境或监测对象的信息,通过嵌入式系统对信息进行处理,并通过随机自组织通信网络以多跳中继方式将所感知信息传送到用户终端7。从而真正实现“无处不在的计算”理念。智能化传感器网络作为“无处不在”思想衍生的产物,可以被广泛地应用在国防军事、环境监测、交通管理、医疗卫生、制造业、抗灾抢险等领域,拥有巨大的应用价值。从目前国外的研究进展来看,虽然传感器网络的应用前景十分美好,但由于仍然面临很多技术难题,还不能走向广泛应用。美国很早就开始这方面的研究,但直到近几年,这方面的研究活动才在各大学及研究所蓬勃开展起来。美国政府也斥巨资支持这方面的研究,在2003年度的自然科学基金自主的专题中,便有一个是传感器与传感器系统及网络,拨款额度达到三千四百万美元,美国国防部在这方面的投入更为巨大。在其它国家和地区,如欧洲、日本、澳大利亚也开展了不少关于传感器及传感器网络的研究工作。 我国智能传感器的研究主要集中在专业研究所和大学,始于八十年代中期。八十年代末中国国防科技大学、北京航空航天大学、浙江大学等大专院校相继报道了研究成果。九十年代初,国内几家研究机构采用混合集成技术成功的研制出实用的智能传感器,标志着我国智能传感器的研究进入了国际行列。但是与国外的先进技术相比,我们还有较大差距,缺少先进的计算、模拟和设计方法8。但是由于传感器网络是一个新兴技术,及时开展这项对人类未来生活影响深远的前沿科技的研究,对整个国家的社会、经济将有重大的战略意义。1.3 课题的主要研究内容 随着国防工业的不断发展,飞机、导弹等的结构无论在外形、受力情况及边界条件等方面均变得十分复杂。因此对准确参数的测试显得越发重要。用于表面压力监测的压力传感器性能要求相对其他应用有所不同,要求尺寸小、厚度薄、灵敏度和分辨率高、故选MEMS硅微结构压阻式压力传感器。但由于半导体材料的固有特性,普遍存在着零点输出、热零点漂移、热灵敏度漂移和非线性等问题,影响传感器的精确性。因此,必须采取有效措施,减少并补偿这些因素影响带来的误差,提高传感器的准确性。利用低成本精密信号调理器 MAX1452对MEMS压力传感器做数字补偿,弥补了传统模拟方式补偿精度受限于传感器误差的非线性,且补偿元件同样受温度漂移等缺点9。本设计的主要内容章节安排如下:第一章绪论,介绍了涉及课题的研究背景、意义和现状,补偿系统,以及该设计的主要任务。第二章硅压阻式传感器的硬件设计,分析了现有各种压力传感元件的优缺点,根据课题需要选用小尺寸的传感元件,并设计了相应的补偿电路,详细论述了各参数测试电路原理图。第三章详细的介绍了硅压阻式传感器补偿的软件设计,本课题采用高性能、低价格、小体积的带12位ADC及32KB容量FLASH的8051内核作为微控制器进行数据采集及处理,使系统可靠性、稳定性和实时性都得到了较好的保证。 第四章介绍了传感器的校准,采用数字化信号调理技术进行传感器的零点温度漂移补偿,另外,在现有设备基础上改造研究适合于传感器的专用校准设备,设计专用的调试软件对传感器进行辅助调试。2 基于MAX1452的压力传感器硬件研究2.1 系统总体设计 基于半导体压阻效应制成的硅压力传感器在测量过程中要和被测物接触才能得到测量结果。由于被测物体的温度变化会使传感器的压阻系数产生变化,所以压阻效应原理本身会引起传感器输出的温度漂移。同时,由于制造工艺所造成的传感器电桥电阻的不严格对称、桥臂电阻的漏电流以及装配应力等因素10 目前,对此类传感器的补偿方案有很多,该系统是针对集成一体化的传感器调理电路方案而设计的一套基于 MAX1452温度补偿系统,对硅压力传感器的温度漂移和非线性误差进行补偿与校正。经过试验确定好补偿和校正参数后,MAX1452补偿电路可以在规定温度范围内对传感器进行全自动补偿,以提高测量精度和效率11。 如图2.1所示系统由4部分组成:上位机、上位机与MAX1452之间的接口模块、MAX1452补偿模块以及硅压力传感器。1是被校正的传感器,2是 MAX1452补偿模块,用于对传感器进行温度补偿。3是PIC单片机,作为上位机与MAX1452之间的接口模块,并且单片机通过 RS232与上位机4相连,对MAX1452发送的所有命令都由上位机的软件来控制,单片机接收上位机的命令之后对MAX1452进行操作,并将命令发送到MAX1452中。这样,上位机就可以对MAX1452进行控制和数据交换2补偿电路4上位机3接口模块1传感器 RS-232通讯图2.1 补偿系统结构图2.2 传感器2.2.1 压力传感器选型 为满足对系统设计的要求。我们对压电式、电容式、以及压阻式三种基于不同测量原理的微型压力传感器进行比较选型。(1) 压电式传感器:基于压电效应的传感器,是一种自发电式和机电转换式传感器。具有结构简单、电路简单、工作可靠的特点,但是,因自身所具有的较高噪声电平,不太适合流体力学的检测应用。(2) 电容式传感器:把被测的机械量,如位移、压力等转换为电容量变化的传感器。它的敏感部分就是具有可变参数的电容器。优点是空间分辨率相对较大,对压力灵敏度高,具备固有的低温度敏感性,并能做到功耗非常低。缺点在于需要具有集成电子设备用于小电容信号的放大,接口电路要安装在紧靠传感器芯片的位置,以避免杂散电容的影响,增加了电路布板的复杂性12。(3) 压阻式传感器:利用单晶硅材料的压阻效应和集成电路技术制成的传感器。主要优点是结构简单、输出阻抗低、线性度高、灵敏度高、输出信号是方便使用的电压,存在的主要问题是压阻材料对应力变化和温度变化都极为敏感,即温度敏感性和漂移大,但可以通过温度补偿电路予以补偿。因为压阻式压力传感器具有膜片尺寸小、灵敏度高、结构简单、系统集成性好等优点,所以系统设计选择了SMI公司生产的硅微结构压阻式压力传感器SM5420,其采用惠斯通电桥结构、硅压敏电阻技术和比例输出,应用灵活,结构简单,具有微型化、低功耗、高精度、易配微处理器等优点;采用硅硅熔接技术和高稳定性的超小压阻芯片封存于塑料壳内,用于大多数非腐蚀性气体和干燥空气的测量13。SM5420压力传感器有如下特点:超小体积、超低成本;表面安装(SO-8)结构,适用于自动化元件贴装;工作温度:-40125;静态精度小于±0.2%FSO;可提供100、200、350 和700kPa的绝压量程。SM5420在恒压供电下,采用压阻式传感器工作原理,当压力变化时,引起桥臂阻值发生变化,从而引起电压信号产生变化,这些信号经信号检出电路综合后,形成在幅值及相位上随压力值而变化的电压信号,代表了压力值的大小和方向,产生一个与输入压力成正比的电压信号,用户可通过信号调节电路对其进行放大或增加其附加值以达到自身产品的需求14。压力传感器SM5420的内部结构和各引脚如图152.2。图2.2 SM5420内部结构和引脚2.2.2 补偿模块 压阻式传感器利用半导体材料的压阻效应来进行压力测量,因为具有体积小、重量轻、分辨率高等独特优点,在各行业得到了广泛应用。但由于半导体材料的固有特性,压阻式传感器普遍存在着如下几方面的问题:(1)一致性问题:由于工艺的关系,即使同一批生产的传感器其特性也会有比较大的离散性,为了保证足够的精度必须对每个传感器进行校准16。(2)温漂问题:半导体材料对于温度变化很敏感,因此温漂问题在压阻式传感器中尤其显得突出,实际应用中必须采取一定措施对传感器的温度漂移进行补偿。(3)非线性问题:这是普遍存在于各种传感器中的问题,为了便于信号的传送及处理必须对传感器输出信号进行线性化处理17。(4)传感器的原始输出信号都比较小,为了获得足够的分辨率或灵敏度,必须进行放大并使输出信号标准化。以上这些问题需要利用适当的信号调理电路加以解决,传统的变送器普遍采用完全模拟的方式对传感器输出信号进行校准和补偿,信号在模拟域进行处理,校准与补偿采用激光微调薄膜电阻、电位器等“模拟记忆”元件,温度补偿一般采用热敏电阻、二极管等温度敏感元件18。低成本数字可编程器件的出现使得采用数字方式调整模拟函数成为可能,这种技术不对信号进行量化,信号通道还是模拟的,采用数字方式对传感器激励和放大器的增益和失调进行调整,实现高精度的校准和补偿。本课题选用Maxim公司生产的低成本精密信号调理器MAX1452对压力传感器做数字补偿。MAX1452为16引脚SSOP封装,是一款高度集成的模拟传感器信号处理器,优化于工业和过程控制中采用阻性元件的传感器。MAX1452具有放大、校准和温度补偿功能,可以逼进传感器所固有的可重复指标。全模拟信号通道不会在输出信号引入量化噪声,利用集成的16位数模转换器(DAC)实现数字化校正,偏移量和跨度可以校准在±0.02%满度之内。用16位DAC对信号的偏移量和跨度校准,赋予了传感器产品真正的可互换性。MAX1452的功能框图见图2.3。 图2.3 MAX1452功能框图通过MAX1452的功能框图可知其包含可编程传感器激励、16级可编程增益放大器(PGA)、768字节(6144位)内部EEPROM、四个16位DAC、一个独立的运算放大器以及内部温度传感器。除偏移量和跨度补偿外,MAX1452还利用偏移温度系数(Offset TC)和跨度温度系数(FSOTC)提供独特的温度补偿,在提供灵活性的同时降低了测试成本19。本课题中应用MAX1452的基本原理如下:MAX1452主通道为完全模拟量通道,传感器信号的放大、校准、补偿等都在主通道中实现。其通过五个寄存器(ODAC、OTCDAC、FSODAC、FSOTC DAC、CONFIG)把数字量转换成模拟量加载到模拟通道上,来具体实现校准、补偿等功能。其中FSODAC、FSOTC DAC寄存器的数字量(0FFFF)转换成相应的模拟电流值(02mA),直接加到惠斯通桥式敏感头电源引脚上,来给敏感头供电,通过此功能可以对传感器的灵敏度(即FSO)进行调整和温度补偿等;ODAC、OT C DAC寄存器的数字量(0FFFF)转换成模拟电压值,直接加到其模拟通道上,通过此功能可以对传感器的偏置(Offset)进行校准和温度补偿等;另外,模拟通道也可以通过对CONFIG寄存器填入参数来对传感器输出信号进行极性转换、偏置调节以及放大等。传感器正常工作模式下,每1毫秒从EEPROM刷新一次ODAC、OTCDAC、FSODAC、FSOTC DAC、CONFIG寄存器,其中ODAC、FSODAC寄存器可通过温度寻址EEPROM来刷新数据,OTC DAC、FSOTC DAC、CONFIG寄存器从EEPROM固定地址来刷新数据;调试工作模式下,通过计算机串口往(MAX1452)五个寄存器中写入数据,来进行实时调试20。2.2.3 压力测试电路原理图 利用2.2.1和2.2.2中所提到的压力传感器SM5420和信号调理器MAX1452组成的压力测试单元原理图2.4。SM5420为惠斯通电桥式压力传感器,压力的变化引起桥臂阻值发生变化,从而引起电压信号产生变化。如图所示,SM5420的+IN端与MAX1452的电桥驱动BDR引脚连接,-IN接地,INP和INM分别与电桥的正输出端OUT+和负输出端OUT-连接,通过配置寄存器可交换二者的极性。VDDF是EEPROM正电源电压,为了抑止噪声,需在VDDF与VDD之间连接一个1k的电阻,VDDF和VDD与VSS之间需要连接一个0.1F电容。UNLOCK引脚上使用下拉电阻,使得MAX1452不需要重新布板便能切换到数字模式,完成对压力传感器的在线校准调试。R4、R5、C5、C7和MAX1452内部的运放构成二阶低通滤波器对信号进行滤波。图2.4 压力测试单元原理图2.3控制模块2.3.1 微控制器 在当今微控制器市场,各种微控制器都有其独有特点,至于具体选择哪种微控制器型号,则完全遵循工程应用的实际需要和经济性原则。本课题采用成熟的带12位ADC及32KB容量FLASH的8051内核作为行测试信息管理模块的数据采集及处理微控制器,对传感器信号进行A/D转换、数据处理,然后通过485总线将数据输出。基于本课题对器件体积小、价格低、信息处理速度快的要求,微控制器选用了综合性能较好的Silicon Lab公司的C8051F410。C8051F410是Silicon Lab公司新近推出的小封装、高性能、低功耗混合信号片上系统型MCU,适合于测控系统、仪器仪表、便携式医疗设备、智能传感器、POS系统、游戏机、电子玩具等众多应用领域。具有体积小、价格低、运算速度快、功能全及微功耗等特点,片内集成外设的很多先进特性可以节省应用代码空间和CPU执行时间,很适合于要求控制器体积小、能进行快速运算的高速实时控制场合21。它的内部结构框图如图2.5所示。图2.5 C8051F410内部结构框图C8051F410的结构和性能很适合在本课题的行测试信息管理模块中作为控制核心,能满足系统的要求,这主要体现在以下几方面:(1)具有体积小、价格低、运算速度快、功能全及微功耗等特点,很适合于要求控制器体积小、能进行快速运算的高速实时控制场合;(2)它具有多达24个外部输入ADC通道,可编程为单端输入或差分输入,满足带式传感器的多路信号输入采集要求,可编程转换速率最大可达200ksps;(3) 具有32KB可编程FLASH,256字节的数据RAM,2048字节外部数据地址空间(XRAM),为移植嵌入式操作系统C/OS-提供了条件;(4)方便高效的开发环境,FLASH型C8051F410单片机有C2调试接口,这种单片机的调试只需一台PC机和一个JTAG调试器,而不需要专用的仿真器和编程器,这种高度方式方便、廉价;(5) C8051F410的32脚LQFP表面贴片封装使它体积很小,这正符合系统的微型化小体积要求。它货源充足,价格低廉,也符合系统低成本的要求。 本课题在电路设计时,C8051F410中的P1.3P1.7,P0.0P0.3,P0.7,P2.0P2.5均可作为ADC输入,一共16个ADC通道,用于采集的端口接RC滤波器,R为470欧,C为0.01F。P0.4和P0.5用于串行通信。C2D和C2CK为单片机下载程序、在线调试接口。其他口线则用于控制,满足了系统的硬件要求,电路原理图如图2.6所示。图2.6 硬件电路原理图2.3.2 数据通信接口设计 串行数据通信以其独特的优势在当今工程应用中占有非常重要的地位。51系列单片机提供了可方便与计算机或其他串行设备连接的异步通信口。为了实现低成本、高效率的远程传感信号的数字处理与变送,总希望用最少的信号线来完成,目前广泛使用的RS485串行接口总线正好满足了这种需要。RS485采用平衡差分信号线的传送方式,具备多点、双向通信能力,在多站点互连方面使用十分方便,通讯接口可以采用MAX490芯片。RS-485收发器采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平,因此具有抑制共模干扰的能力,而且接收器具有高的灵敏度,能检测低达200mV的电压,故数据传输可达千米以外21。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可连接多达32个设备,SIPEX公司新推出的SP485R最多可支持400个节点。RS-485最大传输速率为10Mb/s。当波特率为1200bps时,最大传输距离理论上可达15千米。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。RS-485共模输出电压在-7V至+12V之间,接收器最小输入阻抗为12K。本课题采用四线制RS-485总线全双工通信,用两对双绞线实现多点联网,构成分布式系统,结构简单、价格低廉。其互连方案如图2.7所示。 选用MAXIM公司的MAX490作为总线接口芯片,内部结构如图2.8所示。MAX490支持单电源+5V工作,可以实现全双工通信。其中R0、DI端的电平标准如下:逻辑“0”为 0.5V0.8V 之间,逻辑“1”在2.0VVCC之间。工作状态为:当A端电压比B端电压高200mV以上,RO输出逻辑“1”;而当A端电压比B端电压低200mV ,RO输出逻辑“0”;当DI输入逻辑“0”,Y输出低,Z输出高,反之Y输出高,Z输出低。MAX490的引脚功能说明如下:(1) VCC正电源端;(2) RO 接收器输出端。若A大于B200mV,RO为高;A小于B200 mV,RO为低;(3) DI驱动器输入端。DI为低时 ,输出A低B高;DI为高时,输出B低A高;(4) GND地;(5) Y 驱动器非反相输出端;(6) Z 驱动器反相输出端;(7) B接收器的反相输入端和驱动器的反相输出端;(8) A接收器的同相输入端和驱动器的同相输出端。图2.7 RS485组网通信图图2.8 MAX490内部结构图 C8051F410单片机有一个全双工的串行口,数据发送端为P0.4(TX),数据接收端为P0.5(RX),它们分别与MAX490的驱动器输入端DI和接收器输出端RO相连。RS-485应在总线电缆的开始和末端都并接电阻进行终端匹配,阻值为120。如图2.9所示。图2.9 单片机与MAX490的接口电路 2.3.3整体的电路测试图 将各部分电路测试图连接构成整体的电路图,如图2.10。对整体的原理图用PROTEL99SE做出测试电路的PCB图,如图2.11。图2.10 校正电路原理图图2.11 测试电路PCB版3 软件设计3.1 软件设计概述硬件电路设计完成后,测试系统能否实现相应的功能还要依赖于软件的实现。系统能否正常可靠的工作,除了硬件的合理设计外,与功能完善的软件设计是分不开的。本课题所设计的软件结合采用51单片机C语言完成系统的整个流程控制以及运算处理等工作。3.2 单片机编程 软件与硬件的有机结合就像人一样。如果硬件是人的身体,那么软件就相当于人的大脑,空有身体,头脑中没有知识或头脑干脆有了疾病,则工作能力就会受到很大限制。因而编制正确、完善的程序,采用合理的算法是至关重要的。硬件电路设计完成后,系统的主要功能将依赖于系统软件来实现。系统能否正常可靠的工作,自动化程度的高低,智能实施控制的能力大小,除了硬件的合理设计外,很大程度上取决于功能完善、算法先进的软件设计。程序的编制过程需要不断地修改、调试、完善,因此结构化好,可读性强的编程风格,有助于缩短开发周期,同时便于日后的维护和改进22。作为程序设计人员,要对软件的编制特点有深刻的理解。单片机的程序设计有其自身的特点。首先,单片机系统的系统程序与应用程序密不可分,系统程序与应用程序必须在一起考虑;其次在单片机系统中,硬件与软件紧密结合,软件直接操作硬件,硬件电路的设计不具有通用性,必须根据具体的硬件设计相对应的软件。硬件设计的优劣直接影响到软件设计的难易和质量,软件设计的水平又直接影响硬件功能的发挥。同时,很多时候软件可以替代硬件的功能。单片机的应用一般都是在工业现场,其多数环境恶劣。因此,除了在硬件上提高抗干扰能力外,软件的抗干扰能力、容错能力也必须强。除了以上所述单片机编程的一些特点外,也同样有一般软件的共同特点。首先,应采用合理、正确的算法,以合理的资源耗费实现预定的功能。其次,软件应具有模块化,可读性强,可维护性好的特征。软件的设计按如下步骤进行:(1)分析问题,明确所要解决问题的具体要求,编写任务说明书;(2)根据具体要求,确定软件应实现的功能;(3)根据各功能,确定功能模块,并为每一模块进行接口定义,即输入、输出定义。同时规划监控程序,确定监控程序与各功能模块之间的关系; (4)确定算法,根据不同的功能,选择或设计不同的算法。算法正确与否,直接决定了程序的正确性和能否达到预期的目标; (5)确定数据类型、规划数据结构; (6)分配内存资源,列出RAM资源的详细分配清单,作为编程依据; (7)编程及调试,编制程序时,要根据算法,首先绘制出流程框图,有时甚至需要绘制出多级框图,逐步细化。编制完了还需要对程序进行调试。对Flash型C8051F410单片机来说,有十分方便的开发调试环境,因为器件内部有JTAG调试接口; (8)写入程序,现场试运行。仿真运行正确的程序就可以烧入EEPROM,到现场试运行了。并不是可仿真运行的程序在现场都能运行或完全正确运行。 (9)根据现场运行状况,修改硬件和软件,使系统更完善,更可靠。3.2.1流程图 根据以上介绍,画流程图和编写C语言程序。程序主流程图如图3.1。 如图3.1运行开始时,先将各个寄存器进行必要的初始化,做好准备,将所用到的中断初始化成可用状态,开始读取数据(正,反行程的数据),发送数据进行对比和校准。 开始初始化寄存器 打开中断 读取数据 串口发送 图3.1 程序主流程图 如图3.2程序开始写入,写入标准的传感器信息,选择进行压力校准或不进行,不进行压力校准,则选择我们设置的检测点进行检测,进行数据采集。选择压力校准,无论正反行程,都先设置检测的检测点,再进行数据的采集。如果数据符合设置的校准要求,则保存数据,校准结束。如果不符合校准要求,则重复上述动作,重新设置压力检测点,再进行校准。重复以上流程,直至符合设计所要求达到的精度标准。开始写入传感器标准信息 初始化串口选择压力校准设置检测点正,反行程设置检测点 数据采集 数据采集数据符合要求 校准完毕 保持数据符合校准要求 保持数据 结束Y N N N N Y N N Y 3.2 压力传感器校正流程图3.2.2主要程序#include <c8051f410.h>#include "const.h"#include "main.h"bit Receive_Flag;unsigned char *Receive_Pointer;bit SendOver;unsigned char *Instruc_Pointer;unsigned char data RECEIVED _at_ 0x22;void COM1452();void Serial_Init();void Decide_1452(unsigned char *INSTRUC);void Send_message(unsigned char *message);extern void System_UARTO_Init();extern void Receive();extern void UARTO_Enable();#ifndef _1452COM_VALUE#define _1452COM_VALUE#define CALIBRATION 0x00#define COLLECTION 0x20#define WATCH 0x10#define STRAIN 0x40#define PRESSURE 0x80#define TEMPRATURE 0x00#define VIBRATION 0xc0#endifunsigned char instruction7=0x86,0x16,0x39,0x08,0x59,0x18,0x59; void main() WDT_Disable(); SYSCLK_Init(); System_Port_Init(); System_UART0_Init(); UART0_Enable(); while(1) Decide_1452(Instruc_Pointer); void Decide_1452(unsigned char *INSTRUC) Instruc_Pointer = instruction; if(*Instruc_Pointer & 0x30) = CALIBRATION) / 判断指令是否是校准 if(*Instruc_Pointer & 0xc0) = STRAIN) P20 = 1; Serial_Init(); COM1452();if(*Instruc_Pointer & 0xc0) = PRESSURE) P21 = 1; Serial_Init(); COM1452(); if( (*Instruc_Pointer & 0x30) = COLLECTION) / 判断是否是指令集 if(*Instruc_Pointer & 0xc0) = STRAIN) if(*Instruc_Pointer & 0xc0) = PRESSURE) if(*Instruc_Pointer & 0xc0) = TEMPRATURE) if(*Instruc_Pointer & 0xc0) = VIBRATION) if(*Instruc_Pointer & 0x30) = WATCH) / 判断指令是否是WATCH if(*Instruc_Pointer & 0xc0) = STRAIN) P20 = 1;Serial_Init(); COM1452();/ UNLOCK0=1,STRAIN通道可用 if( (*Instruc_Pointer & 0xc0) = PRESSURE) P21 = 1;Serial_Init();COM1452();/ UNLOCK1=1,PRESSURE通道可用 void COM1452() unsigned char n; SendOver = 0; n = *Instruc_Pointer & 0x0f; / n=数据长度 Instruc_Pointer+; while (n>0) if (*Instruc_Pointer = 0x59) Send_message(Instruc_Pointer); Instruc_Pointer+; n-; if(n!=0) Receive_Pointer = &RECEIVED; if(n=0) Receive_Pointer+; Receive_Flag = 1; / Receive 信号的设置 Receive(); else Send_message(Instruc_Pointer); Instruc_Pointer+; n-; if(n=0) SendOver = 1; / 发送消息成功 void Se