标题: 基于51单片机蓝牙电子秤程序设计 包含原理图手机APP [打印本页]

作者: 觉新的三弟    时间: 2022-4-18 17:48
标题: 基于51单片机蓝牙电子秤程序设计 包含原理图手机APP
制作出来的实物图如下:

如图所示


电路原理图如下:

元件清单:
            
电源电路            
电源DC端子    J1    1套   
开关    S1    1个   
指示灯    D1    1个   
电阻1K    R2    1个   
            
            
单片机最小系统            
IC座子40P    U1    1个   
单片机    U1    1个   
晶振11.0592M    Y1    1个   
独石电容22P    C1、C2    2个    元件上标:220
按键    K0 、K1    2个   
电解电容    C3    1个   
电阻 10K    R1    1个   
            
蜂咛器电路            
蜂咛器    B1    1个   
三极管S8550    Q1    1个   
电阻1K    R3    1个   
            
蓝牙电路            
蓝牙模块    U3    1个   
4P排座        1个    插蓝牙模块
            
液晶电路            
16P排座    LCD1    1个   
液晶1602    LCD1    1个   
电位器 10K    W1    1个    高档电位器
            
压力传感器电路            
压力传感器(套装)    U2    1个   
4P杜邦线        1条   
            
主板            
万能板    7cm*9cm    1张   



单片机源程序如下:
  1. #include "main.h"
  2. #include "HX711.h"
  3. #include "uart.h"
  4. #include "LCD1602.h"
  5. #include <intrins.h>
  6. #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
  7. #define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

  8. unsigned long HX711_Buffer = 0;
  9. unsigned long Weight_Maopi = 0;
  10. long Weight_Shiwu = 0;

  11. unsigned char flag = 0;
  12. bit Flag_ERROR = 0;
  13. sbit beep= P1^7;

  14. #define GapValue 405



  15. //****************************************************
  16. //主函数
  17. //****************************************************
  18. void main()
  19. {
  20.     Uart_Init();
  21.   
  22.         Init_LCD1602();
  23.         LCD1602_write_com(0x80);
  24.         LCD1602_write_word("Welcome to use!");
  25.         Delay_ms(1000);                 //延时,等待传感器稳定

  26.         Get_Maopi();                                //称毛皮重量
  27.        
  28.         while(1)
  29.         {
  30.                 EA = 0;
  31.                 Get_Weight();                        //称重
  32.                 EA = 1;

  33.                 Scan_Key();

  34.                 //显示当前重量
  35.                 if( Flag_ERROR == 1)
  36.                 {
  37.          
  38.                        

  39.                         LCD1602_write_com(0x80+0x40);
  40.                         LCD1602_write_word("ERROR ");
  41.                         beep=0;
  42.                 }               
  43.                 else
  44.                 {         
  45.                         beep=1;
  46.             Send_ASCII(0x82);
  47.             Send_ASCII(0x4);
  48.             Send_ASCII(Weight_Shiwu >> 8);
  49.             Send_ASCII(Weight_Shiwu);
  50.                        


  51.                         LCD1602_write_com(0x80+0x40);
  52.                         LCD1602_write_data(Weight_Shiwu/1000 + 0X30);
  53.             LCD1602_write_data(Weight_Shiwu%1000/100 + 0X30);
  54.             LCD1602_write_data(Weight_Shiwu%100/10 + 0X30);
  55.             LCD1602_write_data(Weight_Shiwu%10 + 0X30);
  56.                         LCD1602_write_word(" g");



  57.                 }

  58.        

  59.                
  60.         }
  61. }

  62. //扫描按键
  63. void Scan_Key()
  64. {
  65.         if(KEY1 == 0)
  66.         {
  67.                 Delay_ms(5);
  68.                 if(KEY1 == 0)
  69.                 {
  70.                         while(KEY1 == 0);
  71.                         Get_Maopi();                        //去皮
  72.                 }       
  73.         }
  74. }

  75. //****************************************************
  76. //称重
  77. //****************************************************
  78. void Get_Weight()
  79. {
  80.         Weight_Shiwu = HX711_Read();
  81.         Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                //获取净重
  82.         if(Weight_Shiwu > 0)                       
  83.         {       
  84.                 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);         //计算实物的实际重量
  85.                                                                                                                                                
  86.                                                                                                                                                
  87.                 if(Weight_Shiwu > 5000)                //超重报警
  88.                 {
  89.                         Flag_ERROR = 1;       
  90.                         Send_ASCII(0x82);
  91.       Send_ASCII(0x4);
  92.       Send_ASCII(5000 >> 8);

  93.                 }
  94.                 else
  95.                 {
  96.                         Flag_ERROR = 0;
  97.                 }
  98.         }
  99.         else
  100.         {
  101.                 Weight_Shiwu = 0;
  102.     Send_ASCII(0x82);
  103.     Send_ASCII(0x4);
  104.     Send_ASCII(0 >> 8);


  105.         }
  106.        
  107. }

  108. //****************************************************
  109. //获取毛皮重量
  110. //****************************************************
  111. void Get_Maopi()
  112. {
  113.         Weight_Maopi = HX711_Read();       
  114. }

  115. //****************************************************
  116. //MS延时函数(12M晶振下测试)
  117. //****************************************************
  118. void Delay_ms(unsigned int n)
  119. {
  120.         unsigned int  i,j;
  121.         for(i=0;i<n;i++)
  122.                 for(j=0;j<123;j++);
  123. }
复制代码

Keil代码下载+app(无代码)下载:
蓝牙电子称.7z (3.17 MB, 下载次数: 168)


作者: abcd1212    时间: 2022-11-8 10:54
nice实用
作者: irico58    时间: 2022-11-22 22:43
压力传感器用多少kg的合适
作者: 1790995069    时间: 2023-3-3 11:03
求app制作的教程哇
作者: wbwcf13e    时间: 2023-12-31 09:00
传感器用哪种规格?




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