亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機BMP180無線胎壓監測tpms系統設計源碼 [打印本頁]

作者: heitian    時間: 2017-7-30 02:12
標題: 單片機BMP180無線胎壓監測tpms系統設計源碼
我現在在做一個基于51單片機的TPMS,傳感器用BMP180,射頻用NRF24K01,顯示屏用1602,現在我已經可以顯示壓強了,現在分享給大家不過溫度不知道怎么弄了,不懂怎么改程序了.


單片機源程序如下:

  1. #include"reg52.h"   //頭文件
  2. #include"Allhead.h"

  3. #include <intrins.h>
  4. #include "eeprom52.h"

  5. sbit K1 = P3^2; //菜單
  6. sbit K2 = P3^3;  //加
  7. sbit K3 = P3^4;  //減
  8. sbit Buzzer= P1^7;  //控制端

  9. unchar yemian=0;
  10. unchar num=0;
  11. unchar flag=0,a,b,c; //報警伐值
  12. unchar SJqiya1,SJqiya2;//實際中所測的氣壓
  13. unchar gaoya,diya;  //gaoya代表氣壓上限,diya代表氣壓下限。
  14. unchar lcdgaoya[5],lcddiya[5];

  15. /******************把數據保存到單片機內部eeprom中******************/
  16. void write_eeprom()
  17. {
  18.         SectorErase(0x2000);

  19.         byte_write(0x2001, gaoya);
  20.         byte_write(0x2002, diya);
  21.   byte_write(0x2060, a_a);        
  22. }

  23. /******************把數據從單片機內部eeprom中讀出來*****************/
  24. void read_eeprom()
  25. {

  26.         gaoya = byte_read(0x2001);
  27.         diya  = byte_read(0x2002);
  28.   a_a   = byte_read(0x2060);
  29. }

  30. /**************開機自檢eeprom初始化*****************/
  31. void init_eeprom()
  32. {
  33.         read_eeprom();                //先讀
  34.         if(a_a != 2)                //新的單片機初始單片機內問eeprom
  35.         {
  36.         
  37.           gaoya = 98;
  38.                 diya=   90;
  39.                 a_a = 2;
  40.                 write_eeprom();
  41.         }        
  42. }






  43. void gaoyachuli()   //氣壓顯示         上限
  44. {
  45.     lcdgaoya[0]=gaoya/100+'0';
  46.     lcdgaoya[1]=gaoya%100/10+'0';
  47.           lcdgaoya[2]=gaoya%100%10+'0';        
  48. }


  49.   void diyachuli()   //氣壓顯示        下限
  50. {
  51.     lcddiya[0]=diya/100+'0';
  52.     lcddiya[1]=diya%100/10+'0';
  53.           lcddiya[2]=diya%100%10+'0';        
  54. }


  55. void baojin() //報警裝置
  56. {

  57.             a=RevTempDate0[3]-48;
  58.             b=RevTempDate0[4]-48;
  59.                   c=RevTempDate0[5]-48;
  60.       SJqiya1=a*100+b*10+c;   //所測的實際氣壓1
  61.         
  62.             a=RevTempDate1[3]-48;
  63.             b=RevTempDate1[4]-48;
  64.                   c=RevTempDate1[5]-48;
  65.       SJqiya2=a*100+b*10+c;   //所測的實際氣壓2
  66.         
  67.         
  68.      if(  SJqiya1>=gaoya   ||  SJqiya1<diya  ||  SJqiya2>=gaoya  ||  SJqiya2<diya  )  
  69.                         {
  70.               Buzzer=0; // 報警
  71.                         }

  72.      if( SJqiya1>=diya &&  SJqiya1<gaoya &&   SJqiya2>=diya &&  SJqiya2<gaoya)
  73.                         {
  74.               Buzzer=1; //停止報警
  75.                         }

  76. }


  77. void key() //按鍵程序 選擇菜單模式
  78. {
  79.      
  80.           if(!K1)
  81.                    {  
  82.                            LCDDelay(20);
  83.                             if(!K1)
  84.                          {   
  85.                                                          while(!K1)
  86.                                            ;
  87.                                                           yemian++;
  88.                                                                 if(yemian>=3) { yemian=0; }
  89.              }
  90.                    }

  91. }


  92. shezhi()  //對里面的數值進行修改
  93. {
  94.     if(!K2)
  95.                    {  
  96.                            NRFDelay(120);
  97.                             if(!K2)
  98.                          {   
  99.                                                         // while(!K2)
  100.                                            ;

  101.                                                          
  102.                                                          if(yemian==1)
  103.                                                          {
  104.                                                            gaoya+=1;
  105.                                                                 if(gaoya>250) { gaoya=250; }
  106.                                                                 write_eeprom();       //保存數據               
  107.                                                                 gaoyachuli(); //
  108.                                                                 LcdShow(1,4,lcdgaoya);
  109.                 }

  110.                                                          if(yemian==2)
  111.                                                          {
  112.                                                            diya+=1;
  113.                                                                  if(diya>250) { diya=250; }
  114.                                                                  write_eeprom();   //保存數據               
  115.                                                                  diyachuli(); //顯示
  116.                                                                  LcdShow(1,4,lcddiya);
  117.                }
  118.              }
  119.                    }
  120.                         
  121.                           if(!K3)
  122.                    {  
  123.                             NRFDelay(120);
  124.                              if(!K3)
  125.                          {   
  126.                                                         // while(!K3)
  127.                                            ;

  128.                                                         if(yemian==1)
  129.                                                            {
  130.                                                             gaoya-=1;
  131.                                                                   if(gaoya<=1) { gaoya=1; }
  132.                                                                   write_eeprom();       //保存數據               
  133.                                                                   gaoyachuli(); //
  134.                                                                   LcdShow(1,4,lcdgaoya);
  135.                  }
  136.                                                          
  137.                                                                  if(yemian==2)
  138.                                                           {
  139.                                                            diya-=1;
  140.                                                                  if(diya<=1) { diya=1; }
  141.                                                                  write_eeprom();       //保存數據               
  142.                                                                  diyachuli(); //顯示
  143.                                                                  LcdShow(1,4,lcddiya);
  144.                 }
  145.              }
  146.                    }

  147. }




  148. /************************主函數********************/
  149. void main()
  150. {  
  151.          LCDInt();
  152.           LcdShow(0,2,"    Welcome      ");
  153.    NRFDelay(1000);//短暫延時
  154.          LcdShow(1,2,"   (Kpa)    ");
  155.    NRFDelay(2000);//短暫延時
  156.    LCDInt();   //初始化
  157.          init_eeprom();                              //讀eeprom數據
  158.    NRF24L01Int();   //初始化
  159. while(1)
  160.     {
  161.                 key(); //按鍵掃描

  162.         //==================//進入工作狀態=====================               
  163.                 if(yemian==0)  
  164.                         {
  165.                           if(flag==0)
  166.                                  {
  167.             flag=1;
  168.             LCDInt();
  169.                                     LcdShow(0,0," Left    Right  ");
  170.          }
  171.         NRFSetRXMode();//設置為接收模式
  172.                                 num++;
  173.                                 if(num>=20) { num=0;   GetDate(); } //開始接受數
  174.         baojin();
  175.      }

  176. //==================//進入氣壓上限設置狀態=====================                        
  177.                 if(yemian==1)  //進入設置模式
  178.                  {
  179.                           
  180.                            if(flag==1)
  181.                                  {
  182.              flag=2;
  183.                                            Buzzer=1;
  184.                                            LCDInt();
  185.              LcdShow(0,3,"   Pressure_H  ");
  186. ……………………

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

所有資料51hei提供下載:
基于51單片機的TPMS.zip (400.91 KB, 下載次數: 140)




作者: danpianji80c51    時間: 2017-7-30 11:01
謝謝樓主分享
作者: ttrroo    時間: 2017-8-22 13:32
謝謝樓主分享 我來看看
作者: 村風    時間: 2017-10-1 12:33
輪胎胎壓多少?傳感器量程多少?那個是大氣壓傳感器,傳感器不防水不防塵也不抗震,做胎壓監測,原理可行實際應用真心不行
作者: 112014    時間: 2018-8-11 21:50
能否顯示實時檢測到的氣壓大小呢?
作者: wangjian123    時間: 2019-4-19 13:58
仿真圖怎么沒有
作者: wangjian123    時間: 2019-4-19 14:02
仿真或者原理圖沒有
作者: ax6808    時間: 2021-11-21 22:32
關鍵是省電、可靠性。謝謝分享。!剛搞清楚,我用的是STC8 硬件I2C+BMP280方案,暫時只需要氣壓讀數。不知道你具體用的什么MCU? 軟硬件I2C又不同,具體細節太多。。。。

testBMP280ID:
bmp280 id is right...
0101 1000
temp                    press
0000 0000 0000 0001 1000 1011 1000 1111




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