找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4278|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)HX711+1KG體重秤程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:495367 發(fā)表于 2019-3-24 14:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
HX711+1KG程序

單片機(jī)源程序如下:
  1. #include "main.h"
  2. #include "HX711.h"
  3. #include "uart.h"
  4. #include "LCD1602.h"
  5. unsigned long HX711_Buffer = 0;
  6. unsigned long Weight_Maopi = 0;
  7. long Weight_Shiwu = 0;
  8. unsigned char flag = 0;
  9. bit Flag_ERROR = 0;

  10. //校準(zhǔn)參數(shù)
  11. //因?yàn)椴煌膫鞲衅魈匦郧不是很一致,因此,每一個(gè)傳感器需要矯正這里這個(gè)參數(shù)才能使測量值很準(zhǔn)確。
  12. //當(dāng)發(fā)現(xiàn)測試出來的重量偏大時(shí),增加該數(shù)值。
  13. //如果測試出來的重量偏小時(shí),減小改數(shù)值。
  14. //該值可以為小數(shù)
  15. #define GapValue 1960//不同量程的傳感器此參數(shù)值大小不同,參數(shù)值的推導(dǎo)參考本店提供的原理教程說明部分
  16. //****************************************************
  17. //主函數(shù)
  18. //****************************************************
  19. void main()
  20. {
  21.     Uart_Init();
  22.     Send_Word("Welcome to use!\n");         //串口初始化輸出內(nèi)容
  23.         Init_LCD1602();
  24.         LCD1602_write_com(0x80);
  25.         LCD1602_write_word("Welcome to use!");        //液晶初始化界面顯示
  26.         Delay_ms(3000);                 //延時(shí),等待傳感器穩(wěn)定
  27.         Get_Maopi();                                //稱毛皮重量
  28.         while(1)
  29.         {
  30.                 EA = 0;
  31.                 Get_Weight();                        //稱重
  32.                 EA = 1;
  33.         //顯示當(dāng)前重量
  34.                 if( Flag_ERROR == 1)        //超重或者負(fù)重情況下輸出error
  35.                 {
  36.             Send_Word("ERROR\n");
  37.                         LCD1602_write_com(0x80+0x40);
  38.                         LCD1602_write_word("ERROR ");
  39.                 }               
  40.                 else        //以下是重量顯示各個(gè)位對(duì)應(yīng)值進(jìn)行換算
  41.                 {        //串口輸出
  42.             Send_ASCII(Weight_Shiwu/1000 + 0X30);
  43.             Send_ASCII(Weight_Shiwu%1000/100 + 0X30);
  44.             Send_ASCII(Weight_Shiwu%100/10 + 0X30);
  45.             Send_ASCII(Weight_Shiwu%10 + 0X30);
  46.             Send_Word(" g\n");
  47.                         //LCD1602液晶顯示
  48.                         LCD1602_write_com(0x80+0x40);
  49.                         LCD1602_write_data(Weight_Shiwu/1000 + 0X30);
  50.             LCD1602_write_data(Weight_Shiwu%1000/100 + 0X30);
  51.             LCD1602_write_data(Weight_Shiwu%100/10 + 0X30);
  52.             LCD1602_write_data(Weight_Shiwu%10 + 0X30);
  53.                         LCD1602_write_word(" g");
  54.                 }
  55.                
  56.         }
  57. }
  58. //****************************************************
  59. //稱重
  60. //****************************************************
  61. void Get_Weight()
  62. {
  63.         Weight_Shiwu = HX711_Read();
  64.         Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                //獲取凈重
  65.         if(Weight_Shiwu > 0)                        
  66.         {        
  67.                 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);         //計(jì)算實(shí)物的實(shí)際重量                                                                                                                                                                                                                                                               
  68.                 if(Weight_Shiwu > 3000)                //超重報(bào)警
  69.                 {        
  70.                         Flag_ERROR = 1;        
  71.                 }
  72.                 else
  73.                 {  
  74.                         Flag_ERROR = 0;
  75.                 }
  76.         }
  77.         else
  78.         {
  79.                 Weight_Shiwu = 0;                        
  80.         }        
  81. }

  82. //****************************************************
  83. //獲取毛皮重量
  84. //****************************************************
  85. void Get_Maopi()
  86. {
  87.         Weight_Maopi = HX711_Read();        
  88. }

  89. //****************************************************
  90. //MS延時(shí)函數(shù)(12M晶振下測試)
  91. //****************************************************
  92. void Delay_ms(unsigned int n)
  93. {
  94.         unsigned int  i,j;
  95.         for(i=0;i<n;i++)
  96.                 for(j=0;j<123;j++);
  97. }
復(fù)制代碼

所有資料51hei提供下載:
9zc 1kg體重秤 LCD.zip (61.14 KB, 下載次數(shù): 83)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:592803 發(fā)表于 2020-3-19 10:40 | 只看該作者
不錯(cuò),謝謝你啦
回復(fù)

使用道具 舉報(bào)

板凳
ID:399179 發(fā)表于 2024-2-14 17:10 來自手機(jī) | 只看該作者
感謝樓主無私奉獻(xiàn)!收藏了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表