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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

HX711電子秤單片機(jī)源程序 已經(jīng)投入實(shí)際應(yīng)用

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

HX711單片機(jī)源程序:

  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.   //顯示碼數(shù)組
  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};//分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮

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

  19. 延時子函數(shù)

  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 延時子函數(shù)

  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數(shù)據(jù)子程序

  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; //發(fā)送第25個脈沖,表示下次轉(zhuǎn)換使用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采樣處理——算術(shù)平均數(shù)字濾波

  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. 重量值數(shù)碼管顯示子程序

  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. 主函數(shù)

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

  157.           P2 = 0x0f; //數(shù)碼管初始顯示"-"
  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黑下載附件…………
復(fù)制代碼

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



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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美一区二区三区1000 | 可以免费看的毛片 | 黄色片免费 | 成在线人视频免费视频 | 久久久免费在线观看 | av中文天堂 | 亚洲精品黄色 | 在线电影日韩 | 韩日一区 | 日韩影音 | 欧美激情久久久 | 久久久精 | 久久久久久久久久爱 | 欧洲一区二区在线 | 成人影视网 | 国产精品久久久久无码av | 偷拍自拍网站 | 综合九九| 天天成人综合网 | 亚洲色图综合 | av永久免费 | 亚洲国产精品91 | 亚洲视频一区 | 午夜视频在线免费观看 | 久久久妇女国产精品影视 | 日本激情一区二区 | 久久久精品网 | 在线观看三级av | 亚洲一区欧美一区 | h网站在线观看 | 91精品在线播放 | 久久亚洲视频网 | 久久久www成人免费无遮挡大片 | 亚洲人成在线播放 | 电影午夜精品一区二区三区 | 欧美成人一区二区 | 亚洲免费在线 | 亚洲成人免费视频 | 欧美淫片| 在线欧美亚洲 | 亚洲人人 |