久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2708|回復: 0
打印 上一主題 下一主題
收起左側

51單片機智能電子秤《光電檢測技術及應用》課程案例項目報告書

[復制鏈接]
跳轉到指定樓層
樓主
ID:422265 發表于 2018-12-12 15:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

基于51單片機的智能電子秤

  • 研究的目的

為了更好地對光電檢測技術中非光物理量的檢測的理解,通過對智能電子秤中的壓力檢測功能的設計,使得我們更好地對應變式壓力傳感器和A/D轉換模塊HX711的相關性能參數加深了理解與掌握,并且通過51單片機和1602液晶顯示屏的編程控制與顯示,使得我們對單片機的應用類型有了新的理解。

  • 研究的意義

本次智能電子秤設計總結了光電檢測技術與單片機兩個專業課程相關知識,使我們把理論知識和實踐結合了起來,既鍛煉了我們的動手能力,同時也鍛煉我們焊接電路板的能力。

  • 研究內容
  •       相關器件:電阻應變式壓力傳感器,HX711模塊,51開發板,1602液晶                            顯示屏。
  •       器件原理

2.1電阻應變式壓力傳感器原理:

電阻應變式稱重傳感器包括兩個主要部分,一個是彈性敏感元件:利用它將被測的重量轉換為彈性體的應變值;另一個是電阻應變計:它作為傳感元件將彈性體的應變,同步地轉換為電阻值的變化。電阻應變片所感受的機械應變量一般為10 - 6~10 - 2,隨之而產生的電阻變化率也大約在10 - 6~10 - 2數量級之間。這樣小的電阻變化用一般測量電阻的儀表很難測出,必須采用一定形式的測量電路將微小的電阻變化率轉變成電壓或電流的變化,才能用二次儀表顯示出來。在電阻應變式稱重傳感器中通過橋式電路將電阻的變化轉換為電壓變化。電阻應變式稱重傳感器工作原理框圖如圖2-1所示:

2.2 HX711模塊:

HX711 是一款專為高精度稱重傳感器而設計的24位A/D 轉換器芯片。

HX711是一款專為高精度稱重傳感器而設計的24位A/D 轉換器芯片。與同類型其它芯片相比,該芯片集成了包括穩壓電源、片內時鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應速度快、抗干擾性強等優點。降低了電子秤的整機成本,提高了整機的性能和可靠性。該芯片與后端MCU 芯片的接口和編程非常簡單,所有控制信號由管腳驅動,無需對芯片內部的寄存器編程。輸入選擇開關可任意選取通道A 或通道B,與其內部的低噪聲可編程放大器相連。通道A 的可編程增益為128 或64,對應的滿額度差分輸入信號幅值分別為±20mV 或±40mV 。通道B 則為固定的64 增益,用于系統參數檢測。芯片內提供的穩壓電源可以直接向外部傳感器和芯片內的A/D 轉換器提供電源,系統板上無需另外的模擬電源。芯片內的時鐘振蕩器不需要任何外接器件。上電自動復位功能簡化了開機的初始化過程。

2.3 51單片機開發板

(1) STC89C52 單片機概述

STC89C52系列單片機是宏晶科技生產的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍,內部集成MAX810專用復位電路。

(2) STC89C52 單片機管腳及封裝

STC89C52單片機有多種封裝形式,本設計中選用40DIP封裝,其管腳定義如圖1-8所示。

2.4 1602液晶顯示屏。

3.鏈接實物圖

  • 研究總結

本設計綜合了電工技術,光電檢測技術和單片機技術等相關知識,通過對電路板的焊接連線,既鍛煉了我們的動手能力,還在實踐中回顧我們之前學過的一些理論知識。總的來說在這次制作單片機課程設計的過程中,學習到如何完整地(包括軟件和硬件)設計一個電子器件,并學習到了很多新的器件的使用方法,例如A/D轉換模塊HX711、電阻應變式傳感器等。設計的過程中一直最難的部分就是程序設計,既要估計電路連接的簡便,又要清楚地劃分每一塊程序實現的功能,在仿真時時常出現不明的錯誤,都需要一點一點地去修改程序,已達到完美地運行。在焊接實物的過程中,因為焊接技術的不熟練,偶爾會出現虛焊,此時就要細心地使用萬用表去檢測電路,發現問題所在,重新焊接。所以,在這次實踐的過程中不僅是我們更好地掌握課堂上我們一些難以理解的知識,也鍛煉了小組成員中的團結與交流能力,這次一次很好的機會。


單片機源程序如下:

  1. <font style="font-size: 10.5pt">#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. sbit speak= P1^7;

  11. //校準參數
  12. //因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里這個參數才能使測量值很準確。
  13. //當發現測試出來的重量偏大時,增加該數值。
  14. //如果測試出來的重量偏小時,減小改數值。
  15. //該值可以為小數
  16. #define GapValue 20


  17. //****************************************************
  18. //主函數
  19. //****************************************************
  20. void main()
  21. {
  22.     Uart_Init();
  23.     Send_Word("Welcome to use!\n");
  24.     Send_Word("Made by Beetle Electronic Technology!\n");
  25.             
  26.               Init_LCD1602();
  27.               LCD1602_write_com(0x80);
  28.               LCD1602_write_word("Welcome to use!");
  29.               Delay_ms(1000);                            //延時,等待傳感器穩定

  30.               Get_Maopi();                                                        //稱毛皮重量
  31.             
  32.               while(1)
  33.               {
  34.                             EA = 0;
  35.                             Get_Weight();                                          //稱重
  36.                             EA = 1;

  37.                             Scan_Key();

  38.                             //顯示當前重量
  39.                             if( Flag_ERROR == 1)
  40.                             {
  41.             Send_Word("ERROR\n");
  42.                                          
  43.                                           LCD1602_write_com(0x80+0x40);
  44.                                           LCD1602_write_word("ERROR ");
  45.                                           speak=0;
  46.                             }                           
  47.                             else
  48.                             {        
  49.                                                 speak=1;
  50.             Send_ASCII(Weight_Shiwu/1000 + 0X30);
  51.             Send_ASCII(Weight_Shiwu%1000/100 + 0X30);
  52.             Send_ASCII(Weight_Shiwu%100/10 + 0X30);
  53.             Send_ASCII(Weight_Shiwu%10 + 0X30);
  54.             Send_Word(" g\n");
  55.                                          
  56.                                           LCD1602_write_com(0x80+0x40);
  57.                                           LCD1602_write_data(Weight_Shiwu/1000 + 0X30);
  58.             LCD1602_write_data(Weight_Shiwu%1000/100 + 0X30);
  59.             LCD1602_write_data(Weight_Shiwu%100/10 + 0X30);
  60.             LCD1602_write_data(Weight_Shiwu%10 + 0X30);
  61.                                           LCD1602_write_word(" g");
  62.                             }
  63.                            
  64.               }
  65. }

  66. //掃描按鍵
  67. void Scan_Key()
  68. {
  69.               if(KEY1 == 0)
  70.               {
  71.                             Delay_ms(5);
  72.                             if(KEY1 == 0)
  73.                             {
  74.                                           while(KEY1 == 0);
  75.                                           Get_Maopi();                                          //去皮
  76.                             }            
  77.               }
  78. }

  79. //****************************************************
  80. //稱重
  81. //****************************************************
  82. void Get_Weight()
  83. {
  84.               Weight_Shiwu = HX711_Read();
  85.               Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                            //獲取凈重
  86.               if(Weight_Shiwu > 0)                                         
  87.               {            
  88.                             Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue);               //計算實物的實際重量
  89.                                                                                                                                                                                                                                                            
  90.                                                                                                                                                                                                                                                            
  91.                             if(Weight_Shiwu > 5000)                            //超重報警
  92.                             {
  93.                                           Flag_ERROR = 1;            
  94.                             }
  95.                             else
  96.                             {
  97.                                           Flag_ERROR = 0;
  98.                             }
  99.               }
  100.               else
  101.               {
  102.                             Weight_Shiwu = 0;
  103.               //              Flag_ERROR = 1;                                                        //負重報警
  104.               }
  105.             
  106. }

  107. //****************************************************
  108. ……………………

  109. …………限于本文篇幅 余下代碼請從51黑下載附件…………
  110. </font>
復制代碼


全部資料51hei下載地址:

基于52單片機的智能電子秤.docx (345.36 KB, 下載次數: 35)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎精品在线 | 97色在线视频 | 久草视频2 | 久久久久精 | 日韩在线视频一区 | 国产成人麻豆免费观看 | 成人午夜电影在线观看 | 日本免费在线看 | 精品一区二区三区在线观看 | 国产精品一二三区在线观看 | 色婷婷一区 | 亚洲二区精品 | 亚洲精品久久久久久一区二区 | 欧美一级片在线 | 午夜影院网站 | 国产羞羞视频在线观看 | 日韩精品一区二区三区在线播放 | 一区二区三区在线 | 欧美国产日韩在线观看 | 一级一片在线观看 | 国产精品爱久久久久久久 | 日韩在线一区二区三区 | 久久久久国 | 国产农村妇女毛片精品久久麻豆 | 精品国产一二三区 | 国产成人高清视频 | 高清视频一区 | 成人av一区二区亚洲精 | 少妇午夜一级艳片欧美精品 | 午夜影院在线免费观看视频 | 成人特级毛片 | 国产精品久久久久久久久久久免费看 | 在线成人av | 久久伊人青青草 | 中文字幕 欧美 日韩 | 精品国产网 | 成人激情视频在线 | 国产精品mv在线观看 | 国产91在线播放 | 男人的天堂久久 | 精品国产一区二区三区性色 |