目录
一、前言
二、项目简介
1.功能详解
2.主要器件
四、PCB硬件设计
PCB图
五、程序设计
六、实验效果
七、资料内容
项目分享
一、前言
项目成品图片:
哔哩哔哩视频链接:
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);
}
六、实验效果
七、资料内容