標題: 電子稱重秤設(shè)計 89C51單片機+HX711(源碼+原理圖) [打印本頁]

作者: cm7626    時間: 2025-6-13 11:25
標題: 電子稱重秤設(shè)計 89C51單片機+HX711(源碼+原理圖)
傳感器與電路板對接順序:
紅、白、黑、綠 四根線分別依次對應(yīng)電路板上的 E+、E-、A-、A+ 。
系統(tǒng)供電5V,可使用手機充電器USB接口或電腦USB接口直接供電。

一、日歷時間的設(shè)置
接通電源后,打開開關(guān),開機默認處于“日歷時間模式”。屏幕顯示如下圖:
在“日歷時間模式”下,僅A、B、C、D四個按鍵有效。
A:設(shè)置;依次按下A鍵,年、月、日、時、分、秒的光標依次閃爍,可通過BC鍵調(diào)節(jié)。
B:加鍵;按一下,數(shù)值加一。
C:減鍵;按一下,數(shù)值減一。
D:查看鬧鐘;進入“鬧鐘界面”。




二、鬧鈴的設(shè)置
在鬧鐘設(shè)置界面,依次按下A鍵,鬧鈴的:開/關(guān)、時、分、秒的光標依次閃爍。
然后可通過BC鍵進行調(diào)節(jié)。
D鍵則隨時可退出“鬧鈴設(shè)置界面”返回到“日歷時間界面”。



三、計價秤功能
在正常顯示時間的情況下,按下C鍵,將切換到到“計價秤模式”,顯示界面如下圖:
第一行顯示重量,單位是kg
第二行顯示“單價P”和“金額M”,單位都是元。
在“計價秤模式”下,16按鍵全部有效。
數(shù)字鍵介紹
1234567890數(shù)字鍵代表數(shù)字,可通過鍵盤設(shè)置P= 的值,數(shù)值可精確到0.1g。
設(shè)置單價后系統(tǒng)會自動計算出金額M。
A:清零、去皮
B:清除單價P
C:切換到“日歷時間模式”
D:切換到“計數(shù)秤模式”


四、計數(shù)秤功能
在計價秤模式下,按下D鍵,即切換到“計數(shù)秤模式”,顯示如下圖:
第一行:重量值kg。
第二行:D=單個物品重量值,N=物品個數(shù)。

鍵盤說明:
1234567890數(shù)字鍵代表數(shù)字,可通過鍵盤設(shè)置D= 的值,數(shù)值可精確到0.1g。
設(shè)置單重后系統(tǒng)會自動計算出個數(shù)N。
A:清零/去皮
B:清除單重D
C:切換到“日歷時間模式”
D:切換到“計數(shù)秤模式”


五、系統(tǒng)校準方法:
打開開關(guān),等系統(tǒng)穩(wěn)定后,在秤盤上放一個固定重量的物體(比如放100個一角硬幣320g)。如果系統(tǒng)顯示重量不等于這個固定重量(320g),就長按 # 鍵3秒,然后屏幕的第一行右邊會顯示出“校準系數(shù)”。
校準系數(shù)出現(xiàn)以后,可以通過C、D兩個鍵對校準系數(shù)進行增大和較小,通過對“校準系數(shù)”的調(diào)節(jié)使得屏幕上重量顯示的值正好等于物體的真實重量(320g)。
最后長按 # 鍵3秒,校準系數(shù)消失,校準完成。

電路原理圖如下:

單片機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. uchar naozhong_en; //鬧鐘開關(guān)位
  6. sbit bell = P2 ^ 7; //蜂鳴器,低電平響

  7. /*********************電子秤*******************************/
  8. unsigned long HX711_Buffer = 0;
  9. unsigned long Weight_Maopi = 0; //毛皮重量
  10. long Weight = 0;//重量
  11. long danjia = 0;//單價
  12. long zongjia = 0;//總價
  13. uint com1, com2, temp; //鍵盤用的到的變量
  14. uchar com, P_a = 0, P_b = 0, P_c = 0, P_d = 0, m = 0;

  15. bit a = 0;
  16. bit jia_shu = 0;
  17. bit Flag_ERROR = 0;

  18. void Delay_ms(unsigned int n);
  19. void Get_Weight();

  20. void Get_Maopi();
  21. void display_weight();//顯示重量和校準參數(shù)
  22. void  delay_3us();//3US的延時程序
  23. void keyscan_4x4();//矩陣鍵盤掃描函數(shù)

  24. //hx711 IO設(shè)置
  25. sbit HX711_DOUT = P2 ^ 0;
  26. sbit HX711_SCK = P2 ^ 1; //IO設(shè)置

  27. void Delay__hx711_us();
  28. unsigned long HX711_Read(void);

  29. uint GapValue;//校準參數(shù):GapValue
  30. //不同的傳感器特性曲線不是很一致,每個傳感器需矯正這個參數(shù)才能測量準確。
  31. //當測試的重量偏大時,增加該數(shù)值。如果測試的重量偏小時,減小改數(shù)值。

  32. uchar flag_24c02;//和24C02通訊是否正常的標志
  33. sbit  sda_24c02 = P1 ^ 7; //定義24C02串行數(shù)據(jù)線
  34. sbit  scl_24c02 = P1 ^ 6; //定義24C02串行時鐘線

  35. void delay_3us();
  36. void  nack_24c02();//24C02非應(yīng)答信號
  37. void  stop_24c02();//停止通訊信號
  38. void  star_24c02();//啟動信號
  39. void  cack_24c02();//檢測應(yīng)答信號
  40. void  mack_24c02();//發(fā)送應(yīng)答信號
  41. void  w1byte_24c02(uchar byte1);//向24C02寫入一字節(jié)的數(shù)據(jù)
  42. uchar rd1byte_24c02(void);
  43. void  read_24c02();//讀數(shù)據(jù)操作
  44. void  write_24c02();//寫入16字節(jié)的數(shù)據(jù)操作
復(fù)制代碼

PCB:無
仿真: 無
代碼: 代碼.7z (574.01 KB, 下載次數(shù): 0)





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1