亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

標題: 基于單片機噪聲報警系統源程序與Proteus仿真電路設計 [打印本頁]

作者: smartpiggy    時間: 2021-3-31 14:40
標題: 基于單片機噪聲報警系統源程序與Proteus仿真電路設計
該設計方案由硬件和軟件兩部分組成。噪聲測量儀的硬件電路系統,包括噪聲信號的轉換、放大、交直流轉換與電壓、頻率轉換電路以及單片機系統的硬件電路、LED顯示電路等。軟件部分主要是用單片機語言編程,實現對信號的采集、轉換及顯示。對于不同型號的單片機只需要相應的改變一下地址即可。

仿真原理圖如下,只是一個簡單的模擬而已(proteus仿真工程文件可到本帖附件中下載)


電路原理圖如下:




單片機源程序如下:
  1. <font face="宋體">#include <reg52.h>
  2. #include "LCD1602.h"
  3. unsigned char welcome[]={"welcome!"};
  4. unsigned char Show0[6]={"Noise:"};
  5. unsigned char Show1[5]={"dB"};
  6. /*unsigned int code Countnum[60]={ 11,  13,  15,  17,  19,  22,  24,  27,  31,  34,      //T0計數值
  7.                             39,  44,  49,  55,  62,  69,  78,  87,  98,  110,
  8.                             123, 138, 155, 174, 195, 219, 246, 276, 309, 347,
  9.                             390, 438, 491, 550, 618, 693, 778, 873, 979, 1099,
  10.                             1233,1383,1552,1742,1954,2193,2460,2760,3097,3475,
  11.                             3899,4375,4909,5508,6180,6934,7780,8729,9794,10989,};*/
  12. unsigned long code Countnum[100]={10,11,12,13,15,17,19,22,25,28,
  13.                                 31,35,39,43,48,54,60,67,75,84,
  14.                                 94,105,117,131,146,163,182,204,228,255,
  15.                                 286,320,359,402,451,506,567,636,713,799,
  16.                                 896,1005,1127,1264,1418,1590,1783,2000,2244,2517,
  17.                                 2824,3168,3556,3989,4475,5020,5632,6319,7089,7953,
  18.                                 8923,10011,11232,12602,14139,15863,17798,19969,22405,25138,
  19.                                 28204,31644,35504,39835,44694,50146,56263,63127,70828,79469,
  20.                                 89164,100042,112247,125941,141305,158544,177886,199588,223937,251257,
  21.                                 281910,316303,354891,398187,446765,501270,562424,631039,708025,794404,};



  22. unsigned char code dB[100][3]={"031","032","033","034","035","036","037","038","039","040",        //T0計數值對應 dB
  23.                               "041","042","043","044","045","046","047","048","049","050",
  24.                               "051","052","053","054","055","056","057","058","059","060",
  25.                               "061","062","063","064","065","066","067","068","069","070",
  26.                               "071","072","073","074","075","076","077","078","079","080",
  27.                               "081","082","083","084","085","086","087","088","089","090",
  28.                               "091","092","093","094","095","096","097","098","099","100",
  29.                               "101","102","103","104","105","106","107","108","109","110",
  30.                               "111","112","113","114","115","116","117","118","119","120",
  31.                               "121","122","123","124","125","126","127","128","129","130",
  32.                               };      

  33. sbit beep=P2^2;
  34. sbit key_1=P2^1;
  35. sbit key_2=P2^0;

  36. //////////////////////////////////////////////////////全局變量/////////////////////////////////////////////////////
  37. unsigned long count,c;
  38. uchar t,z;

  39. uchar shu,ys;

  40. //////////////////////////////////////////////////////函數聲明////////////////////////////////////////////////////
  41.    


  42.     /************************************
  43.     延時子程序
  44.     延時時間(xms*1)ms
  45. *************************************/
  46. void delayms(uint xms)           //延時xms
  47. {
  48.     uint x,y;
  49.     for(x=xms;x>0;x--)
  50.         for(y=90;y>0;y--);
  51. }

  52. void key()
  53. {
  54.     if (key_1==0)
  55.     {
  56.         delayms(10);
  57.         if (key_1==0)
  58.         {
  59.             while(key_1==0);
  60.             if (shu<99) shu++;
  61.         }
  62.     }
  63.     if (key_2==0)
  64.     {
  65.         delayms(10);
  66.         if (key_2==0)
  67.         {
  68.             while(key_2==0);
  69.             if (shu>0) shu--;
  70.         }
  71.     }

  72. }

  73. void alarm()
  74. {
  75.     ys++;
  76.     if (ys>20)
  77.     {
  78.         ys=0;
  79.         beep=!beep;
  80.     }
  81. }

  82. //////////////////////////////////////////主函數///////////////////////////////////////////////////////////
  83. void main(void)
  84. {
  85.     uint m,n;
  86.     uint i;
  87.     delayms(1000);
  88.     TMOD=0X15;           //T0外部計數 工作方式1    T1定時方式1
  89.     EA=0;                 //開總中斷
  90.     ET1=0;                 //關閉T1
  91.     TH0=0;
  92.     TL0=0;
  93.     TH1=(65536-50000)/256;       //裝初值
  94.     TL1=(65536-50000)%256;       //裝初值
  95.     init_1602();

  96.     WRITE_LCD1602_COM(0x80+3);    //    顯示地址
  97.       for(i=0; i<6; i++)
  98.     {
  99.         WRITE_LCD1602_DAT(Show0[i]);
  100.         delayms(5);
  101.     }

  102.     WRITE_LCD1602_COM(0x80+12);           //    顯示地址
  103.     for(i=0;i<2;i++)
  104.     {
  105.         WRITE_LCD1602_DAT(Show1[i]);
  106.         delayms(5);        
  107.     }
  108.     WRITE_LCD1602_COM(0xc0+3);           //    顯示地址
  109.     WRITE_LCD1602_byte("Limit:");

  110.     WRITE_LCD1602_COM(0xc0+12);           //    顯示地址
  111.     for(i=0;i<2;i++)
  112.     {
  113.         WRITE_LCD1602_DAT(Show1[i]);
  114.         delayms(5);        
  115.     }         
  116.     EA=1;
  117.     ET1=1;            //開T1
  118.     TR1=1;            //T1開始定時
  119.     TR0=1;            //T0開始計數
  120.     while(1)
  121.     {
  122.             key();
  123.             WRITE_LCD1602_COM(0xc0+9);
  124.               WRITE_LCD1602_DAT(0x30+(shu+31)/100%10);
  125.               WRITE_LCD1602_DAT(0x30+(shu+31)/10%10);
  126.               WRITE_LCD1602_DAT(0x30+(shu+31)%10);
  127.             i=0;
  128.             if(count==0)
  129.             continue;
  130.             while(count>Countnum[i])
  131.             {
  132.                 i++;
  133.             }
  134.             m=i;
  135.             i=0;
  136.             WRITE_LCD1602_COM(0x80+9);
  137.             for(n=0; n<3; n++)
  138.             {     
  139.                 WRITE_LCD1602_DAT(dB[m][n]);
  140.                 delayms(5);
  141.             }
  142.             WRITE_LCD1602_COM(0xc0+9);
  143.               WRITE_LCD1602_DAT(0x30+(shu+31)/100%10);
  144.               WRITE_LCD1602_DAT(0x30+(shu+31)/10%10);
  145.               WRITE_LCD1602_DAT(0x30+(shu+31)%10);
  146.             if(m>=shu)
  147.             {
  148.                 alarm();
  149.             }else
  150.             {
  151.                 beep=1;
  152.             }
  153.     }   
  154. }

  155. void Timer0() interrupt 1
  156. {
  157.     z++;
  158. }

  159. void Timer1() interrupt 3
  160. {
  161.     TR1=0;      //關閉T1定時
  162.     TH1=(65536-50000)/256;
  163.     TL1=(65536-50000)%256;
  164.     t++;
  165.         if(t==20)       //定時1s時間到
  166.         {
  167.             t=0;
  168.             TR0=0;        //T0停止計數
  169.             c=z*65535+(TH0*256+TL0);        // 將計數值讀取
  170.             TH0=0;                        //清空計數值
  171.             TL0=0;                       //清空計數值
  172.             TR0=1;                           //T0開始計數
  173.             count=c;
  174.             c=0;
  175.             z=0;
  176.         }
  177.     TR1=1;        //T1開始定時                                    

  178. }



  179. </font>
復制代碼
全部資料51hei下載地址:
10仿真.rar (98.4 KB, 下載次數: 50)
噪聲計原理圖.pdf (87.99 KB, 下載次數: 38)
1程序.rar (30.97 KB, 下載次數: 31)


作者: 炸裂    時間: 2021-4-12 21:54
你好,我想問一下,你的這個設計可以測量聲音的分貝值嗎?




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1