標(biāo)題: 基于51單片機(jī)設(shè)計的電子秤 [打印本頁]
作者: 香蕉柿布拿拿 時間: 2020-8-3 17:27
標(biāo)題: 基于51單片機(jī)設(shè)計的電子秤
#include "main.h"
#include "HX711.h"
/////共陰數(shù)碼管段選//////////////////////////////////////////////
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);
}
//****************************************************
//主函數(shù)
//****************************************************
void main()
{
Get_Maopi(); //稱毛皮重量
while(1)
{
if(Flag_OK == 0)
{
Get_Weight(); //稱重
for(j=0;j<100;j++)display();//顯示重量 單位g
//顯示當(dāng)前重量
}
if(key1==0) //
{
delay(10);
if(key1==0)
{
while(!key1); //
Get_Maopi(); //去皮
}
}
if(key2==0) //
{
delay(10);
if(key2==0)
{
while(!key2); // 微調(diào)重量-
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); // 微調(diào)重量+
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采樣數(shù)值。
Weight_Shiwu= (unsigned int)((float)Weight_Shiwu/m__1+0.05); //計算實物的實際重量
//因為不同的傳感器特性曲線不一樣,因此,每一個傳感器需要矯正這里的4.30這個除數(shù)。
//當(dāng)發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值。
//如果測試出來的重量偏小時,減小改數(shù)值。
//該數(shù)值一般在4.0-5.0之間。因傳感器不同而定。
//+0.05是為了四舍五入百分位
Buzzer= 1; //關(guān)閉警報
}
// elseif(HX711_Buffer < Weight_Maopi - 30)
// {
// Buzzer= 0; //負(fù)重量報警
// }
// 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, 下載次數(shù): 58)
下載附件
2020-8-3 17:27 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |