你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】基于STM32的智能电子秤设计

[复制链接]
STMCU小助手 发布时间:2022-5-12 11:29
一.硬件方案
本设计是一款基于STM32单片机的电子秤系统,随着科学技术的不断发展,传统的机械秤逐渐被电子秤所取代,相比于计量不精确,费时费力的机械秤,电子秤采用在方便快捷的同时,又保证了结果的准确性。本次设计采用STM32单片机作为处理器,控制各个传感器和外设,采用LCD1602液晶屏作为显示器,显示检测到的重量,压力传感器用于称重,通过检测物体对传感器造成的压力,通过公式计算得出物体的重量,此外通过16个按键组成矩阵键盘,可以输入数字,并进行加减乘除操作,通过重量和单价计算出总价。
主要由STM32单片机+最小系统+LCD1602液晶显示模块+HX711模块+LED模块+蜂鸣器模块+矩阵按键模块+10kg压力传感器;如图:

%}U3H``IVU84WV4RPMD(}$M.png

二.设计功能
(1)液晶显示当前重量大小。
(2)按键可以设置当前物品单价。
(3)具有去皮清零功能。
(4)按键确认按键液晶显示当前重量,单价,总价。

三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

Z3)VOKLGHANU_YT)F{VGx.png

(2)PCB图如下:

Z3W2$H4`R]EO73K`B0M@EDI.png

四.软件设计
(1)程序流程图

8YZLP`IOZTWZTGTC14Y_E.png

(2)主程序源码

  1. int main(void)
  2. {        
  3.         u8 test_interval = 0;

  4.         delay_init();            //延时函数初始化         
  5.         KEY_GPIO_Init();    //按键初始化
  6.         HX711_GPIO_Init();
  7.         delay_ms(500);       //上电瞬间加入一定延时在初始化
  8.         LCD_Init();         //屏幕初始化
  9.         delay_ms(300);
  10.         LCD1602_write_com(0x80);                                                //指针设置
  11.         LCD1602_write_word("Welcome to use! ");
  12.         To_Zero();
  13.         LCD1602_write_com(0x80);                                                //指针设置
  14.         LCD1602_write_word("WE: .    PR:  . ");
  15.         LCD1602_write_com(0x80+0x40);                                //指针设置
  16.         LCD1602_write_word("MON:   .        ");
  17.         Display_Price();

  18.         while(1)
  19.         {     
  20.        //每0.5秒称重一次
  21.         if (test_interval ++ > 25)
  22.         {
  23.             test_interval = 0;
  24.             //称重,得到重量值weight,单位为g
  25.             get_weight();

  26.             //如果超量程,显示‘-.---’
  27.             if (weight >= 10000)
  28.             {
  29.                 pre_weight = 10000;
  30.                 LCD1602_write_com(0x83);
  31.                 LCD1602_write_word("-.---");
  32.             }
  33.             //如果不超量程
  34.             else
  35.             {
  36.                 //显示重量值
  37.                 if (pre_weight != weight)
  38.                 {
  39.                     pre_weight = weight;
  40.                     Display_Weight();
  41.                 }
  42.                 //如果单价设定好了,则计算价格
  43.                 if (FlagSetPrice == 1)
  44.                 {
  45.                     money = weight*price/1000;  //money单位为分
  46.                     //显示总金额
  47.                     if (pre_money != money)
  48.                     {
  49.                         pre_money = money;
  50.                         Display_Money();
  51.                     }
  52.                 }
  53.                 else
  54.                 {
  55.                     LCD1602_write_com(0x80+0x40+4);
  56.                     LCD1602_write_word("   . ");
  57.                 }
  58.             }
  59.         }
  60.         //获取按键
  61.         keycode = KEYSCAN();
  62.         //有效键值0-15
  63.         if ((keycode<16)&&(FlagKeyPress==0))
  64.         {
  65.             FlagKeyPress = 1;
  66.             KeyPress(keycode);
  67.             FlagKeyPress = 0;
  68.                  delay(100);
  69.         }
  70.         delay(1);
  71.     }
  72.                
  73.         }
复制代码



收藏 评论0 发布时间:2022-5-12 11:29

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版