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

电子秤设计2

2012-06-15 41页 doc 1MB 72阅读

用户头像

is_432432

暂无简介

举报
电子秤设计2基于单片机的电子秤设计 目 录 1第一章 绪论 12 设计任务书 2第二章 系统方案论证与选型 32.1 控制器部分 42.2 数据采集部分 42.2.1 传感器的选择 52.2.2放大电路选择 62.2.3 A/D转换器的选择 72.2.4 键盘处理部分方案论证 82.3显示电路部分的选择 82.4超量程报警部分选择 9第三章 硬件电路设计 93.1 AT89S52的最小系统电路 93.1.1单片机芯片AT89S52介绍 93.1.2.单片机管脚说...
电子秤设计2
基于单片机的电子秤设计 目 录 1第一章 绪论 12 设计任务书 2第二章 系统论证与选型 32.1 控制器部分 42.2 数据采集部分 42.2.1 传感器的选择 52.2.2放大电路选择 62.2.3 A/D转换器的选择 72.2.4 键盘处理部分方案论证 82.3显示电路部分的选择 82.4超量程报警部分选择 9第三章 硬件电路设计 93.1 AT89S52的最小系统电路 93.1.1单片机芯片AT89S52介绍 93.1.2.单片机管脚说明 113.1.3 AT89S52的最小系统电路构成 123.2 电源电路设计 143.3 数据采集部分电路设计 143.3.1 传感器以及放大电路设计 143.3.2 A/D转换器设计 173.3.3 测量算法 183.4显示电路与AT89S52单片机接口电路设计 193.5键盘电路与AT89S52单片机接口电路设计 203.6报警电路的设计 21第四章 系统软件设计 224.1主程序设计 234.2 子程序设计 234.2.1 A/D转换启动及数据读取程序设计 244.2.2数制转换子程序设计 254.2.3显示子程序设计 264.2.4 键盘扫描子程序的设计 274.2.5报警子程序的设计 284.2.6 价格计算 294.2.7 置零 30第五章 电子秤测量结果不确定度评定 32参考文献 33附录1 系统总图 34附录2 程序清单 第一章 绪论 1 电子秤的工作原理 当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。此信号由放大电路进行放大、经滤波后再由模/数(A/D)器进行转换,数字信号再送到微处器的CPU处理,CPU不断扫描键盘和各种功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、、由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,CPU发出指令,从内存贮器中读出送到显示器显示,或送打印机打印。一般地信号的放大、滤波、A/D转换以及信号各种运算处理都在仪表中完成。 2 设计任务书 1、使用单片机为控制核心。 2、使用键盘输入数据,操作简单,方便。 3、液晶显示所称量的物品重量,同时还可显示物品的数量,单价,金额。 4、具有去皮功能和金额累加计算功能。 5、当物品重量超过电子秤量程,即过载情况或者是物品重量小于A/D转换器所能转换的最小精度,即欠量程的时候,具有超重报警功能。 6、主要技术指标为:称量范围0~2kg; 放大电路设计(灵敏度1mV/V,输出信号为0~10mV,A/D转换输入为0-4.999V)。由4节7号电池供电。 第二章 系统方案论证与选型 按照本设计功能的要求,系统由6个部分组成:控制器部分、测量部分、报警部分、数据显示部分、键盘部分、和电路电源部分,系统设计总体方案框图如图2.1所示。 SHAPE \* MERGEFORMAT 图2-1设计思路框图 测量部分是利用称重传感器压力信号,得到微弱的电信号(本设计为电压信号),而后经处理电路(如滤波电路,差动放大电路,)处理后,送A/D转换器,将模拟量转化为数字量输出。控制器部分接受来自A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实际重量信号,并将其存储到存储单元中。控制器还可以通过对扩展I/O的控制,对键盘进行扫描,而后通过键盘散转程序,对整个系统进行控制。数据显示部分根据需要实现显示功能。 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 传感器的选择 在设计中,传感器是一个十分重要的元件,因此对传感器的选择也显的特别的重要,不仅要注意其量程和参数,还有考虑到与其相配置的各种电路的设计的难以程度和设计性价比等等. 平行梁微型秤称重传感器 尺寸:长80mm 宽1.27mm 高1.27mm 规格:1kg 2kg 5kg 额定负荷 0.6,1,2,3,5,6(kg) 额定输出 1.0 ±0.15mV/V 输入阻抗 1115±10% Ω 输出阻抗 1000±10% Ω 推荐工作电压 5~12 VDC 最大工作电压 15 VDC 材质 铝合金 满量程电压=激励电压x灵敏度1.0mv/v 根据设计要求满量程电压为0-10mv,由上式得激励电压为10V 安装方式:悬臂梁安装方式 带线段固定 其它的悬空 另一边上面称量 设计要求 平行梁微型秤称重传感器 称量范围0~2kg 2KG 符合 灵敏度1mV/V 1.0 ±0.15mV/V 符合 输出信号0~10mV 满量程电压=激励电压10Vx灵敏度1.0mv/v=10mV 符合 电源带负载能力 输入阻抗 1115±10% Ω 符合 根据设计要求,灵敏度符合要求,规格选用2KG,激励电压10V 2.2.2放大电路选择 采用专用仪表放大器,如:INA128,INA121等。此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。 INA128P,接口如下图3-2-1所示: 图3-2-1 放大器增益 ,通过改变Rg的大小来改变放大器的增益。 基于以上分析,我们决定采用制作方便而且精度很好的专用仪表放大器INA128。 INA128是低功耗、高精度的通用仪表放大器。它们通用的 3 运放(3-op amp)设计和体积小巧使其应用范围广泛。反馈电流(Current-feedback)输入电路即使在高增益条件下(G = 100时,200kHz)也可提供较宽的带宽。单个外部电阻可实现从1至10000的任一增益选择。INA128提供工业标准的增益等式(gain equation)INA129 的增益等式与 AD620 兼容。INA128用激光进行修正微调,具有非常低的偏置电压(50mV)、温度漂移(0.5 )和高共模抑制(在 G=100 时,120dB)。其电源电压低至±2.25 且静态电流只有 700uA,是电池供电系统的理想选择。内部输入保护能经受±40V电压而无损坏。 设计要求 INA128运算放大器 输出电压0-4.999v 5v 符合 2.2.3 A/D转换器的选择 A/D转换器的选择 对传感器量程和精度的分析可知: A/D 转换器误差应在 0.03%以下 8位A/D精度:2Kg/256=7.81克 12 位 A/D 精度: 2Kg/4096=0.49g 14 位 A/D 精度: 2Kg/16384=0.12g 考虑到其他部分所带来的干扰 ,8位 A/D 无法满足系统精度要求。作为一般小商品称重需求,我们只需要选择12位的A/D转换器就可以了。 考虑到本系统中对物体重量的测量和使用的场合,精度要求不是很苛刻,转换速率要求也不高,而双积分型A/D转换器精度高,具有精确的差分输入,重要的是输入阻抗高(大于 ),可自动调零,有超量程信号输出,全部输出于TTL电平兼容。且双积分型A/D转换器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对50Hz的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。 根据系统的精度要求以及综合的分析其优点和缺点,本设计采用了12位A/D转换器AD574。 分辨率:12 位 非线性误差:小于±1/2LBS 或±1LBS 转换速率:25us 模拟电压输入范围:0—10V 和0—20V,0—±5V 和0—±10V 两档四种 电源电压:±15V 和5V 数据输出格式:12 位/8 位 要求 AD574 模拟电压输入0-4.999 0—5V 符合 转换器误差小于0.03% 1/4096=0.024% 符合 单片机接口 与AT89S52吻合 符合 取0—5V 数据输出格式:12 位 电源电压: 5V 2.2.4 键盘处理部分方案论证 由于电子秤需要设置单价(十个数字键),还具有确认、删除等功能,总共需设置17个键(包括一个复位键)。键盘的扩展有使用以下方案: 采用矩阵式键盘:矩阵式键盘的特点是把检测线分成两组,一组为行线,一组列线,按键放在行线和列线的交叉点上。图2.6给出了一个4×4的矩阵键盘结构的键盘接口电路,图中的每一个按键都通过不同的行线和列线与主机相连这。4×4矩阵式键盘共可以安装16个键,但只需要8条测试线。当键盘的数量大于8时,一般采用矩阵式键盘。 图2.4 矩阵式键盘 结合本设计的实际要求,12个按键使用3×4矩阵式键盘,另外一个复位键使用独立式按键实现。 3*4矩阵键盘 2.3显示电路部分的选择 数据显示是电子秤的一项重要功能,是人机交换的主要组成部分,它可以将测量电路测得的数据经过微处理器处理后直观的显示出来。数据显示部分可以有以下两种方案供选择。LCD液晶显示器是一种极低功耗显示器,从电子表到计算器,从袖珍时仪表到便携式微型计算机以及一些文字处理机都广泛利用了液晶显示器。 1602采用标准的16脚接口,其中:   第1脚:VSS为电源地   第2脚:VDD接5V电源正极   第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。   第4脚:RS为寄存器选择,高电平1选择数据寄存器、低电平0时选择指令寄存器。   第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。   第6脚:E(或EN)端为使能(enable)端。   第7~14脚:D0~D7为8位双向数据端。   第15~16脚:背光灯电源。15脚背光正极,16脚背光负极。 2.4超量程报警部分选择 智能仪器一般都具有报警和通讯功能,报警主要用于系统运行出错、当测量的数据超过仪表量程或者是超过用户设置的上下限时为提醒用户而设置。在本系统中,设置报警的目的就是在超出电子秤测量范围时,发出声光报警信号,提示用户,防止损坏仪器。 超限报警电路是由单片机的I/O口来控制的,当称重物体重量超过系统设计所允许的重量时,通过程序使单片机的I/O值为高电平,从而三极管导通,使蜂鸣器SPEAKER发出报警声,同时使报警灯D1发光。 第三章 硬件电路设计 3.1 AT89S52的最小系统电路 3.1.1单片机芯片AT89S52介绍 AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。其芯片引脚图如上图所示。 图3.2 AT89S52引脚图 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 RXD(串行口输入) P3.1 TXD(串行口输出) P3.2 INT0(外部中断0输入) P3.3 INT1(外部中断1输入) P3.4 T0(定时器0外部脉冲输入) P3.5 T1(定时器1外部脉冲输入) P3.6 WR(外部数据存储器写脉冲输出) P3.7 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持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。 上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。 3.2 电源电路设计 根据设计需要,本系统中需要设计两种不同级别的电源,即传感器需要+10V的电源,而系统其他芯片使用的是+5V电源。考虑本次设计的实际要求,使系统稳定工作,提高产品的性价比,电源电路的 设计决定采用如下方案: 6V转5V器件   输出电压固定的低压差三端稳压器;输出电压5V;输出电流1A;输出电流1A时,最小输入输出电压差小于0.8V;最大输入电压26V;工作温度-40~+125℃;内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。 LM2940引脚图 LM2940典型应用 由图可见,2940的电路接发极其简单。 上图为输入电压低于正常值时,输入电压与输出电压间的关系(输出电流均保持在1A时) 5V转10V 器件 名 称: (0-5V/0-10V) 直流电压信号隔离 (V/V) 放大器:ISO-U-P-O ●低成本,精度等级:0.1级 0.2级 0.5级 ●输入:0-5V/0-10V等(阻抗≥1 MΩ)标准电压信号 ●输出:0-10mA/0-20mA/4-20mA隔离变换的电流信号 0-5V/0-10V/1-5V等隔离变换的的电压信号 ●信号输入/输出/辅助电源:隔离电压3000VDC三隔离 ●全量程内很高的线性度(非线性度<0.2%) ●小体积 12 Pin SIP, 符合UL94-0标准阻燃封装 ●工业级宽温度范围:-40~+85C 说明: ISO U-P-O 系列直流电压信号隔离放大器是一种将电压信号转换成按比例输出的隔离电流或电压信号的混合集成电路。该IC内部含有一组高隔离的DC/DC电源和电压信号高效率耦合隔离变换电路等,可以将直流电压小信号进行隔离放大(U/U)输出或直接转换为直流电流(U /I)信号输出。较大的输入阻抗(≥1 MΩ),较强的带负载能力(电流输出>650Ω,电压输出≥2KΩ)能实现小信号远程无失真的传输。 Ic内部可采用陶瓷基板、印刷电阻全SMT的可靠制作及使用新技术隔离措施,使器件能满足信号输入/输出/辅助电源之间3KV三隔离和工业级宽温度、潮湿震动等现场环境要求。外接满度校正和零点校正的多圈电位器可实现 0-5V/0-10V/1-5V4-20mA/0-20mA等信号之间的隔离和转换。 选择产品型号  输入信号  辅助电源  输出信号 ISO-U2-P2-O5   0-10V    12VDC    0-10V 3.3 数据采集部分电路设计 数据采集部分电路包括传感器输出信号放大电路、A/D转换器与单片机接口电路。 3.3.1 传感器以及放大电路设计 INA128P构成的放大器及滤波电路如图3-2-2所示: 通过调节Rg的阻值来改变放大倍数,使得输出电压在A/D转换的基准电压要求范围之内。微弱信号Vi1和Vi2被分别放大后从INA128的第6脚输出。 根据要求,A/D转换器的输入电压变化范围是0V~4.999V,传感器的输出电压信号在0~10mv, 因此取放大器的放大倍数500。 因此代入公式 , 。 3.3.2 A/D转换器设计 AD574是美国Analog Device公司生产的12位单片A/D转换器。它采用逐次逼近型的A/D转换器,最大转换时间为25us,转换精度为0.05%,所以适合于高精度的快速转换采样系统。芯片内部包含微处理器借口逻辑(有三态输出缓冲器),故可直接与各种类型的8位或者16位的微处理器连接,而无需附加逻辑接口电路,切能与CMOS及TTL电路兼容。AD574采用28脚双列直插标准封装,其引脚图如下: 图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内部参考电压输出端。 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锁存后再接入。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存在以下关系: (3-9) 式中:S——传感器及其测量电路的灵敏度(即被测量X转换成电压U的转换系数) K——放大器的放大倍数 ——A/D转换器满量程输入电压 ——A/D转换器满量程输出数字 而被测量X总是以其测量数字N和测量单位x1表示 (3-10) 将式(3-10)代入(3-9)得 (3-11) 由上式可见只要满足以下条件 (3-12) 就可以使A/D转换结果D与被测量x的数值N相等,即D=N,在这种情况下将A/D转换结果作为被测量的数值传送到显示器显示出来。 将S=5mV/Kg, K=500, U=5V , DFS=4096 , X=1/2048代入 得 3.4显示电路与AT89S52单片机接口电路设计 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。 以下是1602的16进制ASCII码表地址:读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。 指令集 1602通过D0~D7的8位数据端传输数据和指令。 显示模式设置: (初始化) 0011 0000 [0x38] 设置16×2显示,5×7点阵,8位数据接口; 显示开关及光标设置: (初始化) 0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效) 0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1), N=0(读或写一个字符后地址指针减1 &光标减1), S=1 且 N=1 (当写一个字符后,整屏显示左移) S=0 当写一个字符后,整屏显示不移动 数据指针设置: 数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H) 其他设置: 01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。 3.5键盘电路与AT89S52单片机接口电路设计 矩阵式键盘的结构与工作原理: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 矩阵式键盘的按键识别方法 :确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 在本系统中键盘采用矩阵式键盘并采用中断工作方式。键盘为3 X 4键盘,包括0、1、2、3、4、5、6、7、8、9、十个数字及小数点和清除键。采用中断工作方式提高了CPU的利用效率,没键按下时没有中断请求,有键按下时,向CPU提出中断请求,CPU响应后执行中断服务程序,在中断程序中才对键盘进行扫描。下图就是键盘电路与AT89S52单片机接口电路图。 图3.8键盘电路与AT89S52单片机接口电路图 3.6报警电路的设计 图3.9报警电路图 当电路检测到称重的物体超过仪器的测量限制时,将产生一个信号给报警电路。使报警电路报警从而提醒工作人员注意,超限报警电路如图3.9所示。 它是有89S52的P2.6口来控制的,当超过设置的重量时(5Kg),通过程序使P2.6口值为高电平,从而使三极管导通,报警电路接通,使蜂鸣器SPEAKER发出报警声,同时使报警灯LED发光。由于持续的声音不能够引起人们的关注,所以本系统的报警电路采用间断的声音和频闪的灯光来实现。这一任务的实现主要靠程序来完成,在此不再赘述。 第四章 系统软件设计 程序设计是一件复杂的工作,为了把复杂的工作条理化,就要有相应的步骤和方法。其步骤可概括为以下三点: ⑴ 分析系统控制要求,确定算法:对复杂的问进行具体的分析,找出合理的计算方法及适当的数据结构,从而确定编写程序的步骤。这是能否编制出高质量程序的关键。 ⑵ 根据算法画流程图:画程序框图可以把算法和解题步骤逐步具体化,以减少出错的可能性。 ⑶编写程序:根据程序框图所表示的算法和步骤,选用适当的指令排列起来,构成一个有机的整体,即程序。 程序数据的一种理想方法是结构化程序设计方法。结构化程序设计是对利用到的控制结构类程序做适当的限制,特别是限制转向语句(或指令)的使用,从而控制了程序的复杂性,力求程序的上、下文顺序与执行流程保持一致性,使程序易读易理解,减少逻辑错误和易于修改、调试。根据系统的控制任务,本系统的软件设计主要由主程序、初始化程序、显示子程序、数据采集子程序和延时程序等组成。 4.1主程序设计 图4.1 系统主程序流程图 系统上电后,初始化程序将 RAM 的30H~5FH内存单元清零,P2.6引脚置成低电平,防止误报警。 主程序模块主要完成编程芯片的初始化及按需要调用各模块(子程序),在系统初始化过程中,将系统设置成2Kg量程,并写2Kg量程标志。设计流程图如图4.1所示。 4.2 子程序设计 系统子程序主要包括A/D转换启动及数据读取程序设计、键盘输入控制程序设计、显示程序设计、以及中断程序设计等。 4.2.1 A/D转换启动及数据读取程序设计 本课题中,A/D转换采用A/D574芯片,它是12位输出,重量计算要求精确到克,其输出值范围为000000000000B ~111111111111B转换为十进制数0~4096,而系统所要求输出重量范围0~2000g,所以我们进行线性参数的标度变换, 12 位 A/D 精度: 2Kg/4096=0.49g,近似为0.5g。因此在数制转换后保留1位小数,单价和总价也保留一位小数,即精确到角。 由于 因此A/D转换结果D与被测量x的数值N相等,即D=N,在这种情况下将A/D转换结果作为被测量的数值传送到显示器显示出来。A/D转换子程序主要是指在系统开始运行时,把称重传感器传递过来的模拟信号转换成数字信号并传递到单片机所涉及到的程序设计。设计流程图如图4-2所示。 4.2 A/D转换启动及数据读取程序流程图 4.2.2数制转换子程序设计 在数制转换前要进行系数调整, 在IN0输入的数最大为5V,要求的质量500g对应的是4.8V,为十六进制向十进制转换方便,将系数放大100倍。并用小数点位置的变化体现这一过程。 数制之间的转换:在二进制数制中,每向左移一位表示数乘二倍。以每四位作为一组对数分组,当第四位向第五位进位时,数由8变到16,若按十进制数制规则读数,则丢失6,所以应进行加六调整。DA指令可完成这一调整。可见数制之间的转换可以通过移位的方法实现。其中,移出数据的保存可以通过自乘再加进位的方法实现,因为乘二表示左移一位,左移后,低位进一,则需加一。否则,加零。而通过移位已将要移入的尾数保存在了进位位中,所以能实现。 图4.3 数据处理流程图 4.2.3显示子程序设计 显示子程序主要是来判断是否需要显示,以及如何去显示,也是十分重要的程序之一。而显示子程序是其他程序所需要调用的程序之一,因此,显示子程序的设计就显得举足轻重,设计的时候也要十分的小心和卖力。设计显示子程序的流程图如下图4-4所示: 图4.4显示子程序流程图 4.2.4 键盘扫描子程序的设计 如图3.4.1所示:键盘电路设计成4X4矩阵式,由键盘编码方式可以得出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键盘扫描子程序流程图 4.2.5报警子程序的设计 由于要求要键盘设定阈值,所以要求有报警电路,报警电路可以有声报警也可有光报警,将设定的阈值与实时显示的值进行比较,如果设定值小于实时显示的值,则将P1.0置为1,将发光二极管点亮,或使蜂鸣器发出声音。这就需要一段比较程序以及一小段置1清0程序。 图4.6 报警子程序框图 4.2.6 价格计算 该子程序中利用各工作寄存器2组,数据存在以40H单元为首址的连续单元中。 为使计算方便单价化为以角为单位。价格计算公式S=U*Wx,S为价格U为单价,Wx为实际测得重量值。 4.2.7 置零 (1)单价清零 (2)总清零 第五章 电子秤测量结果不确定度评定 1 传感器灵敏度引起的标准不确定度分量 由传感器说明可知,传感器灵敏度1.0 ±0.15mV/V,服从均匀分布,包含因子 ,则自由度 2 由12 位 A/D的标准不确定度分量 12 位 A/D 精度: 2Kg/4096=0.49g ,则自由度 3 由电源电压稳定度引起的标准不确定度分量 HT7550高输出电压精度HT7550精度±3% , ,则自由度 4由放大器温度漂移引起的标准不确定度分量 INA128温度漂移(0.5 ), ,则自由度 合成标准不确定度的评定 标准不确定度汇总表 标准不确定度分量u(xi) 不确定度来源 标准不确定度(g) νi u(1) u(2) u(3) u(4) 传感器灵敏度 12 位 A/D 电源电压 放大器温度漂移 0.086 0.283 0.173 0.288E-6 22.2 1.25E8 555.5 5E13 合成标准不确定度的计算 输入量P与m彼此独立不相关,所以合成标准不确定度可按下式得到: 合成标准不确定度的有效自由度 合成标准不确定度的有效自由度νrff 为 扩展不确定度的评定 取包含因子k=2,则扩展不确定度: 参考文献 1.梅丽凤,《单片机原理及接口技术》,清华大学出版社; 2.赵茂泰,《智能仪器原理及应用》,电子工业出版社; 3.唐文彦,《传感器》,哈尔滨工业大学出版社。 4.张毅刚.MCS-51单片机应用设计.哈尔滨工业大学出版社,2003: 5.贾伯年,俞朴.传感器技术.东南大学出版社,2000: 6.单成祥.传感器理论设计基础及其应用.国防工业出版社,1999: 7.李道华,李玲,朱艳.传感器电路分析与设计.武汉大学出版社,2000: 8.魏泽鼎.单片机应用技术与实例【M】.北京:电子工业出版社,2005.1 9.赵继文.传感器与应用电路设计【M】.北京:科学出版社,2002 10.王港元.电工电子实践指导【M】.江西:江西科学技术出版社,2005 11.晁阳.单片机MCS-51原理及应用开发教程【M】:清华大学出版社,2007.10 附录1 系统总图 附录2 程序清单 定义 中文LCD液晶 128X64 的地址 W_C_GLCD XDATA 0E000H W_D_GLCD XDATA 0E001H R_B_GLCD XDATA 0E002H R_D_GLCD XDATA 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 ------------------------------------------------ ;判断是否继续 ------------------------------------------------------------------ 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) " ;======================================================= 键盘扫描子程序 ;======================================================= ORG  0000H AJMP MAIN ORG  0030H MAIN:      MOV DPTR,#TAB         ;将表头放入DPTR      LCALL KEY         ;调用键盘扫描程序      MOVC A,@A+DPTR      ;查表后将键值送入ACC      MOV P0,A            ;将Acc值送入P0口      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        ;将扫描值送入R2暂存      MOV R4,#00H       ;将第一列值送入R4暂存 K3:  MOV P1,R2         ;将R2的值送入P1口 L6:  JB P1.0,L1          ;P1.0等于1跳转到L1      MOV A,#00H         ;将第一行值送入ACC      AJMP LK           ;跳转到键值处理程序 L1:  JB P1.1,L2         ;P1.1等于1跳转到L2      MOV A,#04H        ;将第二行的行值送入ACC      AJMP LK         ;跳转到键值理程序进行键值处理 L2:  JB P1.2,L3        ;P1.2等于1跳转到L3      MOV A,#08H        ;将第三行的行值送入ACC      AJMP LK            ;跳转到键值处理程 L3:  JB P1.3,NEXT      ;P1.3等于1跳转到NEXT处      MOV A,#0cH         ;将第四行的行值送入ACC 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,0C2H, 0C3H,0CBH,0D3H,0DBH,0DAH,0D9H 。 ;======================================================= 显示子程序 ;入口参数:A,B,C ;使用资源:DPTR,P3,P1 ,R7 ;======================================================= TISHI: LCALL CLEAR_GLCD ; 清除LCD显示屏幕 DISPLAY: NOP ;第一位显示 MOV DPTR,#TAB ;指定查表启始地址 MOV A,A_BIT ;取第一位数 MOVC A,@A+DPTR ;查第一位数的7段代码 ORL
/
本文档为【电子秤设计2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索