找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于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, 下载次数: 160)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1050979 发表于 2022-11-8 10:54 | 只看该作者
nice实用
回复

使用道具 举报

板凳
ID:499081 发表于 2022-11-22 22:43 来自手机 | 只看该作者
压力传感器用多少kg的合适
回复

使用道具 举报

地板
ID:849017 发表于 2023-3-3 11:03 | 只看该作者
求app制作的教程哇
回复

使用道具 举报

5#
ID:477512 发表于 2023-12-31 09:00 | 只看该作者
传感器用哪种规格?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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