单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19472|回复: 104
打印 上一主题 下一主题
收起左侧

基于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黑下载附件…………
复制代码

下载:
电子称源码.rar (2.41 MB, 下载次数: 917)
electronic balance-主控板.zip (19.41 MB, 下载次数: 456)
electronic balance-传感器数据采集板.zip (14.88 MB, 下载次数: 539)

评分

参与人数 3黑币 +15 收起 理由
15133530859 + 5 绝世好帖!
yang!@ + 5 赞一个!
骆驼驼 + 5 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏17 转播转播 分享分享3 分享淘帖 顶8 踩
回复

使用道具 举报

沙发
869455072 发表于 2017-5-7 12:50 | 只看该作者
正好想做一个,拿来参考一下,多谢了
回复

使用道具 举报

板凳
Vessel 发表于 2017-5-17 11:27 | 只看该作者
谢谢了!
回复

使用道具 举报

地板
litianyi30 发表于 2017-5-18 13:52 来自手机 | 只看该作者
好东西,谢谢!!n
回复

使用道具 举报

5#
xinwuwobu 发表于 2017-5-27 13:37 | 只看该作者
谢谢了
回复

使用道具 举报

6#
梁金正123 发表于 2017-6-2 21:02 | 只看该作者
很好 ,谢谢了
回复

使用道具 举报

7#
cag2008 发表于 2017-6-5 16:40 | 只看该作者
正做这个项目呢,非常感谢
回复

使用道具 举报

8#
cag2008 发表于 2017-6-5 16:41 | 只看该作者
非常感谢
回复

使用道具 举报

9#
Host 发表于 2017-6-24 12:46 | 只看该作者
弱弱的问一句,ADC  32里面不是自带得有吗  
回复

使用道具 举报

10#
xuanmic 发表于 2017-7-23 11:55 | 只看该作者
Host 发表于 2017-6-24 12:46
弱弱的问一句,ADC  32里面不是自带得有吗

hx711用起来更方便,价格也就一块多点。
回复

使用道具 举报

11#
xu2005 发表于 2017-7-27 11:44 | 只看该作者
不错,学习一下
回复

使用道具 举报

12#
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
回复

使用道具 举报

13#
782766538 发表于 2017-8-4 10:57 | 只看该作者
您用的是MDK3.2版本?
回复

使用道具 举报

14#
a06041114 发表于 2017-8-22 16:47 | 只看该作者
谢谢了!
回复

使用道具 举报

15#
woshidongjun 发表于 2017-11-14 10:03 | 只看该作者
感谢大佬啊啊啊啊
回复

使用道具 举报

16#
canghenzhilei 发表于 2017-11-16 13:41 | 只看该作者
下下来看看哈
回复

使用道具 举报

17#
wj1994 发表于 2017-11-17 08:05 | 只看该作者
下来看看感觉还是不错的
回复

使用道具 举报

18#
wj1994 发表于 2017-11-17 14:04 | 只看该作者
为什么里边没有库文件
回复

使用道具 举报

19#
az19940414 发表于 2018-1-20 14:52 | 只看该作者
看起来很不错
回复

使用道具 举报

20#
nanxixi 发表于 2018-1-26 14:15 | 只看该作者
感觉不错
回复

使用道具 举报

21#
jiangkeqin_sy 发表于 2018-1-31 11:33 | 只看该作者
我想下载啊
回复

使用道具 举报

22#
trainpreson 发表于 2018-2-21 15:43 | 只看该作者
下载回来学习一下。谢谢!
回复

使用道具 举报

23#
trainpreson 发表于 2018-2-21 15:43 | 只看该作者
谢谢了!学习一下。
回复

使用道具 举报

24#
yun_2106118 发表于 2018-3-22 09:45 | 只看该作者
支持楼主,好东西,就是没分了
回复

使用道具 举报

25#
fangbin090 发表于 2018-3-29 15:41 | 只看该作者
谢谢!!!!!!!!!
回复

使用道具 举报

26#
鬼卒神戈 发表于 2018-4-6 14:26 | 只看该作者
下载看看,谢谢!
回复

使用道具 举报

27#
无效楼层,该帖已经被删除
28#
无效楼层,该帖已经被删除
29#
鬼卒神戈 发表于 2018-5-1 22:51 | 只看该作者
正好能用到,下载直接复制喽  多谢楼主
回复

使用道具 举报

30#
JCDW 发表于 2018-5-2 20:31 | 只看该作者
好东西
回复

使用道具 举报

31#
哈尔Ar 发表于 2018-5-6 15:33 | 只看该作者
请问这个是可以称多重东西的?
回复

使用道具 举报

32#
三电子 发表于 2018-5-6 20:54 | 只看该作者
请问题主的程序是不是有问题啊,Data[N] = ReadCount();N定义为12,不够数据存储啊
回复

使用道具 举报

33#
fmqwh626 发表于 2018-5-9 08:38 | 只看该作者
学习了 非常感谢
回复

使用道具 举报

34#
boo851011 发表于 2018-5-24 09:28 | 只看该作者
好资料,非常感谢
回复

使用道具 举报

35#
lovebetsey 发表于 2018-6-12 14:37 | 只看该作者
太好了  正在找
回复

使用道具 举报

36#
wilso6745 发表于 2018-6-13 08:25 | 只看该作者
厉害厉害~~下来学习
回复

使用道具 举报

37#
GX9527 发表于 2018-6-13 18:23 | 只看该作者
正在做 学习一下
回复

使用道具 举报

38#
无效楼层,该帖已经被删除
39#
阿西西 发表于 2018-6-30 12:28 | 只看该作者
可以的
回复

使用道具 举报

40#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 QQ 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表