#include "main.h" #include "HX711.h" /////共阴数码管段选////////////////////////////////////////////// unsigned chartable[22]={0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71, 0x40,0x38,0x76,0x00,0xff,0x37};//'-',L,H,灭,全亮,n 16-21 float m__1=2.80; unsigned long HX711_Buffer = 0; unsigned int Weight_Maopi = 0,Weight_Shiwu= 0; char Price_Count = 0; unsigned char KEY_NUM = 0,j=0; unsigned char Price_Buffer[3] ={0x00,0x00,0x00}; unsigned long Money = 0; bit Flag_OK = 0; void delay(unsigned int ms) { unsignedchar x; for(ms;ms>0;ms--) for(x=10;x>0;x--); } void display()//显示重量 单位g { w1=0;P0=~table[Weight_Shiwu/1000];delay(10);//第1位 P0=0xff;w1=1;delay(1); w2=0;P0=~table[Weight_Shiwu%1000/100];delay(10);//第2位 P0=0xff;w2=1;delay(1); w3=0;P0=~table[Weight_Shiwu%100/10];delay(10);//第3位 P0=0xff;w3=1;delay(1); w4=0;P0=~table[Weight_Shiwu%10];delay(10);//第4位 P0=0xff;w4=1;delay(1); } //**************************************************** //主函数 //**************************************************** void main() { Get_Maopi(); //称毛皮重量 while(1) { if(Flag_OK == 0) { Get_Weight(); //称重 for(j=0;j<100;j++)display();//显示重量 单位g //显示当前重量 } if(key1==0) // { delay(10); if(key1==0) { while(!key1); // Get_Maopi(); //去皮 } } if(key2==0) // { delay(10); if(key2==0) { while(!key2); // 微调重量- m__1=m__1+0.10; if(m__1>=5.10)m__1=5.00; } } if(key3==0) // { delay(10); if(key3==0) { while(!key3); // 微调重量+ m__1=m__1-0.10; if(m__1<=1.10)m__1=2.50; } } } } //**************************************************** //称重 //**************************************************** void Get_Weight() { HX711_Buffer= HX711_Read(); HX711_Buffer= HX711_Buffer/100; if(HX711_Buffer> Weight_Maopi) { Weight_Shiwu= HX711_Buffer; Weight_Shiwu= Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。 Weight_Shiwu= (unsigned int)((float)Weight_Shiwu/m__1+0.05); //计算实物的实际重量 //因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。 //当发现测试出来的重量偏大时,增加该数值。 //如果测试出来的重量偏小时,减小改数值。 //该数值一般在4.0-5.0之间。因传感器不同而定。 //+0.05是为了四舍五入百分位 Buzzer= 1; //关闭警报 } // elseif(HX711_Buffer < Weight_Maopi - 30) // { // Buzzer= 0; //负重量报警 // } // elseif(HX711_Buffer > Weight_Maopi + 24970) //大于5Kg的最大量程,报警 // { // Buzzer= 0; // } if(Weight_Shiwu> 5000 || HX711_Buffer < Weight_Maopi - 30) { Buzzer= 0; } else { Buzzer= 1; } if(Weight_Shiwu< 5)Weight_Shiwu=0; } //**************************************************** //获取毛皮重量 //**************************************************** void Get_Maopi() { HX711_Buffer= HX711_Read(); Weight_Maopi= HX711_Buffer/100; }
|