标题:
51单片机的HX711压感模块源程序资料(5kg电子秤)
[打印本页]
作者:
Mr.Bruce
时间:
2018-8-13 17:59
标题:
51单片机的HX711压感模块源程序资料(5kg电子秤)
51的HX711压感模块资料
单片机源程序如下:
#include "main.h"
#include "HX711.h"
#include "uart.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned int
unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
long Weight_Shiwu = 0;
unsigned char flag = 0;
bit Flag_ERROR = 0;
bit Flag_send = 0;
sbit speak= P3^5;
unsigned char a;
//校准参数
//因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。
//当发现测试出来的重量偏大时,增加该数值。
//如果测试出来的重量偏小时,减小改数值。
//该值可以为小数
#define GapValue 390
//****************************************************
//主函数
//****************************************************
void main()
{
Uart_Init();
Send_Word("Welcome to use!\n");
Init_LCD1602();
LCD1602_write_com(0x80);
LCD1602_write_word("Weight");
Delay_ms(1000); //延时,等待传感器稳定
Get_Maopi(); //称毛皮重量
while(1)
{
if(RI == 1)
{
a=SBUF;//获取接收数据
RI = 0; //
switch (a)
{
case 'a':
Get_Weight();
Send_ASCII(Weight_Shiwu/1000 + 0X30);
Send_ASCII(Weight_Shiwu%1000/100 + 0X30);
Send_ASCII(Weight_Shiwu%100/10 + 0X30);
Send_ASCII(Weight_Shiwu%10 + 0X30);
Send_Word("g-");
break;
case 'b':
Get_Maopi();
break;
case 'c':
Flag_send=1;
break;
case 'd':
Flag_send=0;
break;
}
}
Get_Weight(); //称重
Scan_Key();
//显示当前重量
if( Flag_ERROR == 1)
{
Send_Word("ERROR\n");
LCD1602_write_com(0x80+0x40);
LCD1602_write_word("ERROR ");
speak=0;
}
else
{
speak=1;
LCD1602_write_com(0x80+0x40);
LCD1602_write_data(Weight_Shiwu/1000 + 0X30);
LCD1602_write_data(Weight_Shiwu%1000/100 + 0X30);
LCD1602_write_data(Weight_Shiwu%100/10 + 0X30);
LCD1602_write_data(Weight_Shiwu%10 + 0X30);
LCD1602_write_word(" g");
if( Flag_send == 1)
{
Send_ASCII(Weight_Shiwu/1000 + 0X30);
Send_ASCII(Weight_Shiwu%1000/100 + 0X30);
Send_ASCII(Weight_Shiwu%100/10 + 0X30);
Send_ASCII(Weight_Shiwu%10 + 0X30);
Send_Word("g-");
}
}
}
}
//扫描按键
void Scan_Key()
{
if(KEY1 == 0)
{
Delay_ms(5);
if(KEY1 == 0)
{
while(KEY1 == 0);
Get_Maopi();
}
}
}
//****************************************************
//称重
//****************************************************
void Get_Weight()
{
Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重
if(Weight_Shiwu > 0)
{
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue); //计算实物的实际重量
if(Weight_Shiwu > 5000) //超重报警
{
Flag_ERROR = 1;
}
else
{
Flag_ERROR = 0;
}
}
else
{
Weight_Shiwu = 0;
// Flag_ERROR = 1; //负重报警
}
}
//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
Weight_Maopi = HX711_Read();
}
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
复制代码
所有资料51hei提供下载:
5kg电子秤程序.rar
(76.68 KB, 下载次数: 55)
2018-8-13 17:59 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
shoyoyang
时间:
2019-7-30 16:14
我想请问一下 Send_ASCII(Weight_Shiwu/1000 + 0X30);这段输出的数值是ASCII格式还是正常数值格式?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1