STM32项目分享:智能电子秤(OLED版)

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

四、PCB硬件设计

PCB图 

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

STM32智能电子秤(OLED版)

(资料分享见文末) 

二、项目简介

1.功能详解

STM32智能电子秤(OLED版)

功能如下:

  1. 单片机STM32F103C8T6核心板
  2. HX711传感器称量数据
  3. 矩阵键盘可设置计价、去皮等功能
  4. OLED显示屏显示重量和价格等信息

2.主要器件

  • STM32F103C8T6单片机
  • OLED 屏幕
  • HX711称重传感器
  • 4×4矩阵键盘

四、PCB硬件设计

PCB图 

五、程序设计 



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)*1.73/1000,1);
	OLED_ShowChar(1,8,'.');
	OLED_ShowNum(1,9,(((Pi_weight - weight_err)*1.73/1000)-(int)((Pi_weight - weight_err)/1000)*1.73)*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);
	
//	OLED_ShowNum(2,7,Weight,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);
}

六、实验效果 

七、资料内容

项目分享