当前位置:首页 >> 机械/仪表 >>

基于单片机的电子秤设计


分类号 密 级

TH715

单位代码 学 号

11395 1005270118

学生毕业设计(论文)

题 作

目 者

基于单片机的电子秤设计 XXXXX 能源工程学院 测控技术与仪器 赵鹏 2014年5月24日

/>院 (系) 专 业

指导教师 答辩日期









毕业设计(论文)诚信责任书

本人郑重声明:所呈交的毕业设计(论文) ,是本人在导师的指导下独立 进行研究所取得的成果。毕业设计(论文)中凡引用他人已经发表或未发表的 成果、数据、观点等,均已明确注明出处。尽我所知,除文中已经注明引用的 内容外,本论文不包含任何其他个人或集体已经公开发表或撰 写 过 的 研 究 成 果 。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标 明。 本人毕业设计(论文)与资料若有不实,愿意承担一切相关的法律责任。

论文作者签名: 年 月 日

榆林学院本科毕业设计(论文)

摘 要
随着微电子技术的应用,市场上使用的传统称重工具已经满足不了人们的要 求。为了改变传统称重工具在使用上存在的问题,在本设计中将智能化、自动化、 人性化用在了电子秤重的控制系统中。本系统主要由单片机来控制,测量物体重 量部分由称重传感器及 HX711A/D 转换器组成,加上 LCD12864 显示单元,此电 子秤俱备了功能多、性能价格比高、功耗低、系统设计简单、使用方便直观、速 度快、测量准确、自动化程度高等特点。 本系统以 AT89S52 单片机为主控芯片,外围附以称重电路、显示电路、超量 程报警电路、键盘电路等构成智能称重系统电路板,从而实现自动称重系统的各 种控制功能。可以说,此设计所完成的电子秤很大程度上满足了应用需求。 关键词:单片机;HX711;LCD12864

I

基于单片机的电子秤设计

Design of Electronic Scale Based on Single Chip Microcomputer ABSTRACT
With the application of microelectronics technology, using traditional weighing instruments already on the market can not meet people's requirements.In order to change the traditional weighing instruments used in issues, in this intelligent, automated, user-friendly design in electronic weighing control system.This system is mainly controlled by a microcontroller, weight measurement part is composed of weighing sensors and HX711A/D converter, plus the LCD12864 display unit, this electronic scale ready features, performance and price ratio, low power consumption, system design is simple and intuitive, easy to use, fast, accurate measurement, and high degree of automation. This system dominated by AT89S52 microcontroller chips, perimeter weighting circuit, display circuits, keyboard, ultra-range alarm circuit circuit constitutes intelligent weighing system, such as circuit boards, various control functions for automated weighing systems.It can be said that this design complete electronic scales to a large extent to meet the application requirements. Key words: MCU ; HX711;LCD12864

II

榆林学院本科毕业设计(论文)

目 录
摘 要 .............................................................. I ABSTRACT ........................................................... II 目 录 ............................................................ III 1 绪 论 ............................................................ 1 1.1 课题研究的背景及意义 ........................................ 1 1.2 国内外发展状况 .............................................. 2 1.3 本文研究的主要内容 .......................................... 2 2 硬件设计 ......................................................... 5 2.1 总体结构设计 ................................................ 5 2.2 单片机选型 .................................................. 6 2.2.1 AT89S52 性能简介 ....................................... 6 2.2.2 AT89S52 引脚功能说明 ................................... 7 2.3 传感器 ...................................................... 9 2.3.1 传感器的选型 .......................................... 9 2.3.2 电阻应变式传感器的工作原理 ........................... 10 2.4 A/D 转换器 ................................................ 12 2.5 输入键盘的选定 ............................................. 14 2.6 显示器的选定 ............................................... 15 2.7 电源电路的设计 ............................................. 17 2.8 报警电路的设计 ............................................. 18 2.9 小结 ....................................................... 18 3 软件设计 ........................................................ 19 3.1 软件设计的整体思路 ......................................... 19 3.2 软件设计的方案 ............................................. 19 3.3 软件子程序设计 ............................................. 20 3.3.1 中断子程序设计 ....................................... 20 3.3.2 矩阵键盘扫描子程序设计 ............................... 21 4 焊接及调试 ...................................................... 25 4.1 硬件的焊接 ................................................. 25 4.2 硬件调试 ................................................... 25 4.3 软件调试 ................................................... 25 4.3.1 KEIL C51 简介 ........................................ 26 4.3.2 调试过程 ............................................. 26 4.4 小结 ....................................................... 26 5 结 论 ........................................................... 28 5.1 总结 ....................................................... 28 5.2 展望 ....................................................... 28 参考文献 ........................................................... 30 致 谢 ............................................................. 32 附录 A 总原理图 ..................................................... 34 附录 B 实物图 ....................................................... 36
III

基于单片机的电子秤设计

附录 C 主程序 ....................................................... 38

IV

榆林学院本科毕业设计(论文)

1
1.1 课题研究的背景及意义

绪 论

从古到今人们就非常重视称重这一基本技术,作为一种计量手段,被广泛应 用于工业、农业、科学研究、航空航天、内外贸易等各个领域,与人们的日常生 活息息相关。电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民 生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的 高低,将直接影响各行各业的现代化水平和社会经济效益的提高。称重装置不仅 是提供重量数据的单体仪表,而且作为工业控制系统和商业管理系统的一个组成 部分,推进了工业生产的自动化和管理的现代化,它起到了缩短作业时间、改善 操作条件、降低能源和材料的消耗、提高产品质量以及加强企业管理、改善经营 管理等多方面的作用。称重装置的应用已遍及到国民经济各领域,取得了显著的 经济效益。电子秤是称重技术中的一种新型仪表,广泛应用于各种场合。电子秤 与机械秤比较有体积小、重量轻、结构简单、价格低、实用价值强、维护方便等 特点,可在各种环境工作,重量信号可远传,易于实现重量显示数字化,易于与 计算机联网,实现生产过程自动化,提高劳动生产率。例如标签秤在超市中的应 用已经是耳闻目睹的了。一张小小的标签包含着:品名、价格、重量等,一一列 表在这小小的电子标签上。标签机的使用大大加快了销售速度,也方便了顾客。 顶尖条码标签称有着许多卓越的特点,以太网功能使管理更加方便。因此,称重 技术的研究和衡器工业的发展各国都非常重视[1]。50 年代中期电子技术的渗入推 动了衡器制造业的发展。60 年代初期出现机电结合式电子衡器以来,随着时代科 技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪 器带来了巨大的冲击和革命性的影响。经过 40 多年的不断改进与完善,衡器技术 也在不断进步和提高。从世界水平看,衡器技术已经经历了四个阶段,从传统的 全部由机械元器件组成的机械称到用电子线路代替部分机械元器件的机电结合 秤,再从集成电路式到目前的单片机系统设计的电子计价秤。我国电子衡器从最 初的机电结合型发展到现在的全电子型和数字智能型。现今电子衡器制造技术及 应用得到了新发展:电子称重技术从静态称重向动态称重发展;计量方法从模拟 测量向数字测量发展;测量特点从单参数测量向多参数测量发展。常规的测试仪 器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、 功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智 能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高[2]。

1

基于单片机的电子秤设计

1.2

国内外发展状况
随着第二次世界大战后的经济繁荣,为了把称重技术引入到生产生活工艺过

程中去,对称重技术提出了新的要求,希望称重过程自动化,为此 50 年代中期电 子技术渗入衡器制造业、60 年代初期出现机电结合式电子衡器以来随着时代科技 的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器 带来了巨大的冲击和革命性的影响。经过 40 多年的不断改进与完善,衡器技术也 在不断进步与提高。从世界水平看,衡器技术已经经历了四个阶段,从传统的全 部由机械元器件组成的机械秤到用电子线路代替部分机械元器件的机电结合秤, 再从集成电路式到目前的单片机系统设计的电子计价秤。近年来电子秤已愈来愈 多地参与到数据的处理和控制过程中现代称重技术和数据系统已经成为工艺技 术、储运技术、预包装技术、收货业务及商业销售领域中不可或缺的组成部分。 随着称重传感器各项性能的不断突破,为电子秤的发展奠定了基础,国外如美国、 西欧等一些国家在 20 世纪 60 年代就出现了 0.1%称量准确度的电子秤, 并在 70 年 代中期约对 75%的机械秤进行了机电结合式改造[3]。 我国的衡器在 20 世纪 40 年代以前还全是机械式的,40 年代开始发展了机电 组合式的衡器。50 年代开始出现了以称重传感器为主的电子衡器。80 年代以来, 我国通过自行研究引进消化吸收和技术改造。已由传感器的机械式衡器步入集传 感器、微电子技术、计算机技术与一体化的电子衡器发展阶段。目前,由于电子 衡器具有称量快、读数方便、能在恶劣条件下工作、便于与计算机技术相结合而 实现称重技术和过程控制的自动化特点,已被广泛应用于工矿企业、能源交通、 商业贸易和科学技术等各部门、随着称重传感器技术以及超大规模集成电路和微 处理器的进一步发展,电子称重技术及其应用范围将进一步发展,并被人们越来 越重视。电子衡器产品量大面广、种类繁多,从通用的各种规模的电子秤到大型 的电子称重系统,从单纯的称重、计价到生产过程检测系统的一个测量控制单元, 其应用领域不断扩大。根据近些年来电子称重技术和电子衡器的发展情况及电子 衡器市场的需求,电子秤的发展动向为:小型化、模块化、智能化、集成化;其 技术性能趋向于速率高、准确度高、可靠性高;其应用性趋向综合性和组合性。

1.3

本文研究的主要内容
按照本设计的基本要求,系统可分为四大模块,数据采集模块、控制器模块、

键盘电路模块、LCD 显示模块。首先是通过压力传感器采集到被测物体的重量并将 其转换为电压信号,模拟电压信号经 A/D 转换电路转换成数字信号后被送入到 AT89S52 单片机中,再经单片机控制 LCD 显示器,从而显示出被测物体的重量。其
2

榆林学院本科毕业设计(论文)

中数据采集模块由称重传感器、A/D 转换器等部分组成,本设计所采用的 LCD 显示 器具有功耗低、体积小、重量轻、超薄、无闪烁等许多其它显示器无法比拟的优 点此部分对软件的设计要求比较高,系统的大部分功能都需要软件来控制。

3

基于单片机的电子秤设计

4

榆林学院本科毕业设计(论文)

2

硬件设计

按照本设计的基本要求,系统可分为四大模块,数据采集模块、控制器模块、 键盘电路模块、LCD 显示模块。首先是通过称重传感器采集到被测物体的重量并将 其转换为电压信号,模拟电压信号经 A/D 转换电路转换成数字信号后被送入到 AT89S52 单片机中,再经单片机控制 LCD 显示器,从而显示出被测物体的重量。

2.1

总体结构设计
该次设计主要选用 AT89S52 单片机作为整个称重装置的主控器件,充当着中

央处理器的角色。对被测物进行信号采集时用到了测量精度较高的电阻应变式称 重传感器,使得测量精度得到了有效保障[3];在数模转换模块选取了 HX711 芯片 作为称重装置的 A/D 转换器件,该芯片内置稳压电源可以为传感器提供电源并且 有高增益、高精度的优点,能够把模拟电信号迅速转换为数字电信号;在显示单 元中使用了带有 12 引脚的 LCD12864 显示器,实现了用中文显示的功能,并且能 够同时显示被测物重量、单价、总金额这三项内容;用 4*4 矩阵键盘作为人机交 换界面,大大节约了单片机的 I/O 接口资源;最后用蜂鸣器进行超量程报警。整个 系统设计简单、使用方便、性价比高、低功耗、能够实现对被测物准确的测量并 且自动化程度较高软件部分应用了单片机 C 语言进行编程实现了该设计的全部功 能,控制整个电路工作。该电子秤可以实现称重范围为 0~10Kg,测量精度为 5g 的称重功能[4]。 为了更好地说明本设计的体系结构,特别地用一个系统结构框图来说明。如 下图 2-1 所示。

最小系统
AT89S52 单片机 称重 传感 器

LCD显示

A/D

键盘电路
5

基于单片机的电子秤设计 图2-1 系统结构框图

2.2

单片机选型
选择单片机型号的出发点有以下几个方面: (1)市场货源 系统设计者只能在市场上能够提供的单片机中选择,特别是作为产品大批量

生产的应用系统,所选的单片机型号必须有稳定、充足的货源。 (2)单片机性能 应根据系统的功能要求和各种单片机的性能,选择最容易实现系统技术指标 的型号,而且能达到较高的性能价格比。单片机性能包括片内硬件资源、运行速 度、可靠性、指令系统功能、体积和封装形式等方面。影响性能价格比的因素除 单片机的性能价格外,还包括硬件和软件设计的容易程度、相应的工作量大小, 以及开发工具的性能价格比[5]。 (3)研制周期 在研制任务重、时间紧的情况下,还要考虑所选的单片机型号是否熟悉,是 否能马上着手进行系统的设计。与研制周期有关的另一个重要因素是开发工具, 性能优良的开发工具能加快系统地研制进程[6]。 结合以上几方面因素的考虑,我最终选取了 AT89S52 单片机作为该次设计的 主控芯片。

2.2.1

AT89S52 性能简介

AT89S52 单片机是 AT89S 系列中的增强型高档机产品,它片内存储器容量是 AT89S51 的一倍,即片内 8KB 的 Flash 程序存储器和 256B 的 RAM。另外,它还增 加了一个功能极强的、具有独特应用的 16 位定时/计数器 2 等多种功能[7]。 在工程应用中 AT89S52 有一显著的优势:不需要烧写器,只借助 PC 机的并口 输出和极为简单的下载电路,便可将程序通过串行方式写入单片机。并且下载电 路可设计在系统中,可以随时修改单片机的软件而不对硬件做任何改动。 由此,通过对目前主流型号的比较,我们最终选择了 AT89S52 通用的普通单 片机来实现系统设计。 AT89S52 是一种兼容 MCS51 微控制器, 工作电压 4.0V 到 5.5V, 全静态时钟 0 Hz 到 33 MHz,三级程序加密,32 个可编程 I/O 口,2/3 个 16 位定 时/计数器,6/8 个中断源,全双工串行通讯口,低功耗支持 Idle 和 Power-down 模式,Power down 模式支持中断唤醒, 看门狗定时器,双数据指针,上电复位标 志。我们在外面扩展了 32K 数据存储器,以满足系统要求。

6

榆林学院本科毕业设计(论文)

2.2.2

AT89S52 引脚功能说明

AT89S52 单片机有多种封装形式,本设计中选用 40DIP 封装,其管脚定义如图 2-2 所示。

图 2-2 AT89S52 管脚图

VCC/GND: 电源/接地引脚; Port 0: P0 是一个 8 位漏极开路型双向 I/O 端口, 端口置 1(对端口写 1)时作高阻抗输 入端;P0 还可以用作总线方式下的地址数据复用管脚,用来操作外部存储器。 在这种工作模式下,P0 口具有内部上拉作用。对内部 Flash 程序存储器编程 时,接收指令字节、校验程序、输出指令字节时,要求外接上拉电阻; Port 1: P1 是一个带有内部上拉电阻的 8 位双向 I/0 端口,输出时可驱动 4 个 TTL。 端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用; 另外,P1.0、P1.1 可 以 分 别 被 用 作 定 时 器 / 计 数 器 2 的 外 部 计 数 输 入 (P1.0/T2) 和 触 发 输 入 (P1.1/T2EX);对内部 Flash 程序存储器编程时,接收低 8 位地址信息; Port 2: P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口;输出时可驱动 4 个 TTL。 端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用; P2 口在存取外部存储 器时,可作为高位地址输出;内部 Flash 程序存储器编程时,接收高 8 位地址和 控制信息; Port 3:

7

基于单片机的电子秤设计

P3 是一个带有内部上拉电阻的 8 位双向 I/0 端口,输出时可驱动 4 个 TTL。 端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。 P3 引脚功能复用见下表 2-1:
表 2-1 P3 引脚功能复用 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 串行通讯输入(RXD) 串行通讯输出(TXD) 外部中断 0( INT0) 外部中断 1(INT1) 定时器 0 输入(T0) 定时器 1 输入(T1) 外部数据存储器写选通 WR 外部数据存储器写选通 RD

RST: 在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此管 脚时,将使单片机复位。只要这个管脚保持高电平,51 芯片便循环复位。复位后 P0—P3 口均置 1,管脚表现为高电平,程序计数器和特殊功能寄存器 SFR 全部清 零。当复位脚由高电平变为低电平时,芯片为 ROM 的 00H 处开始运行程序; XTAL1、XTAL2 : XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡 器时,外部振荡信号应直接加到 XTAL1,而 XTAL2 悬空。内部方式时,时钟发生器 对振荡脉冲二分频, 如晶振为 12MHz, 时钟频率就为 6MHz。 晶振的频率可以在 1MHz 至 24MHz 内选择,电容取 30PF 左右。 ALE/PROG: 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节,即 使不访问外部存储器,ALE 端仍以不变的频率输出脉冲信号(此频率是振荡器频率 的 1/6),在访问外部数据存储器时,出现一个 ALE 脉冲; PSEN: 该引脚是外部程序存储器的选通信号输出端。当 AT89S52 由外部程序存储器 取指令或常数时,每个机器周期输出 2 个脉冲,即两次有效。但访问外部数据存 储器时,将不会有脉冲输出; EA/Vpp: 外部访问允许端。 当该引脚访问外部程序存储器时, 应输入低电平。 要使 AT89S52 只访问外部程序存储器(地址为 0000H-FFFFH), 这时该引脚必须保持低电平[10];
8

榆林学院本科毕业设计(论文)

本课题设计的电子秤的单片机应用电路如图 2-3 所示:

图 2-3 AT89S52 单片机电路

2.3

传感器
传感器的定义:能感受规定的被测量,并按照一定规律转换成可用输出信号

的器件或装置[11]。通常传感器由敏感元件和转换元件组成。其中敏感元件指传感 器中能直接感受被测量的部分,转换部分指传感器中能将敏感元件输出量转换为 适于传输和测量的电信号部分。现代科技的快速发展使人类社会进入了信息时代, 在信息时代人们的社会活动将主要依靠对信息资源的开发和获取、传输和处理, 而传感器处于自动检测与控制系统之首,是感知获取与检测信息的窗口;传感器 处于研究对象与测控系统的接口位置,因此,传感器的地位与作用特别重要。

2.3.1

传感器的选型

方案一 压电传感器 压电传感器是一种典型的有源传感器,又称自发电式传感器。其工作原理是 基于某些材料受力后在其相应的特定表面产生电荷的压电效应。 压电传感器体积小、重量轻、结构简单、工作可靠,适用于动态力学量的测 量,不适合测频率太低的被测量,更不能测静态量。目前多用于加速度和动态力 或压力的测量。压电器件的弱点:高内阻、小功率。功率小,输出的能量微弱,
9

基于单片机的电子秤设计

电缆的分布电容及噪声干扰影响输出特性,这对外接电路要求很高。 方案二 电阻应变式传感器 电阻应变式传感器是一种利用电阻应变效应,将各种力学量转换为电信号的 结构型传感器。电阻应变片式电阻应变式传感器的核心元件,其工作原理是基于 材料的电阻应变效应,电阻应变片即可单独作为传感器使用,又能作为敏感元件 结合弹性元件构成力学量传感器。 导体的电阻随着机械变形而发生变化的现象叫做电阻应变效应。电阻应变片 把机械应变信号转换为△R/R 后,由于应变量及相应电阻变化一般都很微小,难以 直接精确测量,且不便处理。因此,要采用转换电路把应变片的△R/R 变化转换成 电压或电流变化。其转换电路常用测量电桥。 直流电桥的特点是信号不会受各元件和导线的分布电感及电容的影响,抗干 扰能力强,但因机械应变的输出信号小,要求用高增益和高稳定性的放大器放大。 应变片式传感器有如下特点: (1)应用和测量范围广,应变片可制成各种机械量传感器。 (2)分辨力和灵敏度高,精度较高。 (3)结构轻小,对试件影响小, 对复杂环境适应性强,可在高温、高压、强 磁场等特殊环境中使用,频率响应好。 (4)商品化,使用方便,便于实现远距离、自动化测量。 通过以上对传感器的比较分析,最终选择了第二种方案。题目要求称重范围 0~10Kg,重量误差不大于 ? 0.005Kg,于是我选择的是 CZL-A 型称重传感器,量程 10Kg,精度为 0.01%,满量程时误差 ? 0.005Kg,完全满足本系统的精度要求。

2.3.2

电阻应变式传感器的工作原理

当垂直正压力 P 作用于梁上时,梁产生形变,电阻应变片 R1、R3 受压弯拉 伸,阻值增加;R2、R4 受压缩,阻值减小。电桥失去平衡,产生不平衡电压,不 平衡电压与作用在传感器上的载菏 P 成正比,从而将非电量转化成电量输出。电 阻应变式传感器测量原理如图 2-4 所示。

P
R1

R2

R4
10

R3

榆林学院本科毕业设计(论文) 图 2-4 电阻应变式传感器测量原理

由于内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电 压可由下式给出:

Eout ?

R2 ? R4 ? (R 2 ? R 4)

? △R1 △R2 △R3 △R4 ? ? ? R1 ? R2 ? R3 ? R4 ? ? ? Ein ? ?

将两对电阻应变片的阻值变化转变成输出电压,其工作原理如图 2-5 所示。

R1-△R1

R2+△R2

Eout
R4+△R4 R3-△R3

Ein
图 2-5 电阻应变式传感器工作原理

图 2-6 传感器实物图

11

基于单片机的电子秤设计

图 2-7 传感器实物图

2.4

A/D 转换器
A/D 转换器选用的原则: (1)A/D 转换器的位数。A/D 转换器决定分辨率的高低。在系统中,A/D 转换

器的分辨率应比系统允许引用误差高一倍以上。 (2)A/D 转换器的转换速率。不同类型的 A/D 转换器的转换速率大不相同。积 分型的转换速率低,转换时间从几豪秒到几十毫秒,只能构成低速 A/D 转换器, 一般用于压力、温度及流量等缓慢变化的参数测试。逐次逼近型属于中速 A/D 转 换器,转换时间为纳秒级,用于个通道过程控制和声频数字转换系统。 (3)A/D 转换器的有关量程引脚。有的 A/D 转换器提供两个输入引脚,不同量 程范围内的模拟量可从不同引脚输入。 (4)A/D 转换器的晶闸管现象。其现象是在正常使用时,A/D 转换器芯片电流 骤增,时间一长就会烧坏芯片。为防止这种现象,可采取如下措施: 1)加强抗干扰措施,尽量避免较大的干扰电流进入电路; 2)加强电源稳压滤波措施, 在 A/D 转换器电源入口处加退耦滤波电路,为 防止窄脉冲波窜入在电解电容上再接一高频滤波电容; 3)在 A/D 转换器的电源端接一限流电阻,可在出现晶闸管现象时,有效地把 电流限定在允许范围内,以防止烧坏器件。 选择 A/D 转换器除考虑上述要点外, 为防止对 A/D 转换器的技术指标的影响, 还要注意以下几个问题: (1)工作电源电压是否稳定;
12

榆林学院本科毕业设计(论文)

(2)外接时钟信号的频率是否合适; (3)工作环境温度是否符合器件要求; (4)与其它器件是否匹配; (5)印刷线路板布线是否合理。 总上分析,我选择了高精度高增益 24 位 A/D 芯片 HX711,HX711 是一款专为 高精度称重传感器而设计的 24 位 A/D 转换器芯片。与同类型其它芯片相比,该芯 片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路, 具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提 高了整机的性能和可靠性。该芯片与后端 MCU 芯片的接口和编程非常简单,所有 控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取 通道 A 或通道 B,与其内部的低噪声可编程放大器相连。通道 A 的可编程增益为 128 或 64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。通道 B 则 为固定的 64 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传 感器和芯片内的 A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的 时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。 高精度高增益 24 位 A/D 芯片 HX711 具有以下特点: (1)两路可选择差分输入; (2)片内低噪声可编程放大器,可选增益为 64 和 128; (3)片内稳压电路可直接向外部传感器和芯片内 A/D 转换器提供电源; (4)片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟; (5)上电自动复位电路; (6)简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编 程; (7)可选择 10Hz 或 80Hz 的输出数据速率; (8)同步抑制 50Hz 和 60Hz 的电源干扰; (9)耗电量(含稳压电源电路) :典型工作电流:< 1.7mA, 断电电流:< 1μ A ; (10)工作电压范围:2.6 ~ 5.5V ;

13

基于单片机的电子秤设计

图 2-8 HX711 内部方框图

图 2-9 HX711 实物图

2.5

输入键盘的选定
键盘输入是人机交互界面中重要的组成部分,它是系统接受用户指令的直接

途径。键盘是由若干个按键开关组成,键的多少根据单片机应用系统的用途而定。 键盘由许多键组成,每一个键相当于一个机械开关触点,当键按下时,触点闭合, 当键松开时,触点断开。单片机接收到按键的触点信号后作相应的功能处理。因 此,相对于单片机系统来说键盘接口信号是输入信号。 方案一 Intel8279 是一种为 8 位微处理器设计的比较成熟的通用键盘/显示器
14

榆林学院本科毕业设计(论文)

接口芯片,其功能有:接收来自键盘的输入数据,并作预处理;数据显示的管理 和数据显示器的控制。但是在与单片机编程中比较复杂。 方案二 矩阵键盘较为突出的优点在于与比独立式键盘相比有效的节约了很多 I/O 端口。矩阵式键盘在按键数目较多的场合非常适用,按键位于列线和行线的交 叉点上,一个由 16 个按键组成的键盘就是由一个 4×4 的行、列结构构成的。 4×4矩阵键盘的工作原理 矩阵式键盘有效的节省了I/O端口。在矩阵式按键键盘中,每条垂直线和水平 线在交叉处不直接连通,而是给交叉处加一个按键。这样,一个端口(如 P1口) 就可以构成4*4=16个按键。 采用最常用的 4*4 矩阵键盘,4*4 矩阵编程简单,大大简化了程序。因此,我 选择 4*4 矩阵键盘。4*4 矩阵键盘可以显示 0-9 数字、小数点和五个功能键。键盘 行扫描信号为 ROW1—ROW4,列扫描信号为 COL1—COL4。行信号为输入信号, 低电平有效;列信号为输出信号。当没有键按下时,即使行扫描输入低电平信号, 列信号仍为高电平;当行扫描为低电平并且有键按下时,相应的列输出低电平。 该低电平信号可以定位至按下键的位置。其原理图如下图 2-10 所示。

图 2-10 矩阵键盘原理图

2.6

显示器的选定
方案一 全部采用数码管显示, 数码能显示时钟, 以及被测物体的重量等信息。

此方案显示直观,而且编程简单,但若要同时显示单价,金额等诸多信息则需要 要大量的数码管。由此增加了电路的复杂程度,也加大了编程的难度。 方案二 采用可以设置显示单价,金额,时间日期等的 LCD,它具有低功耗、
15

基于单片机的电子秤设计

可视面大、画面友好及抗干扰能力强等功能,其显示技术已得到广泛应用。 LCD 显示器的工作原理:液晶显示器的主要材料是液态晶体。它在特定的温 度范围内,既具有液体的流动性,又具有晶体的某些光学特性,其透明度和颜色 随电场、磁场、光照度等外界条件变化而变化。因此,用液晶做成显示器件,就 可以把上诉外界条件的变化反映出来从而形成现实的效果。所以我选择了 LCD 液 晶。液晶屏电路原理图、实物图如图 2-11、2-12、2-13 所示。 LCD_CS、LCD_RES、LCD_RS、LCD_SDA、LCD_SCK 为液晶模块与单片 机接口的控制线。CS_ZK、SCK_ZK、SO_ZK 和 SI_ZK 为字库和单片机接口的控 制线。

图 2-11

LCD 显示电路原理图

图 2-12 LCD 实物图(正面)

16

榆林学院本科毕业设计(论文)

图 2-13 LCD 实物图(背面)

该液晶为晶讯联公司的 128*64 汉字屏 JLX12864G-086-PC 显示信息。该显示 模块既可以当成普通的图像型液晶显示模块使用(即显示普通图像型的单色图片 功能) ,又含有 JLX-GB2312 字库 IC,可以从字库 IC 中读出内置的字库的点阵数 据写入到 LCD 驱动 IC 中,以达到显示汉字的目的。其接口引脚功能介绍:
表 2-2 液晶模块接口引脚功能 引线号 1 2 3 4 5 6 7 8 9 10 11 12 符号 ROM-IN ROM-OUT ROM-SCK ROM-CS LEDA VSS VDD SCK SDA RS RST CS 名称 字库 IC 接口 字库 IC 接口 字库 IC 接口 字库 IC 接口 背光电源 接地 电源电路 I/O I/O 寄存器选择信号 复位 片选 功能 串行数据输出 串行数据输入 串行时钟输入 片选输入 背光电源正极,同 VDD 电压(5V 或 3.3V) 0V 5V,或 3.3V 可选 串行时钟 串行数据 H:数据寄存器 O:指令寄存器 低电平复位 低电平片选

2.7

电源电路的设计
本设计采用 USB 接口供电, 所以提供的电源电压为 5V; 并且还提供了备用电

源即 U4。当按下电源开关 U14 时,电路接通电源指示 LED1 灯亮起。其电路原理 如图 2-14 所示。
17

基于单片机的电子秤设计

图 2-14 电源电路原理图

2.8

报警电路的设计
该设计采用蜂鸣器作为超量程报警器,从而实现阈值报警功能。其设计电路

如图 2-15 所示,把蜂鸣器的正极接 VCC,负极接三极管 8550 的集电极,8550 的 基极串联一个 1K 的电阻再接到单片机的 P2.0 端口,当 P2.0 为高电平时,8550 无 法导通,蜂鸣器不叫,当 P2.0 为低电平时,8550 导通,蜂鸣器报警。

图 2-15 报警电路原理图

2.9

小结
本章主要介绍了该设计的总体设计方案,以及对各个硬件的合理选取,并对

AT89S52 单片机的性能和引脚功能进行了说明,设计了电子秤的显示电路、报警电 路、矩阵键盘电路等,并对电路进行了分析和电路图进行了绘制。

18

榆林学院本科毕业设计(论文)

3

软件设计

一个完整的设计应该同时具备硬件电路的设计和软件设计。软件设计能实现 硬件电路的功能,如果用软件进行仿真处理,可以简化硬件电路,同时也充分展 示了硬件的功能;在用硬件电路操作时,单片机中程序也须通过软件编程并下载 到单片机上。硬件设计离不开软件设计,两者相辅相成。本章主要说明软件的实 现过程[15]。

3.1

软件设计的整体思路
在单片机应用系统的开发中,软件的设计是最复杂和困难的,大部分情况下

工作量都较大,特别是对那些控制系统比较复杂的情况。如果是机电一体化的设 计人员,往往需要同时考虑单片机的软硬件资源分配。本系统的软件设计主要分 为系统初始化、按键、显示处理等。 程序设计是一件复杂的工作,为了把复杂的工作条理化,就要有相应的步骤 和方法。其步骤可概括为以下三点: (1)分析系统控制要求,确定算法:对复杂的问题进行具体的分析,找出合 理的计算方法及适当的数据结构,从而确定编写程序的步骤。这是能否编制出高 质量程序的关键[16]。 (2)根据算法画流程图:画程序框图可以把算法和解题步骤逐步具体化,以 减少出错的可能性。 (3)编写程序:根据程序框图所表示的算法和步骤,选用适当的指令排列起 来,构成一个有机的整体,即程序。 程序数据的一种理想方法是结构化程序设计方法。结构化程序设计是对利用 到的控制结构类程序做适当的限制,特别是限制转向语句 (或指令)的使用,从而 控制了程序的复杂性,力求程序的上、下文顺序与执行流程保持一致性,使程序 易读易理解,减少逻辑错误和易于修改、调试。根据系统的控制任务,本系统的 软件设计主要由主程序、初始化程序、显示子程序、数据采集子程序和延时程序 等组成。

3.2

软件设计的方案
C 语言是一种通用的计算机程序设计语言,在国际上非常流行。它既可以用来

编写计算机的系统程序,也可以用来编写一般的应用程序。以前计算机的系统软
19

基于单片机的电子秤设计

件主要用汇编语言编写,单片机应用系统更是如此。C 语言是当前最流行的程序设 计语言,它像其它高级语言一样,面向用户,面向解题的过程,编程者不必熟悉 具体的计算机内部结构和指令;C 语言又像汇编语言一样,可以对机器硬件进行操 作。如进行端口 I,0 操作、位操作、地址操作,并可内嵌汇编指令,将汇编指令 当作它的语句一样。我们知道,汇编语言将涉及计算机硬件,所以 C 语言又像低 级语言一样,可以对计算机硬件进行控制,因此人们把它称为介于高级语言与低 级语言之间的一种中级语言。正是因为 C 语言具有这样的特性,所以很适合编写 要对硬件进行操作的软件程序。本文采用 C 语言进行编写.因为此系统软件比较, 其存储量较大,因此必须应用 C 语言编程了[17].

3.3

软件子程序设计
对软件的子程序的设计采用模块化的结构,这样做的好处是可以便于分工协

作提高效率,同时也有利于错误的发现。本设计的子程序设计主要包括中断子程 序、矩阵键盘子程序等。

3.3.1

中断子程序设计

该设计使用了定时器,当中断触发时 ET0 置为高电平,寄存器 TMOD 为 1, 说明工作模式为模式 1,即选取 16 位计数器。然后给定时器赋初值,启动定时器 用来实现每 0.5 秒称重一次的功能,流程图如图 3-1 所示:
时钟中断入口

Counter 累加

置称重标志

返回

图 3-1 中断子程序流程图

具体程序如下: //管脚配置 void Port_Init() { }
20

榆林学院本科毕业设计(论文)

//定时器 0 初始化 void Timer0_Init() { ET0 = 1; TMOD = 1; TL0 = 0x06; TH0 = 0xf8; TR0 = 1; } //定时器 0 中断 void Timer0_ISR (void) interrupt 1 using 0 { TL0 = 0x06; TH0 = 0xf8; Counter ++; if (Counter >= 200) { FlagTest = 1; Counter = 0; } } //定时器赋予初值 //每 0.5 秒钟刷新重量 //定时器赋予初值 //启动定时器 //允许定时器 0 中断 //定时器工作方式选择

3.3.2

矩阵键盘扫描子程序设计

键盘电路设计成 4*4 矩阵式,在程序中可以先判断按键编码,然后根据编码 将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。设计流程 图如图 3-2 所示。

21

基于单片机的电子秤设计

开始

逐列扫描

有键按下
Y



N

取键值

返回

图 3-2 矩阵键盘扫描程序流程图

本设计采用的识别按键的方法是传统的行扫描法。首先给键盘的每一行输入 低电平然后逐列检验,当列输出全为高电平时,就说明无按键按下;当某列输出 不全为高时,则说明该列有按键按下,但是不知道在第几行,为此就得再进行逐 行扫描寻找。具体程序如下: #include "keyboard.h" //按键扫描函数 : //功能;只扫描一个按键,按键为号小优先 //返回键值: // // // // 7 4 1 14 8 5 2 0 9 6 3 15 10 11 12 13

unsigned char Getkeyboard(void) { unsigned char number = 0; unsigned char i; //行输入低电平 ROW1=ROW2=ROW3=ROW4=0; //如果列输出不全为高,则说明有键按下
22

榆林学院本科毕业设计(论文)

if ((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1)) { //输入 0111 ROW1=0; ROW2=ROW3=ROW4=1; for (i=0;i<20;i++); if (COL1==0) return 1; else if (COL3==0) return 3; //输入 1011 ROW2=0; ROW1=ROW3=ROW4=1; for (i=0;i<20;i++); if (COL1==0) return 4; //4 5 else if (COL2==0) return 5; // // 7 8 // 9 else if (COL2==0) return 2; //

else if (COL4==0) return 10; // 10

else if (COL3==0) return 6; // 6 else if (COL4==0) return 11; // 11 //输入 1101 ROW3=0; ROW1=ROW2=ROW4=1; for (i=0;i<20;i++); if (COL1==0) return 7; //1 // 2 // // 3 12 else if (COL2==0) return 8; else if (COL3==0) return 9; else if (COL4==0) return 12; //输入 1110 ROW4=0; ROW1=ROW2=ROW3=1; for (i=0;i<20;i++); if (COL1==0) return 14; else if (COL2==0) return 0; else if (COL3==0) return 15; else if (COL4==0) return 13;

23

基于单片机的电子秤设计

//没有检测到列低电平 return 99; } return 99; }

24

榆林学院本科毕业设计(论文)

4

焊接及调试

系统的调试是指用选择好硬件方案和编好软件程序来进行系统调试,来检验 系统硬件的配置和软件程序的设计是否合理;首先把写好的 C 语言程序的载入软 件调试工具中,检查软件是否有语法错误,再根据软件提示对程序进行修改,直 到没有错误再生成单片机能运行的机器码,再用单片机写入工具把机器码写入单 片机进行实际的程序调试,根据实际情况再对程序的不足的地方加以修改,直到 满足设计要求。调试分为两部分:硬件调试和软件调试。

4.1

硬件的焊接
焊接需要根据以下步步骤一步一步的进行,一般先焊装低矮、耐热元件。在

面板上孔、槽相嵌装的元件时需给予特别的注意,具体焊装步骤如下: (1)清查元器件的数量与质量,对不合格元件应及时更换; (2)确定元器件的安装方式、安装高度。 (3)进行引脚处理,尽量把有字符的器件面置易于观察的位置,成型时引脚根 部不得有弯曲。 (4)安装。根据元件位号对号插装,对有极性的元器件及三极管的管脚,插孔 时应特别小心不可插错。 (5)焊接。各焊点加热时间及用锡量要适当,对耐热性差的元器件应使用工具 辅助散热,如三极管。焊接时防止虚焊、错焊,避免因拖锡而造成短路; (6)焊后处理。剪去多余引脚线,检查所有焊点,对有缺陷的焊点进行修补, 必要时用无水酒精清洗印制板;

4.2

硬件调试
硬件调试过程中的工具和测试仪器: (1)5V 稳压电源; (2)万用表; (3)编译软件; 焊接调试时遇到的问题以及解决方法: 电源、晶振电路和复位电路都无异常。

4.3

软件调试
25

基于单片机的电子秤设计

把写好的汇编语言程序的载入软件调试工具,检查软件是否有设法错误,再 根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码, 再用 51 开发板或其它单怎机写入工具把机器码写入单片机进行实际的程序调试, 根据实际情况再对程序的不足加以修改,直到满足设计要求。 调试本程序需要用到 KEIL C51,及 51 开发板一块及其配套的下载烧录软件。

4.3.1

KEIL C51 简介

Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开 发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优 势,因而易学易用。用过汇编语言后再使用 C 来开发,体会更加深刻。Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界面。另外 重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目 标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型 软件时更能体现高级语言的优势[18]。 C51 工具包的整体结构:uVision 与 Ishell 分别是 C51 for Windows 和 for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。 开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编源文件。 然后分别由 C51 及 A51 编译器编译生成目标文件(.OBJ)。目标文件可由 LIB51 创建生成库文件,也可以 与库文件一起经 L51 连接定位生成绝对目标文件(.ABS)。ABS 文件由 OH51 转换成 标准的 Hex 文件,以供调试器 dScope51 或 tScope51 使用进行源代码级调试,也 可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM 中。

4.3.2

调试过程

首先打开 KEIL C51 主程序,新建工程,新建文本框写入程序,保存,检查是 否有语法错误,经反复检查无误后汇编,生成 51 单片机可执行的 HEX 文件。然后 用 51 开发板相匹配的烧录软件把 HEX 文件写入单片机。

4.4

Protel 软件及电路原理图
Protel 99SE 是 ProklTechnology 公司基于 Windows 环境下开发的电路板设计软

件。该软件功能强大,人机界面友好,易学易用,是绘制原理图优选的电路板设 计软件。 双击桌面 Protel 软件后, 在 Documents 中建立 “Schematic Document”文件, 打 开新建的文件进行原理图绘制。首先将本设计原理图需要的原件选出拖至编辑框
26

榆林学院本科毕业设计(论文)

中。如果有些原件在元件库中找不到,可自己绘制成所需原件。原件选择完成后 将已选出的原件进行电路连接, 最终完成原理图绘制。 图 5-1 所示为在 Protel 99SE 中做的电路原理图。
1 2 3 4

U1 D V CC R OW 4 R OW 3 R OW 2 R OW 1 C OL 1 C OL 2 C OL 3 C OL 4 U10 2 1 C ON 2 C2 1 2 3 4 5 6 7 8 9 R XD 1 0 TX D 1 1 D OU T1 2 PD SC K 13 14 15 16 17 18 19 20 P1 .0 V CC P1 .1 (AD 0 )P0 .0 P1 .2 (AD 1 )P0 .1 P1 .3 (AD 2 )P0 .2 P1 .4 (AD 3 )P0 .3 P1 .5 (AD 4 )P0 .4 P1 .6 (AD 5 )P0 .5 P1 .7 (AD 6 )P0 .6 R ST (AD 7 )P0 .7 P3 .0 (R X D) EA / VP P P3 .1 (T XD ) A LE/ PR O G P3 .2 (IN T0 ) PS EN P3 .3 (IN T1 ) (A1 5 )P2 . 7 P3 .4 (T 0 ) (A1 4 )P2 . 6 P3 .5 (T 1 ) (A1 3 )P2 . 5 P3 .6 (W R) (A1 2 )P2 . 4 P3 .7 (R D ) (A1 1 )P2 . 3 X TA L2 (A1 0 )P2 . 2 X TA L1 (A9 )P 2 . 1 G ND (A8 )P 2 . 0 A T8 9 S5 2 20 pF

R SA SD SC K V DD V SS R CM CM _C CK S LE DA R _S R CM _O U T

C1

C S R ST

SW IT CH

LC D D _SD _RS A LC 12 LC D _SC K 11 10

LC LC D D _CS _RE S

R1 10 K

9 8 7 6 5 4 3 2 1

2 1 C ON 2

V CC G ND C S_ZK SC K _ZK

SO _ZK SI_ZK

R2 1K

LE D1 V CC LE D

20 pF Y1 1 1 .0 5 7 2 M C C3

电 源 电 路
LCD显 示 电 路

3

10 uF

V CC 40 39 LC D _ C S 38 LC D _ R ES 37 LC D _ R S 36 LC D _ SD A 35 LC D _ SC K 34 33 32 31 V CC 30 29 28 C S_ Z K 27 SC K _ ZK 26 SO _ Z K 25 SI_ Z K 24 23 22 al ert 21 b eep

D U3 J LX 1 2 8 6 4 G U4 U5 1 3 5 1 3 5 V CC U14 2 PO W 1 2 4 6 2 4 6

R CM _IN

C

主 控 电 路 的 设 计

C OL 4 C OL 3 C OL 2 C OL 1 K1 R OW 1 1 3 7 K2 R OW 2 1 3 4 K3 R OW 3 1 3 1 K4 R OW 4 1 3 * 2 4 1 3 0 2 4 1 3 2 K8 2 4 1 3 # 2 4 1 3 5 K7 2 4 1 3 3 K12 2 4 1 3 F4 2 4 1 3 8 K6 2 4 1 3 6 K11 2 4 1 3 F3 K16 2 4 K5 2 4 1 3 9 K10 2 4 1 3 F2 K15 2 4 K9 2 4 1 3 F1 K14 2 4 K13 2 4 U2 1 2 3 4 5 6 7 8 9 10 O UT AA+ G ND U9 1 2 3 4 O UT AA+ G ND b eep

V CC

R5 1K

U7 PN P B U8

B

G ND PD SC K D OU T V CC

B ELL

传 感器 接 口

蜂 鸣 器 报 警 电 路

矩 阵键 盘
A Ti t le A N u m b er R ev i s io n

Si ze A4 D ate: Fi l e: 1 2 3

2 1 -A p r-2 0 1 4 C :\ U s ers \h p \ Des k to p \ 电 子 称 2 . D DB

Sh eet o f D raw n B y : 4

图 5-1 Protel 99SE 的打开界面

4.5

小结
本章主要是对硬件电路行进焊接和调试,以及用 KEIL C51 对软件的调试;并

对焊接和调试过程中遇到的问题以及解决方法进行说明。

27

基于单片机的电子秤设计

5
5.1 总结

结 论

本次设计涉及到单片机、模拟电路、数字电路、Protel99 等等课程里面的知 识;其中涉及到单片机原理、硬件结构、和 C 程语言等各方面。经过赵老师的耐 心指点和连续的奋战完成了本次的设计,算是有了很大的收获。总的结论有以下 几方面: (1)通过对 AT89S52 单片机的深入了解,在做由单片机控制的电子秤的毕业设 计时单片机的性能以及 P0、P1、P2、P3 口各个引脚的功能都能够熟练的运用。 (2)在硬件设计的过程中,我能熟练的掌握个电气元件的性能,在设计电路图 时充分的考虑到电路的可行性,并且尽量使电路图简单易懂,最终成功的设计出 了显示电路、报警电路,矩阵键盘电路。 (3)在用 PROTEL99SE 画电路原理图时,将设计好的各部分硬件电路正确的连 接在 AT89S52 单片机上的 40 个引脚上,最终完成了总原理图的绘制。 (4)对设计的电路进行了实物制作,并对实物进行了验证测试出结果,测试结 果证明了理论分析正确性和设计方法的可行性。

5.2

展望
电子秤是信息化时代发展的产物,随着时代应用而生,我相信随着科技的不

断创新和不断发展,未来的电子秤设计一定更加完美,更加人性化,更加便宜, 适用范围更广泛,精度更高。

28

榆林学院本科毕业设计(论文)

29

基于单片机的电子秤设计

参考文献
[1] 唐立军.新型便携电子秤研究[D].长沙:湖南大学硕士论文,2011:19-31. [2] 秦伟.基于 STC89C51RC 电子称[J].电脑知识与技术,2009,5(31):8822-8823. [3] 吴祖安,朱兆优.基于单片机的电子秤设计[J].湖南农机,2010,37(3):39-40. [4] 程飞.基于 AT89C2051 单片机的电子称设计[J].电脑知识与技术, 2009, 5(30): 8548-8554. [5] 凌有铸,刘力.单片机控制的电子秤[J].中国纺织大学学报,1998,24(5) :80-83. [6] 孙娜.基于单片机的便携式电子秤的设计[J].中国科技信息,2012, (1) :98-100. [7] 许晓彤.基于单片机的电子秤设计[J].硅谷,2012, (6) :64. [8] 韩泽欣,杨雪松.基于单片机控制的电子称的设计[J].甘肃科技,2013,29(2):17-69. [9] 庄严.电子秤与智能仪器的设计[J].仪表技术,2002, (4) :14-15. [10] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2006. [11] 贾石峰.传感器原理与传感器技术[M].北京:机械工业出版社,2009. [12] 李华.MCS-51 系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1992. [13] 刘大茂.智能仪器原理与设计[M].北京:国防工业出版社,2008. [14] 潘晓宁.单片机程序设计实践教程[M].北京:清华大学出版社,2009. [15] 彭伟.单片机 C 语言程序设计 100 例——基于 8051+Proteus 仿真[M].北京:电子工业出 版社,2009. [16] 占跃华.C 语言程序设计教程[M].北京:北京邮电大学出版社,2008. [17] 王建校,王建国.51 系列单片机及 C51 程序设计[M].北京:科学出版社,2002. [18] 张亚峰.KeilC51 软件使用方法[J].电子制作,2011, (1) :61-65.

30

基于单片机的电子秤设计

基于单片机的电子秤设计

致 谢
在这大学的最后一页里,我要感谢的人很多,首先要感谢我的学校榆林学院, 感谢学院的老师这四年中交给我的做人道理,让我从一个懵懂得高中生变成一个 有责任心有梦想的青年。还要特别感谢我的论文指导老师赵鹏老师。 在论文的开题过程中,是导师赵鹏的悉心指导使得我明白了自己所写论文的 大方向,并且在他的指导下我顺利完成了开题报告。赵老师在自己工作繁忙的情 况下从没有放弃对我的指导。他的严谨细致、一丝不苟的作风将一直是我工作、 学习中的榜样。向赵老师表示真诚的谢意和敬意! 在论文撰写及完成过程中又得到赵老师无私的帮助,他多次询问我的在论文 撰写过程中有没有遇到什么问题以及我的撰写进度,在我不懂的地方为我精心指 导,帮助我拓展思维,使我可以把问题想的更全面更彻底,并且经常鼓励我为我 加油。为我解决了许多实际问题,提出了宝贵建议。赵老师丰富的经验、敏锐的 思维和对我全力的帮助使我少走了许多弯路。再次对赵老师表示最衷心的感谢。 感谢所有帮助过我的老师,你们永远在我心中。 感谢 10 级测控 1 班的全体同学,是你们陪我走过了人生最美的年华,在一起 的日子将会是我们永远最真最美的回忆。 感谢我的家人一直以来对我默默的支持。

32

基于单片机的电子秤设计

1

2

3

4

U1 D V CC R OW 4 1 R OW 3 2 R OW 2 3 R OW 1 4 C OL 1 5 C OL 2 6 C OL 3 7 C OL 4 8 9 R XD 1 0 TX D 1 1 D OU T1 2 PD SC K 13 14 15 16 17 18 19 20 P1 .0 V CC P1 .1 (AD 0 )P0 .0 P1 .2 (AD 1 )P0 .1 P1 .3 (AD 2 )P0 .2 P1 .4 (AD 3 )P0 .3 P1 .5 (AD 4 )P0 .4 P1 .6 (AD 5 )P0 .5 P1 .7 (AD 6 )P0 .6 R ST (AD 7 )P0 .7 P3 .0 (R X D) EA /VP P P3 .1 (T XD ) A LE/PR O G P3 .2 (IN T0 ) PS EN P3 .3 (IN T1 ) (A1 5 )P2 . 7 P3 .4 (T 0 ) (A1 4 )P2 . 6 P3 .5 (T 1 ) (A1 3 )P2 . 5 P3 .6 (W R) (A1 2 )P2 . 4 P3 .7 (R D ) (A1 1 )P2 . 3 X TA L2 (A1 0 )P2 . 2 X TA L1 (A9 )P 2 . 1 G ND (A8 )P 2 . 0
LC LC D D _CS _RE S

R SA SD SC K V DD V CM SS _C S R LE DA R CM _S CK R CM _O U T

C1

C S R ST

U10 2 1 C ON 2 C2

SW IT CH
LC D D _SD _RS A LC 12 LC D _SC K 11 10 9 8 7 6 5 4 3 2 1

2 1

R1 10 K

C ON 2
V CC G ND C S_ZK SC K _ZK SO _ZK SI_ZK

R2

LE D1

3

10 uF

20 pF

附录 A 总原理图

基于单片机的电子秤设计

Y1 1 1 .0 5 7 2 M C A T8 9 S5 2 20 pF C3

V CC 40 39 LC D _ C S 38 LC D _ R ES 37 LC D _ R S 36 LC D _ SD A 35 LC D _ SC K 34 33 32 31 V CC 30 29 28 C S_ Z K 27 SC K _ ZK 26 SO _ Z K 25 SI_ Z K 24 23 22 alert 21 b eep

D U3 J LX 1 2 8 6 4 G U4
R CM _IN

U5 2 4 6 2 4 6

1 3 5

1 3 5

V CC

2

1

PO W

U14

V CC

1K

LE D

电 源 电 路
LCD显 示 电 路

C

主 控 电 路 的 设 计

C OL 4 C OL 3 C OL 2 C OL 1 K1 1 R OW 1 3 7 K2 1 R OW 2 3 4 K3 1 R OW 3 3 1 K4 1 R OW 4 3 * 2 4 1 3 0 2 4 1 3 2 K8 2 4 1 3 # 2 4 1 3 5 K7 2 4 1 3 3 K12 2 4 1 3 F4 2 4 1 3 8 K6 2 4 1 3 6 K11 2 4 1 3 F3 K16 2 4 K5 2 4 1 3 9 K10 2 4 1 3 F2 K15 2 4 K9 2 4 1 3 F1 K14 2 4 K13 2 4 U2 1 2 3 4 5 6 7 8 9 10 O UT AA+ G ND U9 1 2 3 4 G ND PD SC K D OU T V CC O UT AA+ G ND b eep

V CC

R5

U7 PN P

B

1K

B

U8

B ELL

传 感器 接 口

蜂 鸣 器 报 警 电 路

矩 阵键 盘
A Title

A Size A4 D ate: File: 1 2 3 N u mb er

R ev is io n

2 1 -A p r-2 0 1 4 C :\ U s ers \h p \Des k to p \ 电子称 2 . D DB

Sh eet o f D raw n B y :

4

34

榆林学院本科毕业设计(论文)

35

基于单片机的电子秤设计

附录 B 实物图

36

榆林学院本科毕业设计(论文)

37

基于单片机的电子秤设计

附录 C 主程序
下面介绍 main.c 主程序编写,其他程序略。 //头文件和一些宏定义 #include <reg52.h> #include <intrins.h> #include <string.h> #include "lcd.h" #include "hx711.h" #include "keyboard.h" //定义量程系数 #define RATIO //定义标识 volatile bit FlagTest = 0; volatile bit FlagKeyPress = 0; volatile bit FlagSetPrice = 0; //管脚定义 sbit LedA = P2^2; sbit beep = P2^0; sbit alert = P1^1; //显示用变量 int Counter; uchar idata str1[6] = "000000"; int i, iTemp; //称重用变量 unsigned long idata FullScale; //满量程 AD 值/1000 unsigned long AdVal; unsigned long weight; //AD 采样值 //重量值,单位 g //单价,长整型值,单位为分 //总价,长整型值,单位为分 //定时测试标志,每 0.5 秒置位,测完清 0 //有键按下标志,处理完毕清 0 //价格设置状态标志,设置好为 1。 1800/1000 //1574/1000 //2114/1623

unsigned long idata price; unsigned long idata money; //键盘处理变量 uchar keycode; uchar DotPos; //函数声明

//小数点标志及位置

38

榆林学院本科毕业设计(论文)

void int2str(int, char *); void Data_Init(); void Port_Init(); void Timer0_Init(); void Timer0_ISR () ; void INT1_Init(); void KeyPress(uchar); void To_Zero(); void Display_Price(); void Display_Weight(); void Display_Money(); //整型转字符串的函数,转换范围 0--65536 void int2str(int x, char* str) { int i=1; int tmp=10; while(x/tmp!=0) { i++; tmp*=10; } tmp=x; str[i]='\0'; while(i>1) { str[--i]='0'+(tmp%10); tmp/=10; } str[0]=tmp+'0'; } //重新找回零点,每次测量前调用 void To_Zero() { FullScale=ReadCount()/1000;

39

基于单片机的电子秤设计

price=0; } //显示单价,单位为元,四位整数,两位小数 void Display_Price() { unsigned int i,j; display_GB2312_string(5,44," i = price/100; int2str(i,str1); //显示整数部分 if (i>=1000) { display_GB2312_string(5,44,str1); } else if (i>=100) { display_GB2312_string(5,52,str1); } else if (i>=10) { display_GB2312_string(5,60,str1); } else { display_GB2312_string(5,68,str1); } //显示小数点 display_GB2312_string(5,76,"."); //显示小数部分 int2str(j,str1); if (j<10) { display_GB2312_string(5,84,"0"); //得到整数部分 j = price - i*100;//得到小数部分 ");

40

榆林学院本科毕业设计(论文)

display_GB2312_string(5,92,str1); } else { display_GB2312_string(5,84,str1); } } //显示重量,单位 kg,两位整数,三位小数 void Display_Weight() { unsigned int i,j; display_GB2312_string(3,60," //weight 单位是 g i = weight/1000; int2str(i,str1); if (i>=10) { display_GB2312_string(3,60,str1); } else { display_GB2312_string(3,68,str1); } display_GB2312_string(3,76,"."); int2str(j,str1); if (j<10) { display_GB2312_string(3,84,"00"); display_GB2312_string(3,100,str1); } else if (j<100) { display_GB2312_string(3,84,"0"); //得到整数部分 j = weight - i*1000;//得到小数部分 ");

41

基于单片机的电子秤设计

display_GB2312_string(3,92,str1); } else { display_GB2312_string(3,84,str1); } } //显示总价,单位为元,四位整数,两位小数 void Display_Money() { unsigned int i,j; display_GB2312_string(7,44," if (money>999999) { display_GB2312_string(7,44,"-------"); return; } i = money/100; int2str(i,str1); //显示整数部分 if (i>=1000) { display_GB2312_string(7,44,str1); } else if (i>=100) { display_GB2312_string(7,52,str1); } else if (i>=10) { display_GB2312_string(7,60,str1); } else //得到整数部分 j = money - i*100;//得到小数部分 "); //超出显示量程

42

榆林学院本科毕业设计(论文)

{ display_GB2312_string(7,68,str1); } //显示小数点 display_GB2312_string(7,76,"."); //显示小数部分 int2str(j,str1); if (j<10) { display_GB2312_string(7,84,"0"); display_GB2312_string(7,92,str1); } else { display_GB2312_string(7,84,str1); } } //数据初始化 void Data_Init() { price = 0; DotPos = 0; beep = 1; alert = 1; } //管脚配置 void Port_Init() { } //定时器 0 初始化 void Timer0_Init() { ET0 = 1; TMOD = 1; //允许定时器 0 中断 //定时器工作方式选择

43

基于单片机的电子秤设计

TL0 = 0x06; TH0 = 0xf8; TR0 = 1; } //定时器 0 中断 void Timer0_ISR (void) interrupt 1 using 0 { TL0 = 0x06; TH0 = 0xf8; Counter ++; if (Counter >= 200) { FlagTest = 1; Counter = 0; } } //按键响应程序,参数是键值 //返回键值: // // // // { switch (keycode) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: 7 4 1 8 5 2 9 6 3 15(.) 10(清 0) 11(删除) 12(未定义) 13(确定价格) //定时器赋予初值 //每 0.5 秒钟刷新重量 //定时器赋予初值 //启动定时器

14(未定义) 0

void KeyPress(uchar keycode)

44

榆林学院本科毕业设计(论文)

case 7: case 8: case 9: //目前在设置整数位,要注意 price 是整型,存储单位为分 if (DotPos == 0) { //最多只能设置到千位 if (price<100000) { price=price*10+keycode*100; } } //目前在设置小数位 else if (DotPos==1) { price=price+keycode*10; DotPos++; } else if (DotPos==2) { price=price+keycode; DotPos++; } Display_Price(); break; case 10: //清零键 To_Zero(); Display_Price(); FlagSetPrice = 0; DotPos = 0; break; case 11: //删除键,按一次删除最右一个数字 if (DotPos==2) { //小数点后第一位

45

基于单片机的电子秤设计

price=price/10; price=price*10; DotPos--; } else if (DotPos==1) { price=price/100; price=price*100; DotPos--; } else if (DotPos==0) {price=price/1000; price=price*100; } Display_Price(); break; case 13: DotPos=0; break; case 15: //小数点按下 //小数点后第一位 if (DotPos == 0) { DotPos = 1; } break; } } //===============main program===================// void main(void) { Rom_CS=1; initial_lcd(); EA = 0; Data_Init(); //确认键 FlagSetPrice = 1;

46

榆林学院本科毕业设计(论文)

Port_Init(); Timer0_Init(); //初始化完成,开中断 EA = 1; //背光 LedA = 1; clear_screen(); To_Zero(); display_GB2312_string(1,1,"电子秤初始化成功"); display_GB2312_string(3,1,"重量: display_GB2312_string(5,1,"单价: display_GB2312_string(7,1,"金额: Display_Price(); while(1) { //每 0.5 秒称重一次 if (FlagTest==1) { //称重,得到重量值 weight,单位为 g AdVal=ReadCount(); weight=FullScale-AdVal/1000; if (weight>0x8000) weight=0; weight=10000*weight/FullScale; weight=weight*RATIO; //如果超量程,则报警 if (weight >= 10000) { beep = 0; alert = 0; display_GB2312_string(3,60,"------"); display_GB2312_string(7,44,"--------"); } //如果不超量程 kg"); 元"); 元"); //clear all dots display_GB2312_string(1,1,"电子秤初始化....");

47

基于单片机的电子秤设计

else { beep = 1; alert = 1; //显示重量值 Display_Weight(); //如果单价设定好了,则计算价格 if (FlagSetPrice == 1) { money = weight*price/1000; //显示总金额 Display_Money(); } else { display_GB2312_string(7,44," } //清测试标志 FlagTest = 0; } } //获取按键 keycode = Getkeyboard(); //有效键值 0-15 if ((keycode<16)&&(FlagKeyPress==0)) { FlagKeyPress = 1; KeyPress(keycode); FlagKeyPress = 0; } delay(20); } } "); //money 单位为分

48


相关文章:
基于单片机的电子秤设计.doc
基于单片机的电子秤设计.doc_理学_高等教育_教育专区。不错 毕业设计论文 基于单片机的电子秤设计 系 别: 机电工程系 专业名称: 自动化 学号: 26100101072 学生...
基于51单片机数字电子称的设计
基于51单片机数字电子称的设计_电子/电路_工程科技_专业资料。单片机 电子称 论文贵阳学院本科毕业论文(设计) 本科毕业论文(设计)题院专姓学目: 基于 51 单片机控...
基于单片机的电子秤的设计与实现(毕业论文)
基于单片机的电子秤的设计与实现(毕业论文)_工学_高等教育_教育专区。本科毕业设计,基于单片机的电子秤设计,应变式压力传感器。河南理工大学万方科技学院毕业设计(论文...
基于单片机的电子秤设计HX711
- 39 - 安徽建筑大学毕业设计(论文) 安徽建筑大学毕业设计(论文) 基于单片机的电子秤设计 电子与信息工程学院 电子信息工程专业 指导教师 吕虹 2009 级 1 班 ...
单片机电子秤设计开题报告
3.拟采用的研究思路(方法、技术路线、可行性论证等) 拟采用的研究思路(方法、技术路线、可行性论证等) 拟采用的研究思路本次设计是基于单片机的电子秤设计, 可...
基于单片机的电子称设计资料
26 2 基于单片机的智能电子秤设计 基于单片机的智能电子秤设计 摘要: 摘要:本文介绍了基于单片机 89C52 的电子秤的硬件电路及软件流程。系统包括 称重传感器、信号...
基于单片机的电子秤设计
26 3 基于单片机的电子秤系统设计 摘要 随着自动称量技术的不断发展,传统的模拟称重系统在测量精度、测量功能及 性价比都不能满足人们的要求, 单片机及集成电路的...
基于单片机的电子秤设计
分类号 密级 TH715 单位代码 学号 11395 1005270118 学生毕业设计(论文) 题作 目者 基于单片机的电子秤设计 XXXXX 能源工程学院 测控技术与仪器 赵鹏 2014年5月...
基于单片机的电子称设计方案
基于单片机的电子称设计方案_电子/电路_工程科技_专业资料。电子称设计方案智能电子称是将检测与转换技术、计算机技术、信息处理、数字技术等技术综 合一体的现代新型...
基于51单片机电子秤设计
基于51单片机电子秤设计_电子/电路_工程科技_专业资料。51单片机 电子秤 摘要电子秤是日常生活中常用的称重设备,广泛应用于超市、大中型商场、物流配送中心。 电子秤...
更多相关标签:
基于单片机电子秤设计 | abstract | 单片机电子秤设计 | 基于单片机的电子秤 | 单片机电子秤毕业设计 | 单片机电子秤 | 单片机电子秤程序 | 单片机智能电子秤 |