当前位置: 首页 > news >正文

实践项目2-自动计价电子秤

自动计价电子秤

一、功能说明

基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印(串口模拟)。

二、具体要求

1、开机后实时检测重量并显示;

2、通过按键输入并显示价格,具有修改功能;

3、确认后自动计算并显示总价;

4、实时显示单价、重量和总价信息;

5、按下“打印”键后,通过串口发送单价、重量和总价信息;

6、,具有故障检测报警功能;

三、自动计价电子秤报告

摘要:自动计价电子秤使用AVR系列的ATmega16单片机作为主控芯片,通过采集压力传感器MPX4115产生的模拟信号,并将其通过其内部的ADC资源将模拟信号转换成对应的数字信号,并将其显示在八位共阳数码管上。同时设置了四个按键作为系统的单价加、减、计算总价、以及串口显示的功能。我们不仅可以通过数码管,也可以通过串口助手实时的显示出对应的单价、重量、总价的数据。

关键词:ATmega16  压力传感器  ADC  串口

1 设计要求   

该自动报价系统要求能够实时的显示出设置的单价、称重的重量,并且在确认好之后计算总价并显示出来。首先该系统需要加入压力传感器得出重量数据,然后通过按键系统能够改变对应物品的单价,这时显示模块就会实时显示物品的重量和单价,待确认之后,按下确认按键计算出对应物品的总价。最后一个按键是串口打印的功能按键,可以通过串口向外发送单价、重量、总价信息。还有,当出现故障的时候,可以进行故障检测的报警提示。

   

2 总体设计

2.1 系统组成及工作原理

根据题目中的要求,系统共分为单片机处理模块、重量检测模块、按键控制模块、数码管显示模块、串口发送模块。系统的总体框图如图2.1所示。

图2.1 系统总体框图

  (1)、单片机处理模块:单片机处理模块负责将重力传感器传递的模拟信号用其内部的ADC通道进行AD转换,同时检测按键数据进行相应的逻辑运算,最后将数据通过串口和数码管显示出来。

  (2)、质量检测模块:给单片机的ADC通道传递所称物理重量的模拟信号,以便其进行AD转换。

  (3)、按键控制模块:总共四个按键,牵连个按键对物品的单价进行加或减,第三个按键负责计算总价,第四个按键是串口打印按键,将处理好的重量、单价、总价通过串口发送出去。

  (4)、串口发送模块:待串口配置好以及数据处理完之后,将对应的数据发送出去,并可以通过串口助手显示出来。

  (5)、数码管显示模块:负责显示物品的重量和单价,待计算总价按钮按下之后,显示物品的总价。

2.2 称重传感器测量原理

       称重传感器是用来将重量信号或压力信号转换成电量信号的转换装置。称重传感器采用金属电阻应变计组成测量桥路,利用金属电阻丝在张力作用下伸长变细,电阻增加的原理,即金属电阻随所受应变而变化的效应而制成的(应变,就是尺寸的变化)。称重传感器的构造原理金属电阻具有阻碍电流流动的性质,即具有电阻,其阻值依金属的种类而异。同一种金属丝,一般来讲,越是细长,其电阻值就越大。当金属电阻丝受外力作用而伸缩时,其电阻值就会在某一范围内增减。因此,将金属丝(或膜)紧贴在被测物体上,而且这种丝或膜又很细或很薄,粘贴又十分完善,那么,当被测物体受外力而伸缩时,金属电阻丝(膜)也会按比例伸缩,其阻值也会相应变化。称重传感器就是将金属电阻应变计粘贴在金属称重梁上进行测量重量信号的。

3 硬件设计

3.1 单片机处理电路

   单片机选型用的是AVR系列的ATmega16型单片机,ATmega16单片机是一款高性能、低功耗的8位AVR微处理器,具有先进的RISC结构,内部有大容量的ROM、RAM、Flash和EEPROM,集成4通道PWM,SPI串行外设接口,同时具有8路10位A/D转换器,对于数据采集系统而言,外部无需单独的A/D转换器,从而可节省成本.另外,该单片机提供JTAG调试接口,可采用自制的简易JTAG仿真器进行程序调试。

    单片机处理电路的仿真图如图3.1所示。

图3.1 单片机处理电路的仿真图

3.2 重量检测电路

    重量检测电路的是MPX4115模块,这是一款称重传感器,其工作原理在2.2中提到过,这里就不再叙述了。它的一脚对应是数据输出端,连接的是单片机的PA1口,对应的是ADC1通道,可以通过其加减对其当前称重的数据进行调整,用此方法来仿真其称重的具体数据。重量检测电路的仿真图如图3.2所示。

图3.2 重量检测电路的仿真图

3.3 按键控制电路

按键控制电路共设置了四个按键,连接到单片机的PC1-PC4口,不按下按键的时候,端口检测到的是高电平信号,按下去之后,端口检测的是低电平信号。共有四个按键,第一个和第二个按键是对物品单价进行加或减,第三个按键是开始计算总价,第四个按键是通过串口发送数据。按键控制电路的仿真图如图3.3所示。

图3.3 按键控制电路仿真图

3.4 数码管显示电路

本系统的数据显示电路用了八位共阴数码管进行显示,一开始数码管显示的数据左面是重量数据,右面是单价数据,按下去之后,则显示的是总价数据。数码管的位选和段选端接到单片机相应的IO口端。

图3.4 数码管显示电路仿真图

3.5 报警模块

   根据题目要求,该设计还设置了报警模块,当重量超过80的时候,对应的LED灯点亮,表示进行报警。报警模块的仿真图如图3.5所示。

图3.5 报警模块仿真图

3.6 串口发送模块

为了模拟串口发送,需要用到虚拟串口,则需要在仿真中加入RS232接口的串口元件,即图中的COMPIM,电脑中需要安装虚拟串口,配置完对应的串口和波特率、数据位、停止位等数据之后,就可以通过串口助手显示单片机发送的数据了。串口发送模块的仿真图如图3.6所示。

图3.6 串口发送模块仿真图

4. 程序设计

4.1 程序顶层设计

   按照题目中的要求,本设计的程序算法共分为按键检测与控制程序、串口发送程序、主程序。

4.2主程序设计

主程序的工作流程图如图4.1所示。首先进行单片机初始化,然后进行其他功能模块的初始化,接下来称重传感器工作输出所称物体的重量数据,然后单片机通过AD转换将重物的模拟数据转换成相应的数字数据,即得到物体重量。然后判断是否重量是否超过80,是的话就进行相应的报警。

然后通过第一个和第二个按键得到物体的单价,待单价和重量数据都准备好之后,计算总价,并且通过数码管和串口发送到串口助手进行数据显示。整个程序的完整工作流程即结束。

                                       图4.1 主程序的工作流程图

4.3 按键检测与控制程序

按键检测与控制程序的流程图如图4.2所示,首先进行按键初始化,然后判断单价按键是否按下,如果按下,则通过其按下的次数和组合得到单价数据,如果没有按下,则继续等待;然后判断计算总价按键是否按下,如果按下则计算得到总价数据,如果没有按下,则继续等待;接着判断串口打印按键。如果按下,则通过串口发送数据,如果没有按下,则继续等待。

4.4 串口发送程序流程图

串口发送程序的流程图如图4.4所示。首先进行初始化,然后设置波特率,然后设置串口的数据位、校验位、停止位等配置数据,然后就可以发送数据。

图4.3 按键检测与控制程序流程图

                           

                                                                  图4.4 串口发送程序流程图

5 仿真测试

5.1 称重数据显示

    数码管显示的数据分为两个,A后面的数据是物体的总重,B后面的数据是物体的单价。一开始物体的重量是73.8,对应数码管显示的数据为74.1,显示的效果如图5.1所示。然后改变物体重量为75,显示的数据为75.5,显示的效果图如图5.2所示。误差进不超过百分之1。

图5.1 实重为73.8的称重显示仿真图

图5.2 实重为75的称重显示仿真图

5.2 单价改变测试

单价需要通过前两个按键进行控制,每按一下,单价变化0.1,一开始按第一个按键3次,将其单价变为0.3,仿真效果图如图5.3所示,然后按第二个按键1次,将其单价变为0.2,仿真效果图如图5.4所示。

图5.3 单价变为0.3的仿真图

图5.4 单价变为0.2的仿真图

5.3 总重计算测试

首先重量显示为75.5,单价为0.3,按下计算总价按钮,总价应该为22.65显示效果图如图5.5所示;接着重量显示为75.5,单价为0.2,按下计算总价按钮,总价应为15.1,显示效果图如图5.6所示。

图5.5 总价为22.65的仿真图

图5.5 总价为15.1的仿真图

5.4 串口通信测试

首先需要安装虚拟串口,然后运行程序,发送单价、重量、和总价数据,单价为0.2,重量为74.2,总价为14.84,串口助手显示效果图如图5.6所示。

图5.6 串口助手显示数据图

5.5 故障检测测试

当检测的物体重量超过80,LED亮表示提示,设置温度为80.1,显示的效果图如图5.7所示。

图5.7 故障检测测试仿真图

7. 总结

本实验以ATmega16单片机作为控制核心,通过称重传感器检测物体的重量,单片机通过AD转换把物体重量的模拟数据转换为相应的数字数据,然后通过按键调整物体的单价,然后通过计算总价案件计算物体总结,接着通过数码管显示和串口助手显示。

本实验通过在PROTEUS上进行原理图仿真,ICCAVR上编写代码,基本上达到了题目中的要求,并且具有良好的兼容性。

附录

整体原理图

四、仿真和报告获取

相关文章:

实践项目2-自动计价电子秤

自动计价电子秤 一、功能说明 基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印(串口模拟)。 二、具体要求 1、开机后实时检测重量并显示; 2、通过按键输入并显示价格,具有修改功能&#…...

iOS如何操作更新推送证书

最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...

WSL2 在vscode无法连接copilot

报错情况: 本机可以使用copilot,但在WSL2上无法连接,报错信息如下: 检查网络情况: ping api.github.com 发现无法连接: github.com:Temporary failure in name resolution 在网上搜集的解决方法&#…...

HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放

1、特征 输出功率(fIN1kHz,RL4Ω,BTL) VBAT 4V, 2x10.6W(VOUT9V,THDN10%) VBAT 4V, 2x8.6W (VOUT9V,THDN1%) 内置升压电路模式可选择:自适应实时音频跟踪 升压(可提升播放时间50%以上)、强制升压 最大升压值可选择,升压限流值可设置 ACF防破音功能 D类…...

用ChatGPT-o1进行论文内容润色效果怎么样?

目录 1.引导问题发现 2.角色设定 3.整理常问修改 4.提供样例 5.小细节 小编在这篇文章中分享如何充分利用ChatGPT-o1-preview来提升论文润色的技巧。小编将持续跟进最新资源和最新的调研尝试结果,为宝子们补充更多实用的写作技巧。这些技巧将有助于您更有效地利…...

《探索 Jetpack Compose:构建现代化 Android UI 的利器》

Jetpack Compose 是谷歌推出的现代化 UI 框架,用于简化 Android 应用开发中的 UI 构建。它使用声明式编程方式,允许开发者以简洁直观的方式创建动态和响应式的 UI。本文将从基础概念到进阶用法,带你全面了解 Compose 的核心功能和使用技巧。 …...

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本,如有错误,恳请指出。 👉官方文档的指引 应用:以上官方指引有非常清晰的使用方式,接下来说明一些注意事项: 1、与canvas搭配的使用,解决多分别率适配问题。…...

Baumer工业相机的EMVA1288 数据报告简介

项目场景: Baumer工业相机堡盟VCX系列和VLX系列为堡盟全系列相机中的主流常用相机和高端相机,性能强大、坚固可靠,易于集成,常用与一般行业的检测定位识别使用。 对应的高端相机系列具有极为丰富的强大技术功能,可轻…...

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...

uni-app 个人课程表页面

uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码&#xff0c;只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中&#xff0c;编写页面结构&#xff1a; <template><view><u-navbar title"个人中心"><view class&q…...

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...

【OpenCV】平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

LeetCode300. 最长递增子序列(2024冬季每日一题 30)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1&…...

vue H5如何实现copy功能

vue H5如何实现copy功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"stylesheet" href"https://unpkg.com/vant2.12/lib/index.css" /><title></title><st…...

Golang使用etcd构建分布式锁案例

在本教程中&#xff0c;我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性&#xff0c;防止竞争条件&#xff0c;并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…...

Windows 和 Ubuntu 双系统安装

复现论文的时候&#xff0c;个别包只有Linux版本&#xff0c;并且源码编译比较麻烦&#xff0c;所以干脆直接安装一个双系统&#xff08;WinUbuntu&#xff09;&#xff0c;方便复现论文。 参考视频链接&#xff1a;Windows 和 Ubuntu 双系统的安装和卸载 0.所需工具 4G以上U…...

多媒体文件解复用(Demuxing)过程

多媒体文件的解复用&#xff08;Demuxing&#xff09;过程指的是从一个多媒体容器文件&#xff08;如 MP4、MKV、AVI 等&#xff09;中提取不同类型的多媒体数据流&#xff08;例如视频流、音频流、字幕流等&#xff09;的过程。 容器文件本身并不包含实际的视频或音频数据&…...

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级

从 Zuul 迁移到 Spring Cloud Gateway&#xff1a;一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步&#xff1a;查看源码第二步&#xff1a;启动类迁移第三步&#xff1a;引入 Gateway 依赖第四步 编写bootstrap.yaml第五步&#xff1a;替换路由配置第六步&#…...

qt之插件编译

QtXlsxWriter sudo apt install qtbase5-private-dev git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter/ qmake make -j6 sudo make install #将生成的lib 及 include copy至项目路径的lib 及include里项目配置&#xff1a; QT xlsxbluetoo…...

pandas一行拆成多行

import pandas as pd df pd.DataFrame({Country:[China,US,Japan,EU,UK/Australia, UK/Netherland],Number:[100, 150, 120, 90, 30, 2],Value: [1, 2, 3, 4, 5, 6],label: list(abcdef)})# 法一 推荐 df2df.drop(Country, axis1).join(df[Country].str.split(/, expandTrue).…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

Qt的学习(二)

1. 创建Hello Word 两种方式&#xff0c;实现helloworld&#xff1a; 1.通过图形化的方式&#xff0c;在界面上创建出一个控件&#xff0c;显示helloworld 2.通过纯代码的方式&#xff0c;通过编写代码&#xff0c;在界面上创建控件&#xff0c; 显示hello world&#xff1b; …...

职坐标物联网全栈开发全流程解析

物联网全栈开发涵盖从物理设备到上层应用的完整技术链路&#xff0c;其核心流程可归纳为四大模块&#xff1a;感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性&#xff0c;例如传感器选型需平衡精度与…...

【Redis】Redis从入门到实战:全面指南

Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...