当前位置:网站首页>电子秤称重系统设计,HX711压力传感器,51单片机(Proteus仿真、C程序、原理图、论文等全套资料)
电子秤称重系统设计,HX711压力传感器,51单片机(Proteus仿真、C程序、原理图、论文等全套资料)
2022-04-23 14:13:00 【蒋宇智】
设计要求
1.系统可实现电子秤基本的称重功能(称重范围为0~10Kg,重量误差不大于±0.005Kg);
2.系统应具备键盘输入单价,显示重量,计算总价的功能;
3.单价和总价金额的单位为元,最大金额数值为999.99元,金额误差不大于0.01元;
4.系统超出最大测量范围10Kg时,具有报警指示功能(蜂鸣器、LED灯报警提示);
5.该电子秤设计同时具备去皮功能和重量校准功能;
设计概述
电子秤系统主要由单片机最小系统、数据采集系统、人机交互界面系统、报警系统五大部分组成。
单片机最小系统主要包括AT89C51和经典复位电路;数据采集部分由称重传感器、信号放大和A/D转换部分组成,信号放大和A/D转换部分主要由专用型高精度24位AD转换芯片HX711实现。
人机交互界面为键盘输入和点阵式液晶显示,主要使用4*4矩阵键盘和1602液晶显示器,可以方便的输入数据和直观的显示数据;报警系统由蜂鸣器和LED灯组成。
仿真电路图
电子秤原理图
仿真结果分析
打开Proteus仿真文件,其后缀名为DSN。双击单片机,加载main.hex文件(位置在:单片机加载文件);然后,双击HX711芯片,加载HX711.hex文件(位置在:HX711模块加载文件)。
点击Proteus软件左下角运行按钮,运行仿真。LCD1602液晶显示:Welcom to Use Electronic Scale.
紧接着,一声提示音过后,红色LED灯点亮,LCD显示重量、单价和总价,数值均为0。此时,系统处于等待货物称重的状态。
LCD显示的3个参数分别是:WE(Weight,重量的缩写)、PR(Price, 单价的缩写)和MONEY(表示总价)。
按下‘重量+’或‘重量-’键,模拟货物称重,称重范围为:0~10Kg。重量若大于10Kg,超重报警,蜂鸣器鸣叫,红色LED闪烁,LCD中WE显示:-.–。
通过矩阵键盘输入单价(PR),最大输入单价为99.9,可以输入小数点,单价设置精确到角。比如输入5.4元,输入数字键5、圆点键和数字键4即可。
单价输入完成,自动显示总价(MONEY),总价精确到小数点后1位;总价最大为999元,大于该值,LCD显示‘-.–’表示超出显示量程。
本仿真设计有校准功能,通过‘校准+’和‘校准-’两个键,可以小范围(按下1次,重量显示改变0.001Kg)校准电子秤显示的货物重量。例如,将重量由3.576Kg校准为3.574Kg。
货物称重完成后,点击‘清除’键,清除单价和总价,点击‘去皮’键清除重量显示,注意去皮键兼具清除重量显示的功能;然后就可进行下次称重了。
模拟去皮功能
首先通过按下‘重量+’/‘重量-’键,模拟篮子或者箱子的重量,该重量设置好后,按下‘去皮’键,此时重量显示清零。
例如,按下‘重量+’键,设置篮子重量1.083Kg,然后点击‘去皮’键,WE显示清零。
去皮后,再次按下‘重量+’模拟货物的净重4.880Kg,然后,输入单价3.0元,总价14.06元。
再次按下‘去皮’键,此时WE显示货物净重加篮子的重量,总价也计算了篮子的部分,再次按下‘去皮’键,重量清零。
部分C代码
void main()
{
init_eeprom(); //开始初始化保存的数据
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("Electronic 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(); //称毛皮重量
while(1)
{
//每0.5秒称重一次
if (FlagTest==1)
{
Get_Weight();
FlagTest = 0;
}
keycode = Getkeyboard();
//有效键值0-15
if (keycode<16)
{
KeyPress(keycode);
Buzzer=0;
Delay_ms(100);
Buzzer=1;
while(keycode<16)
{
if(keycode==12||keycode==13)
{
Buzzer=0;
Delay_ms(10);
Buzzer=1;
KeyPress(keycode);
Get_Weight();
flag_key=1;
}
keycode = Getkeyboard();
}
write_eeprom(); //保存数据
}
}
}
//****************************************************
//称重
//****************************************************
void Get_Weight()
{
Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu*10/GapValue)-qupi; //计算实物的实际重量
if(Weight_Shiwu > 10000) //超重报警
{
Buzzer = !Buzzer;
LED=!LED;
LCD1602_write_com(0x83);
LCD1602_write_word("-.---");
}
else
{
if(Weight_Shiwu==0)
LED=1;
else if(Weight_Shiwu>0)
LED=0;
Buzzer = 1;
Display_Weight();
money = Weight_Shiwu*price/1000; //money单位为分
//显示总金额
Display_Money();
}
}
//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
unsigned char clear;
mm: Weight_Maopi_0 = HX711_Read();
for(clear=0;clear<10;clear++)
{
Buzzer=1;
LED=1;
Delay_ms(100);
LED=0;
Delay_ms(100);
}
Weight_Maopi = HX711_Read();
if(Weight_Maopi/GapValue!=Weight_Maopi_0/GapValue)
goto mm;
Buzzer=0;
Delay_ms(500);
Buzzer=1;
}
分享的资源有
(1)基于51单片机和HX711压力传感器的电子秤系统设计毕设论文完整版;
(2)Proteus仿真文件;
(3)Keil C程序文件;
(4)HX711模块资料;
(5)Visio流程图;
(6)电子秤原理图;
(7)电子元器件清单;
(8)评优文献翻译;
全套资源如下
重要的事情说三遍!
重要的事情说三遍!
重要的事情说三遍!
获取电子秤设计毕业论文、Proteus仿真、C程序、原理图、Visio流程图、元器件清单、HX711模块等全套资料。
请微信搜索关注公众号:交院小智
版权声明
本文为[蒋宇智]所创,转载请带上原文链接,感谢
https://blog.csdn.net/JiaoDaBoy/article/details/106139154
边栏推荐
- 線程組ThreadGroup使用介紹+自定義線程工廠類實現ThreadFactory接口
- MYSQL一种分表实现方案及InnoDB、MyISAM、MRG_MYISAM等各种引擎应用场景介绍
- redis 模块编程中 key value的生命周期
- MySQL lock database lock
- Five ways of using synchronized to remove clouds and fog are introduced
- MySQL同步Could not find first log file name in binary log index file错误
- KVM learning resources
- API Gateway/API 网关(四) - Kong的使用 - 集成Jwt和熔断插件
- Qt实战:云曦日历篇
- x509证书cer格式转pem格式
猜你喜欢
随机推荐
asp.net使用MailMessage发送邮件的方法
KVM学习资源
1分钟看懂执行流程,永久掌握for循环(附for循环案例)
Returns the subscript after array sorting
MySQL同步Could not find first log file name in binary log index file错误
flannel 原理 之 子网划分
顺序表的操作,你真的学会了吗?
ThreadGroup ThreadGroup implémente l'interface threadfactory en utilisant la classe Introduction + Custom thread Factory
SED 学以致用
Quickly understand the three ways of thread implementation
Redis cluster 原理
Arrays类的使用案例
Tongxin UOS php7 2.3 upgrade to php7.0 two point two four
拨开云雾synchronized使用五种方式介绍
JDBC details
Five ways of using synchronized to remove clouds and fog are introduced
STD:: map and STD:: vector memory free
tcp_diag 内核相关实现 1 调用层次
Tongxin UOS uninstall php7 2.24, install php7 4.27 ; Uninstall and then install PHP 7.2.34
js 抛物线运动方法封装