找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STM32F407下的HX711压力传感器程序

[复制链接]
跳转到指定楼层
楼主
ID:582853 发表于 2020-2-14 20:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于STM32F407下的HX711压力传感器程序分享

单片机源程序如下:
  1. #include "HX711.h"
  2. #include "delay.h"

  3. long HX711_Buffer = 0;
  4. long Weight_Shiwu = 0;

  5. #define HIGH 1
  6. #define LOW  0
  7. #define HX711_GROUP GPIOA
  8.       

  9. void digitalWrite(GPIO_TypeDef * GPIO,int pin,int value)
  10. {
  11.         if(value==HIGH)//set 1
  12.         {
  13.                 GPIO_SetBits(GPIO,pin);
  14.         }
  15.         if(value==LOW)//reset 0
  16.         {
  17.                 GPIO_ResetBits(GPIO,pin);
  18.         }
  19. }

  20. int digitalRead(GPIO_TypeDef * GPIO,int pin)
  21. {
  22.         return GPIO_ReadInputDataBit(GPIO,pin);
  23. }

  24. //****************************************************
  25. //初始化HX711
  26. //****************************************************
  27. void Init_Hx711()
  28. {
  29.         GPIO_InitTypeDef  GPIO_InitStructure;

  30.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

  31.   //SCK
  32.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 ;
  33.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  34.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  35.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  36.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  37.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  38.         GPIO_InitTypeDef  GPIO_InitStructure1;

  39.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

  40.   //DOUT
  41.   GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_4 ;
  42.   GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;
  43.   GPIO_InitStructure1.GPIO_OType = GPIO_OType_OD;
  44.   GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;
  45.   GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;
  46.   GPIO_Init(GPIOA, &GPIO_InitStructure1);
  47.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

  48. }



  49. //****************************************************
  50. //获取毛皮重量
  51. //****************************************************
  52. /*void Get_Maopi()
  53. {
  54.         Weight_Maopi = HX711_Read();               
  55. }*/

  56. //****************************************************
  57. //称重
  58. //****************************************************
  59. long Get_Weight()
  60. {
  61.         HX711_Buffer = HX711_Read();
  62.         Weight_Shiwu = HX711_Buffer;
  63.         Weight_Shiwu = (long)((float)Weight_Shiwu/44+0.05);        
  64.         return Weight_Shiwu;
  65. }

  66. //****************************************************
  67. //读取HX711
  68. //****************************************************
  69. unsigned long HX711_Read(void)        //增益128
  70. {
  71.                 unsigned long val = 0;
  72.         unsigned char i = 0;

  73.         //判断模块是否准备好
  74.         while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4));
  75.         delay_us(1);   
  76.         //sck 拉低
  77.         GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  78.         //再次判断是否准备好
  79.         while(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4));
  80.   
  81.         for(i=0;i<24;i++)
  82.         {
  83.                 delay_us(100);
  84.                 GPIO_SetBits(GPIOA,GPIO_Pin_3);          
  85.                 val=val<<1;
  86.                 delay_us(1);  
  87.                 GPIO_ResetBits(GPIOA,GPIO_Pin_3);          
  88.                 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))  
  89.                 val++;
  90.                 delay_us(1);
  91.         }
  92.         GPIO_SetBits(GPIOA,GPIO_Pin_3);
  93.         val = val^0x800000;
  94.         delay_us(1);
  95.         GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  96.         delay_us(1);  
  97.         return val;
  98. }
复制代码

所有资料51hei提供下载:
HX711 ok.7z (300.79 KB, 下载次数: 52)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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