我想做个简单的称重模块,就是超过五十克就会亮灯,有人知道怎么写吗?
#include <reg52.h>
#include <intrins.h>
//IO设置
sbit HX711_DOUT=P2^0;
sbit HX711_SCK=P2^1;
sbit FM=P2^3;
//定义全局变量
unsigned long count;
unsigned long zhi;
//****************************************************
//延时函数
//****************************************************
void Delay__hx711_us(void)
{
_nop_();
_nop_();
}
//****************************************************
//读取HX711
//****************************************************
unsigned long HX711_Read(void) //增益128
{
unsigned char i;
HX711_DOUT=1;
Delay__hx711_us();
Delay__hx711_us();
Delay__hx711_us();
Delay__hx711_us();
HX711_SCK=0;
count=0;
while(HX711_DOUT);
for(i=0;i<24;i++)
{
HX711_SCK=1;
count=count<<1;
Delay__hx711_us();
Delay__hx711_us();
HX711_SCK=0;
Delay__hx711_us();
Delay__hx711_us();
if(HX711_DOUT)
count++;
}
HX711_SCK=1;
Delay__hx711_us();
count=count^0x800000;//第25个脉冲下降沿来时,转换数据
Delay__hx711_us();
HX711_SCK=0;
Delay__hx711_us();
Delay__hx711_us();
return(count);
}
void main()
{
unsigned int tt=45535;// 1KG的重量 (满量程3KG=2,147,483)
FM=1;
P1=0xFF;
while(1)
{
zhi=HX711_Read();
if(zhi>tt)
{
FM=0;
P1=0;
}
else
{
FM=1;
P1=0xFF;
}
}
}
|