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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機電子秤設計(程序,原理圖分享)

[復制鏈接]
跳轉到指定樓層
樓主
ID:747209 發表于 2020-5-8 20:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
可去皮,重量微調,語音播報重量。

單片機源程序如下:
  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "HX711.h"
  4. //#include"eeprom.h"

  5. unsigned long HX711_Buffer = 0;
  6. unsigned int Weight_Maopi = 0,Weight_Shiwu = 0;
  7. char Price_Count = 0;
  8. unsigned char KEY_NUM = 0;
  9. unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
  10. unsigned long Money = 0;
  11. bit Flag_OK = 0;
  12. unsigned int Weight=10,s1num=0; //報警值初始化 按鍵計數標志
  13. float m__1=2.90;


  14. //語音播報程序
  15. sbit MUSIC_REST =P2^2;//語音芯片復位腳                                       
  16. sbit MUSIC_DATA =P2^1;//語音芯片脈沖識別
  17. sbit bus =P2^0;//語音芯片工作狀態識別信號  
  18. unsigned char bbh,xm1,xm2,xm0,xm3;

  19. void delay_us(unsigned int us)
  20. {
  21.     while(us--)
  22.     {
  23.             _nop_();
  24.             _nop_();                 
  25.             _nop_();
  26.             _nop_();
  27.     }
  28. }
  29. void Music(unsigned char music_count)
  30. {
  31.     MUSIC_REST=1;
  32.     delay_us(200);
  33.     MUSIC_REST=0;
  34.     delay_us(200);

  35.     while(music_count>0)
  36.     {
  37.         MUSIC_DATA=1;
  38.         delay_us(100);
  39.         MUSIC_DATA=0;
  40.         delay_us(100);
  41.                 music_count--;
  42.     }
  43. }

  44. void Msc()
  45. {
  46.     if((xm0+xm1+xm2+xm3)!=0)                   //當超出測量范圍時不進行播報
  47.         {
  48.                 Music(16);                                        //播報:“ 重量    ”
  49.                 while(!bus);
  50.                 if(xm0==0)
  51.                 {
  52.                               Music(2);                         //播報:“千位數具體值”          0
  53.                         while(!bus);       
  54.                 }                   
  55.                    else Music(xm0+2);                         //播報:“千位數具體值”
  56.                 while(!bus);
  57. //                Music(14);                                        //播報:“點”
  58. //                while(!bus);

  59.                 if(xm1==0)
  60.                 {
  61.                               Music(2);                         //播報:“百位數具體值”          0
  62.                         while(!bus);       
  63.                 }                   
  64.                    else Music(xm1+2);                         //播報:“千位數具體值”
  65.                 while(!bus);

  66.                 if((xm2+xm3)!=0)
  67.                 {          
  68.                        
  69.                         Music(xm2+2);                                //播報:“十分位的具體值”
  70.                         while(!bus);                               
  71.                         Music(xm3+2);                                //播報:“百分位的具體值”
  72.                         while(!bus);                   
  73.                         Music(15);                                //播報:“單位”
  74.                         while(!bus);
  75.                 }
  76.                 else
  77.                 {
  78.                         Music(15);                                //播報:“單位”
  79.                         while(!bus);       
  80.                 }
  81.         }          
  82. }
  83. //****************************************************
  84. //主函數
  85. //****************************************************
  86. void main()
  87. {
  88.         Init_LCD1602();                                                                        //初始化LCD1602

  89.         LCD1602_write_com(0x80);                                                //指針設置
  90.         LCD1602_write_word("Welcome to use! ");                        //開機畫面第一行


  91.         Delay_ms(2000);                 //延時2s   

  92.         Price_Buffer[0] = 0;
  93.         Price_Buffer[1] = 0;
  94.         Price_Buffer[2] = 0;
  95.         Flag_OK = 0;

  96.         LCD1602_write_com(0x80);                                                //指針設置
  97.         LCD1602_write_word("  Test weight   ");//重量檢測儀
  98.         LCD1602_write_com(0x80+0x40);                                //指針設置
  99.         LCD1602_write_word("weight:    g    ");

  100.        

  101.        
  102.         Get_Maopi();                                //稱毛皮重量

  103.         while(1)
  104.         {
  105.                
  106.                         Get_Weight();                        //稱重
  107.                         KEY_Scan();       
  108.         }
  109. }

  110. //****************************************************
  111. //稱重
  112. //****************************************************
  113. void Get_Weight()
  114. {
  115.         HX711_Buffer = HX711_Read();
  116.         HX711_Buffer = HX711_Buffer/100;
  117.         if(HX711_Buffer > Weight_Maopi)                       
  118.         {
  119.                 Weight_Shiwu = HX711_Buffer;
  120.                 Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //獲取實物的AD采樣數值。
  121.        
  122.                 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/m__1+0.05);         //計算實物的實際重量
  123.                                                                                                                                                 //因為不同的傳感器特性曲線不一樣,因此,每一個傳感器需要矯正這里的4.30這個除數。
  124.                                                                                                                                                 //當發現測試出來的重量偏大時,增加該數值。
  125.                                                                                                                                                 //如果測試出來的重量偏小時,減小改數值。
  126.                                                                                                                                                 //該數值一般在4.0-5.0之間。因傳感器不同而定。
  127.                                                                                                                                                 //+0.05是為了四舍五入百分位
  128.        

  129.                    if(Weight_Shiwu >500 )Weight_Shiwu=500;
  130.                         if(Weight_Shiwu < 5)Weight_Shiwu=0;

  131.                         xm0=Weight_Shiwu/1000 ;
  132.                         xm1=Weight_Shiwu%1000/100;
  133.                         xm2=Weight_Shiwu%100/10;
  134.                         xm3=Weight_Shiwu%10;
  135.                         LCD1602_write_com(0x80+0x40+7);
  136.                         LCD1602_write_data(xm0+ 0x30);
  137.                         LCD1602_write_data(xm1 + 0x30);
  138.                         LCD1602_write_data(xm2 + 0x30);
  139.                         LCD1602_write_data(xm3 + 0x30);
  140.                        
  141.         }
  142.                                                   
  143.        
  144. }
  145. void delay(unsigned int x) //毫秒級延時函數
  146. {
  147.   unsigned int i,j;
  148.   for(i=x;i>0;i--)
  149.      for(j=110;j>0;j--);
  150. }
  151. void KEY_Scan()
  152. {
  153.           while(!k4)
  154.           {
  155.                   bbh=1;
  156.       }
  157.           if(bbh==1)                                        //bb=1調用一次播報程序
  158.           {
  159.                    bbh=0;
  160.                    Msc();
  161.            }
  162.             if(key1==0)                        //
  163.                 {
  164.                         delay(10);
  165.                         if(key1==0)
  166.                         {       
  167.                                 while(!key1);        //
  168.                                 Get_Maopi();                        //去皮       
  169.                         }
  170.                 }
  171.                 if(key2==0)                        //
  172.                 {
  173.                
  174.                         delay(10);
  175.                         if(key2==0)
  176.                         {       
  177.                                 while(!key2);        //        微調重量-
  178.                                 m__1=m__1+0.10;
  179.                                 if(m__1>=5.10)m__1=5.00;
  180.                                
  181.                         }
  182.                
  183.                 }
  184.                 if(key3==0)                        //
  185.                 {
  186.                
  187.                         delay(10);
  188.                         if(key3==0)
  189.                         {       
  190.                                 while(!key3);        // 微調重量+
  191.                                 m__1=m__1-0.10;
  192.                                 if(m__1<=1.10)m__1=2.50;
  193.                                
  194.                         }
  195.        
  196.                 }
  197. }

  198. //****************************************************
  199. //獲取毛皮重量
  200. //****************************************************
  201. void Get_Maopi()
  202. {
  203.         HX711_Buffer = HX711_Read();
  204.         Weight_Maopi = HX711_Buffer/100;               
  205. }

  206. //****************************************************
  207. //MS延時函數(12M晶振下測試)
  208. //****************************************************
  209. void Delay_ms(unsigned int n)
  210. {
  211.         unsigned int  i,j;
  212.         for(i=0;i<n;i++)
  213.                 for(j=0;j<123;j++);
  214. }
復制代碼

所有資料51hei提供下載:
電子稱設計.zip (174.55 KB, 下載次數: 60)


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

使用道具 舉報

沙發
ID:774657 發表于 2020-6-12 17:24 | 只看該作者
做的真棒,點個贊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久久免费 | 欧美精品首页 | 久久久资源 | 午夜免费在线观看 | 亚洲一区在线日韩在线深爱 | 亚洲欧美成人影院 | 欧美精品欧美精品系列 | 欧美日韩一区二区在线 | 久久精品影视 | 69亚洲精品 | 国产精品99免费视频 | 国产 欧美 日韩 一区 | 日日网 | 91久久北条麻妃一区二区三区 | 97影院在线午夜 | 欧美精品成人一区二区三区四区 | 亚洲免费精品 | 日韩精品一区二区三区中文字幕 | 亚洲一区精品在线 | 日韩精品一区二区在线 | 91影视| 久久av网 | 中文在线日韩 | 欧美a在线 | 中文字幕99 | 天堂国产 | 久草色视频| 九九导航 | 亚洲欧洲一区 | 三级av免费| 午夜天堂精品久久久久 | 精品日韩一区二区三区av动图 | 九九综合 | 国产精品久久久久久久久久久免费看 | 国产精品视频一二三区 | 国产美女自拍视频 | 成人在线视频一区二区三区 | 国产96色在线 | 欧美国产亚洲一区二区 | 亚洲性综合网 | 国产精品永久久久久久久www |