摘 要 ......................................................................... 1 ABSTRACT ...................................................... 错误!未定义书签。 1绪论 ......................................................... 错误!未定义书签。 2系统方案论证与选型 ....................................................... 4
2.1 控制器部分 ........................................................... 5 2.2 数据采集部分 ........................................................ 5
2.2.1传感器的选择 ..................................................... 5 2.2.2放大电路选择 ..................................................... 7 2.2.3A/D转换器的选择 ................................................. 11 2.2.4键盘处理部分方案论证 ........................................... 12
2.3显示电路部分的选择 ................................................ 13 2.4超量程报警部分选择 ................................................ 13 3硬件电路设计 .............................................................. 13
3.1 AT89S52的最小系统电路 .......................................... 14
3.1.1单片机芯片AT89S52介绍 ......................................... 14 3.1.2.单片机管脚说明 ........................................... 16 3.1.3 AT89S52的最小系统电路构成 .................................... 17
3.2 电源电路设计 ....................................................... 18 3.3 数据采集部分电路设计 ............................................ 19
3.3.1 传感器和其外围以及放大电路设计 ............................... 19 3.3.2 A/D转换芯片与AT89S52单片机接口电路设计 .................... 21 3.3.3 测量算法 ....................................................... 24
3.4显示电路与AT89S52单片机接口电路设计 ........................ 25 3.5键盘电路与AT89S52单片机接口电路设计 ........................ 26
基于单片机的电子秤设计
3.6报警电路的设计 ..................................................... 28 4系统软件设计 .............................................................. 28
4.1主程序设计 .......................................................... 29 4.2 子程序设计 .......................................................... 30
4.2.1 A/D转换启动及数据读取程序设计 ................................ 30 4.2.2数制转换子程序设计.............................................. 30 4.2.3显示子程序设计 .................................................. 32 4.2.4 键盘扫描子程序的设计 ........................................... 32 4.2.5报警子程序的设计 ................................................ 34
设计总结 ...................................................................... 35 致 谢 ........................................................ 错误!未定义书签。 参考文献 ...................................................................... 36 附 录 ...................................................................... 37
1
基于单片机的电子秤设计
基于单片机的电子秤设计
摘 要
随着微电子技术的应用,市场上使用的传统称重工具已经满足不了人们的要求。为了改变传统称重工具在使用上存在的问题,在本设计中将智能化、自动化、人性化用在了电子秤重的控制系统中。本系统主要由单片机来控制,测量物体重量部分由称重传感器及A/D转换器组成,加上显示单元,此电子秤俱备了功能多、性能价格比高、功耗低、系统设计简单、使用方便直观、速度快、测量准确、自动化程度高等特点。
本系统以AT89S52单片机为主控芯片,外围附以称重电路、显示电路、报警电路、键盘电路等构成智能称重系统电路板,从而实现自动称重系统的各种控制功能。可以说,此设计所完成的电子秤很大程度上满足了应用需求。
关键词 SP20C-G501,AT89S52,称重传感器,A/D转换器,LCD显示器
1.1 电子秤的组成
1.1.1 电子秤的基本结构
电子秤是利用物体的重力作用来确定物体质量(重量)的测量仪器,也可用来确定与质量相关的其它量大小、参数、或特性。不管根据什么原理制成的电子秤均由以下三部分组成:
(1)承重、传力复位系统
它是被称物体与转换元件之间的机械、传力复位系统,又称电子秤的秤体,一般包括接受被称物体载荷的承载器、秤桥结构、吊挂连接部件和限位减振机构等。
(2)称重传感器
即由非电量(质量或重量)转换成电量的转换元件,它是把支承力变换成电的或其它形式的适合于计量求值的信号所用的一种辅助手段。
按照称重传感器的结构型式不同,可以分直接位移传感器(电容式、电感式、电位计式、振弦式、空腔谐振器式等)和应变传感器(电阻应变式、声表面谐振式)或是
1
基于单片机的电子秤设计
利用磁弹性、压电和压阻等物理效应的传感器。
对称重传感器的基本要求是:输出电量与输入重量保持单值对应,并有良好的线性关系;有较高的灵敏度;对被称物体的状态的影响要小;能在较差的工作条件下工作;有较好的频响特性;稳定可靠。
(3)测量显示和数据输出的载荷测量装置
即处理称重传感器信号的电子线路(包括放大器、模数转换、电流源或电压源、调节器、补尝元件、保护线路等)和指示部件(如显示、打印、数据传输和存贮器件等)。这部分习惯上称载荷测量装置或二次仪表。在数字式的测量电路中,通常包括前置放大、滤滤、运算、变换、计数、寄存、控制和驱动显示等环节。
1.1.2 电子秤的工作原理
当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由放大电路进行放大、经滤波后再由模/数(A/D)器进行转换,数字信号再送到微处器的CPU处理,CPU不断扫描键盘和各种功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、分析、由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,CPU发出指令,从内存贮器中读出送到显示器显示,或送打印机打印。一般地信号的放大、滤波、A/D转换以及信号各种运算处理都在仪表中完成。
1.1.3 电子秤的计量性能
电子秤的计量性能涉及的主要技术指标有:量程、分度值、分度数、准确度等级等。
(1)量程:电子衡器的最大称量Max,即电子秤在正常工作情况下,所能称量的最大值。
(2)分度值:电子秤的测量范围被分成若干等份,每份值即为分度值。用e或d来表示。
(3)分度数:衡器的测量范围被分成若干等份,总份数即为分度数用n表示。 电子衡器的最大称量Max可以用总分度数n与分度值d的乘积来表示,即Max = n •d
(4)准确度等级
国际法制计量组织把电子秤按不同的分度数分成Ⅰ、Ⅱ、Ⅲ、Ⅳ四类等级,分别
2
基于单片机的电子秤设计
对应不同准确度的电子秤和分度数n的范围,如下表1-1所示:
标志及等级 特种准确度 高准确度 电子秤种类 基准衡器 精密衡器 000 中准确度 商业衡器 000 普通准确度 表1-1电子秤等级分类
粗衡器 100 < n ≤1 000 1 000 < n ≤10 分度数范围 n > 100 000 10 000 < n ≤100 1.2 设计思路
目前,台式电子秤在商业贸易中的使用已相当普遍,但存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。现有的便携秤为杆秤或以弹簧、拉伸变形来实现计量的弹簧秤,居民用户使用的基本是杆秤。弹簧盘秤制造工艺要求较高,弹簧的疲劳问题无法彻底解决,一旦超过弹簧弹性限度,弹簧秤就会产生很大误差,以至损坏,影响到称重的准确性和可靠性,只是一种暂时的代用品,也被列入逐渐取消的行列。
微控制器技术、传感器技术的发展和计算机技术的广泛应用,电子产品的更新速度
达到了日新月异的地步。本系统在设计过程中,除了能实现系统的基本功能外,还增加了打印和通讯功能,可以实现和其他机器或设备(包括上位PC机和数据存储设备)交换数据.除此之外,系统的微控制器部分选择了兼容性比较好的AT89系列单片机,在系统更新换代的时候,只需要增加很少的硬件电路,甚至仅仅删改系统控制程序就能够实现。
另外由于实际应用当中,称可以有一定量的过载,但不能超出要求的范围,为此我们还设计了过载提示和声光报警功能。
综上所述,本课题的主要设计思路是:利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显
3
基于单片机的电子秤设计
示出来。此外,还可通过键盘设定所称物品的价格。主要技术指标为:称量范围0~5kg;分度值0.01kg;精度等级Ⅲ级;电源DC1.5V(一节5号电池供电)。
这种高精度智能电子秤体积小、计量准确、携带方便,集质量称量功能与价格计算功能于一体,能够满足商业贸易和居民家庭的使用需求。
第二章 系统方案论证与选型
按照本设计功能的要求,系统由6个部分组成:控制器部分、测量部分、报警部分、数据显示部分、键盘部分、和电路电源部分,系统设计总体方案框图如图2.1所示。
放大电路 A/D转换器 语音显示 压力传感AT89S52单片机 键盘 LCD显示
图2-1设计思路框图
测量部分是利用称重传感器检测压力信号,得到微弱的电信号(本设计为电压信号),而后经处理电路(如滤波电路,差动放大电路,)处理后,送A/D转换器,将模拟量转化为数字量输出。控制器部分接受来自A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实际重量信号,并将其存储到存储单元中。控制器还可以通过对扩展I/O的控制,对键盘进行扫描,而后通过键盘散转程序,对整个系统进行控制。数据显示部分根据需要实现显示功能。
4
基于单片机的电子秤设计
2.1 控制器部分
本设计由于要求必须使用单片机作为系统的主控制器,而且以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统”。这种新型的智能仪表在测量过程自动化、测量结果的数据处理以及功能的多样化方面,都取得了巨大的进展。 再则由于系统没有其它高标准的要求,又考虑到本设计中程序部分比较大,根据总体方案设计的分析,设计这样一个简单的的系统,可以选用带EPROM的单片机,由于应用程序不大,应用程序直接存储在片内,不用在外部扩展存储器,这样电路也可简化。INTEL公司的8051和8751都可使用,在这里选用ATMENL生产的AT89SXX系列单片机。AT89SXX系列与MCS-51相比有两大优势:第一,片内存储器采用闪速存储器,使程序写入更加方便;第二,提供了更小尺寸的芯片,使整个硬件电路体积更小。此外价格低廉、性能比较稳定的MCPU,具有8K×8ROM、256×8RAM、2个16位定时计数器、4个8位I/O接口。这些配置能够很好地实现本仪器的测量和控制要求
最后我们最终选择了AT89S52这个比较常用的单片机来实现系统的功能要求。AT89S52内部带有8KB的程序存储器,基本上已经能够满足我们的需要。
2.2 数据采集部分
电子秤的数据采集部分主要包括称重传感器、处理电路和A/D转换电路,因此对于这部分的论证主要分三方面 2.2.1 传感器的选择
在设计中,传感器是一个十分重要的元件,因此对传感器的选择也显的特别的重要,不仅要注意其量程和参数,还有考虑到与其相配置的各种电路的设计的难以程度和设计性价比等等.
传感器量程的选择可依据秤的最大称量值、选用传感器的个数、秤体的自重、可能产生的最大偏载及动载等因素综合评价来确定。一般来说,传感器的量程越接近分配到每个传感器的载荷,其称量的准确度就越高。但在实际使用时,由于加在传感器上的载荷除被称物体外,还存在秤体自重、皮重、偏载及振动冲击等载荷,因此选用传感器量
5
基于单片机的电子秤设计
程时,要考虑诸多方面的因素,保证传感器的安全和寿命。传感器量程的计算公式是在充分考虑到影响秤体的各个因素后,经过大量的实验而确定的。其公式如下:
C=K0×K1×K2×K3×(Wmax+W)/N (2.1)
C—单个传感器的额定量程;W—秤体自重;Wmax—被称物体净重的最大值;N—秤体所采用支撑点的数量;K0—保险系数,一般取值在1.2~1.3之间;K1—冲击系数;K2—秤体的重心偏移系数;K3—风压系数。本设计要求称重范围0~5kg,重量误差不大于0.01kg,根据传感器量程计算公式(2.1)可知:
C=1.25×1×1.03×1×(20+1.9)/1 (2-1)
=9.01205
为保证电子秤称量结果的准确度,克服传感器在低量程段线性度差的缺点。传感器的量程应根据皮带秤的最大流量来选择。在实际工作中,要求称重传感器的有效量程在20%~80%之间,线性好,精度高。重量误差应控制在±0.01Kg,又考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,根据式2.1的计算结果,所以我们确定传感器的额定载荷为7.5Kg,允许过载为150%F.S,精度为0.05%,最大量程时误差0.01kg,可以满足本系统的精度要求.
综合考虑,本设计采用SP20C-G501电阻应变式传感器,其最大量程为7.5 Kg.称重传感器由组合式S型梁结构及金属箔式应变计构成,具有过载保护装置。由于惠斯登电桥具诸如抑制温度变化的影响,抑制干扰,补偿方便等优点,所以该传感器测量精度高、温度特性好、工作稳定等优点,广泛用于各种结构的动、静态测量及各种电子秤的一次仪表。该称重传感器主要由弹性体、电阻应变片电缆线等组成,其工作原理如图2.1所示:
图2.1称重传感器原理图
6
基于单片机的电子秤设计
表一 压力传感器主要技术指标
准确度等级 Accuracy class 额定载荷Rated load 灵敏度 Sensitivity 非线性 Nonlinearity 滞后 Hysteresis 重复性 Repeatability 蠕变 Creep 蠕变恢复 creep recovery 零点输出 Zero balance 零点温度系数 Zero temperature coefficient 额定输出温度系数Rated output temperature coefficient 输入电阻 Input resistance 输出电阻 Output resistance 绝缘电阻 Insulation resistance 供桥电压 Supply voltage 温度补偿范围 Temperature compensation range 允许温度范围 Safe temperature range 允许过负荷 Safe overload 极限过负荷 Ultimate overload 四角误差 Four corner error 连接电缆Connect cable kg mV/V %F.S. %F.S./30min %F.S. %F.S./10℃ Ω Ω MΩ V ℃ ℃ %F.S. %F.S. %F.S. mm C3 0.02 0.03 1、2.5、5、7.5、10、15 1.8±0.08 ±0.02 0.02 0.02 ±0.02 ±1 ±0.02 415~445 349~355 ≥5000 12(DC/AC) -10~+50 -20~+60 120 200 0.03 Φ3.8×300 输入 Input(+): Red 输入 Input(-):White 接线方式 Method of connecting wire 输出Output(+):Green 输出Output(-):Blue 屏蔽 Shield : Yellow 其测量原理:用应变片测量时,将其粘贴在弹性体上。当弹性体受力变形时,应变片的敏感栅也随同变形,其电阻值发生相应变化,通过转换电路转换为电压或电流的变化。由于内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:
Eout△R3△R4△R1△R2Ein(R2R4)R1R2R3R4R2R4
(2-2)
2.2.2放大电路选择
称重传感器输出电压振幅范围0~20mV。而A/D转换的输入电压要求为0~2V,因此放大环节要有100倍左右的增益。对放大环节的要求是增益可调的(70~150倍),根据本设计的实际情况增益设为100倍即可,零点和增益的温度漂移和时间漂移极小。按照输入电压20mV,分辨率20000码的情况,漂移要小于1µV。由于其具有极低的失调电
7
基于单片机的电子秤设计
压的温漂和时漂(±1µV),从而保证了放大环节对零点漂移的要求。残余的一点漂移依靠软件的自动零点跟踪来彻底解决。稳定的增益量可以保证其负反馈回路的稳定性,并且最好选用高阻值的电阻和多圈电位器。
由2.2.1中称重传感器的称量原理可知,电阻应变片组成的传感器是把机械应变转换成ΔR/R,而应变电阻的变化一般都很微小,例如传感器的应变片电阻值120Ω,灵敏系数 K=2,弹性体在额定载荷作用下产生的应变为1000ε,应变电阻相对变化量为:
ΔR/R = K×ε= 2×1000×10-6 =0.002 (2-3)
由式2-3可以看出电阻变化只有0.24Ω,其电阻变化率只有0.2%。这样小的电阻变化既难以直接精确测量,又不便直接处理。因此,必须采用转换电路,把应变计的ΔR/R变化转换成电压或电流变化,但是这个电压或电流信号很小,需要增加增益放大电路来把这个电压或电流信号转换成可以被A/D转换芯片接收的信号。在前级处理电路部分,我们考虑可以采用以下几种方案:
方案一、利用普通低温漂运算放大器构成前级处理电路;
普通低温漂运算放大器构成多级放大器会引入大量噪声。由于A/D转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此种方案不宜采用。
方案二、主要由高精度低漂移运算放大器构成差动放大器,而构成的前级处理电路;差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放(如OP07)做成一个差动放大器。其设计电路如图2-2所示:
方案(三):采用专用仪表放大器,如:INA126,INA121等构成前级处理电路。下面举例用INA128仪用仪表放大器来实现。
8
基于单片机的电子秤设计
U1++A1-R310KR420KR2R11.1K20K-A3R4R24KU0+10K-A2-U2+R310KR420K 图2.2利用普通运放设计的差动放大器
一般说来,集成化仪用放大器具有很高的共模抑制比和输入阻抗,因而在传统的
电路设计中都是把集成化仪器放大器作为前置放大器。然而,绝大多数的集成化仪器放大器,特别是集成化仪器放大器,它们的共模抑制比与增益相关:增益越高,共模抑制比越大。而集成化仪器放大器作为心电前置放大器时,由于极化电压的存在,前置放大器的增益只能在几十倍以内,这就使得集成化仪器放大器作为前置放大器时的共模抑制比不可能很高。有学者试图在前置放大器的输入端加上隔直电容(高通网络)来避免极化电压使高增益的前置放大器进入饱和状态,但由于信号源的内阻高,且两输入端不平衡,隔直电容(高通网络)使等共模干扰转变为差模干扰,结果适得其反,严重地损害了放大器的性能。 为了实现信号的放大,设计电路如下:
9
基于单片机的电子秤设计
图2.3 采用INA128设计的放大电路
1. 前级采用运放A1和A2组成并联型差动放大器。理论上不难证明,在运算放大器为理想的情况下,并联型差动放大器的输入阻抗为无穷大,共模抑制比也为无穷大。更值得一提的是,在理论上并联型差动放大器的共模抑制比与电路的外围电阻的精度和阻值无关。
2. 阻容耦合电路放在由并联型差动放大器构成的前级放大器和由仪器放大器构成的后级放大器之间,这样可为后级仪器放大器提高增益,进而提高电路的共模抑制比提供了条件。同时,由于前置放大器的输出阻抗很低,同时又采用共模驱动技术,避免了阻容耦合电路中的阻、容元件参数不对称(匹配)导致的共模干扰转换成差模干扰的情况发生。
3. 后级电路采用廉价的仪器放大器,将双端信号转换为单端信号输出。由于阻容耦合电路的隔直作用,后级的仪器放大器可以做到很高的增益,进而得到很高的共模抑制比。 从理论上计算整个电路的共模抑制比为:
(2-4)
式中:CMRTotal或CMRRTotal-放大器的总共模抑制比;CMR1-第一级放大器的共模抑制比;CMR2或CMRR2-第二级放大器的共模抑制比;A1d、A1c、A2d和A2c-分别为第一级放大器和第二级放大器的差模增益和共模增益。
经过实际测量,图2.4所示的电路采用图中所给出的参数时,电路的共模抑制比在120dB以上。
有以上分析以及基于电子秤的要求精确度不是很高,所以选择由普通放大器所组成的差动放大器作为本设计的信号放大电路。
10
基于单片机的电子秤设计
2.2.3 A/D转换器的选择
A/D转换部分是整个设计的关键,这一部分处理不好,会使得整个设计毫无意义。目前,世界上有多种类型的ADC,有传统的并行、逐次逼近型、积分型ADC,也有近年来新发展起来的∑-Δ型和流水线型ADC,多种类型的ADC各有其优缺点并能满足不同的具体应用要求。目前, ADC集成电路主要有以下几种类型:
(1)并行比较A/D转换器:如ADC0808、 ADC0809等 。并行比较ADC是现今速度最快的模/数转换器,采样速率在1GSPS以上,通常称为“闪烁式”ADC。它由电阻分压器、比较器、缓冲器及编码器四种分组成。这种结构的ADC所有位的转换同时完成,其转换时间主取决于比较器的开关速度、编码器的传输时间延迟等。缺点是:并行比较式A/D转换的抗干扰能力差,由于工艺限制,其分辨率一般不高于8位,因此并行比较式A/D只适合于数字示波器等转换速度较快的仪器中,不适合本系统。
(2) 逐次逼近型A/D转换器:如:ADS7805、ADS7804等。逐次逼近型ADC是应用非常广泛的模/数转换方法,这一类型ADC的优点:高速,采样速率可达 1MSPS;与其它ADC相比,功耗相当低;在分辨率低于12位时,价格较低。缺点:在高于14位分辨率情况下,价格较高;传感器产生的信号在进行模/数转换之前需要进行调理,包括增益级和滤波,这样会明显增加成本。
(3)积分型A/D转换器:如:ICL7135、ICL7109、ICL1549、MC14433等。积分型ADC又称为双斜率或多斜率ADC,是应用比较广泛的一类转换器。它的基本原理是通过两次积分将输入的模拟电压转换成与其平均值成正比的时间间隔。与此同时,在此时间间隔内利用计数器对时钟脉冲进行计数,从而实现A/D转换。积分型ADC两次积分的时间都是利用同一个时钟发生器和计数器来确定,因此所得到的表达式与时钟频率无关,其转换精度只取决于参考电压VR。此外,由于输入端采用了积分器,所以对交流噪声的干扰有很强的抑制能力。若把积分器定时积分的时间取为工频信号的整数倍,可把由工频噪声引起的误差减小到最小,从而有效地抑制电网的工频干扰。这类ADC主要应用于低速、精密测量等领域,如数字电压表。其优点是:分辨率高,可达22位;功耗低、成本低。缺点是:转换速率低,转换速率在12位时为100~300SPS。
(4 )压频变换型ADC:其优点是:精度高、价格较低、功耗较低。缺点是:类似于积分型ADC,其转换速率受到限制,12位时为100~300SPS。
考虑到本系统中对物体重量的测量和使用的场合,精度要求不是很苛刻,转换速率
11
基于单片机的电子秤设计
要求也不高,而双积分型A/D转换器精度高,具有精确的差分输入,重要的是输入阻抗
3高(大于10M),可自动调零,有超量程信号输出,全部输出于TTL电平兼容。且双
积分型A/D转换器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对50Hz的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。
根据系统的精度要求以及综合的分析其优点和缺点,本设计采用了12位A/D转换器AD574
2.2.4 键盘处理部分方案论证
由于电子秤需要设置单价(十个数字键),还具有确认、删除等功能,总共需设置17个键(包括一个复位键)。键盘的扩展有使用以下方案:
采用矩阵式键盘:矩阵式键盘的特点是把检测线分成两组,一组为行线,一组列线,按键放在行线和列线的交叉点上。图2.6给出了一个4×4的矩阵键盘结构的键盘接口电路,图中的每一个按键都通过不同的行线和列线与主机相连这。4×4矩阵式键盘共可以安装16个键,但只需要8条测试线。当键盘的数量大于8时,一般都采用矩阵式键盘。
图2.4 矩阵式键盘
结合本设计的实际要求,16个按键使用4×4矩阵式键盘,另外一个复位键使用独立式按键实现。
12
基于单片机的电子秤设计
2.3显示电路部分的选择
数据显示是电子秤的一项重要功能,是人机交换的主要组成部分,它可以将测量电路测得的数据经过微处理器处理后直观的显示出来。数据显示部分可以有以下两种方案供选择。的组成有以下两种方案可供选择:一是 LED数码管显示,二是LCD液晶显示两种选择. LCD液晶显示器是一种极低功耗显示器,从电子表到计算器,从袖珍时仪表到便携式微型计算机以及一些文字处理机都广泛利用了液晶显示器。
2.4超量程报警部分选择
智能仪器一般都具有报警和通讯功能,报警主要用于系统运行出错、当测量的数据超过仪表量程或者是超过用户设置的上下限时为提醒用户而设置。在本系统中,设置报警的目的就是在超出电子秤测量范围时,发出声光报警信号,提示用户,防止损坏仪器。
超限报警电路是由单片机的I/O口来控制的,当称重物体重量超过系统设计所允许的重量时,通过程序使单片机的I/O值为高电平,从而三极管导通,使蜂鸣器SPEAKER发出报警声,同时使报警灯D1发光。
第三章 硬件电路设计
根据设计要求与设计思路,此电路由一块AT89S52、按键输入电路、时钟电路、
复位电路、LCD显示段码驱动电路、LCD显示位码驱动电路、12位LCD显示器电路、
蜂鸣器电路。
13
基于单片机的电子秤设计
16个按键输入电路 单 复位电路 10位LCD显片 示器电路 时钟电路 机 LCD显示器蜂鸣器电位码驱动电LCD显示器段码驱动电
图3.1硬件电路设计框图
在本系统中用于称量的主要器件是称重传感器(一次变换元件),称重传感器在受到压力或拉力时会产生电信号,受到不同压力或拉力是产生的电信号也随着变化,而且力与电信号的关系一般为线性关系。
由于称重传感器一般的输出范围为0~20mV,对A/D转换或单片机的工作参数来说不能使A/D转换和单片机正常工作,所以需要对输出的信号进行放大。由于传感器输出的为模拟信号,所以需要对其进行A/D转换为数字信号以便单片机接收。单片机根据称重传感器输出的电信号和速度传感器输出的速度信号计算出物体的重量。
在本系统中,硬件电路的构成主要有以下几部分: AT89C52的最小系统构成、电源电路、数据采集、人-机交换电路等。
3.1 AT89S52的最小系统电路
3.1.1单片机芯片AT89S52介绍
单片机采用MCS-51系列单片机。由ATMEL公司生产的AT89S52是一种低功耗、高性
14
基于单片机的电子秤设计
能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。其芯片引脚图如上图所示。
图3.2 AT89S52引脚图
15
基于单片机的电子秤设计
3.1.2.单片机管脚说明
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
表3.1 P3.0口引脚功能表
P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4
16
第二功能 RXD(串行口输入) TXD(串行口输出) INT0(外部中断0输入) INT1(外部中断1输入) T0(定时器0外部脉冲输入) 基于单片机的电子秤设计
P3.5 P3.6 P3.7 T1(定时器1外部脉冲输入) WR(外部数据存储器写脉冲输出) RD(外部数据存储器读脉冲输出) P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3.1.3 AT89S52的最小系统电路构成
AT89S52单片机的最小系统由时钟电路、复位电路、电源电路及单片机构成。单片机的时钟信号用来提供单片机片内各种操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。
单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根
17
基于单片机的电子秤设计
据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。
上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。
系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。
3.2 电源电路设计
根据设计需要,本系统中需要设计两种不同级别的电源,即传感器需要+12V的电源,而系统其他芯片使用的是+5V电源。考虑本次设计的实际要求,使系统稳定工作,提高产品的性价比,电源电路的 设计决定采用如下方案:
U911TFUSE1J242220μFBRIDGE3C1C4D11DD1U8GNDGNDLM7805VoutLM7812Vout3+12vGNDVin+53U101VinLM7905Vout3VinC72212~220V电源MFC1104μFLEDR1110K2C5104μFC6104μF104μFTRANS1 U91GNDLM7805VoutFUSE2J2MFC212~220V电源TRANS2DD2C8C9D2220μF104μFBRIDGELED1U8GNDLM7812Vout3+12V22GNDT2Vin+53Q?COMPONENT_23VoutVin1VinC122R1110KC10104μFC11104μF104μF 图3.3 电源电路图
220V的交流电经过变压器后输出15V的电压,经整流滤波电路后, 通过LM7812和LM7905进行DC/DC变换得到+12V和+5V、-5V供器和系统的其他芯片使用。在变压器的原边加入熔断保护装置和MFC网络,使得系统获得的电源更稳定,效果更好,且电路短路时,熔断装置会迅速切断电源,保护其他电路元件不被损坏,供电电路如图3.3
18
基于单片机的电子秤设计
所示。
3.3 数据采集部分电路设计
数据采集部分电路包括传感器输出信号放大电路、A/D转换器与单片机接口电路。 3.3.1 传感器和其外围以及放大电路设计
传感器实际上是一种将质量信号转变为可测量的电信号输出的装置。用传感器首先要考虑传感器所处的实际工作环境,这点对正确使用传感器至关重要,它关系到传感器能否正常工作以及它的安全和使用寿命,乃至整个衡器的可靠性和安全性。因此传感器外围电路的抗干扰能力是数据采集部分电路设计的关键环节。
传感器检测电路的功能是把电阻应变片的电阻变化转变为电压输出,由于惠斯登电桥具有很多优点,如可以抑制温度变化的影响,可以抑制侧向力干扰,可以比较方便的解决称重传感器的补偿问题等,又因为全桥式等臂电桥的灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,所以在本设计中选用最终方案我们选择的是上海开沐自动化有限公司生产的NS-TH1系列称重传感器,额定载荷20Kg,该称重传感器均采用全桥式等臂电桥。
由于传感器输出的电压信号很小,是mV级的电压信号,因此为了提高系统的抗干扰能力,在传感器外围电路的设计过程中,增加了由普通运放设计的差动放大器增益调节电阻Rg选用10K 电阻,是为了满足系统抗干扰的要求而设计。其电路图如3.2所示。
19
基于单片机的电子秤设计
+10VR1112KR1514KRP1+R125K+R2-V1R11.1K20KA2LM324-R310KR420K-A4U02.5VR1612KR4R24K+10K-R171KR1413KA3+R310KR420K-+R132K 图3.2传感器和其外围电路图
这是一个电阻应变片式称重传感器,将电阻应变片贴在金属的弹性体(即力敏感器)上,并连接成一差动全桥电路。电阻应变片实心轴沿轴向线应变为:
lll (3-1)
实心轴沿圆周向线应变为:
rrr (3-2)
金属材料的电阻相对变化公式为:
RRdRR12EK (3-3)
把3-1、3-1代入3-3可以得到其输出电压为:
U0kU21FAE (3-4)
其中F为压力(即重物重量)A为受力面积E为弹性材料的弹性模量。如果在电阻的两侧都加入应变片,则其输出为
U0kUkU6lEb0h2F (3-5)
SP20C-G501的输出电压为1-5V相应压力为1-50KPa。供电电流变动会直接影响传感器的输出电压,因此希望电流变动要小。此外,增大或减小驱动电流可调整输出电压,
20
基于单片机的电子秤设计
但电流过小,输出电压降低同时抗噪声能力减弱;电流过大,会使传感器发热等,将对传感器特性影响加大。因此在电路中使用1mA的驱动电流。即使用的电流为1mA左右。电路中,采用通用运算放大器LM324,由稳态二极管VS提供2.5V的输出电压经电阻R2和R3分压得到基准电压,作为运放A1输入电压,并供给1mA的电流。传感器的驱动电流流过基准电阻R4,其上的压降等于输入电压。
R13和R14为失调电压的温度补偿电阻,阻值选择500k-1.5M。输入采用高输入阻抗的差动输入方式,再有差动放大器电路进行放大,输出1-5V的电压。RP2用于调整电路输入的灵敏度,RP1用于失调电压的调整,调整时,压力为0KPa时输出电压为1V,调整RP1,当压力为达到20Kg的力时,输出电压为5V即可。
而有式(3-5)得三运放放大电路的输出信号与输入信号的关系式为:
U0R42R21R3R1U1U2 (3-6)
通过上式可以看出,放大系数为
KR42R21R3R1 (3-7)
代入数值可以计算出,其放大系数在70~150之间,完全符合设计要求。
有(3-6)可以得到电桥输入电压U0与被测重量x成正比,即
U0xK0Ur (3-8)
式中:Ur——电桥的电源电压 K0——传感器系数
3.3.2 A/D转换芯片与AT89S52单片机接口电路设计
AD574是美国Analog Device公司生产的12位单片A/D转换器。它采用逐次逼近型的A/D转换器,最大转换时间为25us,转换精度为0.05%,所以适合于高精度的快速转换采样系统。芯片内部包含微处理器借口逻辑(有三态输出缓冲器),故可直接与各种类型的8位或者16位的微处理器连接,而无需附加逻辑接口电路,切能与CMOS及TTL电路兼容。AD574采用28脚双列直插标准封装,其引脚图如下:
21
基于单片机的电子秤设计
图3.5 AD574管脚图
A/D574有5根控制线,逻辑控制输入信号有: A0:字节选择控制信号。 CE:片启动信号。
/CS:片选信号。当/CS=0,CE=1同时满足时,AD574才处于工作状态,否则工作被禁止。
R/-C:读数据/转换控制信号。
12/-8:数据输出格式选择控制信号。当其为高电平时,对应12位并行输出;为低电平时,对应8位输出。
当R/-C=0,启动A/D转换:当A0=0,启动12位A/D转换方式;当A0=1,启动8位转换方式。
当R/-C=1,数据输出,A0=0时,高8位数据有效;A0=1时,低4位数据有效,中间4位为0,高4位为三态。
输出信号有:
STS:工作状态信号线。当启动A/D进行转换时,STS为高电平;当A/D转换结束时为低电平。则可以利用此线驱动一信号二极管的亮灭,从而表示是否处于A/D转换。
其它管脚功能如下:
10Vin,20Vin:模拟量输入端,分别为10V和20V量程的输入端,信号的另一端接至AGND。
DB11~DB0:12位数字量输出端,送单片机进行数据处理。 REF OUT :10V内部参考电压输出端。
22
基于单片机的电子秤设计
REF IN :内部解码网络所需参考电压输入端。
BIP OFF :补偿校正端,接至正负可调的分压网络,0输入时调整数字输出为0; AGND:接模拟地。 DGND:接数字地。
由于对AD574 8、10、12引脚的外接电路有不同连接方式,所以AD574与单片机的接口方案有两种,一种是单极性接法,可实现输入信号0~10V或者0~20V的转换;另一种为双极性接法,可实现输入信号-5~+5V或者-10~+10V之间转换。
我们采用单极性接法,电路接线图如下图3-4所示:
图3.6 AD574与AT89S52的接线图
根据芯片管脚的原理,无论启动、转换还是结果输出,都要保证CE端为高电平,所以可以将单片机的/RD引脚和/WR端通过与非门与AD574的CE端连接起来。转换结果分高8位、低4位与P0口相连,分两次读入,所以12/-8端接地。同时,为了使CS、A0、R/-C在读取转换结果时保持相应的电平,可以将来自单片机的控制信号经74LS373
23
基于单片机的电子秤设计
锁存后再接入。CPU可采用中断、查询或者程序延时等方式读取AD574的转换结果,本设计采用中断方式,则将转换结束状态STS端接到P3.2(外部中断/INT0)。其工作过程如下:
A.当单片机执行对外部数据存储器的写指令,并使CE=1,/CS=0,R/-C=0,A0时, 进行12位A/D转换启动。
B.CPU等待STS状态信号送P3.2口,当STS由高电平变为低电平时,就表示转换结束。转换结束后,单片机通过分两次读外部数据存储器操作,读取12位的转换结果数据。
C.当CE=1,/CS=0,R/-C=1,A0=0时,读取高8位;当CE=1,/CS=0,R/-C=1,A0=1时,读取低4位。
3.3.3 测量算法
A/D转换结果D与被测量x存在以下关系:
DXSKUmDFS (3-9)
式中:S——传感器及其测量电路的灵敏度(即被测量X转换成电压U的转换系数) K——放大器的放大倍数
Um——A/D转换器满量程输入电压 DFS——A/D转换器满量程输出数字 而被测量X总是以其测量数字N和测量单位x1表示
Xx1N (3-10)
将式(3-10)代入(3-9)得
Dx1SKUmDFSN (3-11)
由上式可见只要满足以下条件
x1SKUm1 (3-12)
DFS 24
基于单片机的电子秤设计
就可以使A/D转换结果D与被测量x的数值N相等,即D=N,在这种情况下将A/D转换结果作为被测量的数值传送到显示器显示出来。
3.4显示电路与AT89S52单片机接口电路设计
在2.3显示电路论证中,本设计采用是LCD显示。在LCD驱动时,需在段电极和公共电极上施加交流电压。若只在电极上施加DC电压时,液晶本身发生劣化。液晶驱动方式包括静态驱动、动态驱动等驱动方式。 (1)静态驱动
所有的段都有独立的驱动电路,表示段电极与公共电极之间连续施加电压。它适合于简单控制的LCD。 (2)多路驱动方式
构成矩阵电极,公共端数为n,按照1/n的时序分别依次驱动公共端,与该驱动时序相对应,对所有的段信号电极作选择驱动。这种方式适合于比较复杂控制的LCD。 在多路驱动方式中,像素可分为选择点、半选择点和非选择点。为了提高显示的对比度和降低串扰,应合理选择占空比(duty)和偏压(bias)。
施加在LCD上所表示的ON和OFF时的电压有效值与占空比和偏压的关系如下: Vo:LCD驱动电压 N:占空比(1/N) a:偏压(1/a)
多路驱动方式可分为点反转驱动和帧反转驱动。点反转驱动适合于低占空比应用,它在各段数据输出时,将数据反转。帧反转驱动适合于高占空比应用,它在各帧输出时,将数据反转。
对于多灰度和彩色显示的控制方法,通常采用帧频控制(FRC)和脉宽调制(PWM)方法。帧频控制是通过减少帧输出次数,控制输出信号的有效值,来实现多灰度和彩色控制。而脉宽调制是通过改变段输出信号脉宽,控制输出信号的有效值,来实现多灰度和彩色控制。
如图3.7所示。
25
基于单片机的电子秤设计
图3.7
3.5键盘电路与AT89S52单片机接口电路设计
矩阵式键盘的结构与工作原理: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式键盘的按键识别方法 :确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线
26
基于单片机的电子秤设计 为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 在本系统中键盘采用矩阵式键盘并采用中断工作方式。键盘为4 X 4键盘,包括0、1、2、3、4、5、6、7、8、9、十个数字及确认和清除键。采用中断工作方式提高了CPU的利用效率,没键按下时没有中断请求,有键按下时,向CPU提出中断请求,CPU响应后执行中断服务程序,在中断程序中才对键盘进行扫描。下图就是键盘电路与AT89S52单片机接口电路图。 12VCCU23AT89S52AND12123456783938373635343332INT0P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07RXDRDWRINT1ALE/PX1X2101918PSENT0T1EA/VPTXDRESETP24P25P26P27P20P21P22P2321222324R34&1K252627282914153111917161330 图3.8键盘电路与AT89S52单片机接口电路图 27 基于单片机的电子秤设计
3.6报警电路的设计
+5VQ1P2.6R15300D1PNPLEDLS1SPEAKER 图3.9报警电路图
当电路检测到称重的物体超过仪器的测量限制时,将产生一个信号给报警电路。使报警电路报警从而提醒工作人员注意,超限报警电路如图3.9所示。
它是有89S52的P2.6口来控制的,当超过设置的重量时(5Kg),通过程序使P2.6口值为高电平,从而使三极管导通,报警电路接通,使蜂鸣器SPEAKER发出报警声,同时使报警灯LED发光。由于持续的声音不能够引起人们的关注,所以本系统的报警电路采用间断的声音和频闪的灯光来实现。这一任务的实现主要靠程序来完成,在此不再赘述。
第四章 系统软件设计
程序设计是一件复杂的工作,为了把复杂的工作条理化,就要有相应的步骤和方法。其步骤可概括为以下三点:
⑴ 分析系统控制要求,确定算法:对复杂的问题进行具体的分析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。这是能否编制出高质量程序的关键。
⑵ 根据算法画流程图:画程序框图可以把算法和解题步骤逐步具体化,以减少出错的可能性。
28
基于单片机的电子秤设计
⑶编写程序:根据程序框图所表示的算法和步骤,选用适当的指令排列起来,构成一个有机的整体,即程序。
程序数据的一种理想方法是结构化程序设计方法。结构化程序设计是对利用到的控制结构类程序做适当的限制,特别是限制转向语句(或指令)的使用,从而控制了程序的复杂性,力求程序的上、下文顺序与执行流程保持一致性,使程序易读易理解,减少逻辑错误和易于修改、调试。根据系统的控制任务,本系统的软件设计主要由主程序、初始化程序、显示子程序、数据采集子程序和延时程序等组成。
4.1主程序设计
图4.1 系统主程序流程图
系统上电后,初始化程序将 RAM 的30H~5FH内存单元清零,P2.6引脚置成低电平,
29
基于单片机的电子秤设计
防止误报警。
主程序模块主要完成编程芯片的初始化及按需要调用各模块(子程序),在系统初始化过程中,将系统设置成5Kg量程,并写5Kg量程标志。设计流程图如图4.1所示。
4.2 子程序设计
系统子程序主要包括A/D转换启动及数据读取程序设计、键盘输入控制程序设计、显示程序设计、以及中断程序设计等。 4.2.1 A/D转换启动及数据读取程序设计
A/D转换子程序主要是指在系统开始运行时,把称重传感器传递过来的模拟信号转换成数字信号并传递到单片机所涉及到的程序设计。设计流程图如图4-2所示。
开始A/D574 初始化启动A/D转换NA/D转换完成Y数据储存数据显示
4.2 A/D转换启动及数据读取程序流程图
4.2.2数制转换子程序设计
在数制转换前要进行系数调整, 在IN0输入的数最大为5V,要求的质量500g对应
30
基于单片机的电子秤设计
的是4.8V,为十六进制向十进制转换方便,将系数放大100倍。并用小数点位置的变化体现这一过程。
数制之间的转换:在二进制数制中,每向左移一位表示数乘二倍。以每四位作为一组对数分组,当第四位向第五位进位时,数由8变到16,若按十进制数制规则读数,则丢失6,所以应进行加六调整。DA指令可完成这一调整。可见数制之间的转换可以通过移位的方法实现。其中,移出数据的保存可以通过自乘再加进位的方法实现,因为乘二表示左移一位,左移后,低位进一,则需加一。否则,加零。而通过移位已将要移入的尾数保存在了进位位中,所以能实现。
开始R3存16位二进制的低八位R2存16位二进制的高八位R6存调整后的低两位,R5存中间两位,R4存高两位R3左移一位,R2右移一位R7=R7.1R6、R5、R4依次保存移入值,并分别进行调整R7=0Y取R4的低位存入30H单元作为百位信息,R5高位存入31H作为十位信息,低位存入32H作为个位R6高位作为小数点的信息N返回
图4.3 数据处理流程图
31
基于单片机的电子秤设计
4.2.3显示子程序设计
显示子程序主要是来判断是否需要显示,以及如何去显示,也是十分重要的程序之一。而显示子程序是其他程序所需要调用的程序之一,因此,显示子程序的设计就显得举足轻重,设计的时候也要十分的小心和卖力。设计显示子程序的流程图如下图4-4所示:
开始显示欢迎界面N有无按键Y显示功能选择按键N有无按键YY键盘输入界面是否为DNY显示测量界面是否为EN是否为FN返回Y
图4.4显示子程序流程图
4.2.4 键盘扫描子程序的设计
如图3.4.1所示:键盘电路设计成4X4矩阵式,由键盘编码方式可以得出
32
基于单片机的电子秤设计
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E各键对应的键值: 0D8H,0D0H,0D1H,0D2H,0C8H,0C9H,0CAH,0C0H,0C1H, 0C2H, 0C3H,0CBH,0D3H,0DBH,0DAH,0D9H 。
在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。
图4.5键盘扫描子程序流程图
33
基于单片机的电子秤设计
4.2.5报警子程序的设计
由于要求要键盘设定阈值,所以要求有报警电路,报警电路可以有声报警也可有光报警,将设定的阈值与实时显示的值进行比较,如果设定值小于实时显示的值,则将P1.0置为1,将发光二极管点亮,或使蜂鸣器发出声音。这就需要一段比较程序以及一小段置1清0程序。
开始A/D高位大?YNN与阈值相等?YA/D低位大?NN与阈值相等?YY报警返回
图4.6 报警子程序框图
34
基于单片机的电子秤设计
设计总结
随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次设计中的半桥电子秤就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。
首先是传感器的精密度,它将直接影响电子秤的称重准确度。课设时由于传感器发出的信号不是很稳定,所以称重时误差很大。如果使用精密度较高的传感器,效果会好的多。
其次是数据采集处理阶段,此阶段是对传感器发出的信号进行量化、采集,主要分为信号放大、采集,然后进行A/D转换。该阶段需注意的地方是对传感器输出的信号进行放大时,应选取合适的运算放大电路。最好是预先计算好应放大的倍数,以便选取。还有就是进行数据处理时,选取适当的数据转换系数,使输出满足量程要求。
35
基于单片机的电子秤设计
参考文献
[1]赵茂泰 智能仪器原理及应用[M].北京:电子工业出版社.2004:
[2]张毅刚 MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社.2003: [3]贾伯年,俞朴.传感器技术[M].东南大学出版社.2000:
[4]单成祥 传感器理论设计基础及其应用[M].北京:国防工业出版社,1999: [5]李道华,李玲,朱艳 传感器电路分析与[M].武汉:武汉大学出版社,2000: [6]沙占友,王彦朋等 智能传感器系统设计与应用[M].北京:电子工业出版社,2004.6 [7]何希才,薛永毅 传感器及其应用实例[J].北京:机械工业出版社,2004.1 [8]李群芳 单片机微型计算机与接口技术[M].电子工业出版社. [9]周立功 单片机实验与实践[M].北京航空航天大学出版社.2004.6
[10]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品汇编[J].北京理工大学出版社.2005.11
[11]何立民 单片机高级教材[M].北京:航空航天大学出版社.2000
[12]童诗白,华成英 模拟电子技术基础[M]. 北京:北京高等教育出社.2001
[13]程林 超省电型电子秤的设计方案[J].福建:福建省计量科学技术研究所. 2008.3
[14] Leoj.scanlon:“Assembly Language programming with the IBM PC AT”Brady Communica Yion Company.,Inc.,1986:39-57.
[15] Donna N.Tabler:“IBM PC Assembly language” John Wiley&Sons.Inc.,1985:86-98. [16] http://www.zdh.net.cn/
36
基于单片机的电子秤设计
附录1 系统总图附 录
37
基于单片机的电子秤设计
电源电路
38
GNDTFUSE12U84VinGNDLM7812Vout32+12v2TRANS1U91T2FUSE2DD2C8C91D2220μF104μFBRIDGETRANS2LEDR1110KVinGNDGND定义 中文LCD液晶 128X64 的地址
1VinGND~220V电源2U8LM7812Vout3基于单片机的电子秤设计
+12V22GND~220V电源2
U9VoutVinVout3LM7805+531U10LM790512C1C4D11DD1C7220μFBRIDGE104μFLEDR1110KC5104μF3C6104μF104μFLM7805VinVout+53Q?COMPONENT_23VoutVin1附录2 程序清单
J21MFC139
J2MFC2C1212C10104μFC11104μF104μF
基于单片机的电子秤设计
W_C_GLCD XDATA W_D_GLCD XDATA R_B_GLCD XDATA R_D_GLCD XDATA
0E000H 0E001H 0E002H 0E003H
;------------------------------------------------------- TIMER0 DATA 30H ;延时时间的初值 TIMER1 DATA 31H ;调用延时子程序的次数 DATA1 DATA 32H ;点阵显示的变量1 DATA2 DATA 33H ;点阵显示的变量2 X DATA 34H ;X方向的位置 Y DATA 35H ;Y方向的位置 COUNTER DATA 36H ;计数器 N DATA 37H ;行数变量 D1 DATA 38H ;点变量1 D2 DATA 39H ;点变量1 ADDR DATA 3AH ;起始的显示位置
ADDR1 DATA 3BH ;起始的显示位置临时变量 N1 DATA 3CH ;行数的临时变量
;******************************************************* ;* 主程序开始
;******************************************************* ORG 0000H AJMP START ORG 0030H
START: CLR P1.0 SETB P1.1 MOV SP,#60H
LCALL INITIAL_GLCD ; 调用LCD初始化 LCALL KAIJI ; 显示开机画面 LCALL DELAY500 LCALL DELAY500 LCALL DELAY500
LCALL TISHI ; 显示主界面 LCALL INI_8279
------------------------------------------------
40
基于单片机的电子秤设计
;判断是否继续
------------------------------------------------------------------ KEY-A: MOV DPTR,#8101H MOVX A,@DPTR ANL A,#07H CJNE A,#00H,LP1 SJMP KEY-A MOV DPTR,@8100H MOVX A,DPTR CJNE A,0DBH,KEY-A AJMP K1 LCALL YUZHI LCAL celianjieguo LCALL CELINGJIEGUO AJMP $ 各界面显示内容
DHTABLE1: DB \" 欢迎使用 \" DHTABLE2: DB \" 半桥电子秤\" DHTABLE3: DB \" ********* \" DHTABLE4: DB \" ********* \" DHTABLE5: DB \" *********** \" DHTABLE6: DB \" 设置警报上限 \" DHTABLE7: DB \" 确定 \" DHTABLE8: DB \" 请按D 键 \" DHTABLE9: DB \" \" DHTABLE10: DB \" 报警上限重量: \" DHTABLE11: DB \" . g \" DHTABLE12: DB \" 确定(E) \" CELIANG1: DB \" 电子秤 \" CELIANG2: DB \" 重量是: \" CELIANG3: DB \"
CELIANG4:DB \" 返回 (F) \"
;=======================================================
41
基于单片机的电子秤设计
键盘扫描子程序
;======================================================= ORG 0000H AJMP MAIN ORG 0030H MAIN:
MOV DPTR,#TAB ;将表头放入DPTR LCALL KEY ; MOVC A,@A+DPTR ; MOV P0,A ; CLR P2.1 ; LJMP MAIN ;KEY: LCALL KS ; JNZ K1 ; LCALL DELAY2 ; AJMP KEY ;K1: LCALL DELAY2
LCALL DELAY2 ; LCALL KS ; JNZ K2 ; AJMP KEY ;K2: MOV R2,#0EFH ; MOV R4,#00H ;K3: MOV P1,R2 ;L6: JB P1.0,L1 ;P1.0 MOV A,#00H ; AJMP LK ;L1: JB P1.1,L2 ;P1.1 MOV A,#04H ; AJMP LK ;L2: JB P1.2,L3 ;P1.2 MOV A,#08H ; AJMP LK ;L3: JB P1.3,NEXT ;P1.3 MOV A,#0cH ;调用键盘扫描程序 查表后将键值送入ACC 将Acc值送入P0口 开显示
返回反复循环显示 调用检测按键子程序 有键按下继续 无键按调用延时去抖 返回继续检测按键 有键按下延时去抖动 再调用检测按键程序 确认有按下进行下一步 无键按下返回继续检测 将扫描值送入R2暂存 将第一列值送入R4暂存 将R2的值送入P1口 等于1跳转到L1 将第一行值送入ACC 跳转到键值处理程序 等于1跳转到L2 将第二行的行值送入ACC 跳转到键值理程序进行键值处理 等于1跳转到L3 将第三行的行值送入ACC 跳转到键值处理程 等于1跳转到NEXT处 将第四行的行值送入ACC
42
基于单片机的电子秤设计
LK: ADD A,R4 ;行值与列值相加后的键值送入A PUSH ACC ;将A中的值送入堆栈暂存 K4: LCALL DELAY2 ;调用延时去抖动程序 LCALL KS ;调用按键检测程序 JNZ K4 ;按键没有松开继续返回检测 POP ACC ;将堆栈的值送入ACC RET NEXT:
INC R4 ;将列值加一 MOV A,R2 ;将R2的值送入A
JNB ACC.7,KEY ;扫描完至KEY处进行下一扫描
RL A ;扫描未完将A中的值右移一位进行下一列的扫描 MOV R2,A ;将ACC的值送入R2暂存 AJMP K3 ;跳转到K3继续
KS: MOV P1,#0FH ;将P1口高四位置0低四位值1 MOV A,P1 ;读P1口
XRL A,#0FH ;将A中的值与A中的值相异或 RET ;子程序返回
DELAY2: ;40ms延时去抖动子程序 MOV R5,#08H L7: MOV R6,#0FAH L8: DJNZ R6,L8 DJNZ R5,L7 RET TAB:
db 0D8H,0D0H,0D1H,0D2H,0C8H,0C9H,0CAH,0C0H,0C1H,0C2H0C3H,0CBH,0D3H,0DBH,0DAH,0D9H 。
;======================================================= 显示子程序 入口参数:A,B,C
使用资源:DPTR,P3,P1 ,R7
43
;;
,
基于单片机的电子秤设计
;======================================================= TISHI: LCALL CLEAR_GLCD ; 清除LCD显示屏幕 DISPLAY: NOP ;第一位显示
MOV DPTR,#TAB ;指定查表启始地址 MOV A,A_BIT ;取第一位数
MOVC A,@A+DPTR ;查第一位数的7段代码 ORL A,#10H SETB P3.4
MOV P1,A ; LCALL delay8ms ; CLR P3.4; MOV DPTR,#TAB ; MOV A,B_BIT ; MOVC A,@A+DPTR ; SETB P3.5
MOV P1,A ; LCALL delay8ms ; CLR P3.5; JB FUHAO,XSBW MOV A,#01H JMP XSBW2
XSBW: MOV A,C_BIT ; JNZ XSBW1 MOV A,#00H JMP XSBW2
XSBW1: MOVC A,@A+DPTR ;XSBW2: MOV P1,A ; SETB P3.6
LCALL delay8ms ; CLR P3.6;
送出第一位的7段代码 显示8ms
开第一位显示;第二位显示 指定查表启始地址 取第二位数
查第二位数的7段代码 送出第二位的7段代码 显示8ms
开第二位显示;第三位位显示 取第三位数 查第三位数的7段代码 送出第三位的7段代码 显示8ms
开第三位显示;第四位位显示
44
基于单片机的电子秤设计
MOV A,D_BIT ;取第四位数
MOVC A,@A+DPTR ;查第四位数的7段代码 SETB P3.3
MOV P1,A ;送出第四位的7段代码 LCALL delay8ms ;显示8ms CLR P3.3;开第四位显示 RET 测量界面子程序
Celiangjieguo: LCALL CLEAR_GLCD ; 清除LCD显示屏幕 MOV ADDR1,#00H MOV N1,#08H MOV DPTR,#DHTABLE1 CALL DHZ MOV ADDR1,#10H MOV N1,#08H MOV DPTR,#DHTABLE2 CALL DHZ MOV ADDR1,#08H MOV N1,#08H MOV DPTR,#DHTABLE3 CALL DHZ MOV ADDR1,#18H MOV N1,#08H MOV DPTR,#DHTABLE4 CALL DHZ END
45
因篇幅问题不能全部显示,请点此查看更多更全内容