历史上的今天
今天是:2025年01月10日(星期五)
2021年01月10日 | MSP430 单片机 HX711重量传感器接线 程序读取
2021-01-10 来源:eefocus

#define SCK_L P4OUT &= ~BIT0
#define SCK_H P4OUT |= BIT0
#define SDA_IN (P4IN & BIT1)
#define GapValue 116.18 /* 读取出的HX711为一个寄存器数值单位并不是g,除以这个GapValue值就是换算成g单位 */
unsigned long Weight_Maopi; /* 毛皮重,上电后就读取出这个变量 */
/*
* 初始化HX711端口
* 3.3V供电
* 4.0接SCK
* 4.1接DT
* */
void init_hx711port(void)
{
P4DIR |= BIT0; /* 单片机P4.0引脚输出 */
P4OUT &= ~BIT0; /* 单片机P4.0引脚输出低电平 */
P4DIR &= ~BIT1; /* 单片机P4.1引脚输入 */
/* P4REN |= BIT1; //单片机P4.1引脚输入上拉使能 F149单片机这里没内部上拉 */
//P4OUT |= BIT1; /* 单片机P4.1引脚输入上拉电阻 */
}
/* 读取HX711内部的数据 */
unsigned long read_hx711_24bit(void)
{
unsigned long Count = 0;
unsigned char i;
SCK_L; /* SCL=0;使能AD(PD_SCL 置低) */
while ( SDA_IN)
;
/* AD转换未结束则等待,否则开始读取 循环读取24次 */
for (i = 0; i < 24; i++)
{
SCK_H; /* SCL = 1; PD_SCL 置高(发送脉冲) */
Count = Count << 1; /*下降沿来时变量Count左移一位,右侧补零 */
delay_us(2);
SCK_L; /* SCL=0; PD_SCL 置低 */
if ( SDA_IN)
Count++; /* if(SDA) Count++; */
delay_us(2);
}
SCK_H; /* SCL=1; */
Count = Count ^ 0x800000; /* 第25个脉冲下降沿来时,转换数据 */
delay_us(1);
SCK_L; /* SCL=0; */
return (Count);
}
/*
*
* 获取毛皮重量
* 上电初始化时候执行
*
*/
void get_maopi(void)
{
delay_ms(100);
Weight_Maopi = read_hx711_24bit();
Weight_Maopi = read_hx711_24bit(); /* 多读一次确保稳定 */
}
/* 获取重量 返回g单位的重量 */
unsigned long get_weight(void)
{
unsigned long HX711_Buffer;
unsigned long maopia;
unsigned int Weight_Shiwu;
HX711_Buffer = read_hx711_24bit();
maopia = (ulong) ((float) Weight_Maopi / GapValue); /* 毛皮重量转换成g */
HX711_Buffer = (ulong) ((float) HX711_Buffer / GapValue); /* 此时称重转换成g */
if (HX711_Buffer > maopia)
{
Weight_Shiwu = HX711_Buffer - maopia; /* 计算实物的实际重量 */
return (Weight_Shiwu); /* 测量正确返回g单位的重量数值 */
}
return (0); /* 称重不符合规范(HX711_Buffer > Weight_Maopi) 返回2 */
}
史海拾趣
|
旁路电容不是理论概念,而是一个经常使用的实用方法,在50 -- 60年代,这个词也就有它特有的含义,现在已不多用。电子管或者晶体管是需要偏置的,就是决定工作点的直流供电条件。例如电子管的栅极相对于阴极往往要求加有负压,为了在一个直流电源下 ...… 查看全部问答> |
|
1,usb device包含两个configurations, configuration 1是usb mass storage, configuration 2是一个自定义的function; 2, 默认会被windows识别为usb mass storage; 3, 现在需要切换到configuration2, 我发了set configuration 可以成功,但是似 ...… 查看全部问答> |
|
广州单片机之家诚招C程序员两名(有C++经验更佳): 目前主要从事游戏的设计工作,使用自有的e.Net(e时代的网络语言,以C++基本语法为主)进行 视频游戏的开发,开发出的游戏在自有的从89C51到ARM到PC机各种硬件平台上随处可运行.其实 ...… 查看全部问答> |
|
RT,系统是wince4.2,哪位开发过?麻烦发个类似记事本写字板一样的能有输入和存档。以前从未在wince上开发过,新手初来,请各位帮忙!!感谢!! 邮箱:jackbinhao@163.com… 查看全部问答> |
|
如题, 小弟正在学习mobile开发, 因为以前做asp.net, 所以想请教mobile开发模式与.net开发有什么区别, 比如.net主要是事件,用户触发事件后, 需要编写事件的处理函数,而windowsce是消息机制, 请问这个消息和事件的区别, 总是在源码里 ...… 查看全部问答> |
|
请教STM32F103的CAN总线速度和系统时钟之间关系的问题? 偶在调试STM32F103VBT6的CAN总线的时候,外部使用晶体为8MHz,当设置系统时钟=8MHz,APB1=4MHz,BS1=8tq,BS2=7tq,Prescaler=5,得到波特率为50K,两个板子之间CAN收发完全正常。当设置系统时钟使用PLL,设置为72Mhz,APB1=36Mhz,BS1=6tq,BS2=5tq,P ...… 查看全部问答> |
|
看了Ti的文档还是不太清楚,最后只能写绝对路径,就是包含盘符的那种,不过还是不太好 现在情况是这样的:在include文件夹下面我定义了A、B、C三个文件夹,用来放置三种.h文件 其中A文件夹中又有A1、A2、A3三个文件夹,如何包含这几个文件夹的头 ...… 查看全部问答> |




