XXXX年湖南科技大学电子设计竞赛答卷2.doc_第1页
XXXX年湖南科技大学电子设计竞赛答卷2.doc_第2页
XXXX年湖南科技大学电子设计竞赛答卷2.doc_第3页
XXXX年湖南科技大学电子设计竞赛答卷2.doc_第4页
XXXX年湖南科技大学电子设计竞赛答卷2.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实用电子称(A) 设 计 报 告 学院: 参赛队员: 指导老师: 一、 引言 (摘要) 为满足实用电子称的要求,经过对各个单元电路方案的比较论证及确定。本系统采用单片机STC89C52为控制核心,实现电子称的基本控制功能。系统的硬件部分基本包括最小系统板、数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号处理部分和A/D转换部分组成。人机界面部分为键盘输入,12864点阵式液晶显示,可以直观的显示中文。同时在此基础上本系统增加了报警电路,以免测量量超出测量范围。 软件部分应用单片机C语言实现本设计的全部控制功能,包括基本的称重功能,去皮功能,总额累加计算和发挥部分的显示购物清单的功能,可以设置日期并显示购物日期、收银员编号、售货单位和重新设定10种商品的单价,具有超重报警功能。 此电子称具备了功能多、性能价格比高、功耗低、系统设计简单、使用方便直观、速度快、测量准确、自动化程度高等特点。技术报告以电子称的设计为主线,包括电子称的软硬件设计,以及控制算法研究等,共分为六章。其中,第一部分为引言部分;第二部分主要介绍了电子称的总体方案的选取,对单片机资源的分配作了说明。第四部分对电子称的硬件设计进行了详细的介绍,主要介绍了电路的设计;第五部分描述了电子称的软件设计和相关算法。第六部分中叙述了我们在设计过程中遇到的问题和解决方法。二、 电子称整体设计方案论证 按照设计功能的要求,本系统由5个部分组成:控制器部分、数据采集部分、人机交互界面、时钟日历电路和报警电路。系统设计总体方案框图如图2.1所示: 数据采集部分是利用称重传感器检测压力信号,得到微弱的电信号,而后经放大电路部分处理后送入A/D转换器,将模拟信号转换为数字量输出。控制器部分接受来自A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实际重量信号,并将其储存到外部储存器中。在人机交互部分,控制器还要通过对扩展I/O的控制,对键盘进行扫描,而后通过一些程序实现对整个系统的控制,并根据需要通过数据显示器显示功能。报警系统部分,当称量物体的重量超出称量范围时,系统发出警告信息。2.1 控制器选取方案一:采用大规模可编程逻辑器件来实现,因为系统需要大量控制液晶显示器和键盘。由于大规模可编程逻辑器件一般是使用状态机方式来实现,即所解决的问题都是规则的有限状态转换问题。本系统状态较多,难度系数较大。故不宜采用大规模可编辑逻辑器件:CPLD、FPGA来实现。方案二:采用51系列单片机来实现。因为系统需要大量控制液晶显示器和键盘,另外系统没有其他高标准的要求,有考虑到本设计中程序部分比较大,根据总方案设计的分析,可以选用带EPROM的单片机,由于应用程序不大,应用程序直接储存在片内,不用在外部扩展存储器中,可一定程度上简化电路。INTEL公司的8051和8751都可以使用,在这里选用STC公司生产的AT89SXX系列单片机。STC89CXX系列与MCS-51相比有两大优势:第一,片内储存器采用闪速存储器,使程序写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路体积更小。此外,价格低廉、采用80C51核心处理器单元,具有1K字节RAM;64/32/16/8kB片内Flash程序存储器,支持12时钟(默认)或6时钟模式,4个8位I/O接口。这些设备能够很好地实行本仪器的测量和控制要求。最后我们最终选择了方案二,并采用STC89C52这个单片机来实现系统的功能要求。内部带有8KB的程序存储器,在外面扩展了32K数据存储器,以满足系统要求。2.2数据采集方案的选取2.2.1传感器部分方案一:采用电阻应变式称重传感器电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的重量转换为弹性体得应变值;另一个是电阻应变计:它作为传感元件井弹性体的硬币,同步地转换为电阻值的变化。在电阻应变式称重传感器中通过桥式电路将电阻的变化转换为电压变化。它包含一个具有至少两个可变桥臂的4电阻结构的电桥,其中由由所称重量引起的电阻变化可产生一个叠加在电源电压的一半共模电压之上的差分电压。电阻应变式传感器工作原理框图如图2-2所示:电压敏感元件应变片测量电桥载荷p应变电阻变化R输出图2-2电阻应变式称重传感器工作原理框图电阻应变式称重传感器桥式测量电路如图2-3所示:R1、R2、R3、R4为4个应变片电阻,组成了桥式测量电路,Rm为温度补偿电阻,e为激励电压,V为输出电压。图2-3桥式测量电路当弹性体承受载荷产生变形时,输出信号电压可由下式给出:由于测量电桥采用惠更斯电桥,且惠更斯电桥具有抑制温度变化的影响,抑制干扰,补偿方便等优点。所以该传感器测量精度高,温度特性好,工作稳定等优点。同时全桥式等臂电桥的灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,所以在本设计中我们采用该方案。方案二:采用压磁式称重传感器它是一种力电转换的无源传感器。它的工作原理是利用压磁效应,将被称重量的变化变换成传感器导磁体的导磁率变化并输出电信号。压磁传感器具有输出信号大、抗干扰性能好、过载能力强、不均匀载荷对测量准确度的影响小,但准确度低、反应速度慢。所以不采用该方案。方案三:采用电容式称重传感器它是以各种不同类型的电容器作为转换元件,是一个具有可变参数的电容器。电容式传感器由于它存在输出特性的非线性、寄生电容和分布电容对灵敏性和称重精度的影响、传感器联接电路比较复杂等原因,直接影响到它的可靠性,所以不采用该方案。通过对三种方案的分析和比较,又因为本系统要求最大称重为9.999公斤,重量误差不大于0.005公斤,且考虑到称台自重、振动和冲击分量,还有避免超重损坏传感器,所以传感器量程必须大于额定称重9.999公斤。综上我们最终采用矽普电子HL-8型称重传感器,额定量程为15Kg,精度为0.01%,满程误差为0.005kg。可以满足本系统的精度要求。表一 称重传感器技术参数量程(Kg)3, 15综合误差(%F.S)0.05额定输出温度漂移(%F.S/10)0.15灵敏度(mv/v)1.00.1零点输出(mv/v)0.1非线性(%F.S)0.05输入电阻()100050重复性(%F.S)0.05输出电阻()100050滞后(%F.S)0.05绝缘电阻(M)2000(100VDC)蠕变(%F.S/3min)0.05推荐激励电亚(V)510零点漂移(%F.S/1min)0.05工作温度范围()-10+50零点温度漂移(%F.S/10)0.2过载能力(%F.S)1502.2.2A/D转换器部分因为本系统设计要求最大称重为9.999公斤,重量误差不大于0.005Kg,所以要求精度达到0.05%FS。A/D转换器位数的选择:12位A/D精度:10Kg/()=0.0024Kg14位A/D精度:10Kg/()=0.00061Kg考虑到其他部分所带来的干扰,要满足系统精度要求需要14位或精度更高的A/D。方案一:并行比较A/D转换器:如ADC0808。并行比较ACD是现今速度最快的模/数转换器,采样速率在1GSPS以上,通常称为“闪烁式”ADC。它由电阻分压器、比较器、缓冲器及编码器四种分别组成。这种结构的ADC所有位的转换同时完成,其中转换时间主要取决于比较器的开关速度、编码器的传输时间延迟等。缺点是:并行比较式A/D转换的抗干扰能力差,由于工艺限制,其分辨率一般不高于8位,因此并行比较式A/D只适合于数字示波器等转换速度较快的仪器中,不适合本系统。方案二:逐次逼近型A/D转换器:如ADS7805、ADS7804等。逐次逼近型ADC是应用广泛的模/数转换方法,这一类型ADC的优点:高速,采样速率可达1MSPS;与其他ADC相比,功耗相当低;在分辨率低于12位时,价格较低。缺点:在高于14位分辨率情况下价格较高;传感器产生的信号在进行模/数转换之前需要进行调理,包括增益级和滤波,这样会明显增加成本。故该方案不可采用。方案三:积分型A/D转换器:如ICL7135。积分型ADC又称为双斜率或多斜率ADC,是应用比较广泛的一类转换器。它的基本原理是通过两次积分将输入的模拟电压转换成与其平均值成正比的时间间隔。于此同时,在此时间间隔内利用计数器对时钟脉冲进行计数,从而实现A/D转换。积分型ADC两次积分的时间都是利用同一个时钟发生器和计数器来确定,因此所得到的表达式与时钟频率无关,其转换精度只取决于参考电压VR。此外,由于输入端采用了积分器,所以对交流噪声的干扰有很强的抑制能力。若把积分器定时积分的时间取为工频信号的整数倍,可把由工频噪声引起的误差减少到最小,从而有效地抑制电网的工频干扰。这类ADC主要应用于低速、精密测量等领域。其优点是分辨率高,可达22位;功耗低、成本低。缺点是:转换速率低,转换速率在12位时为100300SPS。所以考虑到分辨率要在14位以上,而该类ADC的转换速率较低,故不采用该方案。方案四:采用技术制成的ADC转换芯片该类芯片具有较高集成度,通常集放大器、模拟开关、A/D转换器、比较器、数字滤波器、输出接口集于一体。仅需几个外围器件便可构成一个完整的A/D转换系统,大大减少了电路的复杂度。由于其集成度高,所以故障概率较采用分立元件A/D转换系统有明显降低,进而提高系统可靠性。此外,其内部置高性能仪表放大器,大大降低对信号源的要求。电子称电阻应变式称重传感器输出信号为mV级,若采用一般的A/D转换器往往需要放大后才能进行A/D转换。而A/D转换器大都采用了增益可编程放大器,可编程数字滤波、多种自校准技术等多项先进技术,并多数采用微处理器来管理与控制转换程序,由于采用了多种综合技术措施,放大器的增益调整、数字滤波和误差校正都集中在同一芯片中,外围器件少,使用方便可靠。故采用该方案。经过对以上几种方案的分析与比较,我们最终采用了矽普电子的HX711型称重传感器专用24位模拟/数字(A/D)转换器芯片。该芯片集成了包括稳压电源、片内时钟振荡器模拟开关、A/D转换器、比较器、数字滤波器等以及其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。2.2.3放大器选取由于采用技术制成的ADC转换芯片HX711,其内部置高性能仪表放大器,大大降低对信号源的要求。且可编程增益为128 或64,对应的满额度差分输入信号幅值分别为20mV 或40mV 。所以不需要添加放大电路部分。2.3人机交互界面方案选取 2.3.1键盘输入由于电子称需要设置单价(十个数字键),还需具有确认、删除等功能,总共需设置16个键。键盘的扩展方案为:采用矩阵式键盘:矩阵式键盘的特点是把检测线分为两组,一组为行线,一组为列线,按键放在行线和列线的交叉点上。当键盘的数量大于8个时,一般都采用矩阵式键盘。图2-4给出了一个44的矩阵键盘结构的键盘接口电路,图中的每一个按键都通过不同的行线和列线与主机相连。44的矩阵键盘共可安装16个键,但只需8条测试线。2.3.2显示输出部分方案一:采用带有字库的点阵图形液晶显示模块显示。点阵图形液晶模块是一种用于显示各类图像、符号、汉字的显示模块,其显示屏的点阵像素连续排列,行和列在排布中没有间隔,因此可以显示连续、完整的图形。当然它也能显示字母、数字等字符。因为设计要求显示的全部内容采用中文显示,所以要求的显示器必需带有中文字库。该类显示器具有功耗低、体积小、质量轻、超薄和可编程等优点。故可以采用该方案。方案二:采用LED数码管显示。数码管只能显示有限的数字和符号,显示内容少,无法满足设计要求。故不采用该方案。经过对以上方案的分析和比较,我们采用带中文字库的12864液晶显示器。它具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。2.3.3报警系统在本系统中,设置报警的目的就是在超出电子称测量范围时,发出声光报警信号,提醒用户,防止损坏仪器。超限报警电路是有单片机的I/O口来控制的,当称重物体重量超过系统设计所容许的重量时,通过程序使单片机的I/O值为高电平,从而使三极管导通,使蜂鸣器发出报警声,同时使报警灯发光。三、理论分析经过方案的论证分析,我们确定出该系统的具体方案。按照设计功能的要求,本系统由4个部分组成:控制器部分、数据采集部分、人机交互界面和报警电路。系统设计总体方案框图如图2.1所示:3.1控制器部分3.1.1单片机芯片STC89C52介绍单片机采用MCS-51系列单片机。由宏晶科技生产的STC89C52是一种抗干扰能力强、高速、低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,采用PQFP小型封装。它的具体功能包括具有8KB的Flash存储器,512字节RAM,32个通用I/O口,具有ISP(在系统可编程)/IAP(在应用可编程)功能,无需专用编程器/仿真器,具有EEPROM功能,看门狗定时器,3个16位定时器/计数器,2个数据指针,四个8位并行端口,外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒,通用异步串行口。STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含4个外中断口,3个16为可编程定时计数器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。其芯片引脚图如下图所示。3.1数据采集部分 3.1.1数据采集元件 3.1.1.1传感器 传感器实际上是一种将质量信号转变为可测量的电信号输出的装置。用传感器首先要考虑传感器所处的实际工作环境,这一点对正确使用传感器至关重要,它关系到传感器能否正常工作以及它的安全和使用寿命,乃至整个系统的可靠性和安全性。因此传感器外围电路的抗干扰能力是数据采集部分电路设计的关键环节。传感器检测电路的功能是把电阻应变片的电阻变化转变为电压输出。常用的电阻应变片有两种:电阻丝应变片和半导体应变片,本设计中采用的是电阻丝应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线栅上面粘有覆盖层,起保护作用。电阻应变片也会有误差,产生的因素很多,所以测量时我们一定要注意,其中温度的影响最重要,环境温度影响电阻值变化的原因主要是:A. 电阻丝温度系数引起。B. 电阻丝与被测元件材料的线膨胀系数的不同引起的。 对于因温度变化对桥接零点和输出灵敏度的影响,即使采用同一批应变片,也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必须进行温度补偿,解决的方法是在被粘贴的集片上采用适当温度系数的自动补偿片,并从外部对它加以适当的补偿。非线性误差是传感器特性中最重要的一点。产生非线性误差的原因很多,一般来说主要是由结构设计决定,通过线性补偿,也可以得到改善。滞后和蠕变是关于应变片及粘合剂的误差。由于粘合剂为高分子材料,其特性随温度变化较大,所以称重传感器必须在规定的温度范围内使用。我们采用的是矽普电子HL-8型称重传感器,额定量程为15Kg,精度为0.01%,满程误差为0.005kg。该称重传感器采用全桥式等臂电桥。3.1.1.2传感器的安装由于我们采用的传感器为HX711称重传感器,根据该传感器的受力方式和安装说明,见图4.1.1和图4.1.2。我们决定采用如图4.1.3所示的安装方式。传感器受力方式:图4.1.1安装说明:图4.1.2安装方式:3.1.1.3 A/D转换器部分由于采用的HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。同时降低了电子秤的整机成本,提高了整机的性能和可靠性。并且该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。以下为HX711管脚说明:管脚号名称性能描述1VSUP电源稳压电路供电电源:2.65.5V(不用稳压电路时应接AVDD)2BASE模拟输出稳压电路控制输出(不用稳压电路时为无连接)3AVDD电源模拟电源:2.65.5V4VFB模拟输入稳压电路控制输入(不用稳压电路时接地)5AGND地模拟地6VBG模拟输出参考电源输出7INA模拟输入通道A负输入端8INA+模拟输入通道A正输入端9INB模拟输入通道B负输入端10INB+模拟输入通道B正输入端11PD_SCK数字输入断电控制(高电平有效)和串口时钟输入12DOUT数字输出串口数据输出13X0数字输入输出晶振输入(不用晶振时为无连接)14X1数字输入外部时钟或晶振输入,0:使用片内振荡器15RATE数字输入输出数据速率控制,0:10HZ;1:80HZ16DVDD电源数字电源:2.65.5V3.1.2数据采集过程当A/D转换器的数据输出管脚DOUT 为高电平时,表明A/D 转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK 应为低电平。当DOUT 从高电平变低电平后,PD_SCK 应输入25 至27 个不等的时钟脉冲(如图3.2所示)。图3.2 数据输出、输入通道和增益选择时序图其中第一个时钟脉冲的上升沿将读出输出24 位数据的最高位(MSB),直至第24 个时钟脉冲完成,24 位输出数据从最高位至最低位逐位输出完成。第25至27 个时钟脉冲用来选择下一次A/D 转换的输入通道和增益 PD_SCK 的输入时钟脉冲数不应少于25 或多于27,否则会造成串口通讯错误。当A/D 转换器的输入通道或增益改变时,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。如果PD_SCK 从低电平变高电平并保持在高电平超过60s,HX711 即进入断电状态(图三)。如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A 和增益128 会被自动选择作为第一次A/D 转换的输入通道和增益。随后的输入通道和增益选择由PD_SCK 的脉冲数决定。芯片从复位或断电状态进入正常工作状态后,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。 3.1.3数据转换显示A/D转换结果D与被测量X存在以下关系: 式中:S传感器及其测量电路的灵敏度 A/D转换器满量程输入电压 A/D转换器满量程输出数字由于被测量X总是以其测量数字N和测量单位表示 所以得可见只要满足以下条件:则可以使A/D转换结果D与被测量x的数值N相等,即D=N,在这种情况下将A/D转换结果作为被测量的数值传送到显示器显示出来。3.2人机交互界面3.2.1键盘模块矩形键盘的结构与工作原理:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩形形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P3口)就可以构成44=16个按键,比之直接将端口线用于键盘读出一倍。矩阵式键盘的按键识别方法:确定矩阵式键盘上何键被按下,我们采取先列扫描后行扫描的方法。具体过程如下:判断键盘中有无键按下,首先将行全部为高电平,列全为低电平,然后检测行线的状态。只要有一行的电平为低,则表明键盘中有键被按下,而且闭合的键位于低电平线与4根列线相交叉的4个按键之中。若所以的行线均为高电平,则键盘中无键按下。判断闭合键所在的位置,在确定有4按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某行为低电平时,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,这该列与置为低电平的行线交叉处的按键就是闭合的按键。以下为键盘电路:各按键的功能为:0,1,2,3,4,5,6,7,8,9,这十个按键为数字键,其中“5”具有当出现错误时,返回上一步的功能;“.”为实现小数点的按键,“=”可实现得出运算结果,确定数据以及汇总的功能;+,-,*,/,这四个键可实现加减乘除四则运算,其中“+”还具有累计功能和进行下一步的功能,“-”还具有去皮清零功能,“*”还具有显示清单的功能,“/”还具有删除修改的功能。3.2.2显示模块我们采用JHD529M1型号的12864液晶显示器。该显示器具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.通过显示器的显示,我们可以显示出称量物体的重量,商品的单价金额,消费者消费商品的总价金额显示,以及显示购物清单。同时显示出购货日期和收银员编号。以下为显示模块电路:3.2.3时钟模块按发挥部分的要求,需要显示购货日期。最简单的办法是在电路中增加了一颗日历时钟芯片。我们采用串行接口的,如DS1302等,不过需要外加电池,保证系统失电时保存数据,编程较麻烦;不过它附加31字节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。与MCU的接口电路如图4所示。 3.2.4报警模块当电路检测到称重的物体的重量超出9.999Kg时,将产生一个信号给报警系统电路。使报警电路报警从而提醒工作人员注意。它是通过STC89C52的P10口来控制的,当超出设置的重量时(9.999Kg),通过程序使P10口值为高电平,从而使三极管导通,报警电路接通,使蜂鸣器发出报警声。以下为报警模块电路:。四、电路原理图1、 基于STC89C52单片机的主控电路图2、 基于HX711A/D转换器的电路图3、 人机交互界面部分电路图(1) 键盘接口图(2) 显示器接口图4、 报警系统电路图5、 算法计算5.1均值算法在对最多M个数据取平均操作中,其中最小数据和最大数据(外部数据)都从数据窗口中删除。对剩下的M-2个数据用下面的公式求平均值:采用均值移动方法可使输出数据速率与输入数据速率保持相同。这是一级平均。为了提高更新速率,通常使用二级平均以减小波形偏差。在这种情况下,第一级的输出通过第二级再取平均以进一步提高输出结果的精度。5.2减少称重变化的响应时间为了防止当电子称的称重发生变化时会出现问题。根据均值的算法,在滤波器的输出仅在滤波器更新M次后才能得到最准确的结果。响应时间受到均值点的数量限制。为此需要专门的算法来判断称重的变化。所有的数据将用最新的ADC数据更新,以便接下来的6个连续的均值周期可跳过数据恢复的时间。在6个更新周期后,平均再重新开始。如下为这种算法的流程图:5.3消除输出结果的闪烁对于1:5000和1:10000的标准范围,调整电子称可显示0.5g或1.0g的最小刻度。当称重是在两个相邻的显示称重值之间时,显示值将在这两个称重值之间发生闪烁。所以为了保持稳定的显示值,可使用如下算法:六、程序流程图 1、系统的主程序流程框图具体子程序的程序流程框图1)A/D转换部分程序流程框图2) 显示程序流程框图显示程序主要是来判断是否需要显示,以及如何去显示。3) 键盘扫描程序流程框图键盘电路设计成4X4矩阵式,在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。4) 时钟日历程序流程框图5)报警部分程序流程框图七、测试方法与测试数据1、 测量仪表4位半数字万用表(MASTECH MY-65),双踪示波器(YB4325),从1g到1000g的砝码(一套),计算器。2、 操作方法(1) 把传感器放平,接通电源,显示主界面,预热30分钟内,零点有飘移属正常;(2) 如果空称时显示不为零,可按去皮键“-”清零;如需去除器皿皮重,先在器皿上放物体,再按去皮键“-”,则显示净重;(3) 第一次使用或较长时间未用,则需用砝码标定;(4) 如果物体重量超出测量范围,蜂鸣器发出声音,发光二极管发光以示警告;(5) 单价设置时,先按设置键“+”,再用数字键输入单价(单价输入格式为xx.xx),可使用删除键“/”修改。3、 测量方法(1) 把电子称放平,预热30分钟以上;(2) 把1g到10000g的砝码往称上放,读取显示重量;(3) 设置单价,当物体重量发生变化时,读取相应的金额;(4) 使用累计功能,读取总金额;(5) 用1000g的砝码标称,标定功能;(6) 使用总汇功能。4、 测量数据及测量结果分析(1) 测试数据按照操作方法,在实验室对1g到10000g的砝码进行测试,从小到大,然后从大到小,间隔一定时间,共测量10个来回,共20次。(2) 测试结果及分析 表一、重量测量结果及误差分析实际重量(Kg)测试重量(Kg)绝对误差相对误差0.0010.001000.0020.002000.0090.0100.010.010.0190.0200.0050.050.0510.0500.020.020.1000.100000.1990.2000.0050.0050.5000.500000.9991.0000.0010.0011.0791.0800.00090.00091.0811.0800.00090.00090.9991.0000.0010.0010.4980.5000.0040.0040.1990.2000.0050.0050.0990.1000.010.010.0500.050000.0190.0200.050.050.0090.0100.10.10.0020.002000.0010.00100 表二、单价金额计算误差分析(随机重量和单价)实际重量(kg)单价(元/Kg)实际金额(元)显示金额(元)相对误差0.1003.000.30.290.0330.2004.570.9140.910.0040.5005.342.672.660.00371.0002.342.342.330.00430.8001.341.0721.060.01190.7002.341.6381.630.00480.0505.340.2670.260.0262八、结果分析通过测试,系统完全达到了设计要求,可以实现用键盘设置单价,加重后能同时显示重量、金额和单价;并增加了标定、时钟和过载提示三个创新功能。九、软件代码(附程序清单) /*/* 电子天平 */*/*/*商品初定义部分 */*/#include #include #include #define Read_com 0x01 /字节读数据储存区#define Prog_com 0x02 /字节编程数据储存区#define Dele_com 0x03 /扇区擦除数据储存区#define En_wait_time 0x81 /设置等待时间并使能ISP/IAP#define Start_addrh 0x20 /扇区地址高位#define Start_addrl 0x00 /扇区地址低位#define uchar unsigned char #define uint unsigned int#define ulong unsigned long#define ufloat unsigned float#define ENDA 0 #define second_address0x80#define minute_address0x82#define hour_address0x84 #define day_address 0x86#define month_address0x88#define week_address0x8A#define year_address0x8Csfr IAP_DATA = 0xE2;sfr IAP_ADDRH = 0xE3;sfr IAP_ADDRL = 0xE4; sfr IAP_CMD = 0xE5; sfr IAP_TRIG = 0xE6;sfr IAP_CONTR = 0xE7;typedef struct food/*定义商品特性的结构体*/uchar type5;/商品代码uchar name8;/商品名称uint number;/商品数量float price;/商品价格float weight; /商品重量float single_sum;uchar waiter_code5;/服务员代码float total_sum;/目前花费总额Food;void delay(uint);/*延迟函数*/int show();/*显示函数*/void show1(uchar p,uint t,uint d); /*显示辅助函数*/void show3(uchar s);/清单显示函数void exchange(float data1, uint d); /*浮点型与字符串的转化函数*/uchar checking();/商品代码检测函数float caculate(uchar w);/商品价格输入函数uchar code Type5=4555,4556,4558,4559,4655,4656,4658,4659,4888,4999;uchar code Waiter5=10,11,8,9,10,15,8,6,11,7;uchar code Name10=苹果,香蕉,梨子,西红柿,土豆,橘子,甘蔗,白砂糖,大米,大豆;Food commodity;uchar code cd=请输入商品代码: ;uchar code gh=您输入有误;uchar code jk=重新输入请按5;uchar code ln=价格:;uchar code so=目前总金额:;uchar code dw=重量kg:;uchar code qa=商品代码:;uchar code qb=服务员代号:;uchar code qc=商品名称:;uchar code qd=元;uchar code qf=金额:;uchar code date1=日期:;uchar code date=请输入服务日期:;uchar code address=欢迎光临步步高;uchar code give_up=请您输入去皮重量;uchar code stater= 电子天平;uchar code fg=kg;uchar code cunchu=请选择储存位置;uchar code select=请您选择服务类型;uchar code selectn=1.电子称 2.查询;uchar code fe=存储区;unsigned long ped;uchar wer;uchar ab10,ef2;uchar qe;/uchar time;uchar wab;unsigned long opp;uchar vn;uchar time110;uchar single10;sbit clock_rst = P35;sbit clock_io = P34; sbit clock_sclk= P36;sbit ACC0 = ACC 0;sbit ACC7 = ACC 7;unsigned char l_tmpdate7=0x0,0x0,0x13,0x15,4,4,0x11;/秒分时日月周年08-05-15 12:00:00/sbit ADDO=P11;/重力传感器串行接口sbit ADSK=P13;sbit Buzzer=P10; /蜂鸣器unsigned long ReadCount(void);void ad(); /重量计算函数/*/*12864显示器的初定义 */*/sbit rs=P31;sbit rw=P32;sbit ep=P37;sbit psb=P33;sbit rst=P30;void order(uchar x); /写指令函数void write_date(uchar a); /写数据函数bit test(); /检测函数void lcd_init(); /初定义函数void lcd_pos(uchar X,uchar Y); /位置选择函数void clr_screen(); /清屏函数/*/* 键盘的初定义 */*/uchar dis_buf; /显示缓存uchar temp;uchar key; /键数值码void keydown(void);/判断是否按下键void keyscan(void);/扫描函数uchar keychange();/扫描后转化函数/*/* EEPROM初定义 */*/void selecting();void elect11();uchar input_in();void output_out();void Isp_Iap_Disable();uchar Byte_read(uint byte_addr);/度函数void Byte_program(uint byte_addr, uchar isp_iap_data); /写函数void Sector_erase(uint sector_addr); /擦除扇形区域函数/*/* 时钟初定义 */*/void Clock_Write_Byte(uchar temp);uchar Clock_Read_Byte(void);void Clock_Write_Time(uchar address, uchar temp);uchar Clock_Read_Time(uchar address);void Clock_Set();void Clock_Get_Time();void abcd();/* 商品定初化函数 */void exchange(float data1, uint d) unsigned long integral_part=0; /整数部分 float decimal_part=0; /小数部分 unsigned long temp; uchar i,n; integral_part =(unsigned long)(data1); /整数部分 temp=integral_part; n=0; do n+; temp=(unsigned long)(temp/10); /得到整数部分位数n while(temp!=0); temp=integral_part; for( i=0; (in)&(i10); i+) *(ab + n-1-i)=(uchar)(temp%10) +0; temp=(unsigned long)(temp/10); if( (d=0) | (i=10) ) *(ab +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论