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

深入解析:基于51单片机电子称称重压力检测阈值报警系统设计

深入解析:基于51单片机电子称称重压力检测阈值报警系统设计

基于51单片机电子称称重压力检测阈值报警系统设计

1 功能介绍

本设计是一套基于STC89C52单片机的电子称重系统,集成了LCD1602液晶显示电路、HX711称重传感器电路、蜂鸣器报警电路、按键电路和电源电路。系统主要用于实现重量的实时采集、显示与超重报警,并支持阈值设置和掉电保存功能。

其主要功能如下:

  1. 实时重量显示:LCD1602液晶屏实时显示当前重量和用户设定的报警阈值。
  2. 阈值设置功能:用户通过按键设置报警阈值,范围为0–5000g,满足日常称重和检测需求。
  3. 超重报警:当实际重量超过设定阈值时,系统自动驱动蜂鸣器发出报警声。
  4. 高精度称重:采用HX711称重传感器模块,量程为0–5kg,转换精度高,能够满足小范围高精度测量。
  5. 掉电数据保存:设置的阈值存储于EEPROM中,即便系统掉电重启后也能保留用户设定数据,避免频繁设置的麻烦。

该系统适用于家庭、实验室、小型商业场合的称重场景,同时具有良好的学习和实验价值,能够帮助电子技术初学者掌握单片机与传感器结合的应用开发方法。


2 系统电路设计

系统电路由多个功能模块组成,下面分别进行详细介绍。

2.1 STC89C52单片机电路

STC89C52单片机是本设计的核心控制单元,基于8051内核,具备丰富的I/O接口,能够轻松实现对液晶显示、传感器数据采集、按键输入和蜂鸣器输出的综合控制。其主要作用包括:

单片机电路需要外接晶振、复位电路和电源管理电路,保证其正常稳定运行。

2.2 LCD1602液晶显示电路

LCD1602是一款常用的字符型液晶显示模块,能够显示两行,每行16个字符。系统中LCD1602用于实时显示两类信息:

  • 第一行显示称重传感器采集的实时重量数据,单位为克(g);
  • 第二行显示当前用户设置的报警阈值。

通过单片机的I/O端口与LCD1602相连,采用4位数据通信方式,减少了占用引脚数量,同时满足显示需求。

2.3 HX711称重传感器电路

HX711是专用于称重系统的高精度24位A/D转换器模块,能够将传感器输出的微弱模拟电压信号转换为数字信号,并传送给单片机进行处理。其主要特性包括:

HX711模块与应变片式传感器结合,可实现稳定精准的重量测量。

2.4 蜂鸣器报警电路

蜂鸣器电路由单片机直接驱动。当检测到实际重量超过用户设定的阈值时,单片机输出高电平信号,蜂鸣器发出报警声,提醒用户重量已超出设定范围。蜂鸣器选用有源蜂鸣器,电路简单,可靠性高。

2.5 按键电路

系统设置有两个按键:

按键采用独立式接法,每个按键均通过一个I/O口与单片机连接。软件程序中设计了消抖处理机制,保证用户操作的准确性和稳定性。

2.6 电源电路

系统统一采用+5V直流供电,保证STC89C52单片机、LCD1602液晶、HX711模块以及蜂鸣器等器件正常运行。为了提升稳定性,电源电路增加了滤波电容和稳压芯片,以减少电压波动对系统工作的影响。


3 程序设计

程序设计是实现系统功能的核心部分,涵盖初始化、重量采集、阈值设置、LCD显示、报警控制和EEPROM存储。

3.1 主程序框架

主程序流程如下:

  1. 系统初始化,包括LCD、HX711、EEPROM、蜂鸣器和按键;
  2. 循环读取HX711传感器数据,计算重量;
  3. 显示重量和阈值信息;
  4. 检测重量与阈值的比较结果,决定是否触发报警;
  5. 处理按键输入,调整阈值,并存储到EEPROM。
#include <reg52.h>#include "lcd1602.h"#include "hx711.h"#include "eeprom.h"unsigned long weight = 0;// 当前重量unsigned int threshold = 1000;// 默认阈值1000gvoid main() {LCD_Init();HX711_Init();EEPROM_Init();threshold = EEPROM_Read(0x00);// 掉电数据恢复while(1) {weight = HX711_Read();LCD_ShowString(1,1,"Weight:");LCD_ShowNum(1,8,weight,5);LCD_ShowString(2,1,"Thresh:");LCD_ShowNum(2,8,threshold,5);if(weight > threshold) {P2 = 0x01;// 蜂鸣器报警} else {P2 = 0x00;// 关闭蜂鸣器}Key_Scan();// 按键处理}}

3.2 HX711数据采集程序

HX711通过时钟信号与单片机通信,采集重量数据。

#include <reg52.h>sbit HX711_DT = P3^2;sbit HX711_SCK = P3^3;long HX711_Read(void) {long count=0;unsigned char i;HX711_DT=1;HX711_SCK=0;while(HX711_DT);for(i=0;i<24;i++) {HX711_SCK=1;count=count<<1;HX711_SCK=0;if(HX711_DT) count++;}HX711_SCK=1;count=count^0x800000;HX711_SCK=0;return(count/100);// 转换为克}

3.3 LCD1602显示程序

LCD用于显示实时重量和阈值信息:

void LCD_Init() {
LCD_WriteCmd(0x38);
LCD_WriteCmd(0x0C);
LCD_WriteCmd(0x06);
LCD_WriteCmd(0x01);
}
void LCD_ShowNum(unsigned char row, unsigned char col, unsigned int num, unsigned char len) {
unsigned char i;
LCD_SetCursor(row,col);
for(i=len;i>
0;i--) {
LCD_WriteData(num/10000%10+'0');
}
}

3.4 按键设置与EEPROM存储

按键用于调整报警阈值,数据存储在EEPROM中。

sbit KEY_UP = P1^0;
sbit KEY_DOWN = P1^1;
void Key_Scan(void) {
if(KEY_UP==0) {
threshold += 10;
EEPROM_Write(0x00, threshold);
while(KEY_UP==0);
}
if(KEY_DOWN==0) {
if(threshold >
10) threshold -= 10;
EEPROM_Write(0x00, threshold);
while(KEY_DOWN==0);
}
}

EEPROM存储读写函数:

unsigned int EEPROM_Read(unsigned char addr) {
return *((unsigned int code*)addr);
}
void EEPROM_Write(unsigned char addr, unsigned int dat) {
unsigned int code *p = (unsigned int code*)addr;
*p = dat;
}

4 总结

本设计利用STC89C52单片机结合HX711高精度称重模块、LCD1602液晶显示、蜂鸣器和EEPROM,构建了一套功能完整的电子称重系统。系统能够实现实时重量采集与显示、阈值设置与报警、掉电数据保存等功能,具有电路简单、实用性强、稳定性高等优点。

该系统不仅适合日常生活和实验室场景的称重与安全提醒,也为电子技术学习者提供了一个综合性较强的单片机应用案例,有助于掌握传感器数据采集、阈值判断、报警处理以及数据存储等核心技术。

http://www.wxhsa.cn/company.asp?id=3073

相关文章:

  • 手撕大模型|KVCache 原理及代码解析
  • Kuby免疫学读书笔记01——造血干细胞
  • 微信群机器人开发
  • 动态规划和马尔可夫决策对比
  • 20250913 之所思 - 人生如梦
  • 动态规划
  • 电视剧和综艺
  • 天地图编辑多边形和折线时,双击删除编辑点
  • POCamp 2023
  • 美团AI面试
  • 技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
  • 马尔可夫决策
  • 十九、指令流水线的基本概念
  • 本地布署Diffusers库 实现文生图 - yi
  • 【光照】[光照模型]发展里程碑时间线
  • 算法设计作业-week1
  • git merge
  • C语言学习
  • Ubuntu 的剪贴板
  • IDAPro--MCP详细配置教程
  • 20250913 NFLS 模拟赛 部分题目
  • 帐号内容定位
  • 基于YOLOv8的茶叶病害识别项目|完整源码数据集+图形化界面+训练教程
  • 2025第三届“陇剑杯”网络安全大赛初赛-夺旗闯关赛wp
  • 《Python数据结构与算法分析》第二弹《2.2.2 异序词检测示例》
  • 深入解析:柱状图(Vue3)
  • 计算机毕业设计springboot基于微信小程序的手机点餐软件 基于Spring Boot框架的微信小程序点餐体系设计与实现 微信小脚本点餐应用开发:Spring Boot技术的应用
  • 二叉树的相关知识
  • 原假设的选择准则:总损失视角的假设检验
  • dfs序基础+树上差分