目录
一、前言
项目成品图片:
哔哩哔哩视频链接:
STM32智能电子秤(OLED版)
(资料分享见文末)
二、项目简介
1.功能详解
STM32智能电子秤(OLED版)
功能如下:
- 单片机STM32F103C8T6核心板
- HX711传感器称量数据
- 矩阵键盘可设置计价、去皮等功能
- 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);
}
六、实验效果
七、资料内容