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

QQ登錄

只需一步,快速開始

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

電子稱重秤設(shè)計(jì) 89C51單片機(jī)+HX711(源碼+原理圖)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
傳感器與電路板對(duì)接順序:
紅、白、黑、綠 四根線分別依次對(duì)應(yīng)電路板上的 E+、E-、A-、A+
系統(tǒng)供電5V,可使用手機(jī)充電器USB接口或電腦USB接口直接供電。

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




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



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


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

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


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

電路原理圖如下:

單片機(jī)源程序如下:
  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;//單價(jià)
  12. long zongjia = 0;//總價(jià)
  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();//顯示重量和校準(zhǔn)參數(shù)
  22. void  delay_3us();//3US的延時(shí)程序
  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;//校準(zhǔn)參數(shù):GapValue
  30. //不同的傳感器特性曲線不是很一致,每個(gè)傳感器需矯正這個(gè)參數(shù)才能測(cè)量準(zhǔn)確。
  31. //當(dāng)測(cè)試的重量偏大時(shí),增加該數(shù)值。如果測(cè)試的重量偏小時(shí),減小改數(shù)值。

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

  35. void delay_3us();
  36. void  nack_24c02();//24C02非應(yīng)答信號(hào)
  37. void  stop_24c02();//停止通訊信號(hào)
  38. void  star_24c02();//啟動(dòng)信號(hào)
  39. void  cack_24c02();//檢測(cè)應(yīng)答信號(hào)
  40. void  mack_24c02();//發(fā)送應(yīng)答信號(hào)
  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)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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