HX711壓力檢測,用LCD1602,包含app的e4a文件源碼
通過51單片機檢測壓力,將數(shù)據(jù)通過編寫的藍牙APP發(fā)送到手機顯示,同時手機可以控制設定的壓力值。
電路原理圖如下:
原理圖.PNG (48.82 KB, 下載次數(shù): 0)
下載附件
2025-5-23 19:28 上傳
截圖04.png (93.69 KB, 下載次數(shù): 0)
下載附件
2025-5-23 19:28 上傳
e4a源碼:
截圖03.png (11.15 KB, 下載次數(shù): 0)
下載附件
2025-5-23 19:28 上傳
截圖02.png (9.81 KB, 下載次數(shù): 0)
下載附件
2025-5-23 19:28 上傳
截圖01.png (32.31 KB, 下載次數(shù): 0)
下載附件
2025-5-23 19:28 上傳
制作出來的HX711壓力檢測實物圖如下:
1.jpg (3.77 MB, 下載次數(shù): 0)
下載附件
2025-5-23 19:26 上傳
2.jpg (2.91 MB, 下載次數(shù): 0)
下載附件
2025-5-23 19:26 上傳
3.jpg (3.3 MB, 下載次數(shù): 0)
下載附件
2025-5-23 19:26 上傳
單片機源程序如下:
- #include<reg51.h>
- #include "HX711.h"
- #include "LCD1602.h"
- #include "eeprom52.h"
- // char UART_data;
- // char shuju;
- /**********按鍵定義*********/
- sbit SKY_1=P1^3;//校準
- sbit SKY_2=P1^4;//加
- sbit SKY_3=P1^5;//減
- bit SKY_1_flag=0;//防抖標志位
- bit SKY_2_flag=0;
- bit SKY_3_flag=0;
- sbit SKY_4=P1^6;//減
- /*********蜂鳴器***********/
- sbit BEEP=P1^0;
- /***********稱重定義區(qū)***********/
- unsigned long Weight_Maopi = 0;
- long Weight_Shiwu = 0;
- long Weight_Warn=2000;//報警值
- /********向app發(fā)送數(shù)據(jù)字符串定義區(qū)****/
- uchar see_add=0;//
- bit sendFlag=0;
- uchar saa[13];
- uchar UART_data; //定義串口接收數(shù)據(jù)變量
- //校準參數(shù)
- //因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里這個參數(shù)才能使測量值很準確。
- //當發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值。
- //如果測試出來的重量偏小時,減小改數(shù)值。
- //該值可以為小數(shù)
- #define GapValue 410
- //****************************************************
- //MS延時函數(shù)(12M晶振下測試)
- //****************************************************
- void Delay_ms(unsigned int n)
- {
- unsigned int i,j;
- for(i=0;i<n;i++)
- for(j=0;j<123;j++);
- }
- void sendChar(uchar Value) //發(fā)送一個字節(jié)數(shù)據(jù)
- {
- SBUF = Value;
- while(!TI);
- TI=0;
- }
- void sendAll(uchar *pValue) //發(fā)送一組數(shù)據(jù)
- {
- while((*pValue) != '\0') //如果沒有發(fā)送完畢就繼續(xù)發(fā)
- {
- sendChar(*pValue); //發(fā)送1字節(jié)數(shù)據(jù)
- pValue++; //指向下1個字節(jié)
- }
- }
- //****************************************************
- //獲取毛皮重量
- //****************************************************
- void Get_Maopi()
- {
- Weight_Maopi = HX711_Read();
- }
- //****************************************************
- //稱重
- //****************************************************
- 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 > Weight_Warn) //超重報警
- {
- BEEP = 0;
- }
- else
- {
- BEEP = 1;
- }
- }
- else
- {
- Weight_Shiwu = 0;
- }
-
- }
- //1602顯示函數(shù)
- void dis_play()
- {
- LCD1602_write(0,0x80);
- LCD1602_writebyte("weighting:");
- LCD1602_write(1,Weight_Shiwu/1000 + 0X30);
- LCD1602_write(1,Weight_Shiwu%1000/100 + 0X30);
- LCD1602_write(1,Weight_Shiwu%100/10 + 0X30);
- LCD1602_write(1,Weight_Shiwu%10 + 0X30);
- LCD1602_writebyte("g ");
- LCD1602_write(0,0xc0);
- LCD1602_writebyte("warning: ");
- if(Weight_Warn/1000==0) LCD1602_writebyte("0"); else LCD1602_write(1,Weight_Warn/1000+ 0X30);
- if(Weight_Warn%1000/100==0) LCD1602_writebyte("0"); else LCD1602_write(1,Weight_Warn%1000/100+ 0X30);
- if(Weight_Warn%100/10==0) LCD1602_writebyte("0"); else LCD1602_write(1,Weight_Warn%100/10+ 0X30);
- if(Weight_Warn%10==0) LCD1602_writebyte("0"); else LCD1602_write(1,Weight_Warn%10+ 0X30);
- LCD1602_writebyte("g ");
- }
- //按鍵控制
- void sky_kg()
- {
- if(SKY_1==0||UART_data==0x31)
- {
- UART_data=0;
- if(SKY_1_flag==1)
- {
- SKY_1_flag=0;
- Get_Maopi(); //去皮
- }
- }
- else
- SKY_1_flag=1;
- if(SKY_2==0||UART_data==0x32)
- {
- UART_data=0;
- if(SKY_2_flag==1)
- {
- SKY_2_flag=0;
- Weight_Warn+=100;
- if(Weight_Warn>5000)
- Weight_Warn=5000;
- SectorErase(0x2000);
- byte_write(0x2000,Weight_Warn);
- }
- }
- else
- {
- SKY_2_flag=1;
- }
- if(SKY_3==0||UART_data==0x33)
- {
- UART_data=0;
- if(SKY_3_flag==1)
- {
- SKY_3_flag=0;
- Weight_Warn-=100;
- if(Weight_Warn<0)
- Weight_Warn=0;
- SectorErase(0x2000);
- byte_write(0x2000,Weight_Warn);
- }
- }
- else
- {
- SKY_3_flag=1;
- }
- }
- /***********上電讀取************/
- void eeprom_red()
- {
- Weight_Warn=byte_read(0x2000);
- if(Weight_Warn>5000||Weight_Warn<0)
- Weight_Warn=2000;
- }
- void chushihua()
- {
- TMOD=0X20; //定時器工作方式設計,方式2,自動重裝初值的8位定時器
- TH1=0XFA; //設置波特率4800,此處晶振頻率是按12MHZ計算的
- TL1=0XFA;
- SCON=0X50; //設置串行口工作方式1,串行口允許接收
- PCON=0X80; //波特率加倍
- ES=1; //打開串行口中斷允許位
- EA=1; //打開總中斷
- TR1=1; //開啟定時器
- }
- /********數(shù)據(jù)包發(fā)送函數(shù)**********/
- void steed()
- {
- saa[0]='d';
- saa[1]='a';
- saa[2]='t';
- saa[3]=Weight_Shiwu/1000 + 0X30;
- saa[4]=Weight_Shiwu%1000/100 + 0X30;
- saa[5]=Weight_Shiwu%100/10 + 0X30;
- saa[6]=Weight_Shiwu%10 + 0X30;
- saa[7]=Weight_Warn/1000+0X30;
- saa[8]=Weight_Warn%1000/100 + 0X30;
- saa[9]=Weight_Warn%100/10 + 0X30;
- saa[10]=Weight_Warn%10 + 0X30;
- saa[11]='t';
- saa[12]='a';
- SKY_4=0;
- sendAll(saa);
- }
- /*主函數(shù)*/
- void main()
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
單片機代碼和apk文件e4a文件 51hei附件下載:
信號采集控制器源碼.7z
(5.33 MB, 下載次數(shù): 0)
2025-5-23 19:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|