HX711压力检测装置,要实现的功能:实时监测当前压力并通过蓝牙串口将数据传输至手机,采用独立按键调节压力报警值,人机交互界面采用LCD12864控制内核为STC89C52RC;接下来我们来说说材料清单控制主板:STC89C52RC最小系统板 LCD12864 蜂鸣器 HC-05蓝牙模块 洞洞板 四个HX711芯片 四个HX711压力传感器在此之前我们还需要学习一下HX711的压力转换,计算相应线性系数以便获取高精度的重量;

HX711AD模块两个IO口, 分别对应SCK,DOUT。当DOUT=1, 说明ad转换器还没准备好输出数据。当DOUT=0,说明准备好了,然后就得对SCK输入脉冲,且输入一次脉冲,DOUT就输出一位数据(二进制,数据从最高位到最低位依次输出),24个脉冲后,再根据SCK的脉冲数对下次工作方式进行选择。我们选用A通道,128增益。

工作模式的选择HX711AD模块有上图三种工作模式,A通道128增益、B通道32增益、A通道64增益。对应不同的增益,其满额度差分输入信号幅值也不同。(还没学模电数电,不知道这是个什么东东)根据相关的文档以及网上的一些文章,不管选哪个通道的多少增益,其数据处理是类似的,只是不同的增益对应不同的放大倍数。具体到程序编写上,即为两处改动。
详细讲解程序计算原理
步骤 1 :如何计算传感器供电电压
HX711 可以在产生 VAVDD 和 AGND 电压,即 711 模块上的 E+ 和 E- 电压。该电压通过 VAVDD=VBG(R1 +R2 )/R2 计算。VBG 为模块儿基准电压 1.25v,R1 = 20K,R2 = 8.2K。 因此得出 VAVDD = 4.3V
(为了降低功耗,该电压只在采样时刻才有输出, 因此用万用表读取的值可能低于 4.3v ,因为万用表测量的是有效值。 )
步骤 2 :如何计算 AD 输出最大值
在 4.3V 的供电电压下 5Kg 的传感器最大输出电压是 4.3v1mv/V = 4.3mV
经过 128 倍放大后,最大电压为 4.3mV
128 = 550.4mV
经过 AD 转换后输出的24bit数字值最大为:550.4mV*2^ 24 /4.3V ≈ 2147483
步骤 3 :程序中数据如何转换
程序中通过HX711_Buffer = HX711_Read(); 获取当前采样的 AD 值,最大 2147483 ,存放在 long 型变量 HX711_Buffer 中,因 long 型变量计算速率和存放空间占用资源太多,固除以100 ,缩放为 int 型,便于后续计算。
Weight_Shiwu = HX711_Buffer/100;
Weight_Shiwu 最大为 21474 。
步骤 4 :如何将 AD 值反向转换为重力值。
假设重力为 A Kg ,( x<5Kg ) , 测量出来的 AD 值为 y
5Kg 传感器输出,发送给 AD 模块儿的电压为 A Kg * 4.3mV / 5Kg = 0.86A mV
经过 128 倍增益后为 128 * 0.86A = 110.08AmV
转换为 24bit 数字信号为 110.08A mV * 2 ^24 / 4.3V = 429496.7296A
所以 y = 429496.7296A /100 = 4294.967296 A
因此得出 A = (y / 4294.967296) Kg ≈ y / 4.30 g
所以得出程序中计算公式
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.30+0.05);
//+0.05 是为了四舍五入百分位
特别注意:
因为不同的传感器斜率特性曲线不一样,因此,每一个传感器需要矫正这里的 4.30 这个除数。当发现测出来的重量偏大时,增加该数值。如果测试出来的重量偏小时,减小改数值。该数值一般在 4.0-5.0 之间。因传感器线性斜率不同而定。每个传感器都要校准。如果传感器测量值偏大,则需改大该数值,若传感器测量值偏小,则需改小该数值。

使用A通道的arduino程序如下:

/以下为函数声明
extern unsigned long HX711_Read(void);
extern long Get_Weight();
///变量定义
float Weight = 0;
int HX711_SCK =2;   ///     作为输出口
int HX711_DT= 3;    ///     作为输入口
long HX711_Buffer = 0;
long Weight_Maopi = 0, Weight_Shiwu = 0;#define GapValue 405       ///该值需校准 每个传感器都有所不同void setup()
{  //初始化HX711的两个io口
pinMode(HX711_SCK, OUTPUT);  ///SCK 为输出口 ---输出脉冲
pinMode(HX711_DT, INPUT); ///  DT为输入口  ---读取数据Serial.begin(9600);Serial.print("Welcome to use!\n");delay(3000);    ///延时3秒  //获取毛皮重量Weight_Maopi = HX711_Read();
}void loop()    ///  一直循环{}内容  ----- 同while(1){xxx}
{Weight = Get_Weight();  //计算放在传感器上的重物重量Serial.print(float(Weight/1000),3);  //串口显示重量,3意为保留三位小数Serial.print(" kg\n"); //显示单位Serial.print("\n");  //显示单位delay(2000);  //延时2s 两秒读取一次传感器所受压力
}//称重函数
long Get_Weight()
{HX711_Buffer = HX711_Read();    ///读取此时的传感器输出值Weight_Shiwu = HX711_Buffer;     ///将传感器的输出值储存Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。Weight_Shiwu = (long)((float)Weight_Shiwu/GapValue);    //AD值转换为重量(g)return Weight_Shiwu;
}
unsigned long HX711_Read(void) //选择芯片工作方式并进行数据读取
{unsigned long count;   ///储存输出值  unsigned char i;     high--高电平 1  low--低电平 0  digitalWrite(HX711_DT, HIGH);     digitalWrite作用: DT=1;delayMicroseconds(1); 延时 1微秒  digitalWrite(HX711_SCK, LOW);    digitalWrite作用: SCK=0;delayMicroseconds(1);   延时 1微秒  count=0; while(digitalRead(HX711_DT));    //当DT的值为1时,开始ad转换for(i=0;i<24;i++)   ///24个脉冲,对应读取24位数值{ digitalWrite(HX711_SCK, HIGH);    digitalWrite作用: SCK=0;/// 利用 SCK从0--1 ,发送一次脉冲,读取数值delayMicroseconds(1);  延时 1微秒  count=count<<1;    ///用于移位存储24位二进制数值digitalWrite(HX711_SCK, LOW);    digitalWrite作用: SCK=0;为下次脉冲做准备delayMicroseconds(1);if(digitalRead(HX711_DT))    ///若DT值为1,对应count输出值也为1count++; } digitalWrite(HX711_SCK, HIGH);    ///再来一次上升沿 选择工作方式  128增益count ^= 0x800000;   //按位异或  不同则为1   0^0=0; 1^0=1;
///对应二进制  1000 0000 0000 0000 0000 0000  作用为将最高位取反,其他位保留原值delayMicroseconds(1);digitalWrite(HX711_SCK, LOW);      /// SCK=0;     delayMicroseconds(1);  延时 1微秒  return(count);     ///返回传感器读取值
}

对于51、stm32等单片机的程序,只需做出简单修改就可。
HX711 AD 转换的计算详细可参考知乎
https://zhuanlan.zhihu.com/p/93838734?utm_source=qq&utm_medium=social&utm_oi=1000773993053503488

知乎,详细AD 转换讲解
接下来我们就进入正题,进行主函数的编程;此次工程用到串口通信、EEPROM存入数值、AD转换以及LCD12864并行通信;
所包含的库函数(自己建立的库函数)
#include <12864.h>
#include <main.h>
#include <HX711.h>
#include <eeprom.h>
#include <USART.h>

#include<reg52.h>
#include <intrins.h>
#include <string.h>
#include <stdio.h>
#include <12864.h>
#include <main.h>
#include <HX711.h>
#include <eeprom.h>
#include <USART.h>
/********************************************************************
*函数名: key_pros()
* 功能 按键扫描
* ???? : ??
* ??? : ??
***********************************************************************/
void key_pros
{if(K1==0)    {if(K1==0)    //加{delay1(100);if(K1==0){I++;delay1(100);if(I>99999){I=50;beep=~beep;delay1(70);beep=1;}}while(!K1);}}if(K2==0)    //减{delay1(100);if(K2==0){I--;delay1(100);if(I<0){I=50;beep=~beep;delay1(70);beep=1;}}while(!K2);}
}
/********************************************************************
* 函数名 : delay()
* 功能 : 延迟100us *t子函数
* ???? : t
* ??? : ??
***********************************************************************/
void delay(unsigned int t)
{unsigned int p,j;for(p=0; p<t;  p++)for(j=0; j<10; j++);
}
/********************************************************************
* 函数名 : Timer0_ISR (void) interrupt 1 using 0()
* 功能  : 定时器0中断
* ???? : ??
* ??? : ??
***********************************************************************/
void Timer0_ISR (void) interrupt 1 using 0
{uchar Counter;TL0 = 0xb0;TH0 = 0x3c;     //???????????Counter ++;//?0.5???????????if (Counter >= 10){FlagTest = 1;Counter = 0;}
}
/******************把数据保存到eeprom******************/
void write_eeprom()
{SectorErase(0x1000);GapValue1=GapValue&0x00ff;byte_write(0x2000, GapValue1);GapValue1=(GapValue&0xff00)>>8;byte_write(0x2001, GapValue1);byte_write(0x2060, a_a);
}
/******************读取数据从eeprom中*****************/
void read_eeprom()
{GapValue   = byte_read(0x2001);GapValue   = (GapValue<<8)|byte_read(0x2000);a_a      = byte_read(0x2060);
}
/***************开机自检初始化****************/
void init_eeprom()
{read_eeprom();  //先读if(a_a != 1)  {GapValue  = 210;a_a = 1;write_eeprom();    //保存}
}
/********************************************************************
* 函数名 : keydat()
* 功能  : 报警键值
* ???? : ??
* ??? : ??
***********************************************************************/
void keydata()
{   int m;for(m=0;m<5;m++){if(m==0)TX[7]=I/10000+0x30;  //数据处理对应ASCIIelse if(m==1)TX[8]=I/10000%1000+0x30;else if(m==2)TX[9]=I%1000/100+0x30;else if(m==3)TX[10]=I%100/10+0x30;elseTX[11]=I%10+0x30;}}/********************************************************************
* 函数名: Test()
* 功能  : 显示子函数
* ???? : ??
* ??? : ??
***********************************************************************/
void Test()
{  LCD12864_COM_Write(0x80);   //设置指针LCD12864_write_word("    PRESSURE");    //显示内容LCD12864_COM_Write(0x90);   //设置指针LCD12864_write_word(pro1);   //显示内容LCD12864_COM_Write(0x88);   //设置指针LCD12864_write_word(pro);  //显示内容LCD12864_COM_Write(0x98);   //设置指针LCD12864_write_word(TX);    //显示内容
}
/********************************************************************
* 函数名: TEST1()
* 功能  : 开机画面
* ???? : ??
* ??? : ??
***********************************************************************/
void TEST1()
{  LCD12864_COM_Write(0x80);   //设置指针LCD12864_write_word("    PRESSURE");    //显示内容?LCD12864_COM_Write(0x90);   //设置指针LCD12864_write_word("    压力检测");   //显示内容LCD12864_COM_Write(0x88);   //设置指针LCD12864_write_word("Welcome to use");  //显示内容LCD12864_COM_Write(0x98);   //设置指针LCD12864_write_word("    欢迎使用");    //显示内容
}
/********************************************************************
* 函数名: TEST1()
* 功能  : 清屏函数
* ???? : ??
* ??? : ??
***********************************************************************/
void TEST0()
{  LCD12864_COM_Write(0x80);   //设置指针LCD12864_write_word("                   ");   LCD12864_COM_Write(0x90);   //设置指针LCD12864_write_word("                   ");   LCD12864_COM_Write(0x88);   //设置指针LCD12864_write_word("                   ");  LCD12864_COM_Write(0x98);   //设置指针LCD12864_write_word("                   ");
}
/********************************************************************
* 函数名: datat()
* 功能  : 实际重量转换 存放数组
* ???? : ??
* ??? : ??
***********************************************************************/
void datat()
{pro1[2] = Weight_Shiwu1/10000 + 0X30;pro1[3] = Weight_Shiwu1/10000%1000 + 0X30;pro1[4] = Weight_Shiwu1%1000/100 + 0X30;pro1[5] = Weight_Shiwu1%100/10 + 0X30;pro1[6] = Weight_Shiwu1%10 + 0x30;pro1[7]='g';pro1[10] = Weight_Shiwu2/10000 + 0X30;pro1[11] = Weight_Shiwu2/10000%1000 + 0X30;pro1[12] = Weight_Shiwu2%1000/100 + 0X30;pro1[13] = Weight_Shiwu2%100/10 + 0X30;pro1[14] = Weight_Shiwu2%10 + 0x30;pro1[15]='g';pro[2] = Weight_Shiwu/10000 + 0X30;pro[3] = Weight_Shiwu/10000%1000 + 0X30;pro[4] = Weight_Shiwu%1000/100 + 0X30;pro[5] = Weight_Shiwu%100/10 + 0X30;pro[6] = Weight_Shiwu%10 + 0x30;pro[7]='g';pro[10] = Weight_Shiwu3/10000 + 0X30;;pro[11] = Weight_Shiwu3/10000%1000 + 0X30;pro[12] = Weight_Shiwu3%1000/100 + 0X30;pro[13] = Weight_Shiwu3%100/10 + 0X30;pro[14] = Weight_Shiwu3%10 + 0X30;pro[15]='g';pro[18]='\r';pro[19]='\n';  //串口显示换行}/********************************************************************
* 函数名: send()
* 功能 : 串口发送函数
* ???? : ??
* ??? : ??
***********************************************************************/
void send()
{int G;for(G=0;G<16 ;G++){SBUF=pro1[G];delay1(20); //等待发送完毕}for(G=0;G<20 ;G++){SBUF=pro[G];delay1(20); //等待发送完毕}}/********************************************************************
*函数名: Main()
* 功能  : 主函数
* ???? : ??
* ??? : ??
***********************************************************************/
void Main()
{ init_eeprom();  //初始化eepromInit();LCD12864_Reset();        //液晶初始化LCD12864_HAIZI_SET();       //设计为普通模式TEST1();             //开机画面Delay_ms1(1000);   //等待Get_Maopi();    //获取毛皮重量Delay_ms1(100);   //等待Get_Maopi();    //获取毛皮重量Delay_ms1(100);   //等待Get_Maopi();    //获取毛皮重量Delay_ms1(100);   //等待Get_Maopi();    //获取毛皮重量多获取几次,数值更加精确TEST0();while(1){ key_pros();  //按键检测keydata();  //键值处理Delay_ms1(100); //等待Get_Weight(); //和获取重量datat();  //数据存放send();   //发送至串口Test();   //LCD12864显示delay(30);  //等待显示完全}
}/********************************************************************
* 函数名: Get_Weight()
* 功能  :获取重量及报警
* ???? : ??
* ??? : ??
***********************************************************************/
void Get_Weight()
{Weight_Shiwu = HX711_Read00();Weight_Shiwu = Weight_Shiwu - Weight_Maopi;      //获取1净重Weight_Shiwu1 = HX711_Read01();Weight_Shiwu1 = Weight_Shiwu1 - Weight_Maopi1;  //获取2净重Weight_Shiwu2 = HX711_Read02();Weight_Shiwu2 = Weight_Shiwu2 - Weight_Maopi2;  //获取3净重Weight_Shiwu3 = HX711_Read03();Weight_Shiwu3 = Weight_Shiwu3 - Weight_Maopi3;  //获取4净重if(Weight_Shiwu > 0||Weight_Shiwu1 > 0||Weight_Shiwu2 > 0||Weight_Shiwu3 > 0)   { Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);  //计算实际重量1Weight_Shiwu1 = (unsigned int)((float)Weight_Shiwu1/GapValue);  //计算实际重量2                Weight_Shiwu2 = (unsigned int)((float)Weight_Shiwu2/GapValue);  //计算实际重量3Weight_Shiwu3 = (unsigned int)((float)Weight_Shiwu3/GapValue);  //计算实际重量4               if(Weight_Shiwu > I||Weight_Shiwu1 > I||Weight_Shiwu2 > I||Weight_Shiwu3 > I)  //判断是否超出键值 选择报警{beep = 0; }else{beep = 1;}}else{Weight_Shiwu = 0;Weight_Shiwu1 = 0;Weight_Shiwu2 = 0;Weight_Shiwu3 = 0;}
}
/********************************************************************
* 函数名 : Get_Maopi()
* 功能 : 获取毛皮
* ???? : ??
* ??? : ??
***********************************************************************/
void Get_Maopi()
{Weight_Maopi = HX711_Read00();Weight_Maopi1 = HX711_Read01(); Weight_Maopi2 = HX711_Read02();Weight_Maopi3 = HX711_Read03();
}
/********************************************************************
* 函数名 : Delay_ms1(unsigned int n)
* 功能  : MS延迟(12M晶振下)
* ???? : ??
* ??? : ??
***********************************************************************/
void Delay_ms1(unsigned int n)
{unsigned int  i,j;for(i=0;i<n;i++)for(j=0;j<123;j++);
}

MAIN.h

#ifndef __MAIN_H__
#define __MAIN_H__
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
typedef unsigned char  U8;
typedef unsigned int   U16;
sbit beep=P1^0;
sbit K1=P2^0;  //+
sbit K2=P2^1;  //-
int I=50;
unsigned char a=12;
U8 pro[]={"3:      4:"};
U8 pro1[]={"1:      2:"};
U8 TX[]={"报警值      g"};
U8  count, count_r=0;
uint GapValue,GapValue1;
volatile bit ClearWeighFlag = 0; //????????????λ?????0?
volatile bit FlagTest = 0;  //????????????0.5????λ????????0
unsigned long Weight_Maopi = 0;// ???1???
unsigned long Weight_Maopi_0 = 0;
unsigned long Weight_Maopi1 = 0;//???2???
unsigned long Weight_Maopi_1 = 0;
unsigned long Weight_Maopi2 = 0;//???2???
unsigned long Weight_Maopi3 = 0;//???2???
unsigned int qupi=0;
long Weight_Shiwu = 0;
long Weight_Shiwu1 = 0;
long Weight_Shiwu2 = 0;
long Weight_Shiwu3= 0;
extern void Delay_ms1(unsigned int n);
extern void Get_Maopi();
//extern void Get_Maopi1();
extern void Get_Weight();
//extern void Get_Weight1();
void key_pros();
void Delay_ms1(unsigned int n);

接下来展示一下自己编写的库函数,由于代码过多就不会展示.h文

件,只要在.h文件中
#ifndef HX711_H
#define _HX711_H_在这里定义自己的库函数名称,包含进去就行,就是套公式啦


… 在中间声明一下自己的写的函数就好

#endif 再来个结尾就结束啦 这大概就.h文件编写的要求,就类似于公式,套进去就好

蓝牙串口

#include<USART.h>void delay1(int xms)
{int m,n;for(m=xms;m>=0;m--)for(n=110;n>=0;n--);
}
void Init()
{ES=0;SCON = 0x50;    //工作方式1 设置波特率9600bps 允许接收TMOD = 0x20;   //定时器T1选择工作方式2TH1=TL1=0xFD;PCON &= 0x7f;TR1 = 1;          // 开启计时器TI = 0;RI = 0;     ES = 1;EA = 1;           // 打开总中断  }
void Timer0_Init()
{ET0 = 1;        //????????0?ж?TMOD = 1;       //???????????????TL0 = 0xb0;     TH0 = 0x3c;     //???????????TR0 = 1;        //????????
}

12864.c

#include "12864.H"
void LCD12864_WaitIdle()
{unsigned char i;LCD12864_DA_PORT = 0xff;LCD12864_RS_PORT = 0;LCD12864_RW_PORT = 1;LCD12864_E_PORT = 1;while((LCD12864_DA_PORT&0x80)==1); /*???BF ???1*/LCD12864_E_PORT = 0;for(i=0;i<5;i++);
}void LCD12864_COM_Write( unsigned char com_da)
{LCD12864_WaitIdle();LCD12864_RS_PORT = 0;LCD12864_RW_PORT = 0;LCD12864_DA_PORT = com_da;LCD12864_E_PORT = 1;_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCD12864_E_PORT = 0;
}void LCD12864_NoWaitIdle_COM_Write(unsigned char com_da)
{LCD12864_RS_PORT = 0;LCD12864_RW_PORT = 0;LCD12864_DA_PORT = com_da;LCD12864_E_PORT = 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCD12864_E_PORT = 0;
}void LCD12864_Data_Write(unsigned char da)
{LCD12864_WaitIdle(); /*???????*/LCD12864_RS_PORT = 1;LCD12864_RW_PORT = 0;LCD12864_DA_PORT = da;LCD12864_E_PORT = 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LCD12864_E_PORT = 0;
}void LCD12864_write_word(unsigned char *s)
{while(*s>0){LCD12864_Data_Write(*s);s++;}
}void lcd_delay_ms(unsigned char x)
{unsigned char j;while(x--){for(j=0;j<125;j++){;}}
}
void LCD12864_Reset()
{lcd_delay_ms(100); /*????????LCD?????λ???*/LCD12864_NoWaitIdle_COM_Write(0x30); /*???8λ??????*/lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x30); /*???8λ??????*/lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x0c); /*??????????????*/lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x01); /*???????*/lcd_delay_ms(30);LCD12864_NoWaitIdle_COM_Write(0x06); /*DDRAM????????????AC????1*/lcd_delay_ms(30);
}
void LCD12864_HAIZI_SET()
{LCD12864_COM_Write(0x30);lcd_delay_ms(10);LCD12864_COM_Write(0x30);lcd_delay_ms(10);
}void Delay_ms(unsigned int n)
{unsigned int  i,j;for(i=0;i<n;i++)for(j=0;j<123;j++);
}

HX711.c

#include <HX711.h>
void Delay__hx711_us(void)
{_nop_();_nop_();
}unsigned long HX711_Read00(void) //????128
{unsigned long count; unsigned char i; HX711_DOUT00=1; Delay__hx711_us();HX711_SCK00=0; count=0; while(HX711_DOUT00); for(i=0;i<24;i++){ HX711_SCK00=1; count=count<<1; HX711_SCK00=0; if(HX711_DOUT00)count++; } HX711_SCK00=1; count=count^0x800000;//??25???????????????????????Delay__hx711_us();HX711_SCK00=0;  return(count);
}
unsigned long HX711_Read01(void) //????128
{unsigned long count; unsigned char i; HX711_DOUT01=1; Delay__hx711_us();HX711_SCK01=0; count=0; while(HX711_DOUT01); for(i=0;i<24;i++){ HX711_SCK01=1; count=count<<1; HX711_SCK01=0; if(HX711_DOUT01)count++; } HX711_SCK01=1; count=count^0x800000;//??25???????????????????????Delay__hx711_us();HX711_SCK01=0;  return(count);
}
unsigned long HX711_Read02(void) //????128
{unsigned long count; unsigned char i; HX711_DOUT02=1; Delay__hx711_us();HX711_SCK02=0; count=0; while(HX711_DOUT02); for(i=0;i<24;i++){ HX711_SCK02=1; count=count<<1; HX711_SCK02=0; if(HX711_DOUT02)count++; } HX711_SCK02=1; count=count^0x800000;//??25???????????????????????Delay__hx711_us();HX711_SCK02=0;  return(count);
}
unsigned long HX711_Read03(void) //????128
{unsigned long count; unsigned char i; HX711_DOUT03=1; Delay__hx711_us();HX711_SCK03=0; count=0; while(HX711_DOUT03); for(i=0;i<24;i++){ HX711_SCK03=1; count=count<<1; HX711_SCK03=0; if(HX711_DOUT03)count++; } HX711_SCK03=1; count=count^0x800000;//??25???????????????????????Delay__hx711_us();HX711_SCK03=0;  return(count);
}

接下来要动动我们的小手来准备搭建电路啦;好了这篇文章就和大家分享到这里
谢谢 有不对的望大佬们指正

本次做的压力报警完工,代码以测试,运行平稳

![如图所示蓝牙界面](

https://img-blog.csdnimg.cn/20200516232939851.jpg?x-oss

-process=im

age/watermark,type_ZmFuZ3poZW5na澳景GVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2ODM5NA==,size_16,color_FFFFFF,t_70#pic_center)

HX711 压力调试 51程序相关推荐

  1. gdb汇编调试c程序

    关于GDB调试C程序的常用命令与手段就不多说了,这里主要介绍一下如何对C程序做到汇编指令级别的调试. 首先是获取汇编代码,这可以通过disassemble命令或x命令或类似的命令: 1 2 3 4 5 ...

  2. 【php】使用gdb调试php程序

    1.简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.同时GDB也具有例如d ...

  3. 用 GDB 调试Linux程序及有用技巧

    用 GDB 调试Linux程序及有用技巧(转) armlinux   2008-06-19 10:48   阅读91   评论0 字号: 大大  中中  小小 GNU的调试器称为gdb,该程序是一个交 ...

  4. Proteus使用教程并仿真51程序——LED流水灯

    目录 一.Proteus简介 二.安装Proteus软件 三.熟悉Proteus软件 1.如何创建工程 2.界面简介 四.51程序设计和仿真 1.绘制原理图 1)添加元件 2)摆放元件 2.编写51程 ...

  5. Protues的一个简单51程序仿真

    Protues的一个简单51程序仿真 一.组装原件步骤 二.代码编写 三.仿真结果 四.总结 一.组装原件步骤 1.创建一个新的工程 2.找原件 3.将各元件连接起来,构成原理图 二.代码编写 1.打 ...

  6. 51单片机教程 第一个51程序 :点亮一个发光二极管

    化作尘百度网盘下载中心:https://pan.baidu.com/s/1eLnnSXwbFi8o0RESJYFPSQ 提取码:uxir 取走点赞哦~ keil+proteus 第一个51程序 :让一 ...

  7. delve应该安装到哪_使用 Delve 代替 Println 来调试 Go 程序 | Linux 中国

    Delve 是能让调试变成轻而易举的事的万能工具包.来源:https://linux.cn/article-12400-1.html 作者:Gaurav Kamathe 译者:Xiaobin.Liu ...

  8. 如何使用Keil uVision2软件调试单片机程序

    本文转载自: http://www.cnblogs.com/ugoer/archive/2007/05/01/171986.html 作者:ugoer 转载请注明该声明. 先说一个概念:调试,在企业程 ...

  9. jlink怎么调试linux程序_linux下用eclipse + GDBserver + JLINK 在线调试(ARM11)

    (一)环境: 目标版:TINY6410 OS:centOS6.5 IDE:eclipse luna CDT:v8.3 GDB:V7.5 (二)环境监理 1.安装cenntos:参考其他相关文章,这里重 ...

  10. 使用 GDB 调试多进程程序

    使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...

最新文章

  1. 中石油2018年秋季C语言 试卷答案,[石油华东]《数据采集系统》2018年秋季学期在线作业...
  2. v8学习笔记(二) Handle和HandleScope机制
  3. 使用Template时 typename 关键字的用法
  4. [css] css中兼容ie浏览器的前缀是什么?
  5. Ubuntu查看CPU和MEM的使用率
  6. 服务器图片加载慢_页面提高性能利器_懒加载
  7. 过滤代码中的html标签
  8. foobar android 目录,最强手机音乐播放器?Foobar2K安卓版体验
  9. php毕设周记_(完整版)毕设周记
  10. 小学计算机房荷载,资深暖通设计师总结的常用参数参考值,新手们都说感谢大神支招...
  11. Python华氏摄氏度的转换
  12. VMware 10M网卡变1000M兆网卡
  13. 阿里开女性创业者大会 马云:世界因为女性而美好
  14. android远程控制电视,手机如何远程控制电视
  15. ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
  16. 深圳医疗器械帮;一个军团的诞生
  17. 联想小新air pro 13的 win10和ubuntu17.10双系统安装,彻底解决找不到磁盘问题。
  18. 学习笔记:使用requests+Beautiful4爬取优美图库
  19. 小提琴统计图_【统计图】如何绘制小提琴图?
  20. 计算机英语构词法,计算机英语术语的构词方法及其汉译方法

热门文章

  1. zoj3987—Numbers(贪心)
  2. HTML5 之 Link 标签
  3. 年薪15万的80后小本科:只要6分钟,告诉你少走6年弯路
  4. 是时候重估“返利网”的市场价值了
  5. MIT/GNU Scheme用户手册(八) Edwin
  6. 多个物体模型快速制作爆炸图?试一试ThingJS
  7. 原生js实现图片爆炸效果,图片轮播
  8. 从心理学角度看,为什么我们的业务规划总是过于乐观?
  9. 面试技巧顶个P --leo谈应届生求职 2
  10. android 手指滑动顺时针逆时针判断