




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 电子秤是一种我们日常生活中经常使用的称重工具 相较于传统的杆秤来说 同时也是一种集聚了多种现代高科技技术于一体的现代新型称重仪器 电子秤主要以单片机作为控制中心 通过称重传感器采集数据 然后使用 A D 转换器进行数据转换 辅以键盘 显示器 再配合相应的软件来实现的 电子称使用起来方便快捷 测量准确 精度高 稳定性强 更重要的是能够实 现自动称重 重量实现数字化显示 极大地便利了人们的生活 满足了人们对 于称重的需求 所以越来越受到人们的欢迎 经过仔细研究 本系统设计最终决定选用新一代 STC89C52RC 单片机来制作完 成课题所要求的电子秤 使其作为主控电路的核心 实现电子秤的所有功能 在设计过程中 系统增加了时钟模块的功能 系统由单片机控制核心 数据采 集 人机交互 系统电源和时钟五大部分组成 单片机主控电路部分由除了 STC89C52R 之外 还有报警器及其相关电路组成 电阻应变式压力传感器 信 号放大电路和 A D 转换器则构成了数据采集部分 其中信号放大电路和 A D 转 换器部分则选用内部自带放大器的专用型 AD 转换芯片 HX711 实现 它的特点是 转换精度很高 应用起来简单方便 人机交互部分则选用矩阵键盘作为输入设 备 LCD1602 液晶显示器作为显示设备 系统电源采用电脑 USB 接口供电 这 样电路简单且电压稳定 时钟部分选用 DS1302 时钟芯片 再结合相关电路组成 时钟电路 软件部分通过使用 C 语言编程实现了本课题要求的全部功能 该电 子秤能够满足课题所要求的称重功能的同时 并对时钟功能进行了丰富 增加 了闹钟功能 称重范围为 0 5Kg 能够显示所称物体重量 单价 总价 关键词 电子秤 单片机 称重传感器 HX711 目 录 第一章 绪论 1 1 1 研究的背景和意义 1 1 2 研究现状 1 1 3 主要研究内容 2 1 4 本文的组织结构 2 第二章 系统方案的设计 3 2 1 电子秤的设计要求 3 2 1 1 基本要求 3 2 1 2 特色和创新 3 2 2 系统的设计思路及工作原理 3 2 2 1 工作原理 3 2 2 2 基本设计思路 3 2 3 系统元器件选型及参数介绍 5 2 3 1 单片机选型 5 2 3 2 数据采集部分 6 2 3 3 人机交互部分 8 2 3 4 电源部分 9 2 3 5 具体实施方案简介 9 第三章 系统的硬件设计 11 3 1 基于 STC89C52 的主控电路 11 3 2 数据采集系统 12 3 2 1 称重传感器 12 3 2 2 A D 转换电路 13 3 3 显示电路 14 3 4 时钟电路 15 3 5 报警电路 16 3 6 键盘 16 3 7 系统硬件电路的绘制 18 3 7 1Protel99SE 软件介绍 18 3 7 2 系统原理图的绘制 19 第四章 软件设计 20 4 1 主程序流程图 20 4 1 1 时钟模块程序 20 4 1 2 称重模块程序 21 4 1 3 重要的子程序 22 4 2 主要中断程序流程图 25 4 3 核心代码 26 第五章 系统的调试 26 5 1 调试过程中遇到的问题 26 5 2 误差分析以及调试结果 27 5 2 1 误差来源 27 5 2 2 调试结果 27 5 2 3 结果分析 29 结束语 30 致谢 31 参考文献 32 附录 A 33 附录 B 34 附录 C 35 0 第一章 绪论 1 1 研究的背景和意义 电子秤是一种与人民现实生产生活息息相关 被广泛应用于各个领域的电 子衡器 诸如工业生产 商业贸易 交通运输 港口 机械制造 医疗保健 冶金 矿山和国防建设等各个方面 和传统的杆秤进行对比 电子秤具备诸多 优点 例如 它的精度很高 结构简单 价格低 用途广泛 便于携带 使用 方便等优点 电子称的工作原理也不难理解 它通过压力传感器采集物体重量 信息 将其转换为电信号 进行适当的信号放大处理 再通过 A D 转换器将模 拟电信号转换为数字信号 最后经过单片机的控制处理 送到液晶显示器显示 出被测物体的重量信息 目前市场上使用的称量工具 各个公司的产品质量良莠不齐 有的质量较高但 价格太高 有的价格不高但质量太差 容易损坏 精度不高 稳定性差 运行 不可靠 所以目前商用的电子秤市场上 商用电子秤的总体质量不高 这种情 况是由多种因素造成的 例如某些公司因为资金有限 造成科技人才储备不足 从而使其技术力量不够强 科技研发能力不足 造成产品质量不高 因此 开 发出一种质量较高但成本不高 具有较高性价比且具有实际实用价值的电子秤 克服电子秤在实际使用中的诸多缺点 具有一定的现实意义 1 2 研究现状 国内有关电子秤技术的研究相比国外来说起步晚了很多 不过在国内科学 家的努力下 近些年我们奋起直追 技术水平有了极大提升 取得了很多成果 从上世纪六十年代第一台电子秤的诞生 到如今的微机式产品 在某些技术领 域甚至达到了国际领先水平 我们仅仅用了几十年的时间就达到了发达国家花 费近一百年才能够达到的技术水平 但是总体来说 目前国内电子衡器的技术 水平仍然不算太高 仅仅与发达国家上世纪九十年代的水平相当 与国外产品 相比 我国商用产品在品种 功能 质量 核心部件的稳定性和可靠性方面还 有不小的差距 经过一百多年的发展 发达国家已经在电子秤有关的各个领域 都达到了很高的水平 例如技术水平 产品种类等等 最重要的是他们产品的 精确度 稳定性 可靠性都相当高 如他们商用秤的精度已经达到 OIML 规定 有的产品甚至远超此规定 另外它们的稳定性也极强 在一年内不允许有超差 情况出现 同时这些产品的使用寿命通常被要求能够正常工作十几年 由此可 见其可靠性也很高 简而言之 在电子秤技术领域 国内企业还有很长的路要走 现在电子秤 技术的发展趋势总的来说是朝着智能化的方向发展 电子秤的功能会越来越丰 1 富 电子秤的速率会越来越高 准确率和稳定性会越来越高 可靠性也会越来 越强 2 1 3 主要研究内容 本课题主要完成称重自动控制功能 本系统采用单片机 STC89C52RC 来制作 完成课题所要求的电子秤 使其作为主控电路的核心 实现电子秤的所有功能 经过设计 系统由单片机控制核心 数据采集 人机交互 系统电源和时钟五 大部分组成 由系统电源 压力传感器 A D 转换器 51 单片机 键盘 LCD 液晶显示 器 时钟芯片等器件共同构成了系统硬件部分的五大模块 使用单片机编程软 件运用 C 语言编程实现要求的功能 从而完成系统软件部分的设计 需要达到 以下的技术指标 称量范围 0 5kg 电子秤称重时能显示物品重量 还能进行 单价设定 并能自动算出总价并显示出来 超重时还要能够发出警报 若不进 行称量操作 则能够显示时间 且具有闹钟功能 1 4 本文的组织结构 本文对电子秤的设计和具体实现方法作了具体的描述 对整个系统的各个 组成部分及涉及的相关技术进行了介绍 例如压力传感器 A D 转换器 51 单 片机 键盘输入 电源部分 报警电路 时钟芯片 显示器等等 总共划分了 五章内容 如下所示 第一章 简要介绍了电子秤的概念 特点 技术现状和研究内容 第二章 论证了系统方案 介绍了相关的原理及相关器件 对比了各种方 案的优缺点 第三章 对相关芯片以及相应模块的功能作了细致的分析 给出了单片机 控制方案 第四章 介绍了系统的软件设计 第五章 对最终的成品设计作了相应的调试 分析 给出了最终的结论 2 第二章 系统方案的设计 2 1 电子秤的设计要求 2 1 1 基本要求 1 电子秤称重范围 0 5Kg 重量误差不超过 0 003Kg 2 LED 显示所称物体重量 单价 总价 3 超量程报警功能 4 不称重时 可以显示时间 2 1 2 功能扩展 1 液晶显示所称重物品的重量 同时还可以显示物品的单价 总价 2 能够实现去除皮重的功能 3 能够显示时间的同时 实现了闹钟功能 2 2 系统的设计思路及工作原理 2 2 1 工作原理 电子秤通过压力传感器采集物体重量信息 将其转换为电信号 进行适当 的信号放大处理 再通过 A D 转换器将模拟电信号转换为数字信号 然后经过 单片机的处理 最后送到液晶显示器显示出被测物体的重量信息 4 2 2 2 基本设计思路 系统由单片机控制核心 数据采集 人机交互 系统电源和时钟五大部分 组成 单片机主控电路部分由除了 STC89C52R 之外 还有报警器及其相关电路 组成 电阻应变式压力传感器 信号放大电路和 A D 转换器则构成了数据采集 部分 其中信号放大电路和 A D 转换器部分则选用内部自带放大器的专用型 AD 转换芯片 HX711 实现 它的特点是转换精度很高 应用起来简单方便 人机交 互部分则选用矩阵键盘作为输入设备 LCD1602 液晶显示器作为显示设备 系 统电源采用电脑 USB 接口供电 这样电路简单且电压稳定 时钟部分选用 DS1302 时钟芯片 再结合相关电路组成时钟电路 使用单片机编程软件运用 C 语言编程实现要求的功能 并对时钟功能进行丰富 增加了闹钟功能 2 3 系统总体设计方案比较与论证 3 在设计本系统时 有以下几种电子秤设计方案 方案一 数码管方案 结构简图如图 2 1 所示 压 力 传 感 器 放 大 器 单 片 机 键盘 时钟电路 A D 转 换 器 报警 图 2 1 数码管显示方案 这种设计方案虽然能够满足课题的基本要求 能够完成物品称重的同时 显示重量 单价 总价等信息 可是这种方案也有其致命缺陷 如果数码管较 少 则不能同时显示重量 单价 总价等信息 这是因为数码管本身的缺陷引 起的 如果要同时显示多个信息 就必须在电路中安装大量数码管 但是这样 会大幅增加硬件电路设计的难度 方案二 在模数转换之前 加上放大器 用于准确的线性放大输出电压信 号 将数码管换为具有更强大显示能力的液晶显示器 这种不仅加强了人机交 互功能 满足设计要求 而且可以同时显示物体重量 单价 总价等信息 电 路更加简单 设计更加简便 结构简图如图 2 2 所示 压 力 传 感 器 放 大 器 单 片 机 键盘 时钟电路 A D 转 换 器 液晶显示器 图 2 2 LCD 液晶显示方案 4 在整个硬件电路系统的设计过程中 综合分析了各种有利因素和不利因素 以后 最终完成了的电子称设计方案 系统硬件设计框图如图 2 3 所示 数据采集 AD 转换器单片机 LCD 显示 时钟显示 报警电路 键盘 信号放大 时钟芯片 图 2 3 系统设计硬件框图 2 32 3 系统元器件选型及参数介绍系统元器件选型及参数介绍 2 3 12 3 1 单片机选型单片机选型 单片机作为系统主控电路的核心元件 是整个硬件电路系统的中枢所在 也就是心脏部位 所以其选型非常重要 根据本课题的需求 需要处理速度快 易用性强 价格便宜的单片机 最终决定选用 STC89C52 单片机 STC89C52 单片机是一种新型的 51 单片机 集众多优点于一身 例如 功 耗很低 性能足够优秀 处理速度很快等等 STC89C52 使用了传统的 MCS 51 内核 同时也做了许多改进 使得芯片相较于传统的 51 单片机功能更加丰富 性能也更加强劲 1 这让它得到了广泛的应用 stc89c52 芯片具有以下特性 5 指令集完全兼容传统的 8051 内部集成有 8KB 的存储空间 时钟频率为 0 33MHz 32 个可编程输入 输出引脚 2 个 16 位定时 计数器 6 个中断源 2 级优先级 全双工串行通信接口 监视定时器 2 个数据指针 5 STC89C52 单片机引脚图如图 2 4 所示 5 图 2 4 STC89C52 单片机引脚图 2 3 2 数据采集部分 2 3 2 1 传感器的选型 方案一 电容式压力传感器 电容式压力传感器是一种比较常见的压力传感器 平常使用的很多测量仪器 都是以它为基础制成的 它是一种利用电容变化巧妙地把对压力的测量转换为 电信号测量的仪器 它的应用非常广泛 有很多优点 例如分辨率很高 能够进行动态的检测 结构很简单 并不复杂 尤为重要的是它的稳定性很好 可以胜任各种环境下 的测量工作 可以是非接触测量的 很方便 方案二 压电式压力传感器 这种传感器的实际工作原理是通过电气元件把对压力的测量的转变为对电 信号的测量 它也有不少优点 例如 重量轻 可靠性强 结构简单 稳定性 高 信噪比足够高 灵敏度很高以及信频宽等等 显然它具有许多不完美之处 例如 内阻高 输出电流的相应较差 部分电压材料忌潮湿的环境 它的应用 领域非常宽广 如在电声学 生物医学和工程力学中都有应用 尤其是在宇航 和航空领域应用中占有特殊的地位 方案三 电阻应变式传感器 6 电阻应变式传感器是通过金属电阻应变片受到压力的作用后 其电阻值也会 随之变化的原理工作的 金属电阻应变片有许多种类 不同的电阻应变片有不 同的优缺点 适合不同场合 这种传感器有很多优点 例如 它的灵敏度和精度都足够高 测量范围非 常广 使用寿命很长 结构很简单 频响特性也不错 最重要的是在许多恶劣 的环境下 依然有很高的稳定性 能够正常工作 经过认真对比分析这三种方案的优缺点 我选择了第三种方案 这种方案 更加符合本课题的要求 2 3 2 2 放大器及模数转换器选择 通常由于传感器输出的信号一般较弱 如果信号没有经过放大处理 就会 因为信号输出的电压信号太低造成难以直接用来进行 A D 转换 为此 测量电 路中经常设置有信号放大处理电路模块 用来放大处理信号 这一模块由相应 的放大器构成 模数转换部分的设计在整个设计中占有非常重要的位置 所以模数转换器 的选择就显得尤为重要 目前 世界上存在的模数转换器的种类多种多样 有 传统的并行 积分型模数转换器 也有专用型的模数转换器 不同的模数转换 器有不同的优缺点 具有各自的性能 目前 可供选择的模数转换器有以下几 种选择 1 并行比较 A D 转换器 如 ADC0808 ADC0809 等 并行比较 ADC 显著 的特点是转换速度快 但是成本高 功耗较大 且其分辨率一般不高 因此并 行比较式 A D 适合于要求高速 低分辨率的仪器中 2 积分型 A D 转换器 如 ICL7135 ICL7109 等 它的基本原理比较简 单 优点是稳定性相当不错 转换精度高 缺点是转换速度慢 适合对精度的 需求较高 而且对转换速度需求不高的仪器仪表中 3 专用型 A D 转换器 如 HX711 它是专用型高精度的 24 位 A D 转换 器芯片 它有很高的集成度 有很好的稳定性 最重要的是其内部集成有放 大器 如果选用它来设计电子秤 就可无需额外选取放大器了 这样就使电 路设计的复杂度减小了 同时减小了制作成本 10 经过综合分析 最终决定选用专用型高精度的模数转换芯片 HX711 芯片引脚图如图 2 6 所示 7 图 2 6 HX711 引脚图 2 3 3 人机交互部分 2 3 3 1 键盘输入 键盘作为人机交互模块中非常重要的一环 它是使用者向系统进行 信 息输入的工具 键盘是由一个一个的独立按键和相应的电路构成 键盘的种 类有很多 但我们经常使用到的只有几种 例如通用键盘 键盘的选型要根 据课题的要求和设计的需要而定目前有两种方案可以选择 方案一 Intel8279 是一种大家经常使用的可编程通用键盘 显示器接 口芯片 它既有键盘输入功能 也有显示器输出功能 它有很多优点 但是 同时也有致命的缺点 就是它的使用会占用系统过多的资源 这会让本就紧 张的系统资源更加稀少 方案二 选用常用的矩阵键盘 它编程非常简单 设计可靠 同时配合 单片机可以很轻松的实现按键输入 通过以上分析 最终选用矩阵键盘 2 3 3 2 显示电路 显示电路作为人机交互的重要组成部分 其中显示器的选择尤为重要 它直接关乎着使用者进行人机交互的体验感受 有以下两种方案 方案一 使用数码管作为显示器 这种设计方案能够满足课题的基本要 求 完成物品称重的同时 也能显示重量 单价 总价等信息 其显著的优点 是编程较为简单 但缺点 则是不能同时显示多个不同的信息 若要同时显示 不同的信息 如同时显示单价 总价等信息 则需要同时安装大量的数码管 这样则增加了电路的复杂度 使设计硬件电路时的难度大大增加 同时软件 编写的难度也加大了许多 再则 数码管能够显示的字符十分有限 对许多字 符不能很好的显示 8 方案二 采用具有更强字符显示功能的LCD 液晶显示器 可以设置显示 单价 总价 时间日期等信息 它的功耗很低 能够显示的内容非常丰富 稳定性也很好 现在字符型液晶显示器应用也较为普遍 价格也不是很高 经过仔细分析 最终选择了方案二 使用液晶显示器作为显示电路的核心 器件 2 3 4 电源部分 因为本设计中选用的单片机等器件的所需的电源电压均为5V 而 USB 接口刚好为 5V 所以本设计采用电脑 USB 接口直接供电 这样设计电路也 比较简单 同时 设计了相应的 USB 下载电路 单片机可以通过 USB 接口 直接下载程序 其电路原理如图 2 7 所示 图 2 7 供电及程序下载电路 2 3 5 具体实施方案简介 本系统设计最终决定选用新一代 STC89C52RC 单片机来制作完成课题所要求 的电子秤 使其作为主控电路的核心 实现电子秤的所有功能 STC89C52 单片 机是一种具有低功耗 具有优异性能的微处理器 它具有许多传统 51 单片机不 具备的功能 同时具备一定的存储空间 由于编程所需要的软件存储空间不是 太大 此单片机内部存储空间能够满足需求 这样就无须再外接外部存储器了 从而降低了系统设计的难度 硬件部分除了包括单片机控制核心模块之外 还 包括数据采集 人机交互 系统电源和时钟电路等部分 数据采集部分由电阻式压力传感器和专用型 24 位模数转换器组成 在选择 电阻式压力传感器时 要结合课题的要求 根据实际需求 选用有足够精确度 和稳定性的传感器 还要把其的称重误差控制在合理范围内 另外还要考虑秤 台自身的重量的影响 并且要防止物体超重时损坏称重传感器 所以最终选择 的电阻式压力传感器的称重极限值 要大于课题所要求的最大值 准确性也要 达到课题的要求 人机交互部分的键盘 最终选用了编程较为简单的矩阵键盘 液晶显示器 选用了 lcd1602 时钟模块选用了时钟芯片 DS1302 作为核心器件 9 系统硬件的结构框图如下图 2 8 所示 图 2 8 系统硬件结构框图 10 第三章 系统的硬件设计 本系统设计最终决定选用新一代 STC89C52RC 单片机来制作完成课题所要求 的电子秤 使其作为主控电路的核心 实现电子秤的所有功能 硬件部分由单 片机控制核心 数据采集 人机交互 系统电源和时钟五大部分组成 3 1 基于 STC89C52 的主控电路 1 单片机 STC89C52 简述 STC89C52 是一种性能十分出众 功耗很低的单片机 作为一款改进型 单片机 它使用了传统的 MCS 51 内核 由于做了许多改进 使得芯片相较 于传统的 51 单片机功能更加丰富 性能也更加强劲 另外由于沿用了传统 内核 所以它的指令集也完全兼容传统 8051 2 单片机核心控制电路的中心为 STC89C52 单片机 其次是晶振电路 为了能够实现清零功能 还设计了复位电路 此电路是整个系统中最重要 的部分 是实现所有功能的关键所在 本课题设计的单片机主控电路如图 3 1 所示 图 3 1 主控电路图 图中 DT 和 SCK 外接模数转换电路 负责单片机与模数转换电路之间的信息 交换 P1 6 外接蜂鸣器 用来传输报警信号 11 晶振是晶片使用某些特殊材料封装起来以后 又将 IC 添加在其封装内部组 成振荡电路的晶体元件 晶振在单片机中所起的作用非常巨大 它能够为其提 供需要的时钟频率 而且单片机的指令都必须在这个基础之上执行 设计复位电路一方面为实现清零功能 另一方面是为了保证系统中的电路 能够稳定可靠的工作 本设计复位电路采用两种复位方式 按键复位和上电复 位 构成复位电路有两种方案 一种是借助 STC89C52 内部的反相放大器构成振 荡器 但是要形成时钟脉冲 需要在外部额外增加电路 这样会增加电路的复杂 度 所以最终选用另外一种方案 即利用内部自带时钟 使用芯片内部的振荡器 完成复位电路设计 3 2 数据采集及 A D 转换电路 3 2 1 数据采集电路 1 数据采集采用 HL 8 型称重传感器 其安装方式如图 3 2 所示 图 3 2 HL 8 型称重传感器安装图 2 HL 8 型称重传感器的内部原理图如 3 3 所示 12 图 3 3 HL 8 型称重传感器内部原理图 3 HL 8 型称重传感器的主要技术参数如表 3 1 所示 表 3 1 HL 8 型称重传感器主要技术参数 3 2 2 A D 转换电路采用高增益的 24 位 HX711 转换器 HX711 是一款专用型高精度的 24 位模数转换芯片 HX711 管脚说明如表 3 2 所示 表 3 2 HX711 管脚说明 13 1 模拟输入 2 供电电源 3 时钟选择 本课题设计的 HX711 电路如图 3 4 所示 图 3 4 HX711 电路 3 3 显示电路 使用具有显示内容丰富的 16 2 行的 LCD1602 显示器 它性能优异 能够同 时显示多种字符和数字 基控制器采用 HD44780 非常符合本设计的要求 它功 14 耗很小 体积小 显示内容丰富 编程较为简单 8 其与单片机的连接电路如 图 3 5 所示 图 3 5 系统状态显示电路图 1 脚为接地引脚 2 脚为电源引脚 3 脚为液晶 1602 的背光调节引脚 通 过 2K 电位器接地 4 脚是控制模块内部寄存器选择的引脚 5 脚是控制读 写模 块操作的引脚 6 脚为使能端 4 5 6 引脚分别与单片机的 P1 0 P1 1 P1 2 端口相连 7 14 脚与单片机的 P0 口相连 他们是 8 根数据 通信线 通它们 单片机可以和液晶屏进行信息交换 15 脚连接电源 16 脚接 地 8 3 4 时钟电路 DS1302 是一种实时时钟芯片 它的性能十分出众 功耗很低 并且自带 RAM 使用它可以轻松编程实现电子日历功能 工作电压宽达 2 5 5 5V 因为 有诸多优点 所以它在很多测量系统中被普遍使用 9 DS1302 管脚图如图 3 6 所示 图 3 6 DS1302 管脚定义 DS1302 各引脚的功能为 15 VCC1 备用电源 VCC2 主电源 当 VCC2 VCC1 0 2V 时 由 VCC2 向 DS1302 供电 当 VCC2 VCC1 时 由 VCC1 向 DS1302 供电 SCLK 串行时钟 输入 I O 三线接口时的双向数据线 CE 输入信号 在读 写数据期间 必须为高 时钟电路如图 3 7 所示 图 3 7 时钟电路 3 5 报警电路 本设计中的报警电路原理简单 易于理解 当物品重量超过最大量程时 蜂 鸣器发出报警声 进行报警 报警电路由三极管 电阻和蜂鸣器构成 蜂鸣器 通过三极管来驱动 单片机的引脚 P1 6 与三极管的基极相连 三极管通过单片 机相应接口输出的高低电平来控制其导通与否 报警电路如图 3 8 所示 16 图 3 8 报警电路 3 6 键盘输入 键盘输入电路作为人机交互部分中重要的组成部分 在电子称工作的过程 中 所有信息的输入都由它来完成 例如单价值的输入 时间的调整 经过缜 密思考 键盘最终选用了矩阵键盘 这是因为其结构简单 编程方便 便于进 行相应的软件设计 其电路如图 3 9 所示 17 图 3 9 矩阵键盘 作为电子秤时 其按键功能分配如下表所示 789 删除 456 去皮 123 清零 10011 显示 时间 此电子秤每次开机自动进入称重页面 所有数据初始化清零 进行物品称 重前 要先按下去皮键 除去托盘重量 将其重量清零 实现去皮功能 在输入了单价的过程中 可以使用删除键或者清零键修改单价 单价设定 完完成后 总价会自动生成 并被显示出来 作为时钟和闹钟的时候 键盘面板如下所示 选择 18 闹铃停 止 模式选择 对应矩阵键盘按键 15 14 13 1112 由于此电子秤开机后默认进入称重界面 所以进入时间显示界面或者闹钟显示 界面需要通过模式选择按键进行界面切换 进入时间显示界面或者闹钟显示界 面以后 对各个时间参数的调节需要通过选择按键来进行切换 使用加减键来 调节其大小 3 7 系统硬件电路的绘制和 PCB 制作 3 7 1Protel99SE 软件介绍 在进行电路的设计时 我将此软件和 Altium Designe 软件进行了比较 经 过综合考虑之后 我最终决定采用此软件进行原理图 PCB 的绘制 该软件一 经问世就备受欢迎 后经过版本的更迭发展成为如今的版本 Protel99SE Protel99SE 软件是一款非常流行的 EDA 设计软件 它除了能进行 原理图 PCB 板的设计两种常用的功能之外 还可以完成可编程器件设计和电 路仿真 它由多种功能模块组成 包括有原理图设计系统 印刷电路板设计系 统 自动布线系统 电路仿真系统 可编程器件设计系统 PCB 信号完整性分 析系统等等 因为它具有很强大的数据交换能力和开放性及 3D 模拟能力 所以 该软件自问世以来 一直以来都受到电子工程师和高校师生的极力追捧 备受 推崇 因此它成为一款非常流行的设计软件 3 7 2 系统原理图和 PCB 的绘制 3 7 2 1 采用 Protel99SE 软件绘制原理图的步骤如下 19 1 建立系统所需要的元件库 如果所需的元器件 软件自带的元件库中 没有 则需自己制作没有的原理图符号 2 把自己建立的元件库都添加进入相应的工程项目中 3 进行元件整体布局将元器件放置于图中合理的位置 这是最关键的一 步 4 对原理图内的元器件进行电气连接 5 放置注释 这是为了增加电路图的可读性 3 7 2 2 采用 Protel99SE 软件绘制 PCB 的步骤如下 1 绘制出正确的原理图后生成网络表 2 在工程中建立 PCB 文件 导入生成的网络表 在网络表导入之前 要 注意相关环境参数的设置和电路板的规划 3 进行 PCB 的绘制时 PCB 的布线要尽可能美观 完成绘制后 还要进 行最终的设计规则检测 第四章 软件设计 本课题设计的电子秤系统由硬件电路部分和软件部分组成 硬件电路部分 的完成只是整个系统的基础 它是为软件的运行做准备的 软件部分才是整个 20 系统的灵魂 两者相辅相成 才能确保整个系统的成功运行 软件部分必须能 够满足课题对功能的所有要求 如自动称重 价格计算 显示功能 时钟功能 闹钟功能 报警功能等等 软件系统的主程序包括电子秤函数和时钟函数 此 外还有一些重要的子函数 如 DS1302 初始化程序 显示函数 蜂鸣器报警函数 等等 4 1 主程序流程图 本本程序主要有两个功能函数组成 一个为电子秤函数 一个为时钟函数 这两个函数是整个程序中最重要的组成部分 4 1 14 1 1 时钟模块程序时钟模块程序 时钟函数流程图如图 4 1 所示 图 4 1 时钟函数流程图 21 系统启动后 首先调用时钟芯片 DS1302 的初始化程序将其初始化 然后再 调用液晶显示器 LCD1602 的初始化程序将其初始化 系统初始化完毕后 系统 默认自动进入物品称重界面 这时如果按下模式选择键 系统就会进入时钟界 面 这时显示函数运行 液晶屏开始显示时间 与此同时按键扫描程序开始运 行 循环检测键盘中是否有按键按下 是否在进行各个时间参数的调节或者界 面的切换 紧接着与预先设定的闹钟时间进行比较 检测是否与闹钟时间相一 致 如果相同 则定时器 T0 开始运行 蜂鸣器发出蜂鸣声 提示闹钟时间到了 如果在闹钟发出闹铃声的过程中关闭闹钟 可以按下闹铃解除按键 使闹钟停 止 4 1 24 1 2 称重模块程序称重模块程序 电子秤函数流程图如图 4 2 所示 图 4 2 电子秤函数流程图 22 在电子秤称重界面工作时 系统启动后会首先调用 LCD1602 初始化程序将 液晶屏初始化 启动 A D 转换函数 对采集到的数据进行处理 与此同时运行 单价函数 按键扫描函数也会同时运行 检测按键值的输入 再通过设置函数 进行单价的输入和修改 自动计算出总价后 调用显示函数将重量 单价 总 价等信息显示在液晶屏上 如果想要清除所有信息重新称重 则只需按下清零 键即可 系统会重新初始化 所有数据归零 4 1 34 1 3 重要的子程序重要的子程序 4 1 3 1 DS1302 模块的子程序 void write 1302 uchar add uchar dat rst 1 把复位线拿高 for i 0 i 1 把地址右移一位 clk 1 时钟线拿高 for i 0 i 1 把数据右移一位 clk 1 时钟线拿高 rst 0 复位线合低 clk 0 io 0 此子程序的功能是往时钟芯片 DS1302 中写入一个数据 写数据的过程就是 先写入寄存器地址 再写入数据 这些数据就是年月日时分秒这些时间参数 写完数据以后 将 RST 置零 uchar read 1302 uchar add 23 uchar value i rst 1 把复位线拿高 for i 0 i 1 把地址右移一位 clk 1 时钟线拿高 for i 0 i 1 if io 1 value 0 x80 clk 1 时钟线拿高 rst 0 复位线合低 clk 0 io 0 return value 返回读出来的数据 此子程序的功能是读取 DS1302 中的数据即读取时间 读取年月日时分秒这 些时间参数 读取数据的过程和写数据的过程很相似 也是先写入寄存器地址 再读取数据 4 1 3 2 LCD1602 液晶显示器子程序 void write com uchar com e 0 为了让本次操作有效 rs 0 表示写指令寄存器 rw 0 表示对寄存器写操作 P0 com 把要写入液晶模块的数据准备好 delay uint 3 e 1 让液晶模块使能 以便让我们对它的操作有效 delay uint 25 24 e 0 为了让本次操作有效 此子程序的功能是向 CD1602 指令寄存器中写入命令 void write data uchar dat e 0 为了让本次操作有效 rs 1 表示写数据寄存器 rw 0 表示对寄存器写操作 P0 dat 把要写入液晶模块的数据准备好 delay uint 3 e 1 让液晶模块使能 以便让我们对它的操作有效 delay uint 25 e 0 为了让本次操作有效 此子程序的功能是向 LCD1602 数据寄存器中写入数据信息 void write string uchar hang uchar add uchar p if hang 1 write com 0 x80 add 在第一行指定位置显示 else write com 0 x80 0 x40 add 在第二行指定位置显示 while 1 if p 0 break 判断字符串是否结束 write data p 将当前的字符内容发送到液晶屏上 p 指向下一个字符 此子程序的功能是在液晶显示器的指定位置上显示字符串 void init 1602 lcd1602 初始化设置 write com 0 x38 显示模式设置 8 位数据口 write com 0 x0c 开启显示 光标不显示 write com 0 x06 设置光标移动方向为向右 显示字符时字符不移动 25 delay uint 1000 延时 保证显示更加稳定 此子程序的功能是初始化 LCD1602 液晶显示器 4 2 主要中断程序流程图 定时器 T0 中断程序流程图如图 4 3 所示 图 4 3 定时器 T0 中断程序流程图 进入 TO 中断程序后 系统会先将 TO 计数器初始化 然后判断所称物品重 量是否超过电子秤最大量程 5kg 如果超重 就会启动蜂鸣器报警程序 蜂鸣器 就会报警提示超重 否则继续与闹钟标志比较 判断是否到达闹钟时间 如果 到达 同样会启动蜂鸣器报警程序 使蜂鸣器报警 4 3 核心代码 下面介绍主程序编写 其他程序见附录 7 1 头文件和一些宏定义 include 调用单片机头文件 define uchar unsigned char 无符号字符型 宏定义 变量范围 0 255 define uint unsigned int 无符号整型 宏定义 变量范围 0 65535 define ulong unsigned long include ds1302 h 26 include 2 管脚 常量 变量定义 uchar code table num abcdefg sbit rs P1 0 寄存器选择信号 H 数据寄存器 L 指令寄存器 sbit rw P1 1 寄存器选择信号 H 数据寄存器 L 指令寄存器 sbit e P1 2 片选信号 下降沿触发 sbit hx711 dout P2 1 sbit hx711 sck P2 0 sbit ACC0 ACC 0 sbit ACC7 ACC 7 sbit clk P1 3 ds1302 时钟线定义 sbit io P1 4 数据线 sbit rst P1 5 复位线 uchar miao fen shi ri yue week nian lshi lfen uchar i uchar open1 sbit beep P1 6 蜂鸣器 uchar menu 1 menu 2 long weight unsigned long HX711 Buffer 0 unsigned long Weight Maopi 0 unsigned char flag 0 bit Flag ERROR 0 uint temp qi weight bit chaozhong flag bit leiji flag uchar flag 200ms ulong price z price 单价 总价 uchar flag p 3 各个子程序 初始化 ds1302 时间 void init 1302 uchar i 27 rst 0 第一次读写数据时要把 IO 品拿低 clk 0 io 0 i read ds1302ram 30 if i 8 i 8 write ds1302ram 30 i 4050 4100 3080 write 1302 0 x8e 0 x00 打开写保护 write 1302 0 x90 0 xaa 定义充电 write 1302 0 x80 0 x53 秒 write 1302 0 x84 0 x13 分 write 1302 0 x82 0 x43 时 write 1302 0 x8c 0 x12 年 write 1302 0 x88 0 x06 月 write 1302 0 x86 0 x03 日 write 1302 0 x8a 0 x06 星期 write 1302 0 x8e 0 x80 把最高位值 0 允许 ds1302 工作 write 1302 0 x8e 0 x80 关写保护 read time 读时间 if miao 0 x60 write 1302 0 x8e 0 x00 打开写保护 write 1302 0 x80 0 x53 把最高位值 0 允许 ds1302 工作 write 1302 0 x8e 0 x80 关写保护 名称 write sfm4 price uchar hang uchar add uchar date 功能 显示价格 输入 行 列 需要输入 1602 的数据 输出 无 28 void write sfm4 price uchar hang uchar add uint date if hang 1 write com 0 x80 add else write com 0 x80 0 x40 add write data 0 x30 date 1000 10 write data 0 x30 date 100 10 write data write data 0 x30 date 10 10 write data 0 x30 date 10 void write sfm4 price1 uchar hang uchar add uint date if hang 1 write com 0 x80 add else write com 0 x80 0 x40 add if date 9999 write data 0 x30 date 10000 10 write data 0 x30 date 1000 10 write data 0 x30 date 100 10 write data write data 0 x30 date 10 10 else write data 0 x30 date 1000 10 write data 0 x30 date 100 10 write data write data 0 x30 date 10 10 write data 0 x30 date 10 29 开机液晶显示函数 初始化液晶的内容 void init 1602 dis csf 初始化液晶 write string 1 0 W 0 000kg write string 2 0 P 00 00 Z 00 00 write zifu 2 7 0 x5c write zifu 2 15 0 x5c void init 1602 dis sj 初始化液晶 write string 1 0 W write string 2 0 20 void init 1602 dis nz 初始化闹钟界面 write string 1 0 set clock write string 2 0 压力显示程序 void write 1602 yl uchar hang uchar add uint date if hang 1 write com 0 x80 add else write com 0 x80 0 x40 add if date 2 date 0 write data 0 x30 date 10000 10 write data 0 x30 date 1000 10 write data 30 write data 0 x30 date 100 10 write data 0 x30 date 10 10 write data 0 x30 date 10 void Delay hx711 us void nop nop unsigned long HX711 Read void 增益 128 unsigned long count unsigned char i hx711 dout 1 Delay hx711 us hx711 sck 0 count 0 EA 1 while hx711 dout EA 0 for i 0 i 24 i hx711 sck 1 count count 0 weight unsigned int float weight GapValue 计算实 物的实际重量 else weight 0 主函数 void main beep 0 蜂鸣器叫一声 delay 1ms 100 P0 P1 P2 P3 0 xff 单片机 IO 口初始化为 1 init 1602 lcd1602 初始化 init 1602 dis csf lcd1602 初始化显示 init ds1302 ds1302 初始化 get pizhong 获取皮重 秤盘重量 init ds1302 while 1 32 key 独立按键程序 if key can 200 flag 200ms 0 if weight 5000 超重报警 beep beep else beep 1 if menu 1 1 读时间 init 1602 ds1302 显示时钟 if menu 1 0 get weight 称重 write 1602 yl 1 5 weight 显示压力 z price weight price 1000 总价等于重量 单价 write sfm4 price1 2 11 z price 显示总价 laba 闹钟报警函数 delay 1ms 1 33 第五章 系统的调试 误差分析和结果分析 5 1 调试过程中遇到的问题 基本完成系统软硬件的设计以后 就要开始调试分析了 为了能够更好的 达到预期的调试目标 我把调试计划认真的分解为一个一个小步骤 一步一步 的调试 一点一点分析修改 期间我遇到很多问题 具体如下 1 系统的硬件设计过程中 对系统稳定性和可靠性可能造成影响的各种原 因 没有基于全面充分的考虑 比如对系统电源电压的稳定性是否足够未予考 虑 没有设置相应的稳压电路 2 没有丰富更多的功能 造成电子秤功能比较少 不够丰富 例如可以加 入温度显示功能等等 3 软件部分功能设计的不够完善 界面不够友好 同时受限于元器件功能 造成一些软件功能无法实现 例如由于 LCD1602 能够显示的字符较少 造成在 显示物品单价 总价 重量的同时 不能同时显示物品名称 进而使软件的显 示功能有所欠缺 5 2 误差分析以及调试结果 5 2 1 误差来源 电子秤的误差分析对于一款电子称来说非常重要 电子称误差的大小直接 决定了它的精确度 电子称的误差是对被测物品称量重量与真实重量之间差距 的定量描述 在实际的生活场景中 实际使用它的时候 如果误差太大 会直 接降低用户的应用体验 所以要对它的误差进行研究 必须首先对它的误差源 头进行研究 搞清楚其误差原因才能进一步提高它的精确度 经过研究发现 它的误差源头主要因为以下几种原因造成的 3 1 四角偏载误差 偏载测试要求电子秤在进行物品称重测量时 被测物 品的重量不应该因为其在秤台上位置的变化而改变 所以电子秤的灵敏度才是 产生这种误差的主要原因 34 2 称量误差 此种误差的原因有许多种 主要的是以下三种原因 传感器称量线性变化 零点漂移 擦靠 3 鉴别力误差 鉴别力体现了电子秤对负载细微变化的反应能力 这种误差 的主要原因是秤体连接过程中产生的摩擦力 4 重复性误差 在相同的场景下 连续多次进行称重测试后所得读数间的差 值 此种误差属于其侧向压力 多种因素共同作用造成的 3 5 2 2 调试结果 经过一步一步认真的调试 分析 不断的修改和完善 认真的请教导师 查阅相关资料 最后成功完成了调试 达到了预期目标 实物图如图 5 1 图 5 2 图 5 2 所示 图 5 1 电子秤称重界面显示图 35 图 5 2 电子秤时钟界面显示图 图 5 3 电子秤闹钟界面显示图 36 经过精心调试 电子秤称重时误差不超过 0 003Kg 实际效果达到了课题要求 5 2 3 结果分析 为了满足课题要求 本设计将此系统分为硬件部分和软件部分 硬件部分 由单片机核心控制 数据采集 人机交互 系统电源和时钟五大部分组成 虽 有瑕疵 但是经过仔细认真的调试 实现了本课题所要求的全部功能 并在此 基础上增加了闹钟功能 适度的扩展了课题深度 综上所述 本系统成功实现 了所有功能 满足了课题要求 37 结束语 1 总结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋买卖合同变更协议书
- 建设工程质保金合同范本
- 水泥助磨剂营销合同范本
- 房子小产权出售合同范本
- 私家车司机雇佣合同范本
- 水处理值班外包合同范本
- 服务业临时用工合同范本
- 护工劳动合同协议书范本
- 新农村别墅租赁合同范本
- 2025版影视剧本创作委托合同范本
- 2021年SYB创业培训考试试卷及答案
- 第一单元项目一探秘鸟类研究-认识数据、信息与知识课件沪科版(2019)高中信息技术必修1
- 职场应用文高职PPT完整全套教学课件
- 垃圾焚烧发电项目电气安装与调试施工方案
- 设施蔬菜生产机械化技术
- LY/T 1821-2009林业地图图式
- JJF 1272-2011阻容法露点湿度计校准规范
- 液压与气压传动 第2版 马振福 高职课件0、1新
- 危化品安全管理学习课件
- SY∕T 7298-2016 陆上石油天然气开采钻井废物处置污染控制技术要求
- 突发事件处理记录表(标准范本)
评论
0/150
提交评论