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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

HX711 5K壓力傳感器配套程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

單片機(jī)源程序如下:
  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "HX711.h"

  4. unsigned long HX711_Buffer = 0;
  5. unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;
  6. char Price_Count = 0;
  7. unsigned char KEY_NUM = 0;
  8. unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
  9. unsigned long Money = 0;
  10. bit Flag_OK = 0;

  11. //****************************************************
  12. //主函數(shù)
  13. //****************************************************
  14. void main()
  15. {
  16.         Init_LCD1602();                                                                        //初始化LCD1602

  17.         LCD1602_write_com(0x80);                                                //指針設(shè)置
  18.         LCD1602_write_word("Welcome to use! ");                        //開機(jī)畫面第一行


  19.         Delay_ms(2000);                 //延時(shí)2s


  20. loop:Price_Count = 0;
  21.         Price_Buffer[0] = 0;
  22.         Price_Buffer[1] = 0;
  23.         Price_Buffer[2] = 0;
  24.         Flag_OK = 0;

  25.         LCD1602_write_com(0x80);                                                //指針設(shè)置
  26.         LCD1602_write_word("+WEI |PRI | MON ");
  27.         LCD1602_write_com(0x80+0x40);                                //指針設(shè)置
  28.         LCD1602_write_word("0.000|  . |   . ");

  29.        

  30.        
  31.         Get_Maopi();                                //稱毛皮重量

  32.         while(1)
  33.         {
  34.                 if( Flag_OK == 0)
  35.                 {
  36.                         Get_Weight();                        //稱重
  37.        
  38.                         //顯示當(dāng)前重量
  39.                         LCD1602_write_com(0x80+0x40);
  40.                         LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
  41.                         LCD1602_write_data('.');
  42.                         LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
  43.                         LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
  44.                         LCD1602_write_data(Weight_Shiwu%10 + 0x30);
  45.                 }

  46.                 KEY_NUM = KEY_Scan();

  47.                 if( KEY_NUM != 0x55)                        //當(dāng)返回的不是初值時(shí)候,確認(rèn)按鍵按下。
  48.                 {
  49.                         if(KEY_NUM == 16)                        //數(shù)字A鍵,去皮功能
  50.                         {
  51.                                 Get_Maopi();                        //去皮       
  52.                         }

  53.                         if(KEY_NUM == 15)                        //數(shù)字B鍵清除鍵,二次測量
  54.                         {
  55.                                 goto loop;       
  56.                         }

  57.                         if(KEY_NUM == 12)                        //數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
  58.                         {
  59.                                 Price_Count--;
  60.                                 if( Price_Count < 0)
  61.                                 {
  62.                                         Price_Count = 0;
  63.                                 }
  64.                                
  65.                                 Price_Buffer[Price_Count] = 0;                           //清除上一個(gè)輸入的數(shù)據(jù)

  66.                                 switch(Price_Count)
  67.                                 {
  68.                                         case 0:
  69.                                                         LCD1602_write_com(0x80+0x40+6);
  70.                                                         LCD1602_write_data(' ');
  71.                                                         break;
  72.                                         case 1:
  73.                                                         LCD1602_write_com(0x80+0x40+7);
  74.                                                         LCD1602_write_data(' ');
  75.                                                         break;
  76.                                         case 2:
  77.                                                         LCD1602_write_com(0x80+0x40+9);
  78.                                                         LCD1602_write_data(' ');
  79.                                                         break;
  80.                                         default : break;
  81.                                 }       
  82.                         }

  83.                         if(KEY_NUM == 13)                        //數(shù)字D鍵,計(jì)算總價(jià)
  84.                         {
  85.                                 Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];       
  86.                                 Money = Money * Weight_Shiwu / 1000;
  87.                                 LCD1602_write_com(0x80+0x40+11);
  88.                                 LCD1602_write_data(Money/1000 + 0x30);                       
  89.                                 LCD1602_write_data(Money%1000/100 + 0x30);
  90.                                 LCD1602_write_data(Money%100/10 + 0x30);
  91.                                 LCD1602_write_data('.');
  92.                                 LCD1602_write_data(Money%10 + 0x30);
  93.                                
  94.                                 Flag_OK = 1;                                       
  95.                         }

  96.                         if(KEY_NUM >= 0 && KEY_NUM <= 9)                                          //顯示輸入的價(jià)格值
  97.                         {
  98.                                 Price_Buffer[Price_Count] = KEY_NUM;
  99.        
  100.                                 switch(Price_Count)
  101.                                 {
  102.                                         case 0:
  103.                                                         LCD1602_write_com(0x80+0x40+6);
  104.                                                         LCD1602_write_data(Price_Buffer[0] + 0x30);
  105.                                                         break;
  106.                                         case 1:
  107.                                                         LCD1602_write_com(0x80+0x40+7);
  108.                                                         LCD1602_write_data(Price_Buffer[1] + 0x30);
  109.                                                         break;
  110.                                         case 2:
  111.                                                         LCD1602_write_com(0x80+0x40+9);
  112.                                                         LCD1602_write_data(Price_Buffer[2] + 0x30);
  113.                                                         break;
  114.                                         default : break;
  115.                                 }
  116.        
  117.                                 Price_Count++;
  118.        
  119.                                 if( Price_Count >= 3)
  120.                                 {
  121.                                         Price_Count = 3;
  122.                                 }
  123.                         }

  124.                 }

  125.         }
  126. }

  127. //****************************************************
  128. //矩陣鍵盤掃描
  129. //****************************************************
  130. unsigned char KEY_Scan()
  131. {
  132.         unsigned char temp = 0;
  133.         unsigned char com = 0x55 , com1 = 0 , com2 = 0;
  134.         P3=0xf0;
  135.         if(P3!=0xf0)
  136.         {
  137.                 com1=P3;
  138.                 P3=0x0f;
  139.                 com2=P3;        
  140.         }
  141.         P3=0xf0;
  142.     while(P3!=0xf0);          
  143.         temp=com1|com2;
  144.         if(temp==0xee)com=1;//數(shù)字1
  145.         if(temp==0xed)com=4;//數(shù)字4
  146.         if(temp==0xeb)com=7;//數(shù)字7
  147.         if(temp==0xe7)com=11;//備用鍵*號鍵
  148.         if(temp==0xd7)com=0;//數(shù)字0
  149.         if(temp==0xb7)com=14;//備用鍵*號鍵
  150.        

  151.         if(temp==0xde)com=2; //數(shù)字2
  152.         if(temp==0xdd)com=5; //數(shù)字5
  153.         if(temp==0xdb)com=8;//數(shù)字8

  154.         if(temp==0xbe)com=3;//數(shù)字3
  155.         if(temp==0xbd)com=6; //數(shù)字6
  156.         if(temp==0xbb)com=9;//數(shù)字9

  157.         if(temp==0x7e)com=16;//數(shù)字A鍵,去皮功能         
  158.         if(temp==0x7d)com=15;//數(shù)字B鍵清除鍵,二次測量
  159.         if(temp==0x7b)com=12;//數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
  160.         if(temp==0x77)com=13;//數(shù)字D鍵,計(jì)算總價(jià)         
  161.         return(com);
  162. }

  163. //****************************************************
  164. //稱重
  165. //****************************************************
  166. void Get_Weight()
  167. {
  168.         HX711_Buffer = HX711_Read();
  169.         HX711_Buffer = HX711_Buffer/100;
  170.         if(HX711_Buffer > Weight_Maopi)                       
  171.         {
  172.                 Weight_Shiwu = HX711_Buffer;
  173.                 Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //獲取實(shí)物的AD采樣數(shù)值。
  174.        
  175.                 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.22+0.05);         //計(jì)算實(shí)物的實(shí)際重量
  176.                                                                                                                                                 //因?yàn)椴煌膫鞲衅魈匦郧不一樣,因此,每一個(gè)傳感器需要矯正這里的4.30這個(gè)除數(shù)。
  177.                                                                                                                                                 //當(dāng)發(fā)現(xiàn)測試出來的重量偏大時(shí),增加該數(shù)值。
  178.                                                                                                                                                 //如果測試出來的重量偏小時(shí),減小改數(shù)值。
  179.                                                                                                                                                 //該數(shù)值一般在4.0-5.0之間。因傳感器不同而定。
  180.                                                                                                                                                 //+0.05是為了四舍五入百分位
  181.                 Buzzer = 1;                                //關(guān)閉警報(bào)
  182.         }
  183. //        else if(HX711_Buffer < Weight_Maopi - 30)
  184. //        {
  185. //                Buzzer = 0;                                //負(fù)重量報(bào)警
  186. //        }
  187. //        else if(HX711_Buffer > Weight_Maopi + 24970)                //大于5Kg的最大量程,報(bào)警       
  188. //        {
  189. //                Buzzer = 0;
  190. //        }

  191.         if(Weight_Shiwu > 5000 || HX711_Buffer < Weight_Maopi - 30)
  192.         {
  193. ……………………

  194. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
5K壓力傳感器配套程序V2.5(最新).rar (45.11 KB, 下載次數(shù): 32)


評分

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

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:503530 發(fā)表于 2019-4-3 10:56 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线资源 | 中文字幕在线一区二区三区 | 成人午夜电影在线观看 | 亚洲aⅴ | 九九热免费在线观看 | 久久最新| 青青久久 | 国产一区二区三区四区区 | 性高湖久久久久久久久3小时 | 日韩欧美一区二区三区四区 | 九九精品在线 | 在线视频一区二区 | 国产精品美女视频 | 欧美性受xxx | 久草.com| 国产日韩电影 | 瑟瑟视频在线看 | 国产乱码久久久久久 | 中文字幕 在线观看 | 国产男女视频网站 | 亚洲视频免费观看 | 亚洲精品一区中文字幕乱码 | 欧美一级欧美三级在线观看 | 久久偷人 | 91麻豆精品一区二区三区 | 不卡一二三区 | 久久久久国色av免费观看性色 | 九九亚洲 | 91国内精品久久 | 国产精品日日做人人爱 | 国产精品视频免费观看 | 国产欧美一区二区精品久导航 | 久久一及片 | 日韩电影免费观看中文字幕 | 成人在线免费电影 | 国产福利免费视频 | 欧美综合国产精品久久丁香 | 国产精品久久久精品 | 欧美色偷拍 | 日韩黄色小视频 | 一级欧美一级日韩片免费观看 |