高精度电子秤设计.doc
淮北师范大学 2012届学士学位论文 高精度电子秤设计学院、专业 物理及电子信息学院 电子信息工程 研 究 方 向 高精度电子秤研究 学 生 姓 名 任 歌 学 号 20071342087 指导教师姓名 陈得宝 指导教师职秤 教 授 2012年4月26日第 21 页高精度电子秤设计任歌淮北师范大学物理及电子信息学院 235000摘要 随着时代科技的迅猛发展,微电子学与计算机等现代电子技术的成就给传统的电子测量及仪器带来了巨大的冲击与革命性的影响。作为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量与监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量秤,成为测量领域的主流产品。在设计中主要问题与技术难度在于如何实现高精度的测量,且所测结果的重复性好。本文设计的电子秤以单片机为主要部件,用C语言进行软件设计,硬件则以应变式压力传感器为主。秤重传感器输出的电量是模拟量,数值比较小,采用HX711高精度24位,自带放大电路,设计精度达0.01g。A/D转换的结果送单片机进行数据处理包括软件滤波并显示。其数据显示部分采用LCD显示,成本低且能很好地实现所要求的功能。关键词 单片机;高精度;软件滤波The Design of The High-precision Electronic ScaleRen GeSchool of Physics and Electronic Information, Huai Bei Normal University, Anhui Huaibei, 235000Abstract With the rapid development of technology of the times, the achievements of microelectronics and computers and other modern electronic technology play huge and revolutionary impact on the traditional electronic measuring instrument. As a weight measuring instruments, intelligent electronic scale has shown its high accuracy and speed. It has advantages in real-time measurement and monitoring, and began to gradually replace traditional mechanical scales. Intelligent electronic scale has become the mainstream products in the field of measurement. In this paper, the microcontroller is used as the main the component of the electronic scale, C language is utilized as the software and the strain gauge pressure sensor is used as the main hardware. Because the output is analog and the value of it is relative small, HX711 with precision is 24 bits is used as the main AD converter and amplifier, the accuracy of the scale is 0.01g. The results of AD converter are sampled by the microcontroller, and the information is filtered and displayed. The results are shown in LCD, the system has low cost and can be realized easily.Keywords Single-chip microcomputer;High-precision;Software filter目次1 绪论 11.1 概述11.2 论文的主要任务12 系统组成及工作原理22.1 系统组成22.2 系统工作原理23 系统的硬件设计33.1 主控芯片STC89C52单片机基本系统33.2 A/D转换芯片HX711接口电路的设计63.3 压电传感器的电路114 系统软件设计154.1 系统主函数154.2 A/D数据采集子函数154.3 软件滤波子函数及显示函数165 系统测试及定标175.1 系统硬件测试175.2 线性度的确定17结论20参考文献21附录 系统电路图及程序代码22致 谢261 绪论1.1 概述随着科技的迅猛发展,电子技术在生活中得到了广泛的应用。这给电子技术的发展带来了空前的机会,同时也带来了很大的挑战1。电子技术逐渐的向着集成化、高速、高精度、智能化的方向发展。常规的测试仪器仪表已不能满足市场的需求,这就给高精度仪器仪表带来发展机遇。而且,在未来相当长得时间内都将会向着这个方向发展。这就出现了这样的矛盾:陈旧的电子技术产品不能满足高速发展的市场经济的需求2。笔者正式看到了此矛盾的存在,致力及设计出高精度的电子秤量产品。作为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量与监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量秤,成为测量领域的主流产品3。为了满足数字电子秤的设计要求,本设计针对普通商业场合度量需要进行分析。论述了系统的设计思想、方法及设计实施过程,详细地分析了各个模块的选用、功能及实现方法,包括系统的硬件构成,传感器的选择,系统运作流程图等,以及所运用到的一些工具,工作环境。笔者进行了各单元电路方案的比较论证及确定,最终选取以STC89C52单片机为控制核心,传感器选用HL-8型悬臂梁式电阻应变式传感器。该传感器灵敏度高、线性度与重复性好。对于关键的A/D转换芯片,经过充分比较、论证,最终选用了高分辨率HX711A/D转换器。该芯片内集成了包括稳压电源、片内始时钟振荡器等其它同类型芯片所需要的外围电路。具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能与可靠性。该芯片及后端MCU芯片的接口与编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程4。1.2 论文的主要任务本文设计的电子秤以单片机为核心控制部件,用C语言作为编程语言来进行软件设计,以全桥压力传感器作为压力感受部件,制作出一套测量范围在0300g,最小分度值为0.01g的高精度电子秤。压力传感器输出的电量是模拟量,数值比较小达不到A/D 转换接收的电压范围。所以送A/D 转换之前要对其进行前端放大、整形滤波等处理。然后,A/D 转换的结果才能送单片机进行数据处理并显示。其数据显示部分采用LCD 显示,成本低且能很好地实现所要求的功能。2 系统组成及工作原理2.1 系统组成本高精度电子秤系统可分为单片机控制电路、A/D转换电路、复位电路、传感器、时钟电路、LCD显示、滤波电路等几部分,其系统组成如图1所示。单片机传感器滤波电路LCD显示电路复位电路时钟电路A/D转换电路图1 系统组成框图2.2 系统工作原理 系统原理如图1所示,系统通过传感器将压力这种物理量转化为电信号,即传感器内部的电阻应变片感应到压力后,电阻发生微小变化,通过全桥测量电路将电阻的微小变化转化成电压的微小变化,HX711将信号调整到A/D能采集的范围,然后由A/D进行采集转换,接着把采集到的24位高低电平通过DOUT送到单片机进行处理,单片机处理后,把数字信号输送到显示电路中,由显示电路输出测量结果。整个系统实现了用单片机来控制输出,在线性度的确定过程中,需要对程序进行反复的修改,最终实现设计的要求。系统的关键技术在于将物理量转化为可以传递处理的电信号。本设计笔者使用了HX711来解决这一技术难题。HX711直接将压力传感器送出的微弱电信号,经过内部放大与24位A/D转换器,转化为处理器可以识别与处理的数字量3。通过软件方法,将A/D所采集的数字量进行滤波与标定,最终输出重量值。并由LCD显示屏进行显示。 3 系统的硬件设计3.1 主控芯片STC89C52单片机基本系统3.1.1 STC89C52单片机性能介绍STC89C52是一种低功耗、高性能8位微控制器,具有8K的可编程flash存储器5。使用高密度非易失性存储器技术制造,及工业80C51产品指令与引脚完全兼容。内512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHZ,6T/12T可选。片上flash允许程序存储器在线可编程,也适于常规编程器6。在单芯片上,拥有灵巧的8位CPU与在系统上可编程闪烁存储单元,使得STC89C52为众多嵌入式控制应用系统提供灵活、有效的解决方案,因此笔者在设计时选择了51单片机作为解决方案。图2 单片机内部结构STC89C52具有以下标准功能:8K字节闪烁存储器,256字节读写存储器,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许读写存储器、定时器/计数器、串口、中断继续工作。掉电保护方式下,读写存储器内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图2所示为单片机内部结构。3.1.2 STC89C52单片机引脚功能VCC:电源。P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序与数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在闪烁编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻6。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送“1”。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在闪烁编程与校验时,P2口也接收高8位地址字节与一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。RST:复位输入。当晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在闪烁编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器与内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.1.3 复位电路单片机上电时,当振荡器正在运行时,只要持续给出RST引脚两个机器周期的高电平,便可完成系统复位。外部复位电路是为提供两个机器周期以上的高电平而设计的。系统采用上电自动复位,上电瞬间电容器上的电压不能突变,RST上的电压是VCC上的电压及电容器上的电压之差,因而RST上的电压及VCC上的电压相同。随着充电的进行,电容器上的电压不断上升,RST上的电压就随着下降,RST脚上只要保持10ms以上高电平,系统就会有效复位。电容C1可取10-33F,R取10K,充电时间常数为10×10-6×10×103=100ms。复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。本设计使用了第二种方法,其电路图如图3所示。图3 STC89C52单片机复位、晶振电路图3.1.4 晶振电路STC89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1与XTAL2分别是放大器的输入、输出端,外接石英晶体或陶瓷振荡器以及补偿电容C2、C3构成并联谐振电路。当外接石英晶体时,电容C2、C3选30pF±10pF;当外接陶瓷振荡器时,电容C2、C3选40pF±10pF。STC89C52系统中晶振频率一般在1.2-12MHz选择。外接电容C2、C3的大小会影响振荡器频率的高低、振荡频率的稳定度、起振时间及温度稳定性。在本系统中,选择了12MHz石英晶振,电容C1、C2为30pF。其电路图如图3所示。3.2 A/D转换芯片HX711接口电路的设计根据设计要求,系统要求输出的电流信号为20-1000mA,步进为1mA,且要求显示数值,因此,给定量的执行元件A/D转换器至少需要10位的转换精度7。结合系统的设计要求,并考虑到单片机的I/O接口资源紧张等因素,最终确定选用HX711量化精度能达到1/4096<1/10,完全能达到设计的精度要求。HX711接口电路如图4所示。图4 HX711接口电路图HX711是一款专为高精度秤重传感器而设计的24位A/D转换器芯片。及同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点、降低了电子秤的整机成本,提高了整机的性能与可靠性8。该芯片及后端MCU芯片的接口与编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A或通道B,及其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B则为固定的64增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器与芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接部件。上电自动复位功能简化了开机的初始化过程。3.2.1 HX711引脚功能及电器特性表1 HX711引脚功能管脚号名秤性能描述1VSUP电源稳压电路供电电源:2.6-5.5V(不用稳压电路时接AVDD)2BASE模拟输出稳压电路控制输出(不用稳压电路时为无连接)3AVDD电源模拟电源:2.6-5.5V4VFB模拟输入稳压电路控制输入(不用稳压电路时应接地)5AGND地模拟地6VBG模拟输出参考电源输入7INA模拟输入通道A负输入端8INA+模拟输入通道A正输入端9INB模拟输入通道B负输入端10INB+模拟输入通道B正输入端11PD-SCK数字输入断电控制(高电平有效)与串口时钟输入12DOUT数字输出串口数据输出13X0数字输入输出晶振输入(不用晶振时为无连接)14X1数字输入外部时钟或晶振输入,0:使用片内振荡器15RATE数字输入输出数据速率控制,0:10Hz;1:80Hz16DVDD电源数字电源:2.6-5.5V表2 主要电气参数参数条件及说明最小值典型值最大值单位满额度差分输入范围V(inp)-V(inn)±0.5(AVDD/GAIN)V输入共模电压范围AGND+0.6 AVDD-0.6V输出数据速率使用片内振荡器,RATE=010Hz使用片内振荡器,RATE=DVDD80外部时钟或晶振,RATE=0fclk/1,105,920外部时钟或晶振,RATE=DVDDfclk/138,240输出数据编码二进制补码800000 7FFFFF(HEX)输出稳定时间(1)RATE=0400mvRATE=DVDD50输入零点漂移增益=1280.2增益=640.8输入噪声增益=128,RATE=050nV(ms)增益=128,RATE= DVDD90温度系数输入零点漂移(增益=128)±7nV/输入共模信号抑制比增益=128,RATE=0100dB电源干扰抑制比增益=128,RATE=0100dB输出参考电压(VBG)1.25V外部时钟或晶振频率11.0592 30MHz电源电压DVDD2.6 5.5VAVDD,VSUP2.6 5.5模拟电源电路(含稳压电路)正常工作1600uA断电0.3数字电源电路正常工作100uA断电0.2表3 输入通道与增益选择PD-SCK脉冲数输入通道增益25A12826B6427A643.2.3 HX711管脚说明模拟输入通道A模拟差分输入可直接及桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D转换器的输入动态范围,该通道的可编程增益较大,为128或64。这些增益所对应的满量程差分输入电压分别±20mV或±40mV。通道B为固定的增益,所对应的满量程差分输入电压为±40mV。通道B应用于包括电池在内的系统参数检测。供电电源数字电源(DVDD)应使用及MCU芯片相同的数字供电电源。HX711芯片内稳压电路可同时向A/D转换器与外部传感器提供模拟电源。稳压电源的供电电压(VSUP)可及数字电源(DVDD)相同。稳压电源的输出电压值(VAVDD)由外部分电阻R1、R2与芯片的输出参考电压VBG决定(图4),VAVDD=VBG(R1+ R2)/ R2。应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV。如果不使用芯片内的稳压电路,管脚VSUP与管脚AVDD应相连,并接到电压为2.6-5.5V的低噪声模拟电源。管脚VBG上不需要外接电容,管脚VFB应接地,管脚BASE为无连接。时钟选择如果将管脚XI接地,HX711将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入与晶振的相关电路。这种情况下,典型输出数据速率为10Hz或80Hz。如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF的隔直电容连接到XI管脚上,或将晶振连接到XI与XO管脚上。这种情况下,芯片内的时钟振荡器电路会自动关闭,晶振时钟或外部输入时钟被采用。此时,若晶振频率为11.0592MHz,输出数据速率为准确的10Hz或80Hz。输出数据速率及晶振频率以上述关系按比例增加或减少。使用外部输入时钟,外部时钟信号不一定需要为方波。可将MCU芯片的晶振输出管脚上的时钟信号通过20pF的隔直电容连接到XI管脚上,作为外部时钟输入。外部时钟输入信号的幅值可低至150 mV。HX711管脚说明如图5所示12345678910111213141516AVDD 数字电源RATE 输出数据速率控控制输入XI 外部时钟或晶振输入XO 晶振输入DOUT 串口数据输出PD_SCK 断电与串口时钟输入INPB 通道B正输入端INNB 通道B负输入端稳压电路电源 VSUP稳压电源控制输入 VBF模拟电源 AVDD稳压电源控制输出 BASE模拟地 AGND参考电源输出 VBG通道A负输入端 INNA通道A正输入端 INPA图5 HX711管脚说明复位与断电当芯片上电时,芯片内的上电自动复位电路会使芯片自动复位。管脚PD-SCK输入来控制HX711的断电。当PD-SCK为低电平时,芯片处于正常工作状态。图6 断电控制如果PD-SCK从低电平变高电平并保持在高电平超过60 us,HX711即进入断电状态。如果使用片内稳压电源电路,断电时,外部传感器与片内A/D转换器会被同时断电。当PD-SCK重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态后,通道A与增益128会被自动选择为作为第一次A/D转换的输入通道与增益。随后的输入通道与增益选择由PD-SCK的脉冲数决定,参见串口通讯一节。芯片从复位或断电状态进入正常工作状态后,A/D转换器需要4个数据输出周期才能稳定。DOUT在4个数据输出周期后才会从高电平变为低电平,输出有效数据。3.2.4 HX711的时序图HX711为串行数据总线型A/D转化器。作为串行通讯方式,那么掌握其时序图对于该器件的使用与操作起到了至关重要的作用。串口通讯线由管脚PD-SCK与DOUT组成,用来输出数据,选择输入通道与增益。当数据输出管脚DOUT为高电平,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD-SCK应为低电平。当DOUT从高电平变低电平后,PD-SCK应输入25至27个不等的时钟脉冲。其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲用来选择下一个A/D转换的输入通道与增益。其时序如图7所示:图7 串行时序图3.3 压电传感器的电路3.3.1 应变片式电阻传感器应变片式电阻传感器.是以应变片为传感器元件的传感器。它具有以下优点:1.精度高,测量范围广;2.使用寿命长,性能稳定可靠。3.结构简单、尺寸小、重量轻,因此在测量时,对工件工作状态及应力分布影响小;4.频率响应特性好。应变片响应时间约为100ns;5.可在低温、高速、高温、强烈振动、强磁场、核辐射与化学腐蚀等恶劣环境条件下工作;6.应变片种类繁多,价格便宜。电阻应变片的工作原理是基于电阻应变效应,即在导体产生机械形变时,它的电阻值相应发生变化9。应变片式电阻传感器应用很广。本设计采用的是梁式力传感器,该传感器结构简单、灵敏度高。适用于小压力测量。3.3.2 应变片式电阻传感器的结构与原理电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的原件。由电阻应变片与测量电路两部分组成。常用的电阻应变片有两种:电阻应变片与半导体应变片,本设计采用的是电阻应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线珊上面有覆盖层,起保护作用9。电阻应变片也有误差,产生的因素很多,所以在测量时我们一定要注意。其中温度的影响最重要,环境温度影响电阻值变化的原因主要是:A:电阻丝温度系数引起的。B:电阻丝及被测原件对零点输出,灵敏度的影响,即使采用同一批产品也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必须进行温度补偿,解决的办法是在被粘贴的基片上采用适当温度系数的自动补偿,并从外部对它加以适当的补偿。非线性误差是传感器特性中最重要的一点。产生非线性误差的原因很多,一般来说主要由结构设计决定,通过线性补偿,也可以得到改善。滞后与蠕变是关于应变片及粘合剂的误差。由于粘合剂为高分子材料,其特性随温度变化较大,所以秤重传感器必须在规定的温度范围内使用。电阻应变片的工作原理是基于电阻应变效应,即在导体产生机械形变时,它的电阻值相应发生变化。设有一根电阻丝,它在未受力时的原始电阻值为式中 :电阻丝的电阻率;电阻丝的长度;电阻丝的面积。电阻丝在外力的作用下,将引起电阻变化,且有令电阻丝的轴向效应为,由材料力学可知,为电阻丝材料的泊松系数,经整理可得4通常把单位应变所引起的电阻相对变化称作电阻线的灵敏系数,其表达式为从上式可以明显看出,电阻丝灵敏系数由两部分组成:表示受力后由材料的几何尺寸变化引起的;表示由材料电阻变化所引起的。对于金属材料,项的阻值要比小得多,可以忽略,故=。大量实验证明,在电阻丝拉伸比例极限内,电阻的相对变化及应变成正比,即=1.73.6。上式可写成7。3.3.3 全桥测量电路应变式传感器常用的测量电路有单臂电桥、差动半桥与差动全桥,其中差动全桥可提高电桥的灵敏度,消除电桥的非线性误差,并可消除温度误差等共模干扰。一般在测量中都使用4片应变片组成差动全桥,本设计所采用的传感器就是全桥测量电路。其电路图如图8所示。桥式测量电路有四个电阻,其中任何一个都可以是电阻应变片电阻,电桥的一个对角线接入工作电压U,另一个对角线位输出电压Uo。其特点是:当四个桥臂电阻达到相应关系时,电桥输出为零,否则就有电压输出,可用灵敏检流计来测量,所以电桥能够精确地测量微小的电阻变化。应变电阻作为桥臂电阻接在电桥电路中。无压力时,电桥平衡,输出电压为零;有压力时,电桥的桥臂电阻值发生变化,电桥失去平衡。 全桥测量电路中,将受力性质相同的两片应变片接入电桥对边。其输出灵敏度比半桥提高了一倍,非线性误差与温度误差均得到了改善。图8 全桥测量电路3.3.4 LCD显示模块1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等点阵型液晶模块它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔起到了字符间距与行间距的作用。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符与数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶10。1602外围电路简单微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表与低功耗应用系统中。因此,笔者在本设计中选用了该显示模块,其连接结构如图9示:图9 液晶显示电路4 系统软件设计系统软件采用了模块化设计,主要包括毫秒级延时子函数、A/D数据采集子函数、软件滤波子程序、LCD显示子函数与主函数。4.1 系统主函数在系统通电后,主程序首先完成系统初始化,其中包括系统变量定义与给系统变量赋初值等,然后调用A/D采集函数,将A/D采集模块输出的24位二进制串行数据转化为十进制,接着进行调零与定标,最后分离出6位十进制数据的千位、百位、十位与个位,调用数码管显示函数,将对应的数值送到对应的地址上进行显示。系统主函数流程图如图10所示。图10 系统主函数流程图4.2 A/D数据采集子函数A/D数据采集子程序主要是采集压电传感器的输出小信号,前24个ADSK脉冲采集24位串行二进制数据,接下来的13个ADSK脉冲选择下次A/D采集的通道与增益,本设计采用1个ADSK脉冲,选择通道A,增益为128。4.3 软件滤波子函数及显示函数在测量的过程中传感器所采集输出的信号为毫伏级别的微电量,这样就容易受到外界条件的干扰。传感器本身的特性限制,在测量中也会输出偏差较大的值。A/D转换器在转化的过程中也会出现及真值偏差较大的数据。各种不同的误差积攒在一起就会出现误差的放大,这样就会出现测量不准确,测量值重复性太差等特点。笔者在设计的时候,充分考虑了这些造成误差的因素,最后设计了软件滤波的方案。具体实现方法是所采到的数据先取十个值进行累加,并计算出平均值。然后将每次所得的数据替换已有的数据,并重新计算平均值。最后所得到的值,即为需要显示的真实值。通过软件的方式来补偿系统误差,达到高精度测量的设计要求11。显示部分可以将处理得出的信号在显示器上显示,让人们直观的看到被测体的质量。LCD 液晶显示器是一种极低功耗显示器,从电子表到计算器,从袖珍时仪表,到便携式微型计算机以及一些文字处理机都广泛利用了液晶显示器,流程图如图11所示。开始x = 0x = 0x = 0x = 0x = 0.4x = 0.4x = 0.4x = 0.4x = 0.8x = 0.8x = 0.8x = 0.8x =1x =1x =1x =1H / mH / mH / mH / mx = 0x = 0x = 0x = 0x = 0.4x = 0.4x = 0.4x = 0.4x = 0.8x = 0.8x = 0.8x = 0.8x =1x =1x =1x =1H / mH / mH / mH / m确定要显示的数据2q / L·h-10 0 5 10 15 20x = 0x = 0.4x = 0.8x =1H / m 15 200 5 10 15 20x = 0x = 0.4x = 0.8x =1H / m 15 202q