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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

HX711電子秤單片機源程序 已經投入實際應用

[復制鏈接]
跳轉到指定樓層
樓主
ID:199142 發表于 2017-5-10 16:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/這個程序是網友提供,里面有個 "讀HX711 AD數據子程序" 僅供參考,
//本店不做任何注釋說明,大家能用就用 不能用就刪
//有客戶反應說:發現這個函數Sampling出現問題,各位看著辦,酌情使用

HX711單片機源程序:

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <stdio.h>

  4. sbit ADDO=P2^0;
  5. sbit ADSK=P2^1;
  6. sbit led1=P2^4;
  7. sbit led2=P2^5;
  8. sbit led3=P2^6;
  9. sbit led4=P2^7;

  10. //unsigned char key;

  11. unsigned char code disp_code[] =
  12. {
  13.   //顯示碼數組
  14.   0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88,
  15.   0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xbf
  16. };

  17. unsigned char code seg[]={0x7f,0xbf,0xdf,0xef};//分別對應相應的數碼管點亮

  18. /**********************************************************

  19. 延時子函數

  20. **********************************************************/
  21. void delayms(unsigned int ms)
  22. {
  23.   unsigned char t;
  24.   while (ms--)
  25.   {
  26.     for (t = 0; t < 114; t++)
  27.       ;
  28.   }
  29. }

  30. /**********************************************************

  31. x*0.14MS 延時子函數

  32. **********************************************************/
  33. void delayus(unsigned char x)
  34. {
  35.   unsigned char i;
  36.   while (x--)
  37.   {
  38.     for (i = 0; i < 14; i++)
  39.     {
  40.       ;
  41.     }
  42.   }
  43. }

  44. /**********************************************************

  45. 讀711 AD數據子程序

  46. **********************************************************/
  47. unsigned long ReadCount(void)
  48. {
  49.         unsigned long Count;
  50.         unsigned int ADval;
  51.         unsigned char i;
  52.         ADDO=1;
  53.         ADSK=0;
  54.         Count=0;
  55.         while(ADDO);
  56.         for(i=0;i<24;i++)   //讀24個bit
  57.         {
  58.                 ADSK=1;
  59.                 Count=Count<<1;
  60.                 ADSK=0;
  61.                   if(ADDO)Count++;
  62.         }
  63.         ADSK=1; //發送第25個脈沖,表示下次轉換使用A通道128db
  64. //        Count=Count^0x800000;
  65.         ;
  66.         ADSK=0;         
  67. /*        if((Count & 0x800000) == 0x800000)
  68.         {
  69.                 Count = ~(Count - 1);
  70.         }                  */
  71. //        ADval = (int)(Count >> 8);//取高十六位有效值
  72.         ADval = (int)(Count>>8);
  73. //        ADDO=1;
  74.         return(ADval);
  75. }

  76. /**********************************************************

  77. AD采樣處理——算術平均數字濾波

  78. **********************************************************/
  79. unsigned long Sampling(void)
  80. {
  81.         unsigned int Sam[12],tmpmax,tmpmin,sum=0,Average;
  82.         unsigned char i;
  83.          
  84.         for(i=0;i<12;i++)
  85.         {
  86.                 Sam[i]=ReadCount();
  87.                 if(i==0)
  88.                 {
  89.                         tmpmax=Sam[0];
  90.                         tmpmin=Sam[0];
  91.                 }
  92.                 if(i>0)
  93.                 {
  94.                         if(Sam[i]>tmpmax)tmpmax=Sam[i];
  95.                         if(Sam[i]<tmpmin)tmpmin=Sam[i];
  96.                 }
  97.         }

  98.         for(i=0;i<12;i++)
  99.         {
  100.                 if(!(Sam[i]==tmpmax||Sam[i]==tmpmin))
  101.                 {
  102.                         sum=sum+Sam[i];        
  103.                 }
  104.         }
  105.         Average=sum/10;

  106.         return(Average);
  107. }

  108. /**********************************************************

  109. 重量值數碼管顯示子程序

  110. **********************************************************/
  111. void displayheight(void)
  112. {
  113.         unsigned int Lheight;
  114.         float Tempheight;
  115.         unsigned char i,j,height[2],discode[4];
  116.         

  117. //        while(1)
  118.         {
  119.                 Lheight = ReadCount()-1500;
  120.                 if(Lheight<0)Lheight=0;
  121.                 Tempheight=(float)(Lheight/1.4);
  122.                 Lheight=(int)(Tempheight);

  123.                
  124.         /*        discode[0]=Lheight%16;
  125.                 discode[1]=(Lheight%256)/16;
  126.                 discode[2]=(Lheight%4096)/256;
  127.                 discode[3]=(Lheight%65536)/4096;          */
  128.                
  129.         //        tmp10=discode[3]*4096+discode[2]*256+discode[1]*16+discode[0];         

  130.                 discode[0]=Lheight%10;
  131.                 discode[1]=(Lheight%100)/10;
  132.                 discode[2]=(Lheight%1000)/100;
  133.                 discode[3]=(Lheight%10000)/1000;                  

  134.                 for(j=0;j<250;j++)
  135.                 {
  136.                         for(i=0;i<4;i++)
  137.                         {
  138.                                 if(i==0){led1=0;led2=1;led3=1;led4=1;}
  139.                                 if(i==1){led1=1;led2=0;led3=1;led4=1;}
  140.                                 if(i==2){led1=1;led2=1;led3=0;led4=1;}
  141.                                 if(i==3){led1=1;led2=1;led3=1;led4=0;}
  142.                                 P0 = disp_code[discode[i]];
  143.                                 delayms(2);
  144.                         }
  145.                 }
  146.                 led1=1;led2=1;led3=1;led4=1;
  147.                 Lheight=0;
  148.         }
  149. }

  150. /**********************************************************

  151. 主函數

  152. **********************************************************/
  153. void main(void)
  154. {
  155. //        unsigned long Lheight;
  156.         unsigned char i;

  157.           P2 = 0x0f; //數碼管初始顯示"-"
  158.           P1 = 0xff;
  159.           P0 = 0xbf;

  160.           while (1)
  161.           {
  162.                 displayheight();
  163.                 /*        for(i=0;i<4;i++)
  164.                         {
  165.                                 P2 = seg[i];


  166. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

下載:
程序.rar (1.41 KB, 下載次數: 43)



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

使用道具 舉報

沙發
ID:64017 發表于 2017-12-6 20:31 | 只看該作者
要收藏,謝謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜影院在线观看 | 国产精品一区二区三级 | 亚洲精品一区二区三区在线观看 | 美国av毛片 | 一区二区三区视频播放 | 成年人在线观看视频 | 成人三级视频 | 国产精品国产成人国产三级 | 午夜影院在线观看 | 玖玖国产 | 欧美在线a| 久久久精品久久久 | 999精品在线观看 | 国产日韩视频 | 亚洲免费在线观看视频 | 精品一区二区三区在线播放 | 美女黄网 | 日韩国产一区二区三区 | 911网站大全在线观看 | 97精品超碰一区二区三区 | 国产一区二区在线免费观看 | 东京av男人的天堂 | 免费特黄视频 | 免费黄色a视频 | 久久久久国产一区二区三区四区 | 国产在线精品一区二区三区 | 成人性生交a做片 | 婷婷久久网 | 免费九九视频 | 欧美性极品xxxx做受 | 日本精品久久 | 中文字幕在线一区二区三区 | 日日夜夜狠狠操 | 福利视频三区 | 91看片在线观看 | 日日干天天操 | 国产在线播 | 综合久久99 | 国产99久久 | 国产精品久久久久久久久久久久 | 午夜爽爽爽男女免费观看影院 |