HX711 压力调试 51程序
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.3mV128 = 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程序相关推荐
- gdb汇编调试c程序
关于GDB调试C程序的常用命令与手段就不多说了,这里主要介绍一下如何对C程序做到汇编指令级别的调试. 首先是获取汇编代码,这可以通过disassemble命令或x命令或类似的命令: 1 2 3 4 5 ...
- 【php】使用gdb调试php程序
1.简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.同时GDB也具有例如d ...
- 用 GDB 调试Linux程序及有用技巧
用 GDB 调试Linux程序及有用技巧(转) armlinux 2008-06-19 10:48 阅读91 评论0 字号: 大大 中中 小小 GNU的调试器称为gdb,该程序是一个交 ...
- Proteus使用教程并仿真51程序——LED流水灯
目录 一.Proteus简介 二.安装Proteus软件 三.熟悉Proteus软件 1.如何创建工程 2.界面简介 四.51程序设计和仿真 1.绘制原理图 1)添加元件 2)摆放元件 2.编写51程 ...
- Protues的一个简单51程序仿真
Protues的一个简单51程序仿真 一.组装原件步骤 二.代码编写 三.仿真结果 四.总结 一.组装原件步骤 1.创建一个新的工程 2.找原件 3.将各元件连接起来,构成原理图 二.代码编写 1.打 ...
- 51单片机教程 第一个51程序 :点亮一个发光二极管
化作尘百度网盘下载中心:https://pan.baidu.com/s/1eLnnSXwbFi8o0RESJYFPSQ 提取码:uxir 取走点赞哦~ keil+proteus 第一个51程序 :让一 ...
- delve应该安装到哪_使用 Delve 代替 Println 来调试 Go 程序 | Linux 中国
Delve 是能让调试变成轻而易举的事的万能工具包.来源:https://linux.cn/article-12400-1.html 作者:Gaurav Kamathe 译者:Xiaobin.Liu ...
- 如何使用Keil uVision2软件调试单片机程序
本文转载自: http://www.cnblogs.com/ugoer/archive/2007/05/01/171986.html 作者:ugoer 转载请注明该声明. 先说一个概念:调试,在企业程 ...
- jlink怎么调试linux程序_linux下用eclipse + GDBserver + JLINK 在线调试(ARM11)
(一)环境: 目标版:TINY6410 OS:centOS6.5 IDE:eclipse luna CDT:v8.3 GDB:V7.5 (二)环境监理 1.安装cenntos:参考其他相关文章,这里重 ...
- 使用 GDB 调试多进程程序
使用 GDB 调试多进程程序 来源 https://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/index.html GDB 是 linux 系统上常 ...
最新文章
- 中石油2018年秋季C语言 试卷答案,[石油华东]《数据采集系统》2018年秋季学期在线作业...
- v8学习笔记(二) Handle和HandleScope机制
- 使用Template时 typename 关键字的用法
- [css] css中兼容ie浏览器的前缀是什么?
- Ubuntu查看CPU和MEM的使用率
- 服务器图片加载慢_页面提高性能利器_懒加载
- 过滤代码中的html标签
- foobar android 目录,最强手机音乐播放器?Foobar2K安卓版体验
- php毕设周记_(完整版)毕设周记
- 小学计算机房荷载,资深暖通设计师总结的常用参数参考值,新手们都说感谢大神支招...
- Python华氏摄氏度的转换
- VMware 10M网卡变1000M兆网卡
- 阿里开女性创业者大会 马云:世界因为女性而美好
- android远程控制电视,手机如何远程控制电视
- ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
- 深圳医疗器械帮;一个军团的诞生
- 联想小新air pro 13的 win10和ubuntu17.10双系统安装,彻底解决找不到磁盘问题。
- 学习笔记:使用requests+Beautiful4爬取优美图库
- 小提琴统计图_【统计图】如何绘制小提琴图?
- 计算机英语构词法,计算机英语术语的构词方法及其汉译方法