标题: 基于stm32的HX711电子秤全套资料 含源码 原理图 PCB [打印本页]

作者: Rhy1994    时间: 2017-5-7 00:09
标题: 基于stm32的HX711电子秤全套资料 含源码 原理图 PCB
基于stm32的电子秤资料,基于HX711芯片,传感器数据采集板和主控板的完整源码与原理图pcb文件都有提供,欢迎大家下载.

传感器数据采集板原理图:



传感器数据采集板pcb:


stm32单片机源程序:
  1. #include <stm32f10x_lib.h>
  2. #include "STM32_Init.h"
  3. #include "stm32f10x_it.h"
  4. #include "main.h"
  5. #include "delay.h"
  6. #include "sys.h"
  7. #include "lcd12864.h"
  8. #include "scale_key.h"
  9. #include "scale_lcd.h"
  10. #include "keyboard.h"
  11. #include "hx711.h"
  12. #include "timer.h"

  13. #define weightNum        0x1FF22

  14. //定义变量
  15. u8 keyNum;        //按键位
  16. u16 outWeightNum;          //去皮重
  17. u8 pointNum; //小数点的位置
  18. u8 saveMoneyFlag;  //保存单价的次数
  19. u8 countNum;        //当前数的位置


  20. Thing  curr, moneyOne, moneyTwo, moneyThree;

  21. //按键反应函数
  22. void funManage(void)
  23. {
  24.         switch(keyNum)
  25.         {
  26.                 case Clear :                   //清除:去皮指示、去皮量、单价、E2PROM价格
  27.                         Skey_Clear();
  28.                         break;        

  29.                 case Total :                   //多次单次金额总价
  30.                         Skey_Total();
  31.                         break;

  32.                 case OutWeight :         //去皮:当前重量,去皮后每次的AD值都要减去当前值才计算重量
  33.                         Skey_OutWeight();
  34.                         break;

  35.                 case SetZero :                 //清掉价格
  36.                         Skey_SetZero();
  37.                         break;

  38.                 case Save :                         //存储当前金额
  39.                         Skey_Save();
  40.                         break;
  41.         
  42.                 case Zero :        break;
  43.                 case One : break;
  44.                 case Two : break;
  45.                 case Three :break;
  46.                 case Four :        break;
  47.                 case Five :        break;
  48.                 case Six : break;
  49.                 case Server :break;
  50.                 case Eight :break;
  51.                 case Nine :break;
  52.                 case Point :
  53.                         Skey_OneToNine();
  54.                         break;

  55.                 default : break;
  56.         }
  57.                         
  58. }


  59. //12864 显示函数
  60. void disManage(void)
  61. {
  62.         switch(keyNum)
  63.         {
  64.                 case Clear :                   //清除:去皮指示、去皮量、单价、E2PROM价格
  65.                         DIS_Init();
  66.                         break;        
  67.                 case Total :                   //多次单次金额总价
  68.                         DIS_Body();
  69.                         break;

  70.                 case OutWeight :         //去皮:当前重量,去皮后每次的AD值都要减去当前值才计算重量
  71.                         DIS_OutWeight();
  72.                         break;

  73.                 case SetZero :                 //清掉价格
  74.                         DIS_Body();
  75.                         break;

  76.                 case Save :                         //存储当前金额
  77.                         DIS_Save();
  78.                         break;
  79.                 case Money1 :                         //金额1
  80.                         DIS_Money1();
  81.                         break;

  82.                 case Money2 :                         //金额2
  83.                         DIS_Money2();
  84.                         break;

  85.                 case Money3 :                         //金额3
  86.                         DIS_Money3();
  87.                         break;
  88.         
  89.                 case Zero :
  90.                 case One :
  91.                 case Two :
  92.                 case Three :
  93.                 case Four :
  94.                 case Five :
  95.                 case Six :
  96.                 case Server :
  97.                 case Eight :
  98.                 case Nine :
  99.                 case Point :
  100.                         if(countNum > 5)
  101.                         {
  102.                                 DIS_MoreLimit();        
  103.                         }
  104.                         else
  105.                         {
  106.                                 DIS_Body();
  107.                         }                        
  108.                         break;

  109.                 default :  //显示重量的值                        
  110.                         DIS_Body();
  111.                         break;
  112.         }        
  113. }

  114. unsigned long temp;
  115. int main()
  116. {        
  117.         u8 i = 0;
  118.         

  119.         stm32_Init();
  120.         SysTickInit();               
  121.     LCD_Init();        

  122.         DIS_Init();
  123. //        Timerx_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms

  124.         curr.weight = 0;
  125.         curr.weightZero = 0;
  126.         curr.money = 0;

  127. //        DIS_Init();
  128. //        LCD_WriteCMD(0x01);        //清屏
  129. //        while(1);
  130.         
  131. //        while(1)
  132. //        {
  133. //               
  134. //                temp = GetValueMidTui();
  135. //                //temp >>= 6;
  136. //                LCD_WriteCMD(0x90);
  137. //                LCD_WriteNum(temp);
  138. //
  139. //                LCD_WriteCMD(0x80);
  140. //                if(temp < 0x20085)
  141. //                {
  142. //                        LCD_WriteNum(0);
  143. //                } else
  144. //                {                                                
  145. //                        temp -= 0x20080;
  146. //                        LCD_WriteNum(temp);
  147. //                }               
  148. //                delay_ms(100);
  149. //                LCD_WriteCMD(0x80);
  150. //                LCD_WriteString("                  ");
  151. //        }                                          
  152.     while(1)
  153.     {        
  154.                 keyNum = Key_Scan();   // 键盘扫描
  155.         
  156.                 if(keyNum != 255)
  157.                 {
  158.                         funManage();
  159.                         //功能实现
  160.                 }
  161.                 else
  162.                 {
  163.                         curr.weight = GetValueMidTui();                //重量  滤波
  164.                         if(curr.weight > (weightNum - outWeightNum))
  165.                         {
  166.                                 curr.weight = 0;
  167.                         } else
  168.                         {                                                


  169. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
电子秤源码.7z (382.63 KB, 下载次数: 1588)
electronic balance-主控板.7z (17.58 MB, 下载次数: 770)
electronic balance-传感器数据采集板.7z (9.22 MB, 下载次数: 890)


作者: 869455072    时间: 2017-5-7 12:50
正好想做一个,拿来参考一下,多谢了
作者: Vessel    时间: 2017-5-17 11:27
谢谢了!

作者: litianyi30    时间: 2017-5-18 13:52
好东西,谢谢!!n
作者: xinwuwobu    时间: 2017-5-27 13:37
谢谢了
作者: 梁金正123    时间: 2017-6-2 21:02
很好 ,谢谢了
作者: cag2008    时间: 2017-6-5 16:40
正做这个项目呢,非常感谢
作者: cag2008    时间: 2017-6-5 16:41
非常感谢
作者: Host    时间: 2017-6-24 12:46
弱弱的问一句,ADC  32里面不是自带得有吗  
作者: xuanmic    时间: 2017-7-23 11:55
Host 发表于 2017-6-24 12:46
弱弱的问一句,ADC  32里面不是自带得有吗

hx711用起来更方便,价格也就一块多点。
作者: xu2005    时间: 2017-7-27 11:44
不错,学习一下
作者: 782766538    时间: 2017-8-4 10:56
您好,我用您的程序提示..\User\inc\main.h(3): error:  #5: cannot open source input file "stm32f10x_lib.h": No such file or directory
作者: 782766538    时间: 2017-8-4 10:57
您用的是MDK3.2版本?
作者: a06041114    时间: 2017-8-22 16:47
谢谢了!
作者: woshidongjun    时间: 2017-11-14 10:03
感谢大佬啊啊啊啊
作者: canghenzhilei    时间: 2017-11-16 13:41
下下来看看哈
作者: wj1994    时间: 2017-11-17 08:05
下来看看感觉还是不错的
作者: wj1994    时间: 2017-11-17 14:04
为什么里边没有库文件
作者: az19940414    时间: 2018-1-20 14:52
看起来很不错
作者: nanxixi    时间: 2018-1-26 14:15
感觉不错
作者: jiangkeqin_sy    时间: 2018-1-31 11:33
我想下载啊
作者: trainpreson    时间: 2018-2-21 15:43
下载回来学习一下。谢谢!
作者: trainpreson    时间: 2018-2-21 15:43
谢谢了!学习一下。
作者: yun_2106118    时间: 2018-3-22 09:45
支持楼主,好东西,就是没分了
作者: fangbin090    时间: 2018-3-29 15:41
谢谢!!!!!!!!!

作者: 鬼卒神戈    时间: 2018-4-6 14:26
下载看看,谢谢!
作者: 鬼卒神戈    时间: 2018-5-1 22:51
正好能用到,下载直接复制喽  多谢楼主
作者: JCDW    时间: 2018-5-2 20:31
好东西
作者: 哈尔Ar    时间: 2018-5-6 15:33
请问这个是可以称多重东西的?

作者: 三电子    时间: 2018-5-6 20:54
请问题主的程序是不是有问题啊,Data[N] = ReadCount();N定义为12,不够数据存储啊
作者: fmqwh626    时间: 2018-5-9 08:38
学习了 非常感谢
作者: boo851011    时间: 2018-5-24 09:28
好资料,非常感谢
作者: lovebetsey    时间: 2018-6-12 14:37
太好了  正在找
作者: wilso6745    时间: 2018-6-13 08:25
厉害厉害~~下来学习
作者: GX9527    时间: 2018-6-13 18:23
正在做 学习一下
作者: 阿西西    时间: 2018-6-30 12:28
可以的
作者: 上善若锋    时间: 2018-7-6 16:43
学习一下
作者: HG32169    时间: 2018-7-17 22:23
谢谢,拿来学习一下,很棒!
作者: hongyao    时间: 2018-7-31 02:41
谢谢!学习一下
作者: sonya    时间: 2018-8-3 10:17
谢谢!学习一下,真棒
作者: oftenwithu    时间: 2018-8-21 14:42
正在学习stm32 做体重计,真的十分感谢分享!
作者: 夜候黎明    时间: 2018-9-15 09:56
不错不错
作者: fgyfu    时间: 2018-9-17 13:56
很给力
作者: lyl_420819    时间: 2018-9-26 14:25
好资料,非常感谢
作者: lyl_420819    时间: 2018-9-26 14:26
好资料,非常感谢
作者: xiolo    时间: 2018-9-28 08:37
感谢楼主分享!!
作者: 坐北朝南    时间: 2018-11-14 12:21
非常感谢楼主大大
作者: YanMei    时间: 2018-11-14 14:32
好厉害
作者: wallace123    时间: 2018-11-17 18:06
正在学习hx711,想做一下电子秤,谢谢了
作者: qq370029694    时间: 2018-11-22 09:27
正好想做这个东西,谢谢楼主的分享。
作者: 乐观的知觉    时间: 2018-11-26 16:36
谢谢,分享
作者: 叫爸爸123    时间: 2018-12-3 15:49
绝世好贴!!!
作者: blackmonster    时间: 2018-12-3 17:37
参考学习学习
作者: yzy9988    时间: 2018-12-3 18:36
学习学习
作者: sabine    时间: 2018-12-10 11:18
真!绝世好贴
作者: yzc123    时间: 2018-12-18 20:55
很不错 正在做这个
作者: yzc123    时间: 2018-12-18 21:06
楼主这个可以加串口屏吗
作者: 白垩纪    时间: 2018-12-26 21:27
棒   正在找 帮大忙了
作者: 白垩纪    时间: 2018-12-26 21:29
正愁没程序呢  帮大忙了
作者: 1031349968    时间: 2018-12-27 10:40
哇,真好啊,好东西
作者: yyysss    时间: 2019-1-4 22:31
牛牛牛,下载学习一下

作者: yigolly    时间: 2019-1-8 11:00
我用keil4为什么打不开啊?头一次看stm32文件,能教教吗
作者: glandsai    时间: 2019-1-9 16:05
谢谢LZ的分享
作者: 累不死的狗    时间: 2019-1-9 19:05
这东西用32做貌似有点浪费资源啊
作者: 右走    时间: 2019-1-13 21:16
正需要   感谢分享
作者: 我来扫落叶    时间: 2019-1-18 08:36
谢谢分享
作者: 暗淡无存、    时间: 2019-1-18 17:22
我想问一下 对这些还不熟悉 该怎么去学习呢

作者: 黄泥坝人    时间: 2019-1-21 22:59
最近正好在做电子秤,很好的帖子,学习了
作者: 黄泥坝人    时间: 2019-1-21 23:00
我最近正好在做电子秤,学到了
作者: ifree8    时间: 2019-1-22 16:45
很强大!
作者: jc235    时间: 2019-1-25 15:35
不错的资料
作者: xyf_71    时间: 2019-2-14 08:30
感谢楼主分享
作者: yahuiwang    时间: 2019-2-25 16:19
很好的东西啊  正在学习中
作者: xoyo521    时间: 2019-3-9 16:39
学习学习,谢谢
作者: flanker1118    时间: 2019-3-19 15:51
绝世好帖!
作者: 635808093    时间: 2019-4-10 18:14
东西很不错,做得很好   我也要做 哈哈哈
作者: 疆小鱼    时间: 2019-4-15 19:05
想请问一下楼主用的什么板子
作者: X1234561    时间: 2019-4-18 20:36
东西很不错,做得很好!拿来参考一下,多谢了!



作者: 18784506782    时间: 2019-4-19 20:47
很有用的程序,可以学习一波了
作者: easonyang    时间: 2019-4-21 21:17
你好,可以留一下你得联系方式吗?称重项目,方便的话聊一下
作者: yaoxuhui    时间: 2019-4-28 23:53
学习一下
作者: 764195618    时间: 2019-5-11 12:58
为什么lcd12864显示屏只亮不显示 我烧录接线后
作者: siyaqq    时间: 2019-5-24 15:58
很好,很强大
作者: leshangli    时间: 2019-5-28 22:00
参考一下  现在正在做这个
作者: ling121617    时间: 2019-5-29 12:15
正好想做一个,拿来参考一下
作者: werwolf    时间: 2019-6-24 22:15
谢谢分享
作者: 思广鑫    时间: 2019-7-1 22:29
谁可以发一下,qq2605001899,非常感谢
作者: 思广鑫    时间: 2019-7-1 22:30
非常好
作者: xiaozhong1314    时间: 2019-7-15 10:29
学习下
作者: hellowC8051    时间: 2019-7-18 11:11
谢谢!学习一下,真棒
作者: q1065406715    时间: 2019-8-4 14:53
谢谢!学习一下,真棒
作者: 释你    时间: 2019-8-4 18:09
Host 发表于 2017-6-24 12:46
弱弱的问一句,ADC  32里面不是自带得有吗

大部分都有自带AD的
作者: zpwgf    时间: 2019-8-6 11:07
能检测到0.1g的吗?
作者: xuxianchao    时间: 2019-8-23 22:22
谢谢!
作者: wyygmer    时间: 2019-9-8 13:43
谢谢!学习一下,真棒
作者: cx64567554    时间: 2019-10-12 15:25
感谢分享~~
作者: cx64567554    时间: 2019-10-12 15:29
感谢分享~~~
作者: stdjj000    时间: 2019-10-14 11:07
学习一下,真棒
作者: reply2010    时间: 2019-10-17 08:44
这个设计是针对多少公斤传感器的
作者: reply2010    时间: 2019-10-17 11:36
#define weightNum        0x1FF22
。。。
curr.weight = (weightNum - outWeightNum) - curr.weight;               
。。。
实际重量是这么算的,是为什么?0x1FF22 是常数,哪里来的。 outWeightNum是皮重。curr.weight是hx711吐出的ad转换值。请教高手,怎么回事?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1