久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5900|回復: 5
打印 上一主題 下一主題
收起左側

分享一個STM32F103寫的HX711電子秤頭文件

[復制鏈接]
跳轉到指定樓層
樓主
ID:285545 發表于 2018-5-14 11:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我來試試怎么樣發貼~
來吧~
w我也是初學,大家見諒哈



HX711.zip (1.78 KB, 下載次數: 66)




#ifndef __HX711_H
#define __HX711_H         
#include "sys.h"

        
#define HX711_PORT        GPIOA        //定義IO接口
#define HX711_DT        GPIO_Pin_11        //定義IO接口
#define HX711_SK        GPIO_Pin_12        //定義IO接口
extern unsigned long HX711_init_Read ;
void HX711_Init();                                  //初始化
unsigned long HX711_Read();//讀數據
float HX711_Weight();                        //讀出當前重量 單位g        
u8 HX711_WaitData(float);
#endif



/*

HX711-是24位AD 芯片。
兩路差分輸入,默認128 增益。
串口輸出。

*/
#include "sys.h"
#include "hx711.h"
#include "delay.h"
#include "led.h"
#include "usart.h"
unsigned long HX711_init_Read=0;        //全局變量
void HX711_Init(){//初始化
        u8 a =0;
        unsigned long c=0;
        GPIO_InitTypeDef  GPIO_InitStructure;
                //HX711_DT 為輸入初始化
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);      
    GPIO_InitStructure.GPIO_Pin = HX711_DT; //選擇端口號(0~15或all)                        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //選擇IO接口工作方式         
        GPIO_Init(HX711_PORT, &GPIO_InitStructure);
          //HX711_SK 為輸出初始化   
    GPIO_InitStructure.GPIO_Pin = HX711_SK; //選擇端口號(0~15或all)                        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //選擇IO接口工作方式      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //設置IO接口速度(2/10/50MHz)   
        GPIO_Init(HX711_PORT, &GPIO_InitStructure);        
        delay_ms(10);
        for(a=0;a<2;a++){
                c += HX711_Read();
                delay_ms(3);
        };
        HX711_init_Read =HX711_Read();        //作為初始的值
        delay_ms(50);
}

unsigned long HX711_Read(){//讀取HX711的數值
  unsigned long Count=0;
        u8 a=0;
        GPIO_ResetBits(HX711_PORT,HX711_SK);        //將SK 拉低 等待數據到來
        delay_us(1);
        while(GPIO_ReadInputDataBit(HX711_PORT,HX711_DT));        //等待DT變低 說明開始傳輸數據
        delay_us(1);        //最小值 0.1us
        for(a=0;a<24;a++){//前24個數據
                GPIO_SetBits(HX711_PORT,HX711_SK);//拉高 SK
                Count = Count<<1;
                delay_us(1);//最大值50us 最小值0.2us
                GPIO_ResetBits(HX711_PORT,HX711_SK);        //拉低 SK
                if(GPIO_ReadInputDataBit(HX711_PORT,HX711_DT))//收到 1
                        Count++;        
                delay_us(1);//最小值0.2us
        };
        GPIO_SetBits(HX711_PORT,HX711_DT);//拉高 SK
        Count = Count^0x800000;
        GPIO_ResetBits(HX711_PORT,HX711_DT);        //拉低 SK
        delay_us(1);
        return Count;
}
   
float HX711_Weight(){//讀取當前數值 并轉化為g 返回
//        unsigned long b=0;
        unsigned long count = 0;        //讀取數值
        float weight=0.0;
//        b = HX711_Read();
//        delay_ms(5);
        count = HX711_Read();
        delay_us(2);
        weight = (long)(count>>7)-(long)(HX711_init_Read>>7);        //(long)(HX711_init_Read>>5);//差值為當前數值
        weight = weight/16.84;
        delay_us(2);
        return weight;
}

u8 HX711_WaitData(float weight){//講重量換算成數值 然后一直等待數值
        int MachineData =0;
        int count=0;
        MachineData = (int)((weight*16.84)+(HX711_init_Read>>7));
        GPIO_SetBits(LEDPORT,LED1);
        printf("MachineData = %d \r\n" ,MachineData);
        count = (int)(HX711_Read()>>7);        //讀取
        if(MachineData>=count){//設定值大于當前值
                while(MachineData - count > 10){//循環對比
                        delay_ms(100);
                        count = (int)(HX711_Read()>>7)+20;        //讀取
                        printf("count = %d \r\n",count);
                };
                GPIO_ResetBits(LEDPORT,LED1);
                return 1;
        }else{        //設定值小于當前值
                while(count- MachineData > 10){//循環對比
                        delay_ms(100);
                        count = (int)(HX711_Read()>>7);        //讀取
                        printf("count = %d \r\n",count);
                };
                GPIO_ResetBits(LEDPORT,LED1);
                return 1;
        }
}
        

/*278014   270079
選擇IO接口工作方式:
GPIO_Mode_AIN 模擬輸入
GPIO_Mode_IN_FLOATING 浮空輸入
GPIO_Mode_IPD 下拉輸入
GPIO_Mode_IPU 上拉輸入
GPIO_Mode_Out_PP 推挽輸出
GPIO_Mode_Out_OD 開漏輸出
GPIO_Mode_AF_PP 復用推挽輸出
GPIO_Mode_AF_OD 復用開漏輸出
*/


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:285545 發表于 2018-5-14 11:14 | 只看該作者
國際慣例,自己沙發
回復

使用道具 舉報

板凳
ID:302666 發表于 2020-8-22 10:38 | 只看該作者
希望版主深講
回復

使用道具 舉報

地板
ID:815539 發表于 2020-8-22 22:42 來自手機 | 只看該作者
挺好的這就沉了嗎
回復

使用道具 舉報

5#
ID:271215 發表于 2021-9-8 17:50 | 只看該作者
#include "sys.h"
#include "hx711.h"
#include "delay.h"
#include "led.h"
#include "usart.h"

樓主我就是個小白,這些頭文件能給一下嗎
回復

使用道具 舉報

6#
ID:430492 發表于 2021-9-9 17:14 | 只看該作者
HX711做電子稱的案例很多,感謝樓主!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美一区二区三区另类精品 | 亚洲精品国产一区 | 久久不射电影网 | 亚洲精品乱码久久久久久按摩观 | 婷婷综合久久 | 蜜桃五月天 | 久久伊 | 伊人国产精品 | 精品乱子伦一区二区三区 | 亚洲h视频 | 欧美精品导航 | 亚洲欧洲色视频 | 最新中文字幕 | 天天爽夜夜骑 | 日韩精品一区二区三区视频播放 | 九色 在线 | 成人不卡 | 久久久久综合 | 免费国产一区二区 | 精品一区av | 精品视频一区二区三区在线观看 | 羞羞视频免费在线 | 久久一二 | 精品日韩欧美一区二区 | 精品国产不卡一区二区三区 | 成人亚洲片 | 久久久久久久久久久久91 | 欧美精品一区二区三区在线播放 | 亚洲欧美一区二区三区1000 | 精品久久视频 | 激情五月综合 | 色婷婷在线视频 | 久久久不卡网国产精品一区 | 欧美精品一区二区三区在线播放 | 亚洲欧美日韩在线不卡 | 欧美日韩国产一区二区三区 | 免费久 | 国产午夜av片| 国产第二页 | 精品久久久久久久久久久久久 | 国产精品国色综合久久 |