硬件设计
本设计是一款基于STM32单片机的电子秤系统,随着科学技术的不断发展,传统的机械秤逐渐被电子秤所取代,相比于计量不精确,费时费力的机械秤,电子秤采用在方便快捷的同时,又保证了结果的准确性。本次设计采用STM32单片机作为处理器,控制各个传感器和外设,采用LCD1602液晶屏作为显示器,显示检测到的重量,压力传感器用于称重,通过检测物体对传感器造成的压力,通过公式计算得出物体的重量,此外通过16个按键组成矩阵键盘,可以输入数字,并进行加减乘除操作,通过重量和单价计算出总价。
实物主要由STM32单片机+最小系统+LCD1602液晶显示模块+HX711模块+LED模块+蜂鸣器模块+矩阵按键模块+10kg压力传感器;如图:
设计功能
1.液晶显示当前重量大小。
2.按键可以设置当前物品单价。
3.具有去皮清零功能。
4.按键确认按键液晶显示当前重量,单价,总价。
设计原理图
原理图如图:
PCB图如下:
主程序源码
int main(void){ u8 test_interval = 0;delay_init(); //延时函数初始化 KEY_GPIO_Init(); //按键初始化HX711_GPIO_Init();delay_ms(500); //上电瞬间加入一定延时在初始化LCD_Init(); //屏幕初始化delay_ms(300); LCD1602_write_com(0x80); //指针设置LCD1602_write_word("Welcome to use! ");To_Zero();LCD1602_write_com(0x80); //指针设置LCD1602_write_word("WE: . PR: . ");LCD1602_write_com(0x80+0x40); //指针设置LCD1602_write_word("MON: . ");Display_Price();while(1){ //每0.5秒称重一次if (test_interval ++ > 25){test_interval = 0;//称重,得到重量值weight,单位为gget_weight();//如果超量程,显示‘-.---’if (weight >= 10000){pre_weight = 10000;LCD1602_write_com(0x83);LCD1602_write_word("-.---");}//如果不超量程else{//显示重量值if (pre_weight != weight){pre_weight = weight;Display_Weight();}//如果单价设定好了,则计算价格if (FlagSetPrice == 1){money = weight*price/1000; //money单位为分//显示总金额if (pre_money != money){pre_money = money;Display_Money();}}else{LCD1602_write_com(0x80+0x40+4);LCD1602_write_word(" . ");}}}//获取按键keycode = KEYSCAN();//有效键值0-15if ((keycode<16)&&(FlagKeyPress==0)){FlagKeyPress = 1;KeyPress(keycode);FlagKeyPress = 0;delay(100);}delay(1);}}
资料链接:https://pan.baidu.com/s/1f0uTnWZuRoySwCBzyoUp9g?pwd=r4lo
提取码:r4lo