为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

011电子秤

2010-08-13 26页 doc 986KB 23阅读

用户头像

is_379889

暂无简介

举报
011电子秤 【摘要】 本系统采用单片机 AT89C52 为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和 A/D 转换部分组成。人机界面部分为键盘输入 ,点阵式液晶显示,可以直观的显示中文,使用方便。 软件部分应用单片机 C 语言实现了本设计的全部控制功能,包括基本的称重功能,和发挥部分的显示购物清单的功能,可以设置日期和重新设定 10 种商品的单价,具有超重报警功能,由于系统资源丰富,还可以方便的扩展其...
011电子秤
【摘要】 本系统采用单片机 AT89C52 为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和 A/D 转换部分组成。人机界面部分为键盘输入 ,点阵式液晶显示,可以直观的显示中文,使用方便。 软件部分应用单片机 C 语言实现了本的全部控制功能,包括基本的称重功能,和发挥部分的显示购物清单的功能,可以设置日期和重新设定 10 种商品的单价,具有超重报警功能,由于系统资源丰富,还可以方便的扩展其应用。 【关键字】压力传感器 单片机 A/D转换器 LED显示器 Abstract:The design is based on the microcontroller AT89C52 system, has reliably actualized the meterage of weigh from 10g to 10Kg , and has the part of sampling circuit composed of ICL7135 、 a differential measuring amplifier .Our system can accurately measure weigh, and calculate the price .The data collected are processed by the microcontroller and then displayed in the LCD. In addition, to make the display more visual and convenient, our system can easily display the bill of every buyers. Key word: microcontroller, meterage, sampling circuit, differential measuring amplifier LCD, weight , bill 前言 称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域,与人民的生活紧密相连。电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。因此,称重技术的研究和衡器工业的发展各国都非常重视。 随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。 作为重量测量仪器,智能电子秤在各行各业开始显现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统型的机械杠杆测量称,成为测量领域的主流产品。 1 总体设计 1.1 电子秤的工作原理 当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由放大电路进行放大、经滤波后再由模/数(A/D)器进行转换,数字信号再送到微处器的CPU处理,CPU不断扫描键盘和各种功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、分析、由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,CPU发出指令,从内存贮器中读出送到显示器显示,或送打印机打印。一般地信号的放大、滤波、A/D转换以及信号各种运算处理都在仪表中完成。 1.2 电子秤的基本组成 本设计由以下四部分组成:电阻应变传感器、信号放大系统、模数转换系统、显示器。其原理图如下图1所示。 测量过程是把被测物体的重量通过传感器将重量信号转化为电压信号输出,放大系统把来自传感且微弱信号放大,放大后的电压信号经过模数转换把模拟量转换成数字量,数字量通过数字显示器显示重量。传感器的测量电路我们选用单臂电桥测量电路,应变电阻作为桥臂电阻接在电桥电路中。无压力时,电桥平衡,输出电压为零;有压力时,电桥的桥臂电阻值发生变化,电桥失去平衡,有相应电压输出。 图1 总体方案设计框图 2 硬件电路设计 2.1传感器的选择 称重传感器在电子秤中占有十分重要的位置,被喻为电子秤的心脏部件,它的性能好坏很大程度上决定了电子秤的精确度和稳定性。通常称重传感器产生的误差约占电子秤整机误差的50%~70%。若在环境恶劣的条件下(如高低温、湿热),传感器所占的误差比例就更大,因此,在人们设计电子秤时,正确地选用称重传感器非常重要。本次设计中选用电阻应变式称重传感器。 电阻应变式称重传感器是把电阻应变计粘贴在弹性敏感元件上,然后以适当方式组成电桥的一种将力(重量)转换成电信号的传感器。 电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的重量转换为弹性体的应变值;另一个是电阻应变计:它作为传感元件将弹性体的应变,同步地转换为电阻值的变化。电阻应变片所感受的机械应变量一般为10 - 6~10 - 2,随之而产生的电阻变化率也大约在10 - 6~10 - 2数量级之间。这样小的电阻变化用一般测量电阻的仪表很难测出,必须采用一定形式的测量电路将微小的电阻变化率转变成电压或电流的变化,才能用二次仪表显示出来。在电阻应变式称重传感器中通过桥式电路将电阻的变化转换为电压变化。电阻应变式称重传感器工作原理框图如图2所示: 载荷P 应变 电阻变化 R 输出电压 图2 电阻应变式称重传感器工作原理框图 当传感器不受载荷时,弹性敏感元件不产生应变,粘贴在其上的应变片不发生变形,阻值不变,电桥平衡,输出电压为零;当传感器受力时,即弹性敏感元件受载荷P时,应 变片就会发生变形,阻值发生变化,电桥失去平衡,有输出电压。 称重传感器的主要性能指标: (1)传感器的输出灵敏度 传感器在额定载荷作用下,供桥电压为1V时的输出电压,单位为(mV/V)。在任一载荷下,传感器的输出电压 =所加载荷×供桥电压×输出灵敏度/额定载荷。 (2)非线性 传感器承受载荷与其相应输出电压之间并非成完全的线性关系,由此而造成的误差称为传感器的非线性误差。 (3)不重复性 在同一环境条件下,对传感器反复施加某载荷时,其每次输出的电压值不尽相同,这种现象称为传感器的不重复性。 (4)零点不平衡输出 在传感器不受任何载荷条件下,传感器输入端以额定的供桥电压时的输出电压,称为零点不平衡输出。 本次设计中选用L-PS II-10型压力传感器,为双孔悬臂梁形式,是电子计价秤的专用产品,也可用于制造由单只传感器构成的电子案秤,台秤及专用衡器等,其主要技术指标如表一所示, 表一 压力传感器主要技术指标 准确度等级 Accuracy class C3 0.02 0.03 额定载荷Rated load kg 3、6、10、20、30、50 灵敏度 Sensitivity mV/V 1.8±0.08 非线性 Nonlinearity %F.S. ±0.02 滞后 Hysteresis 0.02 重复性 Repeatability 0.02 蠕变 Creep %F.S./30min ±0.02 蠕变恢复 creep recovery 零点输出 Zero balance %F.S. ±1 零点温度系数 Zero temperature coefficient %F.S./10℃ ±0.02 额定输出温度系数Rated output temperature coefficient 输入电阻 Input resistance Ω 415~445 输出电阻 Output resistance Ω 349~355 绝缘电阻 Insulation resistance MΩ ≥5000 供桥电压 Supply voltage V 12(DC/AC) 温度补偿范围 Temperature compensation range ℃ -10~+50 允许温度范围 Safe temperature range ℃ -20~+60 允许过负荷 Safe overload %F.S. 120 极限过负荷 Ultimate overload %F.S. 200 四角误差 Four corner error %F.S. 0.03 连接电缆Connect cable mm Φ3.8×300 接线方式 Method of connecting wire 输入 Input(+): Red 输入 Input(-):White 输出Output(+):Green 输出Output(-):Blue 屏蔽 Shield : Yellow 2.1.1 电阻应变式传感器的组成及原理 电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的元件。由电阻应变片和测量线路两部分组成。常用的电阻应变片有两种:电阻丝应变片和半导体应变片,本设计中采用的是电阻丝应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线栅上面粘有覆盖层,起保护作用。 电阻应变片也会有误差,产生的因素很多,所以测量时我们一定要注意,其中温度的影响最重要,环境温度影响电阻值变化的原因主要是: 电阻丝温度系数引起的。 电阻丝与被测元件材料的线膨胀系数的不同引起的。 对于因温度变化对桥接零点和输出,灵敏度的影响,即使采用同一批应变片,也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必须进行温度补偿,解决的是在被粘贴的基片上采用适当温度系数的自动补偿片,并从外部对它加以适当的补偿。非线性误差是传感器特性中最重要的一点。产生非线性误差的原因很多,一般来说主要是由结构设计决定,通过线性补偿,也可得到改善。 滞后和蠕变是关于应变片及粘合剂的误差。由于粘合剂为高分子材料,其特性随温度变化较大,所以称重传感器必须在规定的温度范围内使用。 2.1.2 应变式传感器测量电路测量 电路是电子秤设计电路中是一个重要的环节,我们在制作的过程中应尽量选择好元件,调整好测量的范围的精确度,以避免减小测量数据的误差。 常规的电阻应变片K值很小,约为2,机械应变度约为0.000001—0.001,所以,电阻应变片的电阻变化范围为0.0005—0.1欧姆。所以测量电路应当能精确测量出很小的电阻变化,在电阻应变传感器中做常用的是桥式测量电路。 桥式测量电路有四个电阻,其中任何一个都可以是电阻应变片电阻,电桥的一个对角线接入工作电压U,另一个对角线为输出电压Uo。其特点是:当四个桥臂电阻达到相应的关系时,电桥输出为零,或则就有电压输出,可利用灵敏检流计来测量,所以电桥能够精确地测量微小的电阻变化。 图3 桥式测量电路 图3中R1、R2、R3、R4为4个应变片电阻,组成了桥式测量电路,Rm为温度补偿电阻,e为激励电压,V为输出电压。 若不考虑Rm,在应变片电阻变化以前,电桥的输出电压为: V= 由于桥臂的起始电阻全等,即R1 = R2 = R3 = R4 = R,所以V=0 。 当应变片的电阻R1、R2、R3、R4变成R+△R1、R+△R2、R+△R3、R+△R4时,电桥的输出电压变为: V= 通过化简,上式则变为: V= EMBED Equation.3 也就是说,电桥输出电压的变化与各臂电阻变化率的代数和成正比。 如果四个桥臂应变片的灵敏系数相同,且 = Kε,则上式又可写成: V= ε1 - ε2 + ε3 - ε4 ) 式中K为应变片灵敏系数,ε为应变量。 上式表明,电桥的输出电压和四个轿臂的应变片所感受的应变量的代数和成正比。在电阻应变式称重传感器中,4个应变片分别贴在弹性梁的4个敏感部位,传感器受力作用后发生变形。在力的作用下,R1、R3被拉伸,阻值增大,△R1、△R3正值,R2、R4被压缩,阻值减小,△R2、△R4为负值。再加之应变片阻值变化的绝对值相同,即 △R1 = △R3 = + △R或ε1 = ε3 = +ε △R2 = △R4= - △R或ε2 = ε4 = —ε 因此,V= ×4ε = e Kε。若考虑 Rm,则电桥的输出电压变成: V= EMBED Equation.3 = = K εe 令SU = ,则 SU = K ε SU称为传感器系数或传感器输出灵敏度。 对于一个高精度的应变传感器来说,仅仅靠4个应变片组成桥式测量电路还是远远不够的。由于弹性梁材料金相组织的不均匀性及热处理工艺、应变片性能及粘贴工艺、温度变化等因素的影响,传感器势必产生一定的误差。为了减少传感器随温度变化产生的误差,提高其精度和稳定性,需要在桥路两端和桥臂中串入一些补偿元件。如:初始不平衡值的补偿、零载输出温度补偿、输出灵敏度温度补偿等。 2.2 前级放大电路 压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高.我们考虑可以采用以下几种方案可以采用: 方案一、利用普通低温漂运算放大器构成多级放大器。 普通低温漂运算放大器构成多级放大器会引入大量噪声。由于 A/D 转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此中方案不宜采用。 方案二、由高精度低漂移运算放大器构成差动放大器,如图4。 差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放 ( 如 OP07) 做成一个差动放大器。 电阻 R1 、 R2 电容 C1 、 C2 、 C3 、 C4 用于滤除前级的噪声, C1 、 C2 为普通小电容,可以滤除高频干扰, C3 、 C4 为大的电解电容,主要用于滤除低频噪声。 图4 差动放大器 优点:输入级加入射随放大器,增大了输入阻抗,中间级为差动放大电路,滑动变阻器 R6 可以调节输出零点,最后一级可以用于微调放大倍数,使输出满足满量程要求。输出级为反向放大器,所以输出电阻不是很大,比较符合应用要求。 缺点:此电路要求 R3 、 R4 相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大噪声。对精度影响较大。 方案 三 :采用专用仪表放大器,如: INA102AG,INA121等。 此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。 以 INA102AG为例,接口如下图5所示 图5 集成运放INA102接口示意图 在数据采集系统中,大量使用了电阻电桥作为把非电量变换为电信号的变换电路。图6所示电路为由INA102集成芯片组成的电阻电桥放大电路。该电路的电压放大倍数为1000,所以其输出电压为Vo=1000(e2-e1)。为了抑制交流干扰,在电阻式电桥传感器与放大器之间应采用屏蔽线。由于INA102的内部附设有九个精度极高的金属膜电阻,且其温度稳定性也很高,所以其具有很高的增益精度。在使用时不需外接电阻,因而应用极为方便,即只要连接INA102的不同引脚便可得到不同的增益:1、10、100或1000。INA102芯片的内部结构框图如图6(b)所示。由图可知,INA102内部含有三个集成运放和多个阻容元件,它具有放大微弱差动信号的能力,因而常用来作为数据检测系统的前置放大。使用中,当电压放大倍数较小(如Av≤10)时,对失调电压及漂移等指标INA102都能很好地满足要求。当电压放大倍数较大(如Av>100)时,因偏置电流的不平衡而引起的失调电压误差较大,常采用图6(c)所示电路来调整INA102的失调电压。 图6 集成运放INA102 2.3 A/D转换器(ADC) 在实际的测量和控制系统中检测到的常是时间、数值都连续变化的物理量,这种连续变化的物理量称之为模拟量,与此对应的电信号是模拟电信号。模拟量要输入到单片机中进行处理,首先要经过模拟量到数字量的转换,单片机才能接收、处理。实现模/数转换的部件称A/D转换器或ADC。 随着大规模集成电路技术的飞速发展和电子计算机技术在工程领域的广泛应用,为满足各种不同的检测及控制任务的需要,大量结构不同、性能各异的A/D转换电路不断产生。目前世界上有多种类型的ADC,有传统的积分型、并行、逐次逼近型ADC,压频变换型ADC,也有近年来发展起来的△-∑型和流水线型。多种类型的ADC各有其优缺点并能满足不同的具体要求。低功耗、高速、高分辨率是新型的ADC的发展方向。 2.3.1 MAX187简介 MAX187/MAX189 串行12 位模数转换器可以在单5V 电源下工作,接受0-5V 的模拟输入。MAX187,189 均为逐次逼近式ADC,快速采样/保持(1.5uS),片内时钟,高速3 线串行接口。MAX187/MAX189 转换速度为75Ksps。通过一个外部时钟从内部读取数据,并可省却外部硬件而与绝大多数的数字信号处理器或微控制器通讯。接口与SPI,QSPI,和Microwire兼容。MAX187 有内部基准,MAX189 则需要一个外部基准。MAX187 和MAX189 采用节约空间的8 脚DIP 和16 脚SO 封装。电源消耗为7.5mW,在关断模式下可以减少至10uW。优异的AC 特性和极低的电源消耗,同时及其容易的使用和较小的封装尺寸使得MAX187/189 能理想的应用于远程DSP 和传感器,或者应用于对电源消耗和空间极为苛刻的地方。 应用范围: 移动式数据处理(Portable Data Logging) 远程数字信号处理(Remote Digital Signal Processing) 隔离数据获取(Isolated Data Acquisition) 高精度处理控制(High-Accuracy Process Control) 特性: 12 位精度 ±1/2 LSB 完整非线性(Integral Nonlinearity)(MAX187A/MAX189A) 内部采样/保持电路,75KHz 采样速率 单+5V 电源工作 低功耗:关断模式下2uA 5mA 操作电流 内部4.096V 基准(MAX187) 3 线串行接口,SPI,QSPI 和Microwire 兼容 小管脚8 脚DIP 和16 脚SO 封装 2.3.2 MAX187管脚图 管脚说明如图2.6: 图2.6 MAX187管脚说明 2.4 AT89C52单片机 AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。 其主要工作特性是: 片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次; 片内数据存储器内含256字节的RAM; 具有32根可编程I/O口线; 具有3个可编程定时器; 中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构; 串行口是具有一个全双工的可编程串行通信口; 具有一个数据指针DPTR; 低功耗工作模式有空闲模式和掉电模式; 具有可编程的3级程序锁定位; AT89C52工作电源电压为5(1+0.2)V,其典型值为5V; AT89C52最高工作频率为24MHz。 AT89C52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。 另外,AT89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。下图7为AT89C52的引脚图: 图7 AT89C52引脚图 2.5 液晶1602 1602采用标准的16脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 。 1602液晶模块内部的控制器共有11条控制指令它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平、0为低电平)。 此液晶上电的时候需要初始化 典型的指令码是38H,也就是上电的时候需要 调用 void write_cmd(unsigned char command)这个函数写指令码,用法是write_cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 的点阵8 位总线接口。以下指令码用法相同。 此液晶支持的指令码有: 指令码 功能 0 0 1 1 1 0 0 0 设置16×2显示,5×7点陈,8位数据接口 解释:就是0x38 的命令 指令码 功能 0 0 0 0 1 D C B D=1 开显示;D=0 关显示 C=1 显示光标;C=0 不显示光标 B=1 光标闪烁;B=0 光标不显示 0 0 0 0 0 1 N S N=1 当读或写一个字符后地址指针加一,且光标加一 N=0 当读或写一个字符后地址指针减一,且光标减一 S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。 S=1 当写一个字符,整屏显示不移动 解释:第一行指令主要能完成的功能是 控制液晶显示否,光标显示否,光标闪烁否。共有以下8 种指令 0 0 0 0 1 0 0 0 08H 关液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 0 0 1 09H 关液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 0 1 0 0AH 关液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 0 1 1 0BH 关液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 1 0 0 0CH 开液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 1 0 1 0DH 开液晶显示 光标不闪烁 显示光标位置 0 0 0 0 1 1 1 0 0EH 开液晶显示 光标不闪烁 不显示光标位置 0 0 0 0 1 1 1 1 0FH 开液晶显示 光标不闪烁 显示光标位置 解释:第二行指令主要能完成的功能是写完字符 光标或屏幕移动方向 指令码 功能 80H+地址码(0-27H,40H-67H) 设置数据地址指针 解释: 用该指令码可以把光标移动到想要的位置 这是虚拟的液晶显示图 表示2 行16 列显示 方框中的数字表示当前位置的指针 80H 81H 82H 83H 84H 85H 86H 87H 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH C0H C1H C2H C3H C4H C5H C6H C7H C8H C9H CAH CBH CCH CDH CEH CFH 例如: 只要调用write_cmd(0x82) ;函数就能把光标挪到第1 行第3 列的位置 指令码 功能 01H 显示清屏:1.数据指针清零 2.所有显示清零 02H 显示回车:1数据指针清零 3 软件流程图及程序设计 3.1监控程序的设计 智能仪器的设计既要满足设定的功能的完成如计算等功能的任务功能程序,也要有可以监控仪器仪表正工作,保证其可靠性方面的监控程序。整个智能仪器的测量都是智能仪器自动完成的,所以设计一套功能完备的监控程序是必须的也是必要的。 监控程序的主要作用是实时的响应来自系统的各种信息,按信息的类别进行处理;当系统出现故障时,能自动的采取有效的措施,消除故障,保证系统能够继续进行正常工作。 3.2 数据处理子程序的设计 数据处理子程序是整个程序的核心。主要用来调整输入值系数,使输出满足量程要求。另外完成A/D的采样结果从十六进制数向十进制数形式转化。 3.2.1 数据采集子程序的设计 对于重量与传感器的电压之间的关系,为了确保测量的准确度,用MATLAB软件编程。Lsline指令实现了对多组测量数据的最小二乘拟合,得到了比较理想的线性关系,又运用回归函数polyfit(x,y',1)得到压力与电压的函数关系,使压力的测量的精度进一步提高。 数据采集由ADC0809芯片来完成,主要分为启动、读取数据、延时等待转换结束、读出转换结果、存入指定内存单元、继续转换(退出)几个步骤。ADC0809初始化后,就具有了将某一通道输入的0~5V模拟信号转换成对应的数字量00H—FFH,然后再存入8051内部RAM的指定单元中。其转换方式可以采用程序查询方式,延时等待方式和中断方式三种。本设计采用的是延时等待方式,具体程序流程图如图8所示。 图8 数据采集程序流程图 3.2.2 显示程序的设计 显示程序是用来实时显示所测质量值,该部分程序是将显缓单元数据进行实时显示,其流程图如图9所示。 图9 显示子程序流程图 就继续扫描。当有键按下时,利用按键的特征码判断是哪一个键按下,再转入到按下该键所要执行的功能子程序中进行键值处理,完成后返回继续进行扫描。且将最后一次输入值 保存在暂存单元用于报警比较。由键盘编码方式可以得出0、1、2、3、4、5、6、7、8、9各键对应的键值: 0D8H、0D0H,、0D1H、0D2H、0C8H、0C9H、0CAH、0C0H、0C1H、0C2H 该模块的程序流程图如13所示。 设计体会 本次课程设计我做的是关于电子称的课程设计,在这次课程设计中我使用了电桥式称重传感器CL-YB-8/200K,用集成运放INA102将传感器的信号放大,使用12位的串行A/D转换器MAX187将INA102输出的模拟信号转换为数字信号,把MAX187与单片机AT89C52连接,单片机AT89C52将MAX187输入的数字信号进行数据处理,并联上液晶显示屏1602和矩阵键盘进行人机交换。在这次课程设计中的程序使用C语言编程的,运用Protues软件仿真,由于软件中没有12位的串行A/D转换器MAX187,使用8位的串行A/D转换器0832。 当然,这其中也有很多问,第一、不够细心比如由于粗心大意接错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。   在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。 再次感 谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。 参考文献 [1] 余永权. 单片机原理及应用. 北京:电子工业出版社,1997 [2] 王福瑞等编著.单片微机测控系统设计大全.北京航空航天大学出版社,1999 [3] 李华.MCS-51系列单片机使用接口技术.北京航空航天大学出版社,1990 [4] 何立民.单片机应用系统设计.北京航空航天大学出版社,1993 [5] 方佩敏.新编传感器原理应用电路详解.北京:电子工业出版社,1994 [6] 黄继昌.传感器工作原理及应用实例.北京:人民邮电出版社,1998。 [7] 纪宗南.单片机外围器件实用手册 输入通道器件分册.北京航空航天大学出版社,1998 附录一 电路原理图 附录二 程序清单 #include #include #include// 液晶1602显示程序 #include//ADC0832采集程序 #include//键盘程序 unsigned char price_bai=0; //显示值百位 unsigned char price_shi=0; //显示值十位 unsigned char price_ge=0; //显示值个位 unsigned char price_shifen=0; //显示值十分位 void price_pro(float x)//总价数据处理函数 { float z; unsigned int temp2; z=x*temp; temp2=(int)(z*10); price_bai=temp2/1000; price_shi=(temp2%1000)/100; price_ge=((temp2%1000)%100)/10; price_shifen=((temp2%1000)%100)%10; } void display1()//重量显示函数 { unsigned char a,b,c; if(dangwei==1) {a=0;b=0;c=0;} if(dangwei==2) {a=1;b=0;c=0;} if(dangwei==3) {a=1;b=1;c=0;} wcmd(0x87); wdec(weight_ge); wcmd(0x89-a); wdec(weight_shifen); wcmd(0x8a-b); wdec(weight_baifen); wcmd(0x8b-c); wdec(weight_qianfen); } void display2()//总价显示函数 { wcmd(0xc0); wstr("Total: . "); if(price_bai!=0) { wcmd(0xC7); wdec(price_bai); } if(price_shi!=0) { wcmd(0xc8); wdec(price_shi); } wcmd(0xc9); wdec(price_ge); wcmd(0xcb); wdec(price_shifen); } void main()//主函数 { unsigned char i=0,num[4]; float y; init(); wcmd(0x83); wstr("Welcome!"); wcmd(0x80); wstr(" "); wcmd(0x80); wstr("Choses Dangwei! "); while(1) { while(dangwei==0) { if(button()==0x0D) { dangwei=1; wcmd(0x80); wstr("WEIGHT: . Kg 1 "); wcmd(0xc0); wstr(" Input Price! "); } if(button()==0x0E) { dangwei=2; wcmd(0x80); wstr("WEIGHT: . Kg 2"); wcmd(0xc0); wstr(" Input Price! "); } if(button()==0x0F) { dangwei=3; wcmd(0x80); wstr("WEIGHT: . Kg 3"); wcmd(0xc0); wstr(" Input Price! "); } } ad_data=Adc0832(0); data_pro(); display1(); if(button()!=0) { if(i==0) { wcmd(0xc0); wstr("PRICE: . "); } num[i]=button()-1; if(num[i]>=0&&num[i]<=0x0a) { if(i>=3||num[i]==0x0a) { wcmd(0xcb); wdec(num[i]); y=num[0]*100+num[1]*10+num[2]+num[3]/10; price_pro(y); display2(); for(i=3;i<0;i--) { num[i]=0; } i=0; } else { wcmd(0xc7+i); wdec(num[i]); i++; } } else { i=0; dangwei=0; wcmd(0x80); wstr("Choses Dangwei! "); wcmd(0xc0); wstr(" "); } } } } Lcd16.h文件(液晶1602显示程序) sbit E=P2^0; sbit RW=P2^1; sbit RS=P2^2; void delay() { unsigned char i; for(i=0;i<=200;i++); } unsigned char busy() { unsigned char sbusy; P0=0xff; RS=0; RW=1; E=1; delay(); sbusy=P0&0x80; E=0; return sbusy; } void wcmd(unsigned char cmd) { while(busy()); RS=0; RW=0; E=0; P0=cmd; E=1; delay(); E=0; } void wdate(unsigned char date) { while(busy()); RS=1; RW=0; E=0; P0=date; E=1; delay(); E=0; } void wdec(unsigned long int x) { unsigned char k[11],i=10; while(x/10) { k[i]=x%10;x=x/10;i--; } k[i]=x; for(;i<11;i++) { wdate(0x30+k[i]); } } void wstr(unsigned char *s) { while(*s) { wdate(*s); s++; } } void init() { wcmd(0x38); wcmd(0x01); wcmd(0x06); wcmd(0x0c); } button.h文件(键盘程序) void delay1() //延时函数 { unsigned char i,j; for(i=10;i>0;i--) for(j=100;j>0;j--); } unsigned char button() { unsigned char a,b,c; //定义三个变量a,b,c P1=0xf0; //给P1口赋初值 0x0f if (P1 != 0xf0) //若在某时刻检测到P1口不为 0x0f,则说明有键按下 { delay1(); //防抖动延时 if (P1 != 0xf0) { a=P1; //变量a存取翻转前的P1口值,其中高四位为0,低四位与动作按键所处的行有关 P1=0x0f; //对P1口进行翻转 b=P1; //变量b存取翻转后的P1口值,其中低四位为0,高四位与动作按键所处的列有关 while(P1!=0x0f); //等待按键释放 c=a|b; //变量c取a的低四位和b的高四位即为当前按键的键值。 } } switch(c) //通过 switch 语句判断当前按键的键号{ //显示当前键值。 case 0xee: return 0x01; break; case 0xed: return 0x02; break; case 0xeb: return 0x03; break; case 0xe7: return 0x04; break; case 0xde: return 0x05; break; case 0xdd: return 0x06; break; case 0xdb: return 0x07; break; case 0xd7: return 0x08; break; case 0xbe: return 0x09; break; case 0xbd: return 0x0a; break; case 0xbb: return 0x0b; break; case 0xb7: return 0x0c; break; case 0x7e: return 0x0d; break; case 0x7d: return 0x0e; break; case 0x7b: return 0x0f; break; case 0x77: return 0x10; break; default: return 0; } } AT89C52单片机 放大电路 MAX187ADAD 压力传感器 LED显示 键盘� 报警电路 待测重量 敏感元件 应变片 测量电桥 � EMBED PBrush \* MERGEFORMAT ��� 开始 保护现场 启动ADC0809 延时 读转换结果 送暂存单元 返�回 显示程序 R0:显缓地址 R2:最左位选码 取段码 段码送B口 位码送A口 延时3~5ms 返回 R0+1 R2右移 5位显示完? _1234567897.unknown _1234567901.unknown _1234567903.unknown _1234567905.unknown _1234567906.unknown _1234567904.unknown _1234567902.unknown _1234567899.unknown _1234567900.unknown _1234567898.unknown _1234567893.unknown _1234567895.unknown _1234567896.unknown _1234567894.unknown _1234567891.unknown _1234567890.unknown
/
本文档为【011电子秤】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索