找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm32电子秤源码

  [复制链接]
跳转到指定楼层
楼主
ID:226985 发表于 2017-8-17 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人亲试,可以实现,电子秤制作学习

所有资料51hei提供下载:
电子秤.rar (587.49 KB, 下载次数: 172)

单片机源程序如下:
  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.                                 curr.weight = (weightNum - outWeightNum) - curr.weight;                               
  170.                         }               
  171.                         //AD采集
  172.                 }
  173.                
  174.                 if(keyNum != 255)
  175.                 {
  176.                         disManage();
  177.                 }
  178.                 else
  179.                 {
  180.                         DIS_Body();
  181.                 }


  182.     }       
  183. }
复制代码




评分

参与人数 1黑币 +5 收起 理由
SHUTLY + 5 绝世好帖!

查看全部评分

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

使用道具 举报

沙发
ID:163574 发表于 2017-9-15 17:59 | 只看该作者
最近实习正想坐这个,参考下楼主的&#128515;
回复

使用道具 举报

板凳
ID:238738 发表于 2017-10-11 22:53 | 只看该作者
有没有电路图
回复

使用道具 举报

地板
ID:356388 发表于 2018-6-21 21:23 | 只看该作者
真的好,就是没有黑币下载
回复

使用道具 举报

5#
ID:356203 发表于 2018-6-22 10:39 | 只看该作者
好贴,谢谢。
回复

使用道具 举报

6#
ID:18591 发表于 2019-1-20 20:38 | 只看该作者

好贴,谢谢
回复

使用道具 举报

7#
ID:439057 发表于 2019-3-27 10:30 | 只看该作者
谢谢楼主的资源。
回复

使用道具 举报

8#
ID:518449 发表于 2019-5-9 10:26 | 只看该作者
太棒了
回复

使用道具 举报

9#
ID:662262 发表于 2019-12-13 18:20 | 只看该作者
非常感谢
回复

使用道具 举报

10#
ID:978581 发表于 2021-11-13 10:29 | 只看该作者
怎么一编译显示有8个错误
回复

使用道具 举报

11#
ID:978581 发表于 2021-11-13 10:30 | 只看该作者
这是用32哪个板子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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