标题: 基于51单片机设计的电子秤 [打印本页]
作者: 香蕉柿布拿拿 时间: 2020-8-3 17:27
标题: 基于51单片机设计的电子秤
#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;
}
-
[~D%XY`74KNPK9HEE`Z``RB.png
(125.96 KB, 下载次数: 58)
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |