【STM32项目开源】基于STM32的智能电子秤

目录

一、设计背景和意义

1.1设计背景

1.2设计意义

二、实物效果展示

2.1实物图片

2.2实物演示视频

三、硬件功能简介

3.1项目功能详解

3.2元器件清单

四、主框图与软件流程图

五、硬件PCB展示

六、软件程序设计

七、项目资料包内容

资料获取:查看主页介绍"充哥单片机设计"


一、设计背景和意义

1.1设计背景

近年来,随着物联网技术、嵌入式系统以及智能终端设备的快速发展,传统电子秤正经历着从单一称重工具向多功能智能设备的转型。在零售业、物流仓储、家庭厨房等应用场景中,用户对电子秤的需求已不仅限于基本的重量测量,更希望其具备数据记录、价格计算、远程监控等智能化功能。目前市场上的电子秤产品主要分为两大类:一类是功能简单、价格低廉的传统电子秤,仅能实现基本称重和显示功能;另一类是面向商业应用的高端智能电子秤,虽然功能丰富但价格昂贵,且系统复杂度高,不适合普通用户使用。

1.2设计意义

本课题研发的智能电子秤系统,在技术创新层面具有多重突破价值。以 STM32F103C8T6 为核心的主控方案,充分发挥其高性能处理能力与丰富外设资源,为系统的多功能集成奠定硬件基础。HX711 称重模块与主控芯片的协同设计,通过高精度 A/D 转换与数字化信号传输,将称重误差控制在更细微的范围内,推动电子秤从 "粗略计量" 向 "精准感知" 升级。蓝牙模块与手机 APP 的联动机制,打破了传统电子秤的信息孤岛状态,构建起 "设备 - 终端 - 用户" 的实时交互链路,为计量设备的物联网化改造提供了可复制的技术范式。这种 "硬件模块化 + 软件智能化" 的设计思路,也为嵌入式系统在计量领域的应用积累了实践经验,有助于推动相关技术的标准化与产业化。​

二、实物效果展示

2.1实物图片

2.2实物演示视频

【开源】基于STM32的智能电子秤

三、硬件功能简介

3.1项目功能详解

1)液晶显示屏幕显示当前的重量

2)按键可以设置当前物品的单价

3)具有去皮清零的功能

4)按键确认显示当前的重量、单价、总价

5)称重的重量发送蓝牙App显示

3.2元器件清单

  1. 主控STM32F103C8T6最小系统板
  2. 0.96OLED显示屏幕
  3. HX711称重模块
  4. JDY31-SPP蓝牙模块
  5. 矩阵按键

四、主框图与软件流程图

主框图

流程图

五、硬件PCB展示

六、软件程序设计

cpp 复制代码
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "Timer.h"
#include "OLED.h"
#include "BEEP.h"
#include "KEY.h"
#include "Weight.h"


uint8_t TIM2_Flag = 0;//定时器2中断标志

uint8_t keynum; //按键
float Pi_weight;
float Weight;
float weight_err;
char price[7];
float single_price;
float total_price;
uint8_t  decimal;//小数位

void show_init();
void set_price();//设置单价

void main_Init(void);
void main_loop(void);


int main(void)
{
	main_Init();
	while(1)
	{
		main_loop();
	}
}

void main_Init()
{
	OLED_Init();
	Timer_Init();
	BEEP_Init();
	OLED_Clear();
	HX711_GPIO_Init();
	OLED_ShowChinese(2,2,"正在初始化...");
	Delay_ms(2000);			//对接成功界面停留一定时间
	weight_err = Get_Tare();
	Pi_weight = Get_Tare();	
}

void main_loop()
{
	show_init();
	keynum = KeyScan();
	if(keynum != 255)
	{
		if(keynum == remove_tare)
		{
			Pi_weight = Get_Tare();
		}else if(keynum == set)
		{
			set_price();
		}
	}
	
	Weight = 1.73*Get_Weight(Pi_weight);
	if(Weight < 0.5)Weight = 0;//去除干扰
	total_price = single_price*Weight/1000;
	OLED_ShowNum(1,7,(int)(Pi_weight - weight_err)/1000,1);
	OLED_ShowChar(1,8,'.');
	OLED_ShowNum(1,9,(((Pi_weight - weight_err)/1000)-(int)((Pi_weight - weight_err)/1000))*10000,4);
	OLED_ShowNum(2,7,(int)(Weight)/1000,1);
	OLED_ShowChar(2,8,'.');
	OLED_ShowNum(2,9,(((Weight)/1000)-(int)((Weight)/1000))*10000,4);
	
	if(price[0] == '\0')
	{
		OLED_ShowNum(3,7,0,6);
	}else 
		OLED_ShowString(3,7,price);
	OLED_ShowNum(4,7,(int)total_price,5);
	OLED_ShowChar(4,12,'.');
	OLED_ShowNum(4,13,(total_price-(int)total_price)*10,1);
	Delay_ms(100);
}

void show_init()
{
	OLED_ShowChinese(1,1,"皮重:");
	OLED_ShowChinese(1,7,"千克");
	OLED_ShowChinese(2,1,"重量:");
	OLED_ShowChinese(2,7,"千克");
	OLED_ShowChinese(3,1,"单价:");
	OLED_ShowChinese(3,8,"元");
	OLED_ShowChinese(4,1,"价格:");
	OLED_ShowChinese(4,8,"元");
}


void set_price()
{
	OLED_Clear();
	OLED_ShowChinese(1,3,"请输入单价");
		uint8_t index = 0;
			uint8_t dot_flag = 0;
			uint8_t end_flag = 0;
		single_price = 0;
	decimal = 0;
			price[0] = '\0';
			while(1)
			{
				if(index == 6)break;
				keynum = KeyScan();
				if(keynum == ok)
				{
					break;
				}else if(keynum >=0 && keynum <= 9 && end_flag == 0)
				{
					price[index] = '0' + keynum;
					if(index < 6)
						price[index+1] = '\0';
					OLED_ShowChar(3,7+index,price[index]);
					if(index > 0 && price[index-1] == '.')
					{
						single_price += keynum*0.1;
						decimal = keynum;
						end_flag = 1;
					}else 
					{
						single_price *= 10;
						single_price += keynum;
					}
					index++;
				}else if(keynum == dot)
				{
					if(index > 0)
					{
						if(dot_flag==0)
						{
							dot_flag = 1;
							price[index] = '.';
							if(index < 6)
							price[index+1] = '\0';
							OLED_ShowChar(3,7+index,price[index]);
							index++;
						}							
						
					}
				}
				
			}
			OLED_Clear();
}

七、项目资料包内容

资料获取:查看主页介绍"充哥单片机设计"

相关推荐
d111111111d11 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
三佛科技-1341638421211 小时前
主控FT32F031便携式吸尘器方案,迷你手持吸尘器MCU控制方案开发
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
一个平凡而乐于分享的小比特13 小时前
一文读懂MCU与FPGA:核心区别、协同之道与双修秘籍
单片机·fpga开发·职场发展·mcu开发
踏着七彩祥云的小丑13 小时前
嵌入式——认识电子元器件——微动开关系列
单片机·嵌入式硬件
调光IC-小雅13 小时前
解析FP62××系列限流保护机制:为何它是DC/DC芯片的安全底线
单片机·嵌入式硬件
天天爱吃肉821814 小时前
场地整车在环仿真测试系统及总线注入研究|新能源智驾研发硬核干货
大数据·人工智能·功能测试·嵌入式硬件·汽车
gihigo199814 小时前
MAX30102 + STM32 人体血氧饱和度(SpO₂)测量方案
stm32·单片机·嵌入式硬件
LCG元14 小时前
STM32实战:基于uC/OS-III的STM32移植与多任务应用
stm32·单片机·嵌入式硬件
今日待办15 小时前
【CEM5881-M11雷达模块】使用开发指南
stm32·雷达模块·cem5881-m11
iCxhust15 小时前
如何在汇编中修改CS:IP
汇编·单片机·嵌入式硬件·51单片机·微机原理