版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.:.; 适用电子称A 设 计 报 告 学院: 参赛队员: 指点教师: 一、 引言 摘要 为满足适用电子称的要求,经过对各个单元电路方案的比较论证及确定。本系统采用单片机STC89C52为控制中心,实现电子称的根本控制功能。系统的硬件部分根本包括最小系统板、数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号处置部分和A/D转换部分组成。人机界面部分为键盘输入,12864点阵式液晶显示,可以直观的显示中文。同时在此根底上本系统添加了报警电路,以免丈量量超出丈量范围。 软件部分运用单片机C言语实现本设计的全部控制功能,包括根本的称重功能,去皮功能
2、,总额累加计算和发扬部分的显示购物清单的功能,可以设置日期并显示购物日期、收银员编号、售货单位和重新设定10种商品的单价,具有超重报警功能。 此电子称具备了功能多、性能价钱比高、功耗低、系统设计简单、运用方便直观、速度快、丈量准确、自动化程度高等特点。技术报告以电子称的设计为主线,包括电子称的软硬件设计,以及控制算法研讨等,共分为六章。其中,第一部分为引言部分;第二部分主要引见了电子称的总体方案的选取,对单片机资源的分配作了阐明。第四部分对电子称的硬件设计进展了详细的引见,主要引见了电路的设计;第五部分描画了电子称的软件设计和相关算法。第六部分中表达了我们在设计过程中遇到的问题和处理方法。二、
3、 电子称整体设计方案论证 按照设计功能的要求,本系统由5个部分组成:控制器部分、数据采集部分、人机交互界面、时钟日历电路和报警电路。系统设计总体方案框图如图2.1所示: 数据采集部分是利用称重传感器检测压力信号,得到微弱的电信号,而后经放大电路部分处置后送入A/D转换器,将模拟信号转换为数字量输出。控制器部分接受A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实践分量信号,并将其储存到外部储存器中。在人机交互部分,控制器还要经过对扩展I/O的控制,对键盘进展扫描,而后经过一些程序实现对整个系统的控制,并根据需求经过数据显示器显示功能。报警系统部分,当称量物体的分量超出称量范围
4、时,系统发出警告信息。2.1 控制器选取方案一:采用大规模可编程逻辑器件来实现,由于系统需求大量控制液晶显示器和键盘。由于大规模可编程逻辑器件普通是运用形状机方式来实现,即所处理的问题都是规那么的有限形状转换问题。本系统形状较多,难度系数较大。故不宜采用大规模可编辑逻辑器件:CPLD、FPGA来实现。方案二:采用51系列单片机来实现。由于系统需求大量控制液晶显示器和键盘,另外系统没有其他高规范的要求,有思索到本设计中程序部分比较大,根据总方案设计的分析,可以选用带EPROM的单片机,由于运用程序不大,运用程序直接储存在片内,不用在外部扩展存储器中,可一定程度上简化电路。INTEL公司的8051
5、和8751都可以运用,在这里选用STC公司消费的AT89SXX系列单片机。STC89CXX系列与MCS-51相比有两大优势:第一,片内储存器采用闪速存储器,使程序写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路体积更小。此外,价钱低廉、采用80C51中心处置器单元,具有1K字节RAM;64/32/16/8kB片内Flash程序存储器,支持12时钟(默许)或6时钟方式,4个8位I/O接口。这些设备可以很好地实行本仪器的丈量和控制要求。最后我们最终选择了方案二,并采用STC89C52这个单片机来实现系统的功能要求。内部带有8KB的程序存储器,在外面扩展了32K数据存储器,以满足系统要求。2.
6、2数据采集方案的选取2.2.1传感器部分方案一:采用电阻应变式称重传感器电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的分量转换为弹性体得应变值;另一个是电阻应变计:它作为传感元件井弹性体的硬币,同步地转换为电阻值的变化。在电阻应变式称重传感器中经过桥式电路将电阻的变化转换为电压变化。它包含一个具有至少两个可变桥臂的4电阻构造的电桥,其中由由所称分量引起的电阻变化可产生一个叠加在电源电压的一半共模电压之上的差分电压。电阻应变式传感器任务原理框图如图2-2所示:电压敏感元件应变片丈量电桥载荷p应变电阻变化R输出图2-2电阻应变式称重传感器任务原理框图电阻应变式称重传感器桥
7、式丈量电路如图2-3所示:R1、R2、R3、R4为4个应变片电阻,组成了桥式丈量电路,Rm为温度补偿电阻,e为鼓励电压,V为输出电压。图2-3桥式丈量电路当弹性体接受载荷产生变形时,输出信号电压可由下式给出:由于丈量电桥采用惠更斯电桥,且惠更斯电桥具有抑制温度变化的影响,抑制干扰,补偿方便等优点。所以该传感器丈量精度高,温度特性好,任务稳定等优点。同时全桥式等臂电桥的灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,所以在本设计中我们采用该方案。方案二:采用压磁式称重传感器它是一种力电转换的无源传感器。它的任务原理是利用压磁效应,将被称分量的变化变换成传感器导磁体的导磁率变化并输出电信号。
8、压磁传感器具有输出信号大、抗干扰性能好、过载才干强、不均匀载荷对丈量准确度的影响小,但准确度低、反响速度慢。所以不采用该方案。方案三:采用电容式称重传感器它是以各种不同类型的电容器作为转换元件,是一个具有可变参数的电容器。电容式传感器由于它存在输出特性的非线性、寄生电容和分布电容对灵敏性和称重精度的影响、传感器联接电路比较复杂等缘由,直接影响到它的可靠性,所以不采用该方案。经过对三种方案的分析和比较,又由于本系统要求最大称重为9.999公斤,分量误差不大于0.005公斤,且思索到称台自重、振动和冲击分量,还有防止超重损坏传感器,所以传感器量程必需大于额定称重9.999公斤。综上我们最终采用矽普
9、电子HL-8型称重传感器,额定量程为15Kg,精度为0.01%,满程误差为0.005kg。可以满足本系统的精度要求。表一 称重传感器技术参数量程Kg3, 15综合误差%F.S0.05额定输出温度漂移%F.S/100.15灵敏度mv/v1.00.1零点输出mv/v0.1非线性%F.S0.05输入电阻100050反复性%F.S0.05输出电阻100050滞后%F.S0.05绝缘电阻M2000100VDC蠕变%F.S/3min0.05引荐鼓励电亚V510零点漂移%F.S/1min0.05任务温度范围-10+50零点温度漂移%F.S/100.2过载才干%F.S1502.2.2A/D转换器部分由于本系统
10、设计要求最大称重为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一切位的转换同时完成,其中转换时间主要取决于比较器的开关速度、编码器的传输时间延迟等。缺陷是
11、:并行比较式A/D转换的抗干扰才干差,由于工艺限制,其分辨率普通不高于8位,因此并行比较式A/D只适宜于数字示波器等转换速度较快的仪器中,不适宜本系统。方案二:逐次逼近型A/D转换器:如ADS7805、ADS7804等。逐次逼近型ADC是运用广泛的模/数转换方法,这一类型ADC的优点:高速,采样速率可达1MSPS;与其他ADC相比,功耗相当低;在分辨率低于12位时,价钱较低。缺陷:在高于14位分辨率情况下价钱较高;传感器产生的信号在进展模/数转换之前需求进展调理,包括增益级和滤波,这样会明显添加本钱。故该方案不可采用。方案三:积分型A/D转换器:如ICL7。积分型ADC又称为双斜率或多斜率AD
12、C,是运用比较广泛的一类转换器。它的根本原理是经过两次积分将输入的模拟电压转换成与其平均值成正比的时间间隔。于此同时,在此时间间隔内利用计数器对时钟脉冲进展计数,从而实现A/D转换。积分型ADC两次积分的时间都是利用同一个时钟发生器和计数器来确定,因此所得到的表达式与时钟频率无关,其转换精度只取决于参考电压VR。此外,由于输入端采用了积分器,所以对交流噪声的干扰有很强的抑制才干。假设把积分器定时积分的时间取为工频信号的整数倍,可把由工频噪声引起的误差减少到最小,从而有效地抑制电网的工频干扰。这类ADC主要运用于低速、精细丈量等领域。其优点是分辨率高,可达22位;功耗低、本钱低。缺陷是:转换速率
13、低,转换速率在12位时为100300SPS。所以思索到分辨率要在14位以上,而该类ADC的转换速率较低,故不采用该方案。方案四:采用技术制成的ADC转换芯片该类芯片具有较高集成度,通常集放大器、模拟开关、A/D转换器、比较器、数字滤波器、输出接口集于一体。仅需几个外围器件便可构成一个完好的A/D转换系统,大大减少了电路的复杂度。由于其集成度高,所以缺点概率较采用分立元件A/D转换系统有明显降低,进而提高系统可靠性。此外,其内部置高性能仪表放大器,大大降低对信号源的要求。电子称电阻应变式称重传感器输出信号为mV级,假设采用普通的A/D转换器往往需求放大后才干进展A/D转换。而A/D转换器大都采用
14、了增益可编程放大器,可编程数字滤波、多种自校准技术等多项先进技术,并多数采用微处置器来管理与控制转换程序,由于采用了多种综合技术措施,放大器的增益调整、数字滤波和误差校正都集中在同一芯片中,外围器件少,运用方便可靠。故采用该方案。经过对以上几种方案的分析与比较,我们最终采用了矽普电子的HX711型称重传感器公用24位模拟/数字A/D转换器芯片。该芯片集成了包括稳压电源、片内时钟振荡器模拟开关、A/D转换器、比较器、数字滤波器等以及其它同类型芯片所需求的外围电路,具有集成度高、呼应速度快、抗干扰性强等优点。降低了电子秤的整机本钱,提高了整机的性能和可靠性。2.2.3放大器选取由于采用技术制成的A
15、DC转换芯片HX711,其内部置高性能仪表放大器,大大降低对信号源的要求。且可编程增益为128 或64,对应的满额度差分输入信号幅值分别为20mV 或40mV 。所以不需求添加放大电路部分。2.3人机交互界面方案选取 2.3.1键盘输入由于电子称需求设置单价十个数字键,还需具有确认、删除等功能,总共需设置16个键。键盘的扩展方案为:采用矩阵式键盘:矩阵式键盘的特点是把检测线分为两组,一组为行线,一组为列线,按键放在行线和列线的交叉点上。当键盘的数量大于8个时,普通都采用矩阵式键盘。图2-4给出了一个44的矩阵键盘构造的键盘接口电路,图中的每一个按键都经过不同的行线和列线与主机相连。44的矩阵键
16、盘共可安装16个键,但只需8条测试线。2.3.2显示输出部分方案一:采用带有字库的点阵图形液晶显示模块显示。点阵图形液晶模块是一种用于显示各类图像、符号、汉字的显示模块,其显示屏的点阵像素延续陈列,行和列在排布中没有间隔,因此可以显示延续、完好的图形。当然它也能显示字母、数字等字符。由于设计要求显示的全部内容采用中文显示,所以要求的显示器必需带有中文字库。该类显示器具有功耗低、体积小、质量轻、超薄和可编程等优点。故可以采用该方案。方案二:采用LED数码管显示。数码管只能显示有限的数字和符号,显示内容少,无法满足设计要求。故不采用该方案。经过对以上方案的分析和比较,我们采用带中文字库的12864
17、液晶显示器。它具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵敏的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路构造或显示程序都要简约得多,且该模块的价钱也略低于一样点阵的图形液晶模块。2.3.3报警系统在本系统中,设置报警的目的就是在超出电子称丈量范围时,
18、发出声光报警信号,提示用户,防止损坏仪器。超限报警电路是有单片机的I/O口来控制的,当称重物体分量超越系统设计所允许的分量时,经过程序使单片机的I/O值为高电平,从而使三极管导通,使蜂鸣器发出报警声,同时使报警灯发光。三、实际分析经过方案的论证分析,我们确定出该系统的详细方案。按照设计功能的要求,本系统由4个部分组成:控制器部分、数据采集部分、人机交互界面和报警电路。系统设计总体方案框图如图2.1所示:3.1控制器部分3.1.1单片机芯片STC89C52引见单片机采用MCS-51系列单片机。由宏晶科技消费的STC89C52是一种抗干扰才干强、高速、低功耗的单片机,指令代码完全兼容传统8051单
19、片机,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为可编程定时计数器
20、。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处置器和Flash存储器结合在一同,特别是可反复擦写的Flash存储器可有效地降低开发本钱。其芯片引脚图如以下图所示。3.1数据采集部分 3.1.1数据采集元件 传感器 传感器实践上是一种将质量信号转变为可丈量的电信号输出的安装。用传感器首先要思索传感器所处的实践任务环境,这一点对正确运用传感器至关重要,它关系到传感器能否正常任务以及它的平安和运用寿命,乃至整个系统的可靠性和平安性。因此传感器外围电路的抗干扰才干是数据采集部分电路设计的关键环节。传感器检测电路的功能是把电阻应变片的电阻变化转变为电压输出。常
21、用的电阻应变片有两种:电阻丝应变片和半导体应变片,本设计中采用的是电阻丝应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线栅上面粘有覆盖层,起维护作用。电阻应变片也会有误差,产生的要素很多,所以丈量时我们一定要留意,其中温度的影响最重要,环境温度影响电阻值变化的缘由主要是:电阻丝温度系数引起。电阻丝与被测元件资料的线膨胀系数的不同引起的。 对于因温度变化对桥接零点和输出灵敏度的影响,即使采用同一批应变片,也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必需进展温度补偿,处理的方法是在被粘贴的集片上采用适当温度系数的自动补偿片,并从外部对它
22、加以适当的补偿。非线性误差是传感器特性中最重要的一点。产生非线性误差的缘由很多,普通来说主要是由构造设计决议,经过线性补偿,也可以得到改善。滞后和蠕变是关于应变片及粘合剂的误差。由于粘合剂为高分子资料,其特性随温度变化较大,所以称重传感器必需在规定的温度范围内运用。我们采用的是矽普电子HL-8型称重传感器,额定量程为15Kg,精度为0.01%,满程误差为0.005kg。该称重传感器采用全桥式等臂电桥。传感器的安装由于我们采用的传感器为HX711称重传感器,根据该传感器的受力方式和安装阐明,见图4.1.1和图4.1.2。我们决议采用如图4.1.3所示的安装方式。传感器受力方式:图4
23、.1.1安装阐明:图4.1.2安装方式: A/D转换器部分由于采用的HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需求的外围电路,具有集成度高、呼应速度快、抗干扰性强等优点。同时降低了电子秤的整机本钱,提高了整机的性能和可靠性。并且该芯片与后端MCU 芯片的接口和编程非常简单,一切控制信号由管脚驱动,无需对芯片内部的存放器编程。芯片内的时钟振荡器不需求任何外接器件。上电自动复位功能简化了开机的初始化过程。以下为HX711管脚阐明:管脚号称号性能描画1VSUP电源稳压电路供电电源:2.65.5V(不
24、用稳压电路时应接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
25、: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
26、 或多于27,否那么会呵斥串口通讯错误。当A/D 转换器的输入通道或增益改动时,A/D 转换器需求4 个数据输出周期才干稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。假设PD_SCK 从低电平变高电平并坚持在高电平超越60s,HX711 即进入断电形状图三。如运用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平常,芯片会自动复位后进入正常任务形状。芯片从复位或断电形状进入正常任务形状后,通道A 和增益128 会被自动选择作为第一次A/D 转换的输入通道和增益。随后的输入通道和增益选择由PD_SCK 的脉冲数决议。芯
27、片从复位或断电形状进入正常任务形状后,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键盘模块矩形键盘的构造与任务原理:在键盘中按键数量较多时,为了减
28、少I/O口的占用,通常将按键陈列成矩形方式。在矩阵式键盘中,每条程度线和垂直线在交叉处不直接连通,而是经过一个按键加以衔接。这样,一个端口如P3口就可以构成44=16个按键,比之直接将端口线用于键盘读出一倍。矩阵式键盘的按键识别方法:确定矩阵式键盘上何键被按下,我们采取先列扫描后行扫描的方法。详细过程如下:判别键盘中有无键按下,首先将行全部为高电平,列全为低电平,然后检测行线的形状。只需有一行的电平为低,那么阐明键盘中有键被按下,而且闭合的键位于低电平线与4根列线相交叉的4个按键之中。假设所以的行线均为高电平,那么键盘中无键按下。判别闭合键所在的位置,在确定有4按下后,即可进入确定详细闭合键的
29、过程。其方法是:依次将行线置为低电平,即在置某行为低电平常,其他线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平形状。假设某列为低,这该列与置为低电平的行线交叉处的按键就是闭合的按键。以下为键盘电路:各按键的功能为:0,1,2,3,4,5,6,7,8,9,这十个按键为数字键,其中“5具有当出现错误时,前往上一步的功能;“.为实现小数点的按键,“=可实现得出运算结果,确定数据以及汇总的功能;+,-,*,/,这四个键可实现加减乘除四那么运算,其中“+还具有累计功能和进展下一步的功能,“-还具有去皮清零功能,“*还具有显示清单的功能,“/还具有删除修正的功能。3.2.2显示模块我们采
30、用JHD529M1型号的12864液晶显示器。该显示器具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示HYPERLINK blog.mop/diary/main/diarySearchMore.jsp?v=模块模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵敏的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.经过显示器的显示,我们可以显示出称量物体的分量,商品的单价金额,消费者消费商品的总价金额显示,以及显示
31、购物清单。同时显示出购货日期和收银员编号。以下为显示模块电路:3.2.3时钟模块按发扬部分的要求,需求显示购货日期。最简单的方法是在电路中添加了一颗日历时钟芯片。我们采用串行接口的,如DS1302等,不过需求外加电池,保证系统失电时保管数据,编程较费事;不过它附加31字节静态 RAM,采用 SPI 三线接口与 CPU 进展同步通讯,并可采用突发方式一次传送多个字节的时钟信号和 RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。任务电压宽达2.55.5V。采用双电源供电主电源和备用电源,可设置备用电源充电方式,提供了对后背电源进展涓细电流
32、充电的才干。与MCU的接口电路如图4所示。 3.2.4报警模块当电路检测到称重的物体的分量超出9.999Kg时,将产生一个信号给报警系统电路。使报警电路报警从而提示任务人员留意。它是经过STC89C52的P10口来控制的,当超出设置的分量时9.999Kg,经过程序使P10口值为高电平,从而使三极管导通,报警电路接通,使蜂鸣器发出报警声。以下为报警模块电路:。四、电路原理图基于STC89C52单片机的主控电路图基于HX711A/D转换器的电路图人机交互界面部分电路图键盘接口图显示器接口图报警系统电路图算法计算5.1均值算法在对最多M个数据取平均操作中,其中最小数据和最大数据外部数据都从数据窗口中
33、删除。对剩下的M-2个数据用下面的公式求平均值:采用均值挪动方法可使输出数据速率与输入数据速率坚持一样。这是一级平均。为了提高更新速率,通常运用二级平均以减小波形偏向。在这种情况下,第一级的输出经过第二级再取平均以进一步提高输出结果的精度。5.2减少称重变化的呼应时间为了防止当电子称的称重发生变化时会出现问题。根据均值的算法,在滤波器的输出仅在滤波器更新M次后才干得到最准确的结果。呼应时间遭到均值点的数量限制。为此需求专门的算法来判别称重的变化。一切的数据将用最新的ADC数据更新,以便接下来的6个延续的均值周期可跳过数据恢复的时间。在6个更新周期后,平均再重新开场。如下为这种算法的流程图:5.
34、3消除输出结果的闪烁对于1:5000和1:10000的规范范围,调整电子称可显示0.5g或1.0g的最小刻度。当称重是在两个相邻的显示称重值之间时,显示值将在这两个称重值之间发生闪烁。所以为了坚持稳定的显示值,可运用如下算法:六、程序流程图 1、系统的主程序流程框图详细子程序的程序流程框图1)A/D转换部分程序流程框图显示程序流程框图显示程序主要是来判别能否需求显示,以及如何去显示。键盘扫描程序流程框图键盘电路设计成4X4矩阵式,在程序中可以先判别按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进展功能选择或数据处置。时钟日历程序流程框图5报警部分程序流程框图七、测试方法与测试数据
35、丈量仪表4位半数字万用表MASTECH MY-65,双踪示波器YB4325,从1g到1000g的砝码一套,计算器。操作方法把传感器放平,接通电源,显示主界面,预热30分钟内,零点有飘移属正常;假设空称时显示不为零,可按去皮键“-清零;如需去除器皿皮重,先在器皿上放物体,再按去皮键“-,那么显示净重;第一次运用或较长时间未用,那么需用砝码标定;假设物体分量超出丈量范围,蜂鸣器发出声音,发光二极管发光以示警告;单价设置时,先按设置键“+,再用数字键输入单价单价输入格式为xx.xx,可运用删除键“/修正。丈量方法把电子称放平,预热30分钟以上;把1g到10000g的砝码往称上放,读取显示分量;设置单
36、价,当物体分量发生变化时,读取相应的金额;运用累计功能,读取总金额;用1000g的砝码标称,标定功能;运用总汇功能。丈量数据及丈量结果分析测试数据按照操作方法,在实验室对1g到10000g的砝码进展测试,从小到大,然后从大到小,间隔一定时间,共丈量10个来回,共20次。测试结果及分析 表一、分量丈量结果及误差分析实践分量(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.5
37、00000.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.0020.002000.0010.00100 表二、单价金额计算误差分析随机分量和单价实践分量(kg)单价元/Kg实践金额(元)显示金额元相对误差0.1003.000.30.290.0330.2004.570.9
38、140.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 0 x01 /字节读数据储
39、存区#define Prog_com 0 x02 /字节编程数据储存区#define Dele_com 0 x03 /扇区擦除数据储存区#define En_wait_time 0 x81 /设置等待时间并使能ISP/IAP#define Start_addrh 0 x20 /扇区地址高位#define Start_addrl 0 x00 /扇区地址低位#define uchar unsigned char #define uint unsigned int#define ulong unsigned long#define ufloat unsigned float#define ENDA
40、0 #define second_address0 x80#define minute_address0 x82#define hour_address0 x84 #define day_address 0 x86#define month_address0 x88#define week_address0 x8A#define year_address0 x8Csfr IAP_DATA = 0 xE2;sfr IAP_ADDRH = 0 xE3;sfr IAP_ADDRL = 0 xE4; sfr IAP_CMD = 0 xE5; sfr IAP_TRIG = 0 xE6;sfr IAP_C
41、ONTR = 0 xE7;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 sho
42、w3(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 comm
43、odity;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=欢迎光临步步高;u
44、char 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;s
45、bit clock_rst = P35;sbit clock_io = P34; sbit clock_sclk= P36;sbit ACC0 = ACC 0;sbit ACC7 = ACC 7;unsigned char l_tmpdate7=0 x0,0 x0,0 x13,0 x15,4,4,0 x11;/秒分时日月周年08-05-15 12:00:00/sbit ADDO=P11;/重力传感器串行接口sbit ADSK=P13;sbit Buzzer=P10; /蜂鸣器unsigned long ReadCount(void);void ad(); /分量计算函数/*/*12864显示器
46、的初定义 */*/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
47、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 s
48、ector_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 in
49、tegral_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
50、=(unsigned long)(temp/10); if( (d=0) | (i=10) ) *(ab + i) =ENDA; else *(ab + i) = .; decimal_part = data1 - integral_part; /小数部分 for(i=n+1; (id+n+1)&(i10); i+) decimal_part = decimal_part * 10; *(ab + i) = (uchar)(decimal_part) +0; decimal_part = decimal_part - (uchar)(decimal_part); *(ab+ i) = ENDA
51、; void show1(uchar p,uint t,uint d) uchar i=0;delay(10);lcd_pos(t,d);while(pi!=0)write_date(pi);i+;if(vn=0)delay(1000);int show()uchar t;lcd_init();delay(1000);clr_screen();vn=1;show1(cd,1,0);vn=0;t=checking();delay(100);clr_screen();if(t10)time1wer=t;wer+;vn=1;show1(qa,1,0);strcpy(commodity.type,Ty
52、pet);show1(commodity.type,1,5);show1(qb,2,0);strcpy(commodity.waiter_code,Waitert);show1(commodity.waiter_code,2,6);show1(qc,3,0);strcpy(,Namet);show1(,3,5);vn=0;while(1)keydown();t=keychange();P2=0 xF0;delay(100);if(t=+)break;commodity.price=caculate(0);if(qe=0)while(1)a
53、d();P2=0 xF0;delay(100);keydown();t=keychange();P2=0 xF0;delay(100);if(t=*)break;vn=1; delay(100);commodity.total_sum=commodity.weight*commodity.price+commodity.total_sum;delay(100);clr_screen();show1(dw,1,0);exchange(commodity.weight,3);delay(100);show1(ab,1,4);delay(100);exchange(commodity.price,2
54、);delay(100);show1(ln,2,0);show1(ab,2,3);show1(qd,2,7);commodity.single_sum=commodity.weight*commodity.price;exchange(commodity.single_sum,2);delay(100); show1(qf,3,0);show1(ab,4,2);show1(qd,4,5);strcpy(single,ab);input_in();vn=0;P2=0 xF0;delay(100);while(1)keydown();delay(1000);t=keychange();P2=0 x
55、F0;delay(1000);if(t=+)qe=0;return show();else if(t=)vn=1;delay(100);Byte_program(ped, wer);ped=ped+1;for(t=0;t10;t+)Byte_program(ped+, time1t);ped=ped-11;output_out();vn=0;delay(10);vn=1;P2=0 xF0;delay(100);clr_screen();/show1(dw,1,0);/*if(wab=0)vn=caculate(1);wab=1;*/exchange(vn,4);/l_tmpdate7=0,30
56、,5,14,4,4,11;Clock_Get_Time();delay(1000);ab0=(uchar)(l_tmpdate6/16)+0;ab1=(uchar)(l_tmpdate6&0 x0f)+0;ab2=_; ab3=(uchar)(l_tmpdate4/16)+0;ab4=(uchar)(l_tmpdate4&0 x0f)+0;ab5=_;ab6=(uchar)(l_tmpdate3/16)+0;ab7=(uchar)(l_tmpdate3&0 x0f)+0;ab8=0;/show1(ab,2,0);delay(100);clr_screen();show1(date1,1,0);
57、ped=ped+11;for(wab=0;wab10;wab+)Byte_program(ped+, abwab);ped=ped-21;ped=ped+11;for(wab=0;wab10;wab+)abwab=Byte_read(ped+);ab10=0;show1(ab,1,3);ped=ped-21;show1(address,2,0);exchange(commodity.total_sum,2);ped=ped+21;for(wab=0;wab10;wab+)Byte_program(ped+, abwab);ped=ped-31;ped=ped+21;for(wab=0;wab1
58、0;wab+)abwab=Byte_read(ped+);ab10=0;ped=ped-31;wab=0;show1(so,3,0);show1(ab,4,0);show1(qd,4,6);delay(100);vn=0;else if(t=/)selecting();elseshow1(gh,1,0);show1(jk,2,0);P2=0 xF0;delay(100);while(1)keydown();t=keychange();P2=0 xF0;delay(1000);if(t=5)break;/qe=0;return show();while(1);void delay(uint i)
59、 /延迟函数uchar j;while(i-)for(j=0;j250;j+);_nop_();_nop_();_nop_();_nop_();void show3(uchar s)uchar i,t;i=s;clr_screen();show1(qa,1,0);strcpy(commodity.type,Typetime1i);show1(commodity.type,1,5);show1(qb,2,0);strcpy(commodity.waiter_code,Waitertime1i);show1(commodity.waiter_code,2,6);show1(qc,3,0);strc
60、py(,Nametime1i);show1(,3,5);show1(qf,4,0);show1(single,4,3);show1(qd,4,7);while(1)keydown();t=keychange();P2=0 xF0;delay(100);if(t=+)break;unsigned long ReadCount(void)unsigned long Count;unsigned char i;ADDO=1;ADSK=0;Count=0;while(ADDO);for(i=0;i24;i+)ADSK=1;Count=Count1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论