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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12系列單片機語音電子秤PCB工程文件 無代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:972785 發(fā)表于 2021-10-17 16:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
自己做出來的電子秤
模塊包含HX711,LCD1602,最大稱重200kg,支持語音播報(語音播報模塊是BY8301-自帶功放)


部分單片機代碼如下:
  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "HX711.h"
  4. #include "BY8301.h"
  5. #include "uart.h"

  6. //定義變量
  7. unsigned char KEY_NUM = 0;   //用來存放按鍵按下的鍵值
  8. unsigned long HX711_Buffer = 0;  //用來存放HX711讀取出來的數據
  9. unsigned long Weight_Maopi = 0; //用來存放毛皮數據
  10. long Weight_Shiwu = 0;          //用來存放實物重量
  11. long Weight_Shiwu_ADD = 0;          //用來存放實物重量
  12. long Max_Value = 0;             //用來存放設置最大值
  13. unsigned char maxValueTable[6];
  14. unsigned char state = 0;    //用來存放設置狀態(tài)
  15. unsigned char Blink_Speed = 0;
  16. #define Blink_Speed_Max 6          //該值可以改變設置指針閃爍頻率

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

  23. //報警值,單位是g
  24. #define AlarmValue 200000            
  25. #define filter_num 10
  26. float recursive_average_filter(float filter_object)
  27. {   
  28.     float sum = 0;         
  29.     float temp = 0;
  30.     char i;   
  31.     static float filter_buf[filter_num + 1];
  32.     filter_buf[filter_num] = filter_object;
  33.     for(i = 0; i < filter_num; i++){
  34.         filter_buf[i] = filter_buf[i + 1]; // ??????,????
  35.         sum += filter_buf[i];
  36.     }
  37.     temp = ((float)sum / filter_num);
  38.     return temp;
  39. }
  40. //****************************************************
  41. //主函數
  42. //****************************************************
  43. void main()
  44. {
  45.     KEY1=1;
  46.     KEY2=1;
  47.     KEY3=1;
  48.     KEY4=1;
  49.   Buzzer_Di();
  50.    
  51.     Init_LCD1602();                        //初始化LCD1602

  52.     LCD1602_write_com(0x80);            //設置LCD1602指針
  53.     LCD1602_write_word("Welcome to use!");
  54.    
  55.     Get_Maopi();
  56.     Get_Maopi();
  57.     Delay_ms(2000);         //延時2s
  58.     Get_Maopi();
  59.     Get_Maopi();                //稱毛皮重量    //多次測量有利于HX711穩(wěn)定
  60.     LCD1602_write_com(0x01);    //清屏
  61.    
  62.         uart_int_init();
  63.         BY8301_MP3(Weight_Shiwu);
  64.         
  65.     while(1)
  66.     {
  67.         
  68.         Scan_Key();
  69.     Get_Weight();        
  70.     Weight_Shiwu=recursive_average_filter(Weight_Shiwu);
  71.         //顯示當前重量
  72.         LCD1602_write_com(0x80);
  73.     LCD1602_write_word("Weight=");
  74.     LCD1602_write_data(Weight_Shiwu/100000 + 0x30);
  75.     LCD1602_write_data(Weight_Shiwu%100000/10000 + 0x30);
  76.         LCD1602_write_data(Weight_Shiwu%10000/1000 + 0x30);
  77.         LCD1602_write_data('.');
  78.         LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
  79.          LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
  80.         LCD1602_write_data(Weight_Shiwu%10 + 0x30);           
  81.         LCD1602_write_word("Kg");
  82.         
  83.         LCD1602_write_com(0x80+0x40);
  84.     LCD1602_write_word("Total=");
  85.     LCD1602_write_data(Weight_Shiwu_ADD/100000 + 0x30);
  86.     LCD1602_write_data(Weight_Shiwu_ADD%100000/10000 + 0x30);
  87.         LCD1602_write_data(Weight_Shiwu_ADD%10000/1000 + 0x30);
  88.         LCD1602_write_data('.');
  89.         LCD1602_write_data(Weight_Shiwu_ADD%1000/100 + 0x30);
  90.          LCD1602_write_data(Weight_Shiwu_ADD%100/10 + 0x30);
  91.         LCD1602_write_data(Weight_Shiwu_ADD%10 + 0x30);           
  92.         LCD1602_write_word("Kg");

  93.     }
  94. }

  95. //****************************************************
  96. //稱重
  97. //****************************************************
  98. void Get_Weight()
  99. {
  100.     Weight_Shiwu = HX711_Read();
  101.     Weight_Shiwu = Weight_Shiwu - Weight_Maopi;        //獲取凈重
  102.     if(Weight_Shiwu >= 0)            
  103.     {   
  104.         Weight_Shiwu = (unsigned long)((float)Weight_Shiwu/GapValue);     //計算實物的實際重量
  105.     }
  106.     else
  107.     {
  108.         Weight_Shiwu = 0;
  109.     }
  110.    
  111. }

  112. //****************************************************
  113. //獲取毛皮重量
  114. //****************************************************
  115. void Get_Maopi()
  116. {
  117.     Weight_Maopi = HX711_Read();   
  118. }


  119. //****************************************************
  120. //MS延時函數(12M晶振下測試)
  121. //****************************************************
  122. void Delay_ms(unsigned int n)
  123. {
  124.     unsigned int  i,j;
  125.     for(i=0;i<n;i++)
  126.         for(j=0;j<123;j++);
  127. }

  128. //****************************************************
  129. //蜂鳴器程序
  130. //****************************************************
  131. void Buzzer_Di()
  132. {
  133.     Buzzer = 0;
  134.     Delay_ms(500);
  135.     Buzzer = 1;
  136.     Delay_ms(10);
  137. }

  138. //****************************************************
  139. //按鍵掃描程序
  140. //****************************************************
  141. unsigned char Scan_Key()
  142. {   
  143.     if( KEY1 == 0 )                        //按鍵掃描
  144.     {
  145.         Delay_ms(10);                    //延時去抖
  146.         if( KEY1 == 0 )
  147.         {
  148.             Buzzer_Di();
  149.             Weight_Shiwu_ADD+=Weight_Shiwu;
  150.             while(KEY1 == 0);            //等待松手
  151.             return 1;
  152.         }
  153.     }
  154.     if( KEY2 == 0 )                        //按鍵掃描
  155.     {
  156.         Delay_ms(10);                    //延時去抖
  157.         if( KEY2 == 0 )
  158.         {
  159.             Weight_Shiwu_ADD=0;
  160.             Buzzer_Di();
  161.             while(KEY2 == 0);            //等待松手
  162.             return 2;
  163.         }
  164.     }
  165.     if( KEY3 == 0 )                        //按鍵掃描
  166.     {
  167.         Delay_ms(10);                    //延時去抖
  168.         if( KEY3 == 0 )
  169.         {
  170.             Buzzer_Di();
  171.             Get_Maopi();   
  172.             while(KEY3 == 0);            //等待松手
  173.             return 3;
  174.         }
  175.     }
  176.     if( KEY4 == 0 )                        //按鍵掃描
  177.     {
  178.         Delay_ms(10);                    //延時去抖
  179.         if( KEY4 == 0 )
  180.         {
  181.             Buzzer_Di();
  182.             while(KEY4 == 0);            //等待松手
  183.             return 4;
  184.         }
  185.     }
  186.     return 0;
  187. }
復制代碼



附件內只包含上圖的PCB文件:
PCB文件.7z (6.97 MB, 下載次數: 32)
為防止有人直接復制粘貼.代碼暫不分享,請自行編寫

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1018775 發(fā)表于 2022-4-25 21:29 | 只看該作者
想看看語音部分怎么操作
回復

使用道具 舉報

板凳
ID:972785 發(fā)表于 2022-10-16 16:57 | 只看該作者
18424027 發(fā)表于 2022-4-25 21:29
想看看語音部分怎么操作

常用的串口驅動就可以
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久黑人 | 日韩免费一区 | 麻豆一区二区三区精品视频 | 特一级毛片 | 欧美一区二区三区 | 日韩亚洲视频 | 免费在线成人 | 国产精品久久久久久福利一牛影视 | а√中文在线8 | 国产在线播放av | 日韩精品极品视频在线观看免费 | 国产精品日韩欧美一区二区三区 | 国产精品久久国产精品 | 2018天天干天天操 | 欧美综合一区 | 日韩中文字幕免费在线 | 成av在线 | 精品久久久久久久久久久久久久 | 日韩精品一区二区三区中文在线 | 久久久久国产精品www | 久久久久91| 免费在线观看成年人视频 | 欧美一级做性受免费大片免费 | 国产精品一级 | 国产高清在线精品一区二区三区 | 欧美激情国产日韩精品一区18 | 日韩一区二区三区在线视频 | 日本黄色大片免费 | 综合精品久久久 | 久久99精品久久久久久狂牛 | 国产午夜精品久久久久 | 成人免费一区二区三区牛牛 | 成年女人免费v片 | 不卡一区二区三区四区 | 婷婷福利视频导航 | 亚洲三区在线观看 | 久久亚洲一区二区三区四区 | 在线一区二区观看 | 在线一区二区观看 | 男人天堂午夜 | a级大片免费观看 |