基于单片机的智能数字电子秤proteus仿真设计
一、系统方案
1、当电子称开机时,单片机会进入一系列初始化,进入1602显示模式设定,如开关显示、光标有无设置、光标闪烁设置,定时器初始化,进入定时器模式,如初始值赋值。之后液晶会显示Welcome To Use Electronic Scale,这是一个欢迎使用界面:
2、此电子秤是开机检测托盘重量,并将托盘重量清零(即电子秤每次开机后检测托盘重量,并程序中自动将托盘重量保存在一个变量中,称量过程中每次都将获得的重量减去托盘重量,而得到所要称量物体的真正的重量),然后单片机进入等待称重界面:WE代表货物重量,PR代表货物单价,MONEY代表货物总价。
3、在支架上放上待称重物体时,HX711会采集称重传感器的模量量,并将这个模拟量转化数字量,发送给单片机,单片机通过计算,将重量显示在1602上面,由于仿真里面没有真实的货物,就用两个按键模量重量,连接HX711的2个按键就是模拟重量加减,一个按键按下,货物重量加,另外一个按键,货物重量就会减。
4、在支架上放上待称重物体时,通过矩阵键盘设置好单价,单片机会根据重量乘以单价计算出总价。如果单价设置有错,按清除按键,重新设置。如果重量有错误,可以按去皮按键清除,校准加,校准减按键可以对货物重量进行微调。
5、在支架上放上待称重物体总量超过10KG时,蜂鸣器是不停的报警,LED闪烁,1602上面显示WE;-.—,直到重量少于10KG蜂鸣器停止报警,LED停止闪烁。

二、硬件设计
原理图如下:

三、单片机软件设计
1、首先是系统初始化
Init_LCD1602(); //初始化LCD1602
EA = 0;
Data_Init();
Timer0_Init();
//初中始化完成,开断
EA = 1;
// Get_Maopi();
LCD1602_write_com(0x80); //指针设置
LCD1602_write_word(" Welcome To Use "); //
LCD1602_write_com(0x80+0x40); //指针设置
LCD1602_write_word(“Wlectronic Scale”);
// Delay_ms(2000);
Get_Maopi();
LCD1602_write_com(0x80); //指针设置
LCD1602_write_word(“WE:0.000 PR:00.0”);
LCD1602_write_com(0x80+0x40); //指针设置
LCD1602_write_word("MONEY: 0.00 ");
Display_Price();
// Get_Maopi(); //称毛皮重量
2、液晶显示程序
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void LCD1602_delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
//****************************************************
//写指令
//****************************************************
void LCD1602_write_com(unsigned char com)
{
LCD1602_RS = 0;
LCD1602_delay_ms(1);
LCD1602_EN = 1;
LCD1602_PORT = com;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
//****************************************************
//写数据
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
LCD1602_RS = 1;
LCD1602_delay_ms(1);
LCD1602_PORT = dat;
LCD1602_EN = 1;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
3、按键程序
unsigned char Getkeyboard(void)
{
unsigned char number = 0;
unsigned char i;
//行输入低电平
ROW1=ROW2=ROW3=ROW4=0;
//如果列输出不全为高,则说明有键按下
if ((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1))
{//输入0111ROW1=0;ROW2=ROW3=ROW4=1;for (i=0;i<20;i++);if (COL1==0) return 1; // 7else if (COL2==0) return 2; // 8else if (COL3==0) return 3; // 9else if (COL4==0) return 10; // 10//输入1011ROW2=0;ROW1=ROW3=ROW4=1;for (i=0;i<20;i++);if (COL1==0) return 4; //4else if (COL2==0) return 5; // 5else if (COL3==0) return 6; // 6else if (COL4==0) return 11; // 11//输入1101ROW3=0;ROW1=ROW2=ROW4=1;for (i=0;i<20;i++);if (COL1==0) return 7; //1else if (COL2==0) return 8; // 2else if (COL3==0) return 9; // 3else if (COL4==0) return 12; // 12//输入0111ROW4=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;//没有检测到列低电平return 99;
}
return 99;
}
4、核心算法程序
//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned long count;
unsigned char i;
HX711_DOUT=1;
Delay__hx711_us();
HX711_SCK=0;
count=0;
while(HX711_DOUT);
for(i=0;i<24;i++)
{
HX711_SCK=1;
count=count<<1;
HX711_SCK=0;
if(HX711_DOUT)
count++;
}
HX711_SCK=1;
count=count^0x800000;//第25个脉冲下降沿来时,转换数据
Delay__hx711_us();
HX711_SCK=0;
return(count);
}
四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关文章:
基于单片机的智能数字电子秤proteus仿真设计
一、系统方案 1、当电子称开机时,单片机会进入一系列初始化,进入1602显示模式设定,如开关显示、光标有无设置、光标闪烁设置,定时器初始化,进入定时器模式,如初始值赋值。之后液晶会显示Welcome To Use Ele…...
大数据(二)大数据行业相关统计数据
大数据(二)大数据行业相关统计数据 目录 一、大数据相关的各种资讯 二、转载自网络的大数据统计数据 2.1、国家大数据政策 2.2、产业结构分析 2.3、应用结构分析 2.4、数据中心 2.5、云计算 一、大数据相关的各种资讯 1. 据IDC预测࿰…...
Ruoyi安装部署(linux环境、前后端不分离版本)
目录 简介 1 新建目录 2 安装jdk 2.1 jdk下载 2.2 解压并移动文件夹到/data/service目录 2.3 配置环境变量 3 安装maven 3.1 进入官网下载最新的maven 3.2 解压并移动文件夹到/data//service目录 3.3 配置环境变量 3.4 配置本地仓库地址与阿里云镜像 4 安装git 4.…...
PHP聚合支付网站源码/对接十多个支付接口 第三方/第四方支付/系统源码
PHP聚合支付网站源码/对接十多个支付接口 第三方/第四方支付/系统源码 内附数十个支付接口代码文件。 下载地址:https://bbs.csdn.net/topics/616764485...
容器化微服务:用Kubernetes实现弹性部署
随着云计算的迅猛发展,容器化和微服务架构成为了构建现代应用的重要方式。而在这个过程中,Kubernetes(常简称为K8s)作为一个开源的容器编排平台,正在引领着容器化微服务的部署和管理革命。本文将深入探讨容器化微服务的…...
DevOps系列文章 之 Python基础
Python语法结构 语句块缩进 1.python代码块通过缩进对齐表达代码逻辑而不是使用大括号 2.缩进表达一个语句属于哪个代码块 3.缩进风格 : 建议使用四个空格 如果是Linux系统的话,可以这样做,实现自动缩进 : vim ~/.vimrc set ai…...
Harbour.Space Scholarship Contest 2023-2024 (Div. 1 + Div. 2) A ~ D
比赛链接 A 正常枚举就行,从最后一位往前枚举,-1、-2、-3...这样 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typedef long l…...
[管理与领导-53]:IT基层管理者 - 8项核心技能 - 8 - 持续改进
前言: 管理者存在的价值就是制定目标,即目标管理、通过团队(他人)拿到结果。 要想通过他人拿到结果: (1)目标:制定符合SMART原则的符合业务需求的目标,团队跳一跳就可以…...
芯片验证板卡设计原理图:446-基于VU440T的多核处理器多输入芯片验证板卡
基于VU440T的多核处理器多输入芯片验证板卡 一、板卡概述 基于XCVU440-FLGA2892的多核处理器多输入芯片验证板卡为实现网络交换芯片的验证,包括四个FMC接口、DDR、GPIO等,北京太速科技芯片验证板卡用于完成甲方的芯片验证任务,多任务…...
几个nlp的小任务(机器翻译)
几个nlp的小任务(机器翻译) 安装依赖库数据集介绍与模型介绍加载数据集看一看数据集的样子评测测试数据预处理测试tokenizer处理目标特殊的token预处理函数对数据集的所有数据进行预处理微调预训练模型设置训练参数需要一个数据收集器,把处理好数据喂给模型设置评估方法参数…...
飞腾X100 LPDDR颗粒线序配置辅助工具
B站讲解视频: 正文内容: 一、 飞腾X100显存使用LPDDR4时,需要工程师在X100的固件中去配置线序交换说明,就类似下面这个: 图1 我们需要输入每个slice中DQ的线序,也需要输入slice之间的交换关系,这个工作量也不小,同时容易出现错误,所以开发了一款辅助小工具,…...
二、数学建模之整数规划篇
1.定义 2.例题 3.使用软件及解题 一、定义 1.整数规划(Integer Programming,简称IP):是一种数学优化问题,它是线性规划(Linear Programming,简称LP)的一个扩展形式。在线性规划中&…...
C语言日常刷题 4
文章目录 题目答案与解析123456 题目 1、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( ) A: n0;while(chgetchar()!‘\n’)n; B: n0;while(getchar()!‘\n’)n; C: for(n0;getchar()…...
MyBatis plus 多数据源实现
1. 项目背景 最近写文章发布到【笑小枫】小程序和我的个人网站上,因为个人网站用的是halo框架搭建,两边数据结构不一致,导致我每次维护文章都需要两边维护,这就很烦~ 于是,本文就诞生了。通过项目连接这两个数据库&a…...
k-近邻算法概述,k-means与k-NN的区别对比
目录 k-近邻算法概述 k-近邻算法细节 k值的选取 分类器的决策 k-means与k-NN的区别对比 k-近邻算法概述 k近邻(k-nearest neighbor, k-NN)算法由 Cover 和 Hart 于1968年提出,是一种简单的分类方法。通俗来说,就是给定一个…...
node 项目搭建
1. 初始化项目 cmd 执行 cnpm init -y 创建README.md 依赖安装 1. 数据库 和 框架 mysql express cnpm install mysql express --save 2. 后端跨域 cors cnpm i cors 3. 安装 body-parser 声明引用 用于接收前端 post 过来的数据 cnpm install --save body-parser 4…...
CSS 属性值计算过程
目录 例子1,确定声明值2,层叠冲突2.1,比较源重要性2.2,比较优先级2.3,比较源次序 3,使用继承4,使用默认值其他 例子 我们来举例说明<h1> 标签最终的样式: <div><h1…...
QT版权查询
文章目录 QT工具版权QT模块版权查询 根据条件自动筛选: Qt Features, Framework Essentials, Modules, Tools & Add-Ons QT工具版权 Licensing QT模块版权查询 在 All Modules 中点击进入每个模块,在详细内容中一般有Lisence相关内容。 Licens…...
【leetcode 力扣刷题】双指针///原地扩充线性表
双指针///原地扩充线性表 剑指 Offer 05. 替换空格定义一个新字符串扩充字符串,原地替换思考 剑指 Offer 05. 替换空格 题目链接:剑指 Offer 05. 替换空格 题目内容: 这是一道简单题,理解题意,就是将字符串s中的空格…...
第八章,帖子列表
8.1添加帖子列表 <script> import { mapState } from vuex . . . </script> computed: {...mapState([auth,user,articles]) }, <Message :sh...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
